From c1ef8456a99adda91d386acc8e915862ecc80520 Mon Sep 17 00:00:00 2001 From: TheNetsky <56271887+TheNetsky@users.noreply.github.com> Date: Thu, 19 Dec 2024 13:10:00 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20TheNetsk?= =?UTF-8?q?y/extensions-generic-0.8@3555bb8bc4fe6fb27495d82259d96108c4ce6a?= =?UTF-8?q?57=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- madara/MangaOrigines/source.js | 10 +- madara/ReaperScansFR/includes/icon.png | Bin 34366 -> 0 bytes madara/ReaperScansFR/source.js | 16221 ----------------------- madara/index.html | 2 +- madara/versioning.json | 2 +- 5 files changed, 5 insertions(+), 16230 deletions(-) delete mode 100644 madara/ReaperScansFR/includes/icon.png delete mode 100644 madara/ReaperScansFR/source.js diff --git a/madara/MangaOrigines/source.js b/madara/MangaOrigines/source.js index a8d1e1b7..e1463b71 100644 --- a/madara/MangaOrigines/source.js +++ b/madara/MangaOrigines/source.js @@ -16145,19 +16145,15 @@ Please go to the homepage of <${this.baseUrl}> and press the cloud icon.`); // src/MangaOrigines/MangaOrigines.ts var DOMAIN = "https://mangas-origines.fr"; var MangaOriginesInfo = { - version: getExportVersion("0.0.0"), + version: getExportVersion("0.0.1"), name: "MangaOrigines", description: `Extension that pulls manga from ${DOMAIN}`, author: "Netsky", authorWebsite: "http://github.com/TheNetsky", icon: "icon.png", - contentRating: import_types3.ContentRating.ADULT, + contentRating: import_types3.ContentRating.MATURE, websiteBaseURL: DOMAIN, sourceTags: [ - { - text: "18+", - type: import_types3.BadgeColor.YELLOW - }, { text: "French", type: import_types3.BadgeColor.GREY @@ -16173,7 +16169,7 @@ Please go to the homepage of <${this.baseUrl}> and press the cloud icon.`); constructor() { super(...arguments); this.baseUrl = DOMAIN; - this.chapterEndpoint = 3; + this.chapterEndpoint = 1; this.directoryPath = "oeuvre"; this.language = "\u{1F1EB}\u{1F1F7}"; } diff --git a/madara/ReaperScansFR/includes/icon.png b/madara/ReaperScansFR/includes/icon.png deleted file mode 100644 index 288d40515701bfa9b0b49dd105169072421a9ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34366 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 diff --git a/madara/ReaperScansFR/source.js b/madara/ReaperScansFR/source.js deleted file mode 100644 index e5fd6c6a..00000000 --- a/madara/ReaperScansFR/source.js +++ /dev/null @@ -1,16221 +0,0 @@ -"use strict"; -var _Sources = (() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] - }) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); - }); - var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUIBinding.js - var require_DUIBinding = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUIBinding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUIForm.js - var require_DUIForm = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUIForm.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUIFormRow.js - var require_DUIFormRow = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUIFormRow.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUISection.js - var require_DUISection = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Exports/DUISection.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIButton.js - var require_DUIButton = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIButton.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIHeader.js - var require_DUIHeader = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIHeader.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIInputField.js - var require_DUIInputField = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIInputField.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUILabel.js - var require_DUILabel = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUILabel.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUILink.js - var require_DUILink = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUILink.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIMultilineLabel.js - var require_DUIMultilineLabel = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIMultilineLabel.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUINavigationButton.js - var require_DUINavigationButton = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUINavigationButton.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIOAuthButton.js - var require_DUIOAuthButton = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIOAuthButton.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUISecureInputField.js - var require_DUISecureInputField = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUISecureInputField.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUISelect.js - var require_DUISelect = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUISelect.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIStepper.js - var require_DUIStepper = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUIStepper.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUISwitch.js - var require_DUISwitch = __commonJS({ - "node_modules/@paperback/types/lib/generated/DynamicUI/Rows/Exports/DUISwitch.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/ChapterDetails.js - var require_ChapterDetails = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/ChapterDetails.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/Chapter.js - var require_Chapter = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/Chapter.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/Cookie.js - var require_Cookie = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/Cookie.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/HomeSection.js - var require_HomeSection = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/HomeSection.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/IconText.js - var require_IconText = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/IconText.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/MangaInfo.js - var require_MangaInfo = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/MangaInfo.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/MangaProgress.js - var require_MangaProgress = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/MangaProgress.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/PartialSourceManga.js - var require_PartialSourceManga = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/PartialSourceManga.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/MangaUpdates.js - var require_MangaUpdates = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/MangaUpdates.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/PBCanvas.js - var require_PBCanvas = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/PBCanvas.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/PBImage.js - var require_PBImage = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/PBImage.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/PagedResults.js - var require_PagedResults = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/PagedResults.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/RawData.js - var require_RawData = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/RawData.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/Request.js - var require_Request = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/Request.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SourceInterceptor.js - var require_SourceInterceptor = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SourceInterceptor.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/RequestManager.js - var require_RequestManager = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/RequestManager.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/Response.js - var require_Response = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/Response.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SearchField.js - var require_SearchField = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SearchField.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SearchRequest.js - var require_SearchRequest = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SearchRequest.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SourceCookieStore.js - var require_SourceCookieStore = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SourceCookieStore.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SourceManga.js - var require_SourceManga = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SourceManga.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SecureStateManager.js - var require_SecureStateManager = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SecureStateManager.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/SourceStateManager.js - var require_SourceStateManager = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/SourceStateManager.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/Tag.js - var require_Tag = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/Tag.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/TagSection.js - var require_TagSection = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/TagSection.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/TrackedMangaChapterReadAction.js - var require_TrackedMangaChapterReadAction = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/TrackedMangaChapterReadAction.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/Exports/TrackerActionQueue.js - var require_TrackerActionQueue = __commonJS({ - "node_modules/@paperback/types/lib/generated/Exports/TrackerActionQueue.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/generated/_exports.js - var require_exports = __commonJS({ - "node_modules/@paperback/types/lib/generated/_exports.js"(exports) { - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m[k]; - } }; - } - Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - __exportStar(require_DUIBinding(), exports); - __exportStar(require_DUIForm(), exports); - __exportStar(require_DUIFormRow(), exports); - __exportStar(require_DUISection(), exports); - __exportStar(require_DUIButton(), exports); - __exportStar(require_DUIHeader(), exports); - __exportStar(require_DUIInputField(), exports); - __exportStar(require_DUILabel(), exports); - __exportStar(require_DUILink(), exports); - __exportStar(require_DUIMultilineLabel(), exports); - __exportStar(require_DUINavigationButton(), exports); - __exportStar(require_DUIOAuthButton(), exports); - __exportStar(require_DUISecureInputField(), exports); - __exportStar(require_DUISelect(), exports); - __exportStar(require_DUIStepper(), exports); - __exportStar(require_DUISwitch(), exports); - __exportStar(require_ChapterDetails(), exports); - __exportStar(require_Chapter(), exports); - __exportStar(require_Cookie(), exports); - __exportStar(require_HomeSection(), exports); - __exportStar(require_IconText(), exports); - __exportStar(require_MangaInfo(), exports); - __exportStar(require_MangaProgress(), exports); - __exportStar(require_PartialSourceManga(), exports); - __exportStar(require_MangaUpdates(), exports); - __exportStar(require_PBCanvas(), exports); - __exportStar(require_PBImage(), exports); - __exportStar(require_PagedResults(), exports); - __exportStar(require_RawData(), exports); - __exportStar(require_Request(), exports); - __exportStar(require_SourceInterceptor(), exports); - __exportStar(require_RequestManager(), exports); - __exportStar(require_Response(), exports); - __exportStar(require_SearchField(), exports); - __exportStar(require_SearchRequest(), exports); - __exportStar(require_SourceCookieStore(), exports); - __exportStar(require_SourceManga(), exports); - __exportStar(require_SecureStateManager(), exports); - __exportStar(require_SourceStateManager(), exports); - __exportStar(require_Tag(), exports); - __exportStar(require_TagSection(), exports); - __exportStar(require_TrackedMangaChapterReadAction(), exports); - __exportStar(require_TrackerActionQueue(), exports); - } - }); - - // node_modules/@paperback/types/lib/base/Source.js - var require_Source = __commonJS({ - "node_modules/@paperback/types/lib/base/Source.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.urlEncodeObject = exports.convertTime = exports.Source = void 0; - var Source = class { - constructor(cheerio) { - this.cheerio = cheerio; - } - /** - * @deprecated use {@link Source.getSearchResults getSearchResults} instead - */ - searchRequest(query, metadata) { - return this.getSearchResults(query, metadata); - } - /** - * @deprecated use {@link Source.getSearchTags} instead - */ - async getTags() { - return this.getSearchTags?.(); - } - }; - exports.Source = Source; - function convertTime(timeAgo) { - let time; - let trimmed = Number((/\d*/.exec(timeAgo) ?? [])[0]); - trimmed = trimmed == 0 && timeAgo.includes("a") ? 1 : trimmed; - if (timeAgo.includes("minutes")) { - time = new Date(Date.now() - trimmed * 6e4); - } else if (timeAgo.includes("hours")) { - time = new Date(Date.now() - trimmed * 36e5); - } else if (timeAgo.includes("days")) { - time = new Date(Date.now() - trimmed * 864e5); - } else if (timeAgo.includes("year") || timeAgo.includes("years")) { - time = new Date(Date.now() - trimmed * 31556952e3); - } else { - time = new Date(Date.now()); - } - return time; - } - exports.convertTime = convertTime; - function urlEncodeObject(obj) { - let ret = {}; - for (const entry of Object.entries(obj)) { - ret[encodeURIComponent(entry[0])] = encodeURIComponent(entry[1]); - } - return ret; - } - exports.urlEncodeObject = urlEncodeObject; - } - }); - - // node_modules/@paperback/types/lib/base/ByteArray.js - var require_ByteArray = __commonJS({ - "node_modules/@paperback/types/lib/base/ByteArray.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/Badge.js - var require_Badge = __commonJS({ - "node_modules/@paperback/types/lib/base/Badge.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.BadgeColor = void 0; - var BadgeColor2; - (function(BadgeColor3) { - BadgeColor3["BLUE"] = "default"; - BadgeColor3["GREEN"] = "success"; - BadgeColor3["GREY"] = "info"; - BadgeColor3["YELLOW"] = "warning"; - BadgeColor3["RED"] = "danger"; - })(BadgeColor2 = exports.BadgeColor || (exports.BadgeColor = {})); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/ChapterProviding.js - var require_ChapterProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/ChapterProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/CloudflareBypassRequestProviding.js - var require_CloudflareBypassRequestProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/CloudflareBypassRequestProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/HomePageSectionsProviding.js - var require_HomePageSectionsProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/HomePageSectionsProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/MangaProgressProviding.js - var require_MangaProgressProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/MangaProgressProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/MangaProviding.js - var require_MangaProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/MangaProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/RequestManagerProviding.js - var require_RequestManagerProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/RequestManagerProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/SearchResultsProviding.js - var require_SearchResultsProviding = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/SearchResultsProviding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/interfaces/index.js - var require_interfaces = __commonJS({ - "node_modules/@paperback/types/lib/base/interfaces/index.js"(exports) { - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m[k]; - } }; - } - Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - __exportStar(require_ChapterProviding(), exports); - __exportStar(require_CloudflareBypassRequestProviding(), exports); - __exportStar(require_HomePageSectionsProviding(), exports); - __exportStar(require_MangaProgressProviding(), exports); - __exportStar(require_MangaProviding(), exports); - __exportStar(require_RequestManagerProviding(), exports); - __exportStar(require_SearchResultsProviding(), exports); - } - }); - - // node_modules/@paperback/types/lib/base/SourceInfo.js - var require_SourceInfo = __commonJS({ - "node_modules/@paperback/types/lib/base/SourceInfo.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.ContentRating = exports.SourceIntents = void 0; - var SourceIntents2; - (function(SourceIntents3) { - SourceIntents3[SourceIntents3["MANGA_CHAPTERS"] = 1] = "MANGA_CHAPTERS"; - SourceIntents3[SourceIntents3["MANGA_TRACKING"] = 2] = "MANGA_TRACKING"; - SourceIntents3[SourceIntents3["HOMEPAGE_SECTIONS"] = 4] = "HOMEPAGE_SECTIONS"; - SourceIntents3[SourceIntents3["COLLECTION_MANAGEMENT"] = 8] = "COLLECTION_MANAGEMENT"; - SourceIntents3[SourceIntents3["CLOUDFLARE_BYPASS_REQUIRED"] = 16] = "CLOUDFLARE_BYPASS_REQUIRED"; - SourceIntents3[SourceIntents3["SETTINGS_UI"] = 32] = "SETTINGS_UI"; - })(SourceIntents2 = exports.SourceIntents || (exports.SourceIntents = {})); - var ContentRating2; - (function(ContentRating3) { - ContentRating3["EVERYONE"] = "EVERYONE"; - ContentRating3["MATURE"] = "MATURE"; - ContentRating3["ADULT"] = "ADULT"; - })(ContentRating2 = exports.ContentRating || (exports.ContentRating = {})); - } - }); - - // node_modules/@paperback/types/lib/base/HomeSectionType.js - var require_HomeSectionType = __commonJS({ - "node_modules/@paperback/types/lib/base/HomeSectionType.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.HomeSectionType = void 0; - var HomeSectionType2; - (function(HomeSectionType3) { - HomeSectionType3["singleRowNormal"] = "singleRowNormal"; - HomeSectionType3["singleRowLarge"] = "singleRowLarge"; - HomeSectionType3["doubleRow"] = "doubleRow"; - HomeSectionType3["featured"] = "featured"; - })(HomeSectionType2 = exports.HomeSectionType || (exports.HomeSectionType = {})); - } - }); - - // node_modules/@paperback/types/lib/base/PaperbackExtensionBase.js - var require_PaperbackExtensionBase = __commonJS({ - "node_modules/@paperback/types/lib/base/PaperbackExtensionBase.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/base/index.js - var require_base = __commonJS({ - "node_modules/@paperback/types/lib/base/index.js"(exports) { - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m[k]; - } }; - } - Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - __exportStar(require_Source(), exports); - __exportStar(require_ByteArray(), exports); - __exportStar(require_Badge(), exports); - __exportStar(require_interfaces(), exports); - __exportStar(require_SourceInfo(), exports); - __exportStar(require_HomeSectionType(), exports); - __exportStar(require_PaperbackExtensionBase(), exports); - } - }); - - // node_modules/@paperback/types/lib/compat/DyamicUI.js - var require_DyamicUI = __commonJS({ - "node_modules/@paperback/types/lib/compat/DyamicUI.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } - }); - - // node_modules/@paperback/types/lib/index.js - var require_lib = __commonJS({ - "node_modules/@paperback/types/lib/index.js"(exports) { - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m[k]; - } }; - } - Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - __exportStar(require_exports(), exports); - __exportStar(require_base(), exports); - __exportStar(require_DyamicUI(), exports); - } - }); - - // node_modules/boolbase/index.js - var require_boolbase = __commonJS({ - "node_modules/boolbase/index.js"(exports, module) { - module.exports = { - trueFunc: function trueFunc2() { - return true; - }, - falseFunc: function falseFunc() { - return false; - } - }; - } - }); - - // node_modules/html-entities/lib/named-references.js - var require_named_references = __commonJS({ - "node_modules/html-entities/lib/named-references.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.bodyRegExps = { xml: /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g, html4: /∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g, html5: /·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g }; - exports.namedReferences = { xml: { entities: { "<": "<", ">": ">", """: '"', "'": "'", "&": "&" }, characters: { "<": "<", ">": ">", '"': """, "'": "'", "&": "&" } }, html4: { entities: { "'": "'", " ": "\xA0", " ": "\xA0", "¡": "\xA1", "¡": "\xA1", "¢": "\xA2", "¢": "\xA2", "£": "\xA3", "£": "\xA3", "¤": "\xA4", "¤": "\xA4", "¥": "\xA5", "¥": "\xA5", "¦": "\xA6", "¦": "\xA6", "§": "\xA7", "§": "\xA7", "¨": "\xA8", "¨": "\xA8", "©": "\xA9", "©": "\xA9", "ª": "\xAA", "ª": "\xAA", "«": "\xAB", "«": "\xAB", "¬": "\xAC", "¬": "\xAC", "­": "\xAD", "­": "\xAD", "®": "\xAE", "®": "\xAE", "¯": "\xAF", "¯": "\xAF", "°": "\xB0", "°": "\xB0", "±": "\xB1", "±": "\xB1", "²": "\xB2", "²": "\xB2", "³": "\xB3", "³": "\xB3", "´": "\xB4", "´": "\xB4", "µ": "\xB5", "µ": "\xB5", "¶": "\xB6", "¶": "\xB6", "·": "\xB7", "·": "\xB7", "¸": "\xB8", "¸": "\xB8", "¹": "\xB9", "¹": "\xB9", "º": "\xBA", "º": "\xBA", "»": "\xBB", "»": "\xBB", "¼": "\xBC", "¼": "\xBC", "½": "\xBD", "½": "\xBD", "¾": "\xBE", "¾": "\xBE", "¿": "\xBF", "¿": "\xBF", "À": "\xC0", "À": "\xC0", "Á": "\xC1", "Á": "\xC1", "Â": "\xC2", "Â": "\xC2", "Ã": "\xC3", "Ã": "\xC3", "Ä": "\xC4", "Ä": "\xC4", "Å": "\xC5", "Å": "\xC5", "Æ": "\xC6", "Æ": "\xC6", "Ç": "\xC7", "Ç": "\xC7", "È": "\xC8", "È": "\xC8", "É": "\xC9", "É": "\xC9", "Ê": "\xCA", "Ê": "\xCA", "Ë": "\xCB", "Ë": "\xCB", "Ì": "\xCC", "Ì": "\xCC", "Í": "\xCD", "Í": "\xCD", "Î": "\xCE", "Î": "\xCE", "Ï": "\xCF", "Ï": "\xCF", "Ð": "\xD0", "Ð": "\xD0", "Ñ": "\xD1", "Ñ": "\xD1", "Ò": "\xD2", "Ò": "\xD2", "Ó": "\xD3", "Ó": "\xD3", "Ô": "\xD4", "Ô": "\xD4", "Õ": "\xD5", "Õ": "\xD5", "Ö": "\xD6", "Ö": "\xD6", "×": "\xD7", "×": "\xD7", "Ø": "\xD8", "Ø": "\xD8", "Ù": "\xD9", "Ù": "\xD9", "Ú": "\xDA", "Ú": "\xDA", "Û": "\xDB", "Û": "\xDB", "Ü": "\xDC", "Ü": "\xDC", "Ý": "\xDD", "Ý": "\xDD", "Þ": "\xDE", "Þ": "\xDE", "ß": "\xDF", "ß": "\xDF", "à": "\xE0", "à": "\xE0", "á": "\xE1", "á": "\xE1", "â": "\xE2", "â": "\xE2", "ã": "\xE3", "ã": "\xE3", "ä": "\xE4", "ä": "\xE4", "å": "\xE5", "å": "\xE5", "æ": "\xE6", "æ": "\xE6", "ç": "\xE7", "ç": "\xE7", "è": "\xE8", "è": "\xE8", "é": "\xE9", "é": "\xE9", "ê": "\xEA", "ê": "\xEA", "ë": "\xEB", "ë": "\xEB", "ì": "\xEC", "ì": "\xEC", "í": "\xED", "í": "\xED", "î": "\xEE", "î": "\xEE", "ï": "\xEF", "ï": "\xEF", "ð": "\xF0", "ð": "\xF0", "ñ": "\xF1", "ñ": "\xF1", "ò": "\xF2", "ò": "\xF2", "ó": "\xF3", "ó": "\xF3", "ô": "\xF4", "ô": "\xF4", "õ": "\xF5", "õ": "\xF5", "ö": "\xF6", "ö": "\xF6", "÷": "\xF7", "÷": "\xF7", "ø": "\xF8", "ø": "\xF8", "ù": "\xF9", "ù": "\xF9", "ú": "\xFA", "ú": "\xFA", "û": "\xFB", "û": "\xFB", "ü": "\xFC", "ü": "\xFC", "ý": "\xFD", "ý": "\xFD", "þ": "\xFE", "þ": "\xFE", "ÿ": "\xFF", "ÿ": "\xFF", """: '"', """: '"', "&": "&", "&": "&", "<": "<", "<": "<", ">": ">", ">": ">", "Œ": "\u0152", "œ": "\u0153", "Š": "\u0160", "š": "\u0161", "Ÿ": "\u0178", "ˆ": "\u02C6", "˜": "\u02DC", " ": "\u2002", " ": "\u2003", " ": "\u2009", "‌": "\u200C", "‍": "\u200D", "‎": "\u200E", "‏": "\u200F", "–": "\u2013", "—": "\u2014", "‘": "\u2018", "’": "\u2019", "‚": "\u201A", "“": "\u201C", "”": "\u201D", "„": "\u201E", "†": "\u2020", "‡": "\u2021", "‰": "\u2030", "‹": "\u2039", "›": "\u203A", "€": "\u20AC", "ƒ": "\u0192", "Α": "\u0391", "Β": "\u0392", "Γ": "\u0393", "Δ": "\u0394", "Ε": "\u0395", "Ζ": "\u0396", "Η": "\u0397", "Θ": "\u0398", "Ι": "\u0399", "Κ": "\u039A", "Λ": "\u039B", "Μ": "\u039C", "Ν": "\u039D", "Ξ": "\u039E", "Ο": "\u039F", "Π": "\u03A0", "Ρ": "\u03A1", "Σ": "\u03A3", "Τ": "\u03A4", "Υ": "\u03A5", "Φ": "\u03A6", "Χ": "\u03A7", "Ψ": "\u03A8", "Ω": "\u03A9", "α": "\u03B1", "β": "\u03B2", "γ": "\u03B3", "δ": "\u03B4", "ε": "\u03B5", "ζ": "\u03B6", "η": "\u03B7", "θ": "\u03B8", "ι": "\u03B9", "κ": "\u03BA", "λ": "\u03BB", "μ": "\u03BC", "ν": "\u03BD", "ξ": "\u03BE", "ο": "\u03BF", "π": "\u03C0", "ρ": "\u03C1", "ς": "\u03C2", "σ": "\u03C3", "τ": "\u03C4", "υ": "\u03C5", "φ": "\u03C6", "χ": "\u03C7", "ψ": "\u03C8", "ω": "\u03C9", "ϑ": "\u03D1", "ϒ": "\u03D2", "ϖ": "\u03D6", "•": "\u2022", "…": "\u2026", "′": "\u2032", "″": "\u2033", "‾": "\u203E", "⁄": "\u2044", "℘": "\u2118", "ℑ": "\u2111", "ℜ": "\u211C", "™": "\u2122", "ℵ": "\u2135", "←": "\u2190", "↑": "\u2191", "→": "\u2192", "↓": "\u2193", "↔": "\u2194", "↵": "\u21B5", "⇐": "\u21D0", "⇑": "\u21D1", "⇒": "\u21D2", "⇓": "\u21D3", "⇔": "\u21D4", "∀": "\u2200", "∂": "\u2202", "∃": "\u2203", "∅": "\u2205", "∇": "\u2207", "∈": "\u2208", "∉": "\u2209", "∋": "\u220B", "∏": "\u220F", "∑": "\u2211", "−": "\u2212", "∗": "\u2217", "√": "\u221A", "∝": "\u221D", "∞": "\u221E", "∠": "\u2220", "∧": "\u2227", "∨": "\u2228", "∩": "\u2229", "∪": "\u222A", "∫": "\u222B", "∴": "\u2234", "∼": "\u223C", "≅": "\u2245", "≈": "\u2248", "≠": "\u2260", "≡": "\u2261", "≤": "\u2264", "≥": "\u2265", "⊂": "\u2282", "⊃": "\u2283", "⊄": "\u2284", "⊆": "\u2286", "⊇": "\u2287", "⊕": "\u2295", "⊗": "\u2297", "⊥": "\u22A5", "⋅": "\u22C5", "⌈": "\u2308", "⌉": "\u2309", "⌊": "\u230A", "⌋": "\u230B", "⟨": "\u2329", "⟩": "\u232A", "◊": "\u25CA", "♠": "\u2660", "♣": "\u2663", "♥": "\u2665", "♦": "\u2666" }, characters: { "'": "'", "\xA0": " ", "\xA1": "¡", "\xA2": "¢", "\xA3": "£", "\xA4": "¤", "\xA5": "¥", "\xA6": "¦", "\xA7": "§", "\xA8": "¨", "\xA9": "©", "\xAA": "ª", "\xAB": "«", "\xAC": "¬", "\xAD": "­", "\xAE": "®", "\xAF": "¯", "\xB0": "°", "\xB1": "±", "\xB2": "²", "\xB3": "³", "\xB4": "´", "\xB5": "µ", "\xB6": "¶", "\xB7": "·", "\xB8": "¸", "\xB9": "¹", "\xBA": "º", "\xBB": "»", "\xBC": "¼", "\xBD": "½", "\xBE": "¾", "\xBF": "¿", "\xC0": "À", "\xC1": "Á", "\xC2": "Â", "\xC3": "Ã", "\xC4": "Ä", "\xC5": "Å", "\xC6": "Æ", "\xC7": "Ç", "\xC8": "È", "\xC9": "É", "\xCA": "Ê", "\xCB": "Ë", "\xCC": "Ì", "\xCD": "Í", "\xCE": "Î", "\xCF": "Ï", "\xD0": "Ð", "\xD1": "Ñ", "\xD2": "Ò", "\xD3": "Ó", "\xD4": "Ô", "\xD5": "Õ", "\xD6": "Ö", "\xD7": "×", "\xD8": "Ø", "\xD9": "Ù", "\xDA": "Ú", "\xDB": "Û", "\xDC": "Ü", "\xDD": "Ý", "\xDE": "Þ", "\xDF": "ß", "\xE0": "à", "\xE1": "á", "\xE2": "â", "\xE3": "ã", "\xE4": "ä", "\xE5": "å", "\xE6": "æ", "\xE7": "ç", "\xE8": "è", "\xE9": "é", "\xEA": "ê", "\xEB": "ë", "\xEC": "ì", "\xED": "í", "\xEE": "î", "\xEF": "ï", "\xF0": "ð", "\xF1": "ñ", "\xF2": "ò", "\xF3": "ó", "\xF4": "ô", "\xF5": "õ", "\xF6": "ö", "\xF7": "÷", "\xF8": "ø", "\xF9": "ù", "\xFA": "ú", "\xFB": "û", "\xFC": "ü", "\xFD": "ý", "\xFE": "þ", "\xFF": "ÿ", '"': """, "&": "&", "<": "<", ">": ">", "\u0152": "Œ", "\u0153": "œ", "\u0160": "Š", "\u0161": "š", "\u0178": "Ÿ", "\u02C6": "ˆ", "\u02DC": "˜", "\u2002": " ", "\u2003": " ", "\u2009": " ", "\u200C": "‌", "\u200D": "‍", "\u200E": "‎", "\u200F": "‏", "\u2013": "–", "\u2014": "—", "\u2018": "‘", "\u2019": "’", "\u201A": "‚", "\u201C": "“", "\u201D": "”", "\u201E": "„", "\u2020": "†", "\u2021": "‡", "\u2030": "‰", "\u2039": "‹", "\u203A": "›", "\u20AC": "€", "\u0192": "ƒ", "\u0391": "Α", "\u0392": "Β", "\u0393": "Γ", "\u0394": "Δ", "\u0395": "Ε", "\u0396": "Ζ", "\u0397": "Η", "\u0398": "Θ", "\u0399": "Ι", "\u039A": "Κ", "\u039B": "Λ", "\u039C": "Μ", "\u039D": "Ν", "\u039E": "Ξ", "\u039F": "Ο", "\u03A0": "Π", "\u03A1": "Ρ", "\u03A3": "Σ", "\u03A4": "Τ", "\u03A5": "Υ", "\u03A6": "Φ", "\u03A7": "Χ", "\u03A8": "Ψ", "\u03A9": "Ω", "\u03B1": "α", "\u03B2": "β", "\u03B3": "γ", "\u03B4": "δ", "\u03B5": "ε", "\u03B6": "ζ", "\u03B7": "η", "\u03B8": "θ", "\u03B9": "ι", "\u03BA": "κ", "\u03BB": "λ", "\u03BC": "μ", "\u03BD": "ν", "\u03BE": "ξ", "\u03BF": "ο", "\u03C0": "π", "\u03C1": "ρ", "\u03C2": "ς", "\u03C3": "σ", "\u03C4": "τ", "\u03C5": "υ", "\u03C6": "φ", "\u03C7": "χ", "\u03C8": "ψ", "\u03C9": "ω", "\u03D1": "ϑ", "\u03D2": "ϒ", "\u03D6": "ϖ", "\u2022": "•", "\u2026": "…", "\u2032": "′", "\u2033": "″", "\u203E": "‾", "\u2044": "⁄", "\u2118": "℘", "\u2111": "ℑ", "\u211C": "ℜ", "\u2122": "™", "\u2135": "ℵ", "\u2190": "←", "\u2191": "↑", "\u2192": "→", "\u2193": "↓", "\u2194": "↔", "\u21B5": "↵", "\u21D0": "⇐", "\u21D1": "⇑", "\u21D2": "⇒", "\u21D3": "⇓", "\u21D4": "⇔", "\u2200": "∀", "\u2202": "∂", "\u2203": "∃", "\u2205": "∅", "\u2207": "∇", "\u2208": "∈", "\u2209": "∉", "\u220B": "∋", "\u220F": "∏", "\u2211": "∑", "\u2212": "−", "\u2217": "∗", "\u221A": "√", "\u221D": "∝", "\u221E": "∞", "\u2220": "∠", "\u2227": "∧", "\u2228": "∨", "\u2229": "∩", "\u222A": "∪", "\u222B": "∫", "\u2234": "∴", "\u223C": "∼", "\u2245": "≅", "\u2248": "≈", "\u2260": "≠", "\u2261": "≡", "\u2264": "≤", "\u2265": "≥", "\u2282": "⊂", "\u2283": "⊃", "\u2284": "⊄", "\u2286": "⊆", "\u2287": "⊇", "\u2295": "⊕", "\u2297": "⊗", "\u22A5": "⊥", "\u22C5": "⋅", "\u2308": "⌈", "\u2309": "⌉", "\u230A": "⌊", "\u230B": "⌋", "\u2329": "⟨", "\u232A": "⟩", "\u25CA": "◊", "\u2660": "♠", "\u2663": "♣", "\u2665": "♥", "\u2666": "♦" } }, html5: { entities: { "Æ": "\xC6", "Æ": "\xC6", "&": "&", "&": "&", "Á": "\xC1", "Á": "\xC1", "Ă": "\u0102", "Â": "\xC2", "Â": "\xC2", "А": "\u0410", "𝔄": "\u{1D504}", "À": "\xC0", "À": "\xC0", "Α": "\u0391", "Ā": "\u0100", "⩓": "\u2A53", "Ą": "\u0104", "𝔸": "\u{1D538}", "⁡": "\u2061", "Å": "\xC5", "Å": "\xC5", "𝒜": "\u{1D49C}", "≔": "\u2254", "Ã": "\xC3", "Ã": "\xC3", "Ä": "\xC4", "Ä": "\xC4", "∖": "\u2216", "⫧": "\u2AE7", "⌆": "\u2306", "Б": "\u0411", "∵": "\u2235", "ℬ": "\u212C", "Β": "\u0392", "𝔅": "\u{1D505}", "𝔹": "\u{1D539}", "˘": "\u02D8", "ℬ": "\u212C", "≎": "\u224E", "Ч": "\u0427", "©": "\xA9", "©": "\xA9", "Ć": "\u0106", "⋒": "\u22D2", "ⅅ": "\u2145", "ℭ": "\u212D", "Č": "\u010C", "Ç": "\xC7", "Ç": "\xC7", "Ĉ": "\u0108", "∰": "\u2230", "Ċ": "\u010A", "¸": "\xB8", "·": "\xB7", "ℭ": "\u212D", "Χ": "\u03A7", "⊙": "\u2299", "⊖": "\u2296", "⊕": "\u2295", "⊗": "\u2297", "∲": "\u2232", "”": "\u201D", "’": "\u2019", "∷": "\u2237", "⩴": "\u2A74", "≡": "\u2261", "∯": "\u222F", "∮": "\u222E", "ℂ": "\u2102", "∐": "\u2210", "∳": "\u2233", "⨯": "\u2A2F", "𝒞": "\u{1D49E}", "⋓": "\u22D3", "≍": "\u224D", "ⅅ": "\u2145", "⤑": "\u2911", "Ђ": "\u0402", "Ѕ": "\u0405", "Џ": "\u040F", "‡": "\u2021", "↡": "\u21A1", "⫤": "\u2AE4", "Ď": "\u010E", "Д": "\u0414", "∇": "\u2207", "Δ": "\u0394", "𝔇": "\u{1D507}", "´": "\xB4", "˙": "\u02D9", "˝": "\u02DD", "`": "`", "˜": "\u02DC", "⋄": "\u22C4", "ⅆ": "\u2146", "𝔻": "\u{1D53B}", "¨": "\xA8", "⃜": "\u20DC", "≐": "\u2250", "∯": "\u222F", "¨": "\xA8", "⇓": "\u21D3", "⇐": "\u21D0", "⇔": "\u21D4", "⫤": "\u2AE4", "⟸": "\u27F8", "⟺": "\u27FA", "⟹": "\u27F9", "⇒": "\u21D2", "⊨": "\u22A8", "⇑": "\u21D1", "⇕": "\u21D5", "∥": "\u2225", "↓": "\u2193", "⤓": "\u2913", "⇵": "\u21F5", "̑": "\u0311", "⥐": "\u2950", "⥞": "\u295E", "↽": "\u21BD", "⥖": "\u2956", "⥟": "\u295F", "⇁": "\u21C1", "⥗": "\u2957", "⊤": "\u22A4", "↧": "\u21A7", "⇓": "\u21D3", "𝒟": "\u{1D49F}", "Đ": "\u0110", "Ŋ": "\u014A", "Ð": "\xD0", "Ð": "\xD0", "É": "\xC9", "É": "\xC9", "Ě": "\u011A", "Ê": "\xCA", "Ê": "\xCA", "Э": "\u042D", "Ė": "\u0116", "𝔈": "\u{1D508}", "È": "\xC8", "È": "\xC8", "∈": "\u2208", "Ē": "\u0112", "◻": "\u25FB", "▫": "\u25AB", "Ę": "\u0118", "𝔼": "\u{1D53C}", "Ε": "\u0395", "⩵": "\u2A75", "≂": "\u2242", "⇌": "\u21CC", "ℰ": "\u2130", "⩳": "\u2A73", "Η": "\u0397", "Ë": "\xCB", "Ë": "\xCB", "∃": "\u2203", "ⅇ": "\u2147", "Ф": "\u0424", "𝔉": "\u{1D509}", "◼": "\u25FC", "▪": "\u25AA", "𝔽": "\u{1D53D}", "∀": "\u2200", "ℱ": "\u2131", "ℱ": "\u2131", "Ѓ": "\u0403", ">": ">", ">": ">", "Γ": "\u0393", "Ϝ": "\u03DC", "Ğ": "\u011E", "Ģ": "\u0122", "Ĝ": "\u011C", "Г": "\u0413", "Ġ": "\u0120", "𝔊": "\u{1D50A}", "⋙": "\u22D9", "𝔾": "\u{1D53E}", "≥": "\u2265", "⋛": "\u22DB", "≧": "\u2267", "⪢": "\u2AA2", "≷": "\u2277", "⩾": "\u2A7E", "≳": "\u2273", "𝒢": "\u{1D4A2}", "≫": "\u226B", "Ъ": "\u042A", "ˇ": "\u02C7", "^": "^", "Ĥ": "\u0124", "ℌ": "\u210C", "ℋ": "\u210B", "ℍ": "\u210D", "─": "\u2500", "ℋ": "\u210B", "Ħ": "\u0126", "≎": "\u224E", "≏": "\u224F", "Е": "\u0415", "IJ": "\u0132", "Ё": "\u0401", "Í": "\xCD", "Í": "\xCD", "Î": "\xCE", "Î": "\xCE", "И": "\u0418", "İ": "\u0130", "ℑ": "\u2111", "Ì": "\xCC", "Ì": "\xCC", "ℑ": "\u2111", "Ī": "\u012A", "ⅈ": "\u2148", "⇒": "\u21D2", "∬": "\u222C", "∫": "\u222B", "⋂": "\u22C2", "⁣": "\u2063", "⁢": "\u2062", "Į": "\u012E", "𝕀": "\u{1D540}", "Ι": "\u0399", "ℐ": "\u2110", "Ĩ": "\u0128", "І": "\u0406", "Ï": "\xCF", "Ï": "\xCF", "Ĵ": "\u0134", "Й": "\u0419", "𝔍": "\u{1D50D}", "𝕁": "\u{1D541}", "𝒥": "\u{1D4A5}", "Ј": "\u0408", "Є": "\u0404", "Х": "\u0425", "Ќ": "\u040C", "Κ": "\u039A", "Ķ": "\u0136", "К": "\u041A", "𝔎": "\u{1D50E}", "𝕂": "\u{1D542}", "𝒦": "\u{1D4A6}", "Љ": "\u0409", "<": "<", "<": "<", "Ĺ": "\u0139", "Λ": "\u039B", "⟪": "\u27EA", "ℒ": "\u2112", "↞": "\u219E", "Ľ": "\u013D", "Ļ": "\u013B", "Л": "\u041B", "⟨": "\u27E8", "←": "\u2190", "⇤": "\u21E4", "⇆": "\u21C6", "⌈": "\u2308", "⟦": "\u27E6", "⥡": "\u2961", "⇃": "\u21C3", "⥙": "\u2959", "⌊": "\u230A", "↔": "\u2194", "⥎": "\u294E", "⊣": "\u22A3", "↤": "\u21A4", "⥚": "\u295A", "⊲": "\u22B2", "⧏": "\u29CF", "⊴": "\u22B4", "⥑": "\u2951", "⥠": "\u2960", "↿": "\u21BF", "⥘": "\u2958", "↼": "\u21BC", "⥒": "\u2952", "⇐": "\u21D0", "⇔": "\u21D4", "⋚": "\u22DA", "≦": "\u2266", "≶": "\u2276", "⪡": "\u2AA1", "⩽": "\u2A7D", "≲": "\u2272", "𝔏": "\u{1D50F}", "⋘": "\u22D8", "⇚": "\u21DA", "Ŀ": "\u013F", "⟵": "\u27F5", "⟷": "\u27F7", "⟶": "\u27F6", "⟸": "\u27F8", "⟺": "\u27FA", "⟹": "\u27F9", "𝕃": "\u{1D543}", "↙": "\u2199", "↘": "\u2198", "ℒ": "\u2112", "↰": "\u21B0", "Ł": "\u0141", "≪": "\u226A", "⤅": "\u2905", "М": "\u041C", " ": "\u205F", "ℳ": "\u2133", "𝔐": "\u{1D510}", "∓": "\u2213", "𝕄": "\u{1D544}", "ℳ": "\u2133", "Μ": "\u039C", "Њ": "\u040A", "Ń": "\u0143", "Ň": "\u0147", "Ņ": "\u0145", "Н": "\u041D", "​": "\u200B", "​": "\u200B", "​": "\u200B", "​": "\u200B", "≫": "\u226B", "≪": "\u226A", "
": "\n", "𝔑": "\u{1D511}", "⁠": "\u2060", " ": "\xA0", "ℕ": "\u2115", "⫬": "\u2AEC", "≢": "\u2262", "≭": "\u226D", "∦": "\u2226", "∉": "\u2209", "≠": "\u2260", "≂̸": "\u2242\u0338", "∄": "\u2204", "≯": "\u226F", "≱": "\u2271", "≧̸": "\u2267\u0338", "≫̸": "\u226B\u0338", "≹": "\u2279", "⩾̸": "\u2A7E\u0338", "≵": "\u2275", "≎̸": "\u224E\u0338", "≏̸": "\u224F\u0338", "⋪": "\u22EA", "⧏̸": "\u29CF\u0338", "⋬": "\u22EC", "≮": "\u226E", "≰": "\u2270", "≸": "\u2278", "≪̸": "\u226A\u0338", "⩽̸": "\u2A7D\u0338", "≴": "\u2274", "⪢̸": "\u2AA2\u0338", "⪡̸": "\u2AA1\u0338", "⊀": "\u2280", "⪯̸": "\u2AAF\u0338", "⋠": "\u22E0", "∌": "\u220C", "⋫": "\u22EB", "⧐̸": "\u29D0\u0338", "⋭": "\u22ED", "⊏̸": "\u228F\u0338", "⋢": "\u22E2", "⊐̸": "\u2290\u0338", "⋣": "\u22E3", "⊂⃒": "\u2282\u20D2", "⊈": "\u2288", "⊁": "\u2281", "⪰̸": "\u2AB0\u0338", "⋡": "\u22E1", "≿̸": "\u227F\u0338", "⊃⃒": "\u2283\u20D2", "⊉": "\u2289", "≁": "\u2241", "≄": "\u2244", "≇": "\u2247", "≉": "\u2249", "∤": "\u2224", "𝒩": "\u{1D4A9}", "Ñ": "\xD1", "Ñ": "\xD1", "Ν": "\u039D", "Œ": "\u0152", "Ó": "\xD3", "Ó": "\xD3", "Ô": "\xD4", "Ô": "\xD4", "О": "\u041E", "Ő": "\u0150", "𝔒": "\u{1D512}", "Ò": "\xD2", "Ò": "\xD2", "Ō": "\u014C", "Ω": "\u03A9", "Ο": "\u039F", "𝕆": "\u{1D546}", "“": "\u201C", "‘": "\u2018", "⩔": "\u2A54", "𝒪": "\u{1D4AA}", "Ø": "\xD8", "Ø": "\xD8", "Õ": "\xD5", "Õ": "\xD5", "⨷": "\u2A37", "Ö": "\xD6", "Ö": "\xD6", "‾": "\u203E", "⏞": "\u23DE", "⎴": "\u23B4", "⏜": "\u23DC", "∂": "\u2202", "П": "\u041F", "𝔓": "\u{1D513}", "Φ": "\u03A6", "Π": "\u03A0", "±": "\xB1", "ℌ": "\u210C", "ℙ": "\u2119", "⪻": "\u2ABB", "≺": "\u227A", "⪯": "\u2AAF", "≼": "\u227C", "≾": "\u227E", "″": "\u2033", "∏": "\u220F", "∷": "\u2237", "∝": "\u221D", "𝒫": "\u{1D4AB}", "Ψ": "\u03A8", """: '"', """: '"', "𝔔": "\u{1D514}", "ℚ": "\u211A", "𝒬": "\u{1D4AC}", "⤐": "\u2910", "®": "\xAE", "®": "\xAE", "Ŕ": "\u0154", "⟫": "\u27EB", "↠": "\u21A0", "⤖": "\u2916", "Ř": "\u0158", "Ŗ": "\u0156", "Р": "\u0420", "ℜ": "\u211C", "∋": "\u220B", "⇋": "\u21CB", "⥯": "\u296F", "ℜ": "\u211C", "Ρ": "\u03A1", "⟩": "\u27E9", "→": "\u2192", "⇥": "\u21E5", "⇄": "\u21C4", "⌉": "\u2309", "⟧": "\u27E7", "⥝": "\u295D", "⇂": "\u21C2", "⥕": "\u2955", "⌋": "\u230B", "⊢": "\u22A2", "↦": "\u21A6", "⥛": "\u295B", "⊳": "\u22B3", "⧐": "\u29D0", "⊵": "\u22B5", "⥏": "\u294F", "⥜": "\u295C", "↾": "\u21BE", "⥔": "\u2954", "⇀": "\u21C0", "⥓": "\u2953", "⇒": "\u21D2", "ℝ": "\u211D", "⥰": "\u2970", "⇛": "\u21DB", "ℛ": "\u211B", "↱": "\u21B1", "⧴": "\u29F4", "Щ": "\u0429", "Ш": "\u0428", "Ь": "\u042C", "Ś": "\u015A", "⪼": "\u2ABC", "Š": "\u0160", "Ş": "\u015E", "Ŝ": "\u015C", "С": "\u0421", "𝔖": "\u{1D516}", "↓": "\u2193", "←": "\u2190", "→": "\u2192", "↑": "\u2191", "Σ": "\u03A3", "∘": "\u2218", "𝕊": "\u{1D54A}", "√": "\u221A", "□": "\u25A1", "⊓": "\u2293", "⊏": "\u228F", "⊑": "\u2291", "⊐": "\u2290", "⊒": "\u2292", "⊔": "\u2294", "𝒮": "\u{1D4AE}", "⋆": "\u22C6", "⋐": "\u22D0", "⋐": "\u22D0", "⊆": "\u2286", "≻": "\u227B", "⪰": "\u2AB0", "≽": "\u227D", "≿": "\u227F", "∋": "\u220B", "∑": "\u2211", "⋑": "\u22D1", "⊃": "\u2283", "⊇": "\u2287", "⋑": "\u22D1", "Þ": "\xDE", "Þ": "\xDE", "™": "\u2122", "Ћ": "\u040B", "Ц": "\u0426", "	": " ", "Τ": "\u03A4", "Ť": "\u0164", "Ţ": "\u0162", "Т": "\u0422", "𝔗": "\u{1D517}", "∴": "\u2234", "Θ": "\u0398", "  ": "\u205F\u200A", " ": "\u2009", "∼": "\u223C", "≃": "\u2243", "≅": "\u2245", "≈": "\u2248", "𝕋": "\u{1D54B}", "⃛": "\u20DB", "𝒯": "\u{1D4AF}", "Ŧ": "\u0166", "Ú": "\xDA", "Ú": "\xDA", "↟": "\u219F", "⥉": "\u2949", "Ў": "\u040E", "Ŭ": "\u016C", "Û": "\xDB", "Û": "\xDB", "У": "\u0423", "Ű": "\u0170", "𝔘": "\u{1D518}", "Ù": "\xD9", "Ù": "\xD9", "Ū": "\u016A", "_": "_", "⏟": "\u23DF", "⎵": "\u23B5", "⏝": "\u23DD", "⋃": "\u22C3", "⊎": "\u228E", "Ų": "\u0172", "𝕌": "\u{1D54C}", "↑": "\u2191", "⤒": "\u2912", "⇅": "\u21C5", "↕": "\u2195", "⥮": "\u296E", "⊥": "\u22A5", "↥": "\u21A5", "⇑": "\u21D1", "⇕": "\u21D5", "↖": "\u2196", "↗": "\u2197", "ϒ": "\u03D2", "Υ": "\u03A5", "Ů": "\u016E", "𝒰": "\u{1D4B0}", "Ũ": "\u0168", "Ü": "\xDC", "Ü": "\xDC", "⊫": "\u22AB", "⫫": "\u2AEB", "В": "\u0412", "⊩": "\u22A9", "⫦": "\u2AE6", "⋁": "\u22C1", "‖": "\u2016", "‖": "\u2016", "∣": "\u2223", "|": "|", "❘": "\u2758", "≀": "\u2240", " ": "\u200A", "𝔙": "\u{1D519}", "𝕍": "\u{1D54D}", "𝒱": "\u{1D4B1}", "⊪": "\u22AA", "Ŵ": "\u0174", "⋀": "\u22C0", "𝔚": "\u{1D51A}", "𝕎": "\u{1D54E}", "𝒲": "\u{1D4B2}", "𝔛": "\u{1D51B}", "Ξ": "\u039E", "𝕏": "\u{1D54F}", "𝒳": "\u{1D4B3}", "Я": "\u042F", "Ї": "\u0407", "Ю": "\u042E", "Ý": "\xDD", "Ý": "\xDD", "Ŷ": "\u0176", "Ы": "\u042B", "𝔜": "\u{1D51C}", "𝕐": "\u{1D550}", "𝒴": "\u{1D4B4}", "Ÿ": "\u0178", "Ж": "\u0416", "Ź": "\u0179", "Ž": "\u017D", "З": "\u0417", "Ż": "\u017B", "​": "\u200B", "Ζ": "\u0396", "ℨ": "\u2128", "ℤ": "\u2124", "𝒵": "\u{1D4B5}", "á": "\xE1", "á": "\xE1", "ă": "\u0103", "∾": "\u223E", "∾̳": "\u223E\u0333", "∿": "\u223F", "â": "\xE2", "â": "\xE2", "´": "\xB4", "´": "\xB4", "а": "\u0430", "æ": "\xE6", "æ": "\xE6", "⁡": "\u2061", "𝔞": "\u{1D51E}", "à": "\xE0", "à": "\xE0", "ℵ": "\u2135", "ℵ": "\u2135", "α": "\u03B1", "ā": "\u0101", "⨿": "\u2A3F", "&": "&", "&": "&", "∧": "\u2227", "⩕": "\u2A55", "⩜": "\u2A5C", "⩘": "\u2A58", "⩚": "\u2A5A", "∠": "\u2220", "⦤": "\u29A4", "∠": "\u2220", "∡": "\u2221", "⦨": "\u29A8", "⦩": "\u29A9", "⦪": "\u29AA", "⦫": "\u29AB", "⦬": "\u29AC", "⦭": "\u29AD", "⦮": "\u29AE", "⦯": "\u29AF", "∟": "\u221F", "⊾": "\u22BE", "⦝": "\u299D", "∢": "\u2222", "Å": "\xC5", "⍼": "\u237C", "ą": "\u0105", "𝕒": "\u{1D552}", "≈": "\u2248", "⩰": "\u2A70", "⩯": "\u2A6F", "≊": "\u224A", "≋": "\u224B", "'": "'", "≈": "\u2248", "≊": "\u224A", "å": "\xE5", "å": "\xE5", "𝒶": "\u{1D4B6}", "*": "*", "≈": "\u2248", "≍": "\u224D", "ã": "\xE3", "ã": "\xE3", "ä": "\xE4", "ä": "\xE4", "∳": "\u2233", "⨑": "\u2A11", "⫭": "\u2AED", "≌": "\u224C", "϶": "\u03F6", "‵": "\u2035", "∽": "\u223D", "⋍": "\u22CD", "⊽": "\u22BD", "⌅": "\u2305", "⌅": "\u2305", "⎵": "\u23B5", "⎶": "\u23B6", "≌": "\u224C", "б": "\u0431", "„": "\u201E", "∵": "\u2235", "∵": "\u2235", "⦰": "\u29B0", "϶": "\u03F6", "ℬ": "\u212C", "β": "\u03B2", "ℶ": "\u2136", "≬": "\u226C", "𝔟": "\u{1D51F}", "⋂": "\u22C2", "◯": "\u25EF", "⋃": "\u22C3", "⨀": "\u2A00", "⨁": "\u2A01", "⨂": "\u2A02", "⨆": "\u2A06", "★": "\u2605", "▽": "\u25BD", "△": "\u25B3", "⨄": "\u2A04", "⋁": "\u22C1", "⋀": "\u22C0", "⤍": "\u290D", "⧫": "\u29EB", "▪": "\u25AA", "▴": "\u25B4", "▾": "\u25BE", "◂": "\u25C2", "▸": "\u25B8", "␣": "\u2423", "▒": "\u2592", "░": "\u2591", "▓": "\u2593", "█": "\u2588", "=⃥": "=\u20E5", "≡⃥": "\u2261\u20E5", "⌐": "\u2310", "𝕓": "\u{1D553}", "⊥": "\u22A5", "⊥": "\u22A5", "⋈": "\u22C8", "╗": "\u2557", "╔": "\u2554", "╖": "\u2556", "╓": "\u2553", "═": "\u2550", "╦": "\u2566", "╩": "\u2569", "╤": "\u2564", "╧": "\u2567", "╝": "\u255D", "╚": "\u255A", "╜": "\u255C", "╙": "\u2559", "║": "\u2551", "╬": "\u256C", "╣": "\u2563", "╠": "\u2560", "╫": "\u256B", "╢": "\u2562", "╟": "\u255F", "⧉": "\u29C9", "╕": "\u2555", "╒": "\u2552", "┐": "\u2510", "┌": "\u250C", "─": "\u2500", "╥": "\u2565", "╨": "\u2568", "┬": "\u252C", "┴": "\u2534", "⊟": "\u229F", "⊞": "\u229E", "⊠": "\u22A0", "╛": "\u255B", "╘": "\u2558", "┘": "\u2518", "└": "\u2514", "│": "\u2502", "╪": "\u256A", "╡": "\u2561", "╞": "\u255E", "┼": "\u253C", "┤": "\u2524", "├": "\u251C", "‵": "\u2035", "˘": "\u02D8", "¦": "\xA6", "¦": "\xA6", "𝒷": "\u{1D4B7}", "⁏": "\u204F", "∽": "\u223D", "⋍": "\u22CD", "\": "\\", "⧅": "\u29C5", "⟈": "\u27C8", "•": "\u2022", "•": "\u2022", "≎": "\u224E", "⪮": "\u2AAE", "≏": "\u224F", "≏": "\u224F", "ć": "\u0107", "∩": "\u2229", "⩄": "\u2A44", "⩉": "\u2A49", "⩋": "\u2A4B", "⩇": "\u2A47", "⩀": "\u2A40", "∩︀": "\u2229\uFE00", "⁁": "\u2041", "ˇ": "\u02C7", "⩍": "\u2A4D", "č": "\u010D", "ç": "\xE7", "ç": "\xE7", "ĉ": "\u0109", "⩌": "\u2A4C", "⩐": "\u2A50", "ċ": "\u010B", "¸": "\xB8", "¸": "\xB8", "⦲": "\u29B2", "¢": "\xA2", "¢": "\xA2", "·": "\xB7", "𝔠": "\u{1D520}", "ч": "\u0447", "✓": "\u2713", "✓": "\u2713", "χ": "\u03C7", "○": "\u25CB", "⧃": "\u29C3", "ˆ": "\u02C6", "≗": "\u2257", "↺": "\u21BA", "↻": "\u21BB", "®": "\xAE", "Ⓢ": "\u24C8", "⊛": "\u229B", "⊚": "\u229A", "⊝": "\u229D", "≗": "\u2257", "⨐": "\u2A10", "⫯": "\u2AEF", "⧂": "\u29C2", "♣": "\u2663", "♣": "\u2663", ":": ":", "≔": "\u2254", "≔": "\u2254", ",": ",", "@": "@", "∁": "\u2201", "∘": "\u2218", "∁": "\u2201", "ℂ": "\u2102", "≅": "\u2245", "⩭": "\u2A6D", "∮": "\u222E", "𝕔": "\u{1D554}", "∐": "\u2210", "©": "\xA9", "©": "\xA9", "℗": "\u2117", "↵": "\u21B5", "✗": "\u2717", "𝒸": "\u{1D4B8}", "⫏": "\u2ACF", "⫑": "\u2AD1", "⫐": "\u2AD0", "⫒": "\u2AD2", "⋯": "\u22EF", "⤸": "\u2938", "⤵": "\u2935", "⋞": "\u22DE", "⋟": "\u22DF", "↶": "\u21B6", "⤽": "\u293D", "∪": "\u222A", "⩈": "\u2A48", "⩆": "\u2A46", "⩊": "\u2A4A", "⊍": "\u228D", "⩅": "\u2A45", "∪︀": "\u222A\uFE00", "↷": "\u21B7", "⤼": "\u293C", "⋞": "\u22DE", "⋟": "\u22DF", "⋎": "\u22CE", "⋏": "\u22CF", "¤": "\xA4", "¤": "\xA4", "↶": "\u21B6", "↷": "\u21B7", "⋎": "\u22CE", "⋏": "\u22CF", "∲": "\u2232", "∱": "\u2231", "⌭": "\u232D", "⇓": "\u21D3", "⥥": "\u2965", "†": "\u2020", "ℸ": "\u2138", "↓": "\u2193", "‐": "\u2010", "⊣": "\u22A3", "⤏": "\u290F", "˝": "\u02DD", "ď": "\u010F", "д": "\u0434", "ⅆ": "\u2146", "‡": "\u2021", "⇊": "\u21CA", "⩷": "\u2A77", "°": "\xB0", "°": "\xB0", "δ": "\u03B4", "⦱": "\u29B1", "⥿": "\u297F", "𝔡": "\u{1D521}", "⇃": "\u21C3", "⇂": "\u21C2", "⋄": "\u22C4", "⋄": "\u22C4", "♦": "\u2666", "♦": "\u2666", "¨": "\xA8", "ϝ": "\u03DD", "⋲": "\u22F2", "÷": "\xF7", "÷": "\xF7", "÷": "\xF7", "⋇": "\u22C7", "⋇": "\u22C7", "ђ": "\u0452", "⌞": "\u231E", "⌍": "\u230D", "$": "$", "𝕕": "\u{1D555}", "˙": "\u02D9", "≐": "\u2250", "≑": "\u2251", "∸": "\u2238", "∔": "\u2214", "⊡": "\u22A1", "⌆": "\u2306", "↓": "\u2193", "⇊": "\u21CA", "⇃": "\u21C3", "⇂": "\u21C2", "⤐": "\u2910", "⌟": "\u231F", "⌌": "\u230C", "𝒹": "\u{1D4B9}", "ѕ": "\u0455", "⧶": "\u29F6", "đ": "\u0111", "⋱": "\u22F1", "▿": "\u25BF", "▾": "\u25BE", "⇵": "\u21F5", "⥯": "\u296F", "⦦": "\u29A6", "џ": "\u045F", "⟿": "\u27FF", "⩷": "\u2A77", "≑": "\u2251", "é": "\xE9", "é": "\xE9", "⩮": "\u2A6E", "ě": "\u011B", "≖": "\u2256", "ê": "\xEA", "ê": "\xEA", "≕": "\u2255", "э": "\u044D", "ė": "\u0117", "ⅇ": "\u2147", "≒": "\u2252", "𝔢": "\u{1D522}", "⪚": "\u2A9A", "è": "\xE8", "è": "\xE8", "⪖": "\u2A96", "⪘": "\u2A98", "⪙": "\u2A99", "⏧": "\u23E7", "ℓ": "\u2113", "⪕": "\u2A95", "⪗": "\u2A97", "ē": "\u0113", "∅": "\u2205", "∅": "\u2205", "∅": "\u2205", " ": "\u2004", " ": "\u2005", " ": "\u2003", "ŋ": "\u014B", " ": "\u2002", "ę": "\u0119", "𝕖": "\u{1D556}", "⋕": "\u22D5", "⧣": "\u29E3", "⩱": "\u2A71", "ε": "\u03B5", "ε": "\u03B5", "ϵ": "\u03F5", "≖": "\u2256", "≕": "\u2255", "≂": "\u2242", "⪖": "\u2A96", "⪕": "\u2A95", "=": "=", "≟": "\u225F", "≡": "\u2261", "⩸": "\u2A78", "⧥": "\u29E5", "≓": "\u2253", "⥱": "\u2971", "ℯ": "\u212F", "≐": "\u2250", "≂": "\u2242", "η": "\u03B7", "ð": "\xF0", "ð": "\xF0", "ë": "\xEB", "ë": "\xEB", "€": "\u20AC", "!": "!", "∃": "\u2203", "ℰ": "\u2130", "ⅇ": "\u2147", "≒": "\u2252", "ф": "\u0444", "♀": "\u2640", "ffi": "\uFB03", "ff": "\uFB00", "ffl": "\uFB04", "𝔣": "\u{1D523}", "fi": "\uFB01", "fj": "fj", "♭": "\u266D", "fl": "\uFB02", "▱": "\u25B1", "ƒ": "\u0192", "𝕗": "\u{1D557}", "∀": "\u2200", "⋔": "\u22D4", "⫙": "\u2AD9", "⨍": "\u2A0D", "½": "\xBD", "½": "\xBD", "⅓": "\u2153", "¼": "\xBC", "¼": "\xBC", "⅕": "\u2155", "⅙": "\u2159", "⅛": "\u215B", "⅔": "\u2154", "⅖": "\u2156", "¾": "\xBE", "¾": "\xBE", "⅗": "\u2157", "⅜": "\u215C", "⅘": "\u2158", "⅚": "\u215A", "⅝": "\u215D", "⅞": "\u215E", "⁄": "\u2044", "⌢": "\u2322", "𝒻": "\u{1D4BB}", "≧": "\u2267", "⪌": "\u2A8C", "ǵ": "\u01F5", "γ": "\u03B3", "ϝ": "\u03DD", "⪆": "\u2A86", "ğ": "\u011F", "ĝ": "\u011D", "г": "\u0433", "ġ": "\u0121", "≥": "\u2265", "⋛": "\u22DB", "≥": "\u2265", "≧": "\u2267", "⩾": "\u2A7E", "⩾": "\u2A7E", "⪩": "\u2AA9", "⪀": "\u2A80", "⪂": "\u2A82", "⪄": "\u2A84", "⋛︀": "\u22DB\uFE00", "⪔": "\u2A94", "𝔤": "\u{1D524}", "≫": "\u226B", "⋙": "\u22D9", "ℷ": "\u2137", "ѓ": "\u0453", "≷": "\u2277", "⪒": "\u2A92", "⪥": "\u2AA5", "⪤": "\u2AA4", "≩": "\u2269", "⪊": "\u2A8A", "⪊": "\u2A8A", "⪈": "\u2A88", "⪈": "\u2A88", "≩": "\u2269", "⋧": "\u22E7", "𝕘": "\u{1D558}", "`": "`", "ℊ": "\u210A", "≳": "\u2273", "⪎": "\u2A8E", "⪐": "\u2A90", ">": ">", ">": ">", "⪧": "\u2AA7", "⩺": "\u2A7A", "⋗": "\u22D7", "⦕": "\u2995", "⩼": "\u2A7C", "⪆": "\u2A86", "⥸": "\u2978", "⋗": "\u22D7", "⋛": "\u22DB", "⪌": "\u2A8C", "≷": "\u2277", "≳": "\u2273", "≩︀": "\u2269\uFE00", "≩︀": "\u2269\uFE00", "⇔": "\u21D4", " ": "\u200A", "½": "\xBD", "ℋ": "\u210B", "ъ": "\u044A", "↔": "\u2194", "⥈": "\u2948", "↭": "\u21AD", "ℏ": "\u210F", "ĥ": "\u0125", "♥": "\u2665", "♥": "\u2665", "…": "\u2026", "⊹": "\u22B9", "𝔥": "\u{1D525}", "⤥": "\u2925", "⤦": "\u2926", "⇿": "\u21FF", "∻": "\u223B", "↩": "\u21A9", "↪": "\u21AA", "𝕙": "\u{1D559}", "―": "\u2015", "𝒽": "\u{1D4BD}", "ℏ": "\u210F", "ħ": "\u0127", "⁃": "\u2043", "‐": "\u2010", "í": "\xED", "í": "\xED", "⁣": "\u2063", "î": "\xEE", "î": "\xEE", "и": "\u0438", "е": "\u0435", "¡": "\xA1", "¡": "\xA1", "⇔": "\u21D4", "𝔦": "\u{1D526}", "ì": "\xEC", "ì": "\xEC", "ⅈ": "\u2148", "⨌": "\u2A0C", "∭": "\u222D", "⧜": "\u29DC", "℩": "\u2129", "ij": "\u0133", "ī": "\u012B", "ℑ": "\u2111", "ℐ": "\u2110", "ℑ": "\u2111", "ı": "\u0131", "⊷": "\u22B7", "Ƶ": "\u01B5", "∈": "\u2208", "℅": "\u2105", "∞": "\u221E", "⧝": "\u29DD", "ı": "\u0131", "∫": "\u222B", "⊺": "\u22BA", "ℤ": "\u2124", "⊺": "\u22BA", "⨗": "\u2A17", "⨼": "\u2A3C", "ё": "\u0451", "į": "\u012F", "𝕚": "\u{1D55A}", "ι": "\u03B9", "⨼": "\u2A3C", "¿": "\xBF", "¿": "\xBF", "𝒾": "\u{1D4BE}", "∈": "\u2208", "⋹": "\u22F9", "⋵": "\u22F5", "⋴": "\u22F4", "⋳": "\u22F3", "∈": "\u2208", "⁢": "\u2062", "ĩ": "\u0129", "і": "\u0456", "ï": "\xEF", "ï": "\xEF", "ĵ": "\u0135", "й": "\u0439", "𝔧": "\u{1D527}", "ȷ": "\u0237", "𝕛": "\u{1D55B}", "𝒿": "\u{1D4BF}", "ј": "\u0458", "є": "\u0454", "κ": "\u03BA", "ϰ": "\u03F0", "ķ": "\u0137", "к": "\u043A", "𝔨": "\u{1D528}", "ĸ": "\u0138", "х": "\u0445", "ќ": "\u045C", "𝕜": "\u{1D55C}", "𝓀": "\u{1D4C0}", "⇚": "\u21DA", "⇐": "\u21D0", "⤛": "\u291B", "⤎": "\u290E", "≦": "\u2266", "⪋": "\u2A8B", "⥢": "\u2962", "ĺ": "\u013A", "⦴": "\u29B4", "ℒ": "\u2112", "λ": "\u03BB", "⟨": "\u27E8", "⦑": "\u2991", "⟨": "\u27E8", "⪅": "\u2A85", "«": "\xAB", "«": "\xAB", "←": "\u2190", "⇤": "\u21E4", "⤟": "\u291F", "⤝": "\u291D", "↩": "\u21A9", "↫": "\u21AB", "⤹": "\u2939", "⥳": "\u2973", "↢": "\u21A2", "⪫": "\u2AAB", "⤙": "\u2919", "⪭": "\u2AAD", "⪭︀": "\u2AAD\uFE00", "⤌": "\u290C", "❲": "\u2772", "{": "{", "[": "[", "⦋": "\u298B", "⦏": "\u298F", "⦍": "\u298D", "ľ": "\u013E", "ļ": "\u013C", "⌈": "\u2308", "{": "{", "л": "\u043B", "⤶": "\u2936", "“": "\u201C", "„": "\u201E", "⥧": "\u2967", "⥋": "\u294B", "↲": "\u21B2", "≤": "\u2264", "←": "\u2190", "↢": "\u21A2", "↽": "\u21BD", "↼": "\u21BC", "⇇": "\u21C7", "↔": "\u2194", "⇆": "\u21C6", "⇋": "\u21CB", "↭": "\u21AD", "⋋": "\u22CB", "⋚": "\u22DA", "≤": "\u2264", "≦": "\u2266", "⩽": "\u2A7D", "⩽": "\u2A7D", "⪨": "\u2AA8", "⩿": "\u2A7F", "⪁": "\u2A81", "⪃": "\u2A83", "⋚︀": "\u22DA\uFE00", "⪓": "\u2A93", "⪅": "\u2A85", "⋖": "\u22D6", "⋚": "\u22DA", "⪋": "\u2A8B", "≶": "\u2276", "≲": "\u2272", "⥼": "\u297C", "⌊": "\u230A", "𝔩": "\u{1D529}", "≶": "\u2276", "⪑": "\u2A91", "↽": "\u21BD", "↼": "\u21BC", "⥪": "\u296A", "▄": "\u2584", "љ": "\u0459", "≪": "\u226A", "⇇": "\u21C7", "⌞": "\u231E", "⥫": "\u296B", "◺": "\u25FA", "ŀ": "\u0140", "⎰": "\u23B0", "⎰": "\u23B0", "≨": "\u2268", "⪉": "\u2A89", "⪉": "\u2A89", "⪇": "\u2A87", "⪇": "\u2A87", "≨": "\u2268", "⋦": "\u22E6", "⟬": "\u27EC", "⇽": "\u21FD", "⟦": "\u27E6", "⟵": "\u27F5", "⟷": "\u27F7", "⟼": "\u27FC", "⟶": "\u27F6", "↫": "\u21AB", "↬": "\u21AC", "⦅": "\u2985", "𝕝": "\u{1D55D}", "⨭": "\u2A2D", "⨴": "\u2A34", "∗": "\u2217", "_": "_", "◊": "\u25CA", "◊": "\u25CA", "⧫": "\u29EB", "(": "(", "⦓": "\u2993", "⇆": "\u21C6", "⌟": "\u231F", "⇋": "\u21CB", "⥭": "\u296D", "‎": "\u200E", "⊿": "\u22BF", "‹": "\u2039", "𝓁": "\u{1D4C1}", "↰": "\u21B0", "≲": "\u2272", "⪍": "\u2A8D", "⪏": "\u2A8F", "[": "[", "‘": "\u2018", "‚": "\u201A", "ł": "\u0142", "<": "<", "<": "<", "⪦": "\u2AA6", "⩹": "\u2A79", "⋖": "\u22D6", "⋋": "\u22CB", "⋉": "\u22C9", "⥶": "\u2976", "⩻": "\u2A7B", "⦖": "\u2996", "◃": "\u25C3", "⊴": "\u22B4", "◂": "\u25C2", "⥊": "\u294A", "⥦": "\u2966", "≨︀": "\u2268\uFE00", "≨︀": "\u2268\uFE00", "∺": "\u223A", "¯": "\xAF", "¯": "\xAF", "♂": "\u2642", "✠": "\u2720", "✠": "\u2720", "↦": "\u21A6", "↦": "\u21A6", "↧": "\u21A7", "↤": "\u21A4", "↥": "\u21A5", "▮": "\u25AE", "⨩": "\u2A29", "м": "\u043C", "—": "\u2014", "∡": "\u2221", "𝔪": "\u{1D52A}", "℧": "\u2127", "µ": "\xB5", "µ": "\xB5", "∣": "\u2223", "*": "*", "⫰": "\u2AF0", "·": "\xB7", "·": "\xB7", "−": "\u2212", "⊟": "\u229F", "∸": "\u2238", "⨪": "\u2A2A", "⫛": "\u2ADB", "…": "\u2026", "∓": "\u2213", "⊧": "\u22A7", "𝕞": "\u{1D55E}", "∓": "\u2213", "𝓂": "\u{1D4C2}", "∾": "\u223E", "μ": "\u03BC", "⊸": "\u22B8", "⊸": "\u22B8", "⋙̸": "\u22D9\u0338", "≫⃒": "\u226B\u20D2", "≫̸": "\u226B\u0338", "⇍": "\u21CD", "⇎": "\u21CE", "⋘̸": "\u22D8\u0338", "≪⃒": "\u226A\u20D2", "≪̸": "\u226A\u0338", "⇏": "\u21CF", "⊯": "\u22AF", "⊮": "\u22AE", "∇": "\u2207", "ń": "\u0144", "∠⃒": "\u2220\u20D2", "≉": "\u2249", "⩰̸": "\u2A70\u0338", "≋̸": "\u224B\u0338", "ʼn": "\u0149", "≉": "\u2249", "♮": "\u266E", "♮": "\u266E", "ℕ": "\u2115", " ": "\xA0", " ": "\xA0", "≎̸": "\u224E\u0338", "≏̸": "\u224F\u0338", "⩃": "\u2A43", "ň": "\u0148", "ņ": "\u0146", "≇": "\u2247", "⩭̸": "\u2A6D\u0338", "⩂": "\u2A42", "н": "\u043D", "–": "\u2013", "≠": "\u2260", "⇗": "\u21D7", "⤤": "\u2924", "↗": "\u2197", "↗": "\u2197", "≐̸": "\u2250\u0338", "≢": "\u2262", "⤨": "\u2928", "≂̸": "\u2242\u0338", "∄": "\u2204", "∄": "\u2204", "𝔫": "\u{1D52B}", "≧̸": "\u2267\u0338", "≱": "\u2271", "≱": "\u2271", "≧̸": "\u2267\u0338", "⩾̸": "\u2A7E\u0338", "⩾̸": "\u2A7E\u0338", "≵": "\u2275", "≯": "\u226F", "≯": "\u226F", "⇎": "\u21CE", "↮": "\u21AE", "⫲": "\u2AF2", "∋": "\u220B", "⋼": "\u22FC", "⋺": "\u22FA", "∋": "\u220B", "њ": "\u045A", "⇍": "\u21CD", "≦̸": "\u2266\u0338", "↚": "\u219A", "‥": "\u2025", "≰": "\u2270", "↚": "\u219A", "↮": "\u21AE", "≰": "\u2270", "≦̸": "\u2266\u0338", "⩽̸": "\u2A7D\u0338", "⩽̸": "\u2A7D\u0338", "≮": "\u226E", "≴": "\u2274", "≮": "\u226E", "⋪": "\u22EA", "⋬": "\u22EC", "∤": "\u2224", "𝕟": "\u{1D55F}", "¬": "\xAC", "¬": "\xAC", "∉": "\u2209", "⋹̸": "\u22F9\u0338", "⋵̸": "\u22F5\u0338", "∉": "\u2209", "⋷": "\u22F7", "⋶": "\u22F6", "∌": "\u220C", "∌": "\u220C", "⋾": "\u22FE", "⋽": "\u22FD", "∦": "\u2226", "∦": "\u2226", "⫽⃥": "\u2AFD\u20E5", "∂̸": "\u2202\u0338", "⨔": "\u2A14", "⊀": "\u2280", "⋠": "\u22E0", "⪯̸": "\u2AAF\u0338", "⊀": "\u2280", "⪯̸": "\u2AAF\u0338", "⇏": "\u21CF", "↛": "\u219B", "⤳̸": "\u2933\u0338", "↝̸": "\u219D\u0338", "↛": "\u219B", "⋫": "\u22EB", "⋭": "\u22ED", "⊁": "\u2281", "⋡": "\u22E1", "⪰̸": "\u2AB0\u0338", "𝓃": "\u{1D4C3}", "∤": "\u2224", "∦": "\u2226", "≁": "\u2241", "≄": "\u2244", "≄": "\u2244", "∤": "\u2224", "∦": "\u2226", "⋢": "\u22E2", "⋣": "\u22E3", "⊄": "\u2284", "⫅̸": "\u2AC5\u0338", "⊈": "\u2288", "⊂⃒": "\u2282\u20D2", "⊈": "\u2288", "⫅̸": "\u2AC5\u0338", "⊁": "\u2281", "⪰̸": "\u2AB0\u0338", "⊅": "\u2285", "⫆̸": "\u2AC6\u0338", "⊉": "\u2289", "⊃⃒": "\u2283\u20D2", "⊉": "\u2289", "⫆̸": "\u2AC6\u0338", "≹": "\u2279", "ñ": "\xF1", "ñ": "\xF1", "≸": "\u2278", "⋪": "\u22EA", "⋬": "\u22EC", "⋫": "\u22EB", "⋭": "\u22ED", "ν": "\u03BD", "#": "#", "№": "\u2116", " ": "\u2007", "⊭": "\u22AD", "⤄": "\u2904", "≍⃒": "\u224D\u20D2", "⊬": "\u22AC", "≥⃒": "\u2265\u20D2", ">⃒": ">\u20D2", "⧞": "\u29DE", "⤂": "\u2902", "≤⃒": "\u2264\u20D2", "<⃒": "<\u20D2", "⊴⃒": "\u22B4\u20D2", "⤃": "\u2903", "⊵⃒": "\u22B5\u20D2", "∼⃒": "\u223C\u20D2", "⇖": "\u21D6", "⤣": "\u2923", "↖": "\u2196", "↖": "\u2196", "⤧": "\u2927", "Ⓢ": "\u24C8", "ó": "\xF3", "ó": "\xF3", "⊛": "\u229B", "⊚": "\u229A", "ô": "\xF4", "ô": "\xF4", "о": "\u043E", "⊝": "\u229D", "ő": "\u0151", "⨸": "\u2A38", "⊙": "\u2299", "⦼": "\u29BC", "œ": "\u0153", "⦿": "\u29BF", "𝔬": "\u{1D52C}", "˛": "\u02DB", "ò": "\xF2", "ò": "\xF2", "⧁": "\u29C1", "⦵": "\u29B5", "Ω": "\u03A9", "∮": "\u222E", "↺": "\u21BA", "⦾": "\u29BE", "⦻": "\u29BB", "‾": "\u203E", "⧀": "\u29C0", "ō": "\u014D", "ω": "\u03C9", "ο": "\u03BF", "⦶": "\u29B6", "⊖": "\u2296", "𝕠": "\u{1D560}", "⦷": "\u29B7", "⦹": "\u29B9", "⊕": "\u2295", "∨": "\u2228", "↻": "\u21BB", "⩝": "\u2A5D", "ℴ": "\u2134", "ℴ": "\u2134", "ª": "\xAA", "ª": "\xAA", "º": "\xBA", "º": "\xBA", "⊶": "\u22B6", "⩖": "\u2A56", "⩗": "\u2A57", "⩛": "\u2A5B", "ℴ": "\u2134", "ø": "\xF8", "ø": "\xF8", "⊘": "\u2298", "õ": "\xF5", "õ": "\xF5", "⊗": "\u2297", "⨶": "\u2A36", "ö": "\xF6", "ö": "\xF6", "⌽": "\u233D", "∥": "\u2225", "¶": "\xB6", "¶": "\xB6", "∥": "\u2225", "⫳": "\u2AF3", "⫽": "\u2AFD", "∂": "\u2202", "п": "\u043F", "%": "%", ".": ".", "‰": "\u2030", "⊥": "\u22A5", "‱": "\u2031", "𝔭": "\u{1D52D}", "φ": "\u03C6", "ϕ": "\u03D5", "ℳ": "\u2133", "☎": "\u260E", "π": "\u03C0", "⋔": "\u22D4", "ϖ": "\u03D6", "ℏ": "\u210F", "ℎ": "\u210E", "ℏ": "\u210F", "+": "+", "⨣": "\u2A23", "⊞": "\u229E", "⨢": "\u2A22", "∔": "\u2214", "⨥": "\u2A25", "⩲": "\u2A72", "±": "\xB1", "±": "\xB1", "⨦": "\u2A26", "⨧": "\u2A27", "±": "\xB1", "⨕": "\u2A15", "𝕡": "\u{1D561}", "£": "\xA3", "£": "\xA3", "≺": "\u227A", "⪳": "\u2AB3", "⪷": "\u2AB7", "≼": "\u227C", "⪯": "\u2AAF", "≺": "\u227A", "⪷": "\u2AB7", "≼": "\u227C", "⪯": "\u2AAF", "⪹": "\u2AB9", "⪵": "\u2AB5", "⋨": "\u22E8", "≾": "\u227E", "′": "\u2032", "ℙ": "\u2119", "⪵": "\u2AB5", "⪹": "\u2AB9", "⋨": "\u22E8", "∏": "\u220F", "⌮": "\u232E", "⌒": "\u2312", "⌓": "\u2313", "∝": "\u221D", "∝": "\u221D", "≾": "\u227E", "⊰": "\u22B0", "𝓅": "\u{1D4C5}", "ψ": "\u03C8", " ": "\u2008", "𝔮": "\u{1D52E}", "⨌": "\u2A0C", "𝕢": "\u{1D562}", "⁗": "\u2057", "𝓆": "\u{1D4C6}", "ℍ": "\u210D", "⨖": "\u2A16", "?": "?", "≟": "\u225F", """: '"', """: '"', "⇛": "\u21DB", "⇒": "\u21D2", "⤜": "\u291C", "⤏": "\u290F", "⥤": "\u2964", "∽̱": "\u223D\u0331", "ŕ": "\u0155", "√": "\u221A", "⦳": "\u29B3", "⟩": "\u27E9", "⦒": "\u2992", "⦥": "\u29A5", "⟩": "\u27E9", "»": "\xBB", "»": "\xBB", "→": "\u2192", "⥵": "\u2975", "⇥": "\u21E5", "⤠": "\u2920", "⤳": "\u2933", "⤞": "\u291E", "↪": "\u21AA", "↬": "\u21AC", "⥅": "\u2945", "⥴": "\u2974", "↣": "\u21A3", "↝": "\u219D", "⤚": "\u291A", "∶": "\u2236", "ℚ": "\u211A", "⤍": "\u290D", "❳": "\u2773", "}": "}", "]": "]", "⦌": "\u298C", "⦎": "\u298E", "⦐": "\u2990", "ř": "\u0159", "ŗ": "\u0157", "⌉": "\u2309", "}": "}", "р": "\u0440", "⤷": "\u2937", "⥩": "\u2969", "”": "\u201D", "”": "\u201D", "↳": "\u21B3", "ℜ": "\u211C", "ℛ": "\u211B", "ℜ": "\u211C", "ℝ": "\u211D", "▭": "\u25AD", "®": "\xAE", "®": "\xAE", "⥽": "\u297D", "⌋": "\u230B", "𝔯": "\u{1D52F}", "⇁": "\u21C1", "⇀": "\u21C0", "⥬": "\u296C", "ρ": "\u03C1", "ϱ": "\u03F1", "→": "\u2192", "↣": "\u21A3", "⇁": "\u21C1", "⇀": "\u21C0", "⇄": "\u21C4", "⇌": "\u21CC", "⇉": "\u21C9", "↝": "\u219D", "⋌": "\u22CC", "˚": "\u02DA", "≓": "\u2253", "⇄": "\u21C4", "⇌": "\u21CC", "‏": "\u200F", "⎱": "\u23B1", "⎱": "\u23B1", "⫮": "\u2AEE", "⟭": "\u27ED", "⇾": "\u21FE", "⟧": "\u27E7", "⦆": "\u2986", "𝕣": "\u{1D563}", "⨮": "\u2A2E", "⨵": "\u2A35", ")": ")", "⦔": "\u2994", "⨒": "\u2A12", "⇉": "\u21C9", "›": "\u203A", "𝓇": "\u{1D4C7}", "↱": "\u21B1", "]": "]", "’": "\u2019", "’": "\u2019", "⋌": "\u22CC", "⋊": "\u22CA", "▹": "\u25B9", "⊵": "\u22B5", "▸": "\u25B8", "⧎": "\u29CE", "⥨": "\u2968", "℞": "\u211E", "ś": "\u015B", "‚": "\u201A", "≻": "\u227B", "⪴": "\u2AB4", "⪸": "\u2AB8", "š": "\u0161", "≽": "\u227D", "⪰": "\u2AB0", "ş": "\u015F", "ŝ": "\u015D", "⪶": "\u2AB6", "⪺": "\u2ABA", "⋩": "\u22E9", "⨓": "\u2A13", "≿": "\u227F", "с": "\u0441", "⋅": "\u22C5", "⊡": "\u22A1", "⩦": "\u2A66", "⇘": "\u21D8", "⤥": "\u2925", "↘": "\u2198", "↘": "\u2198", "§": "\xA7", "§": "\xA7", ";": ";", "⤩": "\u2929", "∖": "\u2216", "∖": "\u2216", "✶": "\u2736", "𝔰": "\u{1D530}", "⌢": "\u2322", "♯": "\u266F", "щ": "\u0449", "ш": "\u0448", "∣": "\u2223", "∥": "\u2225", "­": "\xAD", "­": "\xAD", "σ": "\u03C3", "ς": "\u03C2", "ς": "\u03C2", "∼": "\u223C", "⩪": "\u2A6A", "≃": "\u2243", "≃": "\u2243", "⪞": "\u2A9E", "⪠": "\u2AA0", "⪝": "\u2A9D", "⪟": "\u2A9F", "≆": "\u2246", "⨤": "\u2A24", "⥲": "\u2972", "←": "\u2190", "∖": "\u2216", "⨳": "\u2A33", "⧤": "\u29E4", "∣": "\u2223", "⌣": "\u2323", "⪪": "\u2AAA", "⪬": "\u2AAC", "⪬︀": "\u2AAC\uFE00", "ь": "\u044C", "/": "/", "⧄": "\u29C4", "⌿": "\u233F", "𝕤": "\u{1D564}", "♠": "\u2660", "♠": "\u2660", "∥": "\u2225", "⊓": "\u2293", "⊓︀": "\u2293\uFE00", "⊔": "\u2294", "⊔︀": "\u2294\uFE00", "⊏": "\u228F", "⊑": "\u2291", "⊏": "\u228F", "⊑": "\u2291", "⊐": "\u2290", "⊒": "\u2292", "⊐": "\u2290", "⊒": "\u2292", "□": "\u25A1", "□": "\u25A1", "▪": "\u25AA", "▪": "\u25AA", "→": "\u2192", "𝓈": "\u{1D4C8}", "∖": "\u2216", "⌣": "\u2323", "⋆": "\u22C6", "☆": "\u2606", "★": "\u2605", "ϵ": "\u03F5", "ϕ": "\u03D5", "¯": "\xAF", "⊂": "\u2282", "⫅": "\u2AC5", "⪽": "\u2ABD", "⊆": "\u2286", "⫃": "\u2AC3", "⫁": "\u2AC1", "⫋": "\u2ACB", "⊊": "\u228A", "⪿": "\u2ABF", "⥹": "\u2979", "⊂": "\u2282", "⊆": "\u2286", "⫅": "\u2AC5", "⊊": "\u228A", "⫋": "\u2ACB", "⫇": "\u2AC7", "⫕": "\u2AD5", "⫓": "\u2AD3", "≻": "\u227B", "⪸": "\u2AB8", "≽": "\u227D", "⪰": "\u2AB0", "⪺": "\u2ABA", "⪶": "\u2AB6", "⋩": "\u22E9", "≿": "\u227F", "∑": "\u2211", "♪": "\u266A", "¹": "\xB9", "¹": "\xB9", "²": "\xB2", "²": "\xB2", "³": "\xB3", "³": "\xB3", "⊃": "\u2283", "⫆": "\u2AC6", "⪾": "\u2ABE", "⫘": "\u2AD8", "⊇": "\u2287", "⫄": "\u2AC4", "⟉": "\u27C9", "⫗": "\u2AD7", "⥻": "\u297B", "⫂": "\u2AC2", "⫌": "\u2ACC", "⊋": "\u228B", "⫀": "\u2AC0", "⊃": "\u2283", "⊇": "\u2287", "⫆": "\u2AC6", "⊋": "\u228B", "⫌": "\u2ACC", "⫈": "\u2AC8", "⫔": "\u2AD4", "⫖": "\u2AD6", "⇙": "\u21D9", "⤦": "\u2926", "↙": "\u2199", "↙": "\u2199", "⤪": "\u292A", "ß": "\xDF", "ß": "\xDF", "⌖": "\u2316", "τ": "\u03C4", "⎴": "\u23B4", "ť": "\u0165", "ţ": "\u0163", "т": "\u0442", "⃛": "\u20DB", "⌕": "\u2315", "𝔱": "\u{1D531}", "∴": "\u2234", "∴": "\u2234", "θ": "\u03B8", "ϑ": "\u03D1", "ϑ": "\u03D1", "≈": "\u2248", "∼": "\u223C", " ": "\u2009", "≈": "\u2248", "∼": "\u223C", "þ": "\xFE", "þ": "\xFE", "˜": "\u02DC", "×": "\xD7", "×": "\xD7", "⊠": "\u22A0", "⨱": "\u2A31", "⨰": "\u2A30", "∭": "\u222D", "⤨": "\u2928", "⊤": "\u22A4", "⌶": "\u2336", "⫱": "\u2AF1", "𝕥": "\u{1D565}", "⫚": "\u2ADA", "⤩": "\u2929", "‴": "\u2034", "™": "\u2122", "▵": "\u25B5", "▿": "\u25BF", "◃": "\u25C3", "⊴": "\u22B4", "≜": "\u225C", "▹": "\u25B9", "⊵": "\u22B5", "◬": "\u25EC", "≜": "\u225C", "⨺": "\u2A3A", "⨹": "\u2A39", "⧍": "\u29CD", "⨻": "\u2A3B", "⏢": "\u23E2", "𝓉": "\u{1D4C9}", "ц": "\u0446", "ћ": "\u045B", "ŧ": "\u0167", "≬": "\u226C", "↞": "\u219E", "↠": "\u21A0", "⇑": "\u21D1", "⥣": "\u2963", "ú": "\xFA", "ú": "\xFA", "↑": "\u2191", "ў": "\u045E", "ŭ": "\u016D", "û": "\xFB", "û": "\xFB", "у": "\u0443", "⇅": "\u21C5", "ű": "\u0171", "⥮": "\u296E", "⥾": "\u297E", "𝔲": "\u{1D532}", "ù": "\xF9", "ù": "\xF9", "↿": "\u21BF", "↾": "\u21BE", "▀": "\u2580", "⌜": "\u231C", "⌜": "\u231C", "⌏": "\u230F", "◸": "\u25F8", "ū": "\u016B", "¨": "\xA8", "¨": "\xA8", "ų": "\u0173", "𝕦": "\u{1D566}", "↑": "\u2191", "↕": "\u2195", "↿": "\u21BF", "↾": "\u21BE", "⊎": "\u228E", "υ": "\u03C5", "ϒ": "\u03D2", "υ": "\u03C5", "⇈": "\u21C8", "⌝": "\u231D", "⌝": "\u231D", "⌎": "\u230E", "ů": "\u016F", "◹": "\u25F9", "𝓊": "\u{1D4CA}", "⋰": "\u22F0", "ũ": "\u0169", "▵": "\u25B5", "▴": "\u25B4", "⇈": "\u21C8", "ü": "\xFC", "ü": "\xFC", "⦧": "\u29A7", "⇕": "\u21D5", "⫨": "\u2AE8", "⫩": "\u2AE9", "⊨": "\u22A8", "⦜": "\u299C", "ϵ": "\u03F5", "ϰ": "\u03F0", "∅": "\u2205", "ϕ": "\u03D5", "ϖ": "\u03D6", "∝": "\u221D", "↕": "\u2195", "ϱ": "\u03F1", "ς": "\u03C2", "⊊︀": "\u228A\uFE00", "⫋︀": "\u2ACB\uFE00", "⊋︀": "\u228B\uFE00", "⫌︀": "\u2ACC\uFE00", "ϑ": "\u03D1", "⊲": "\u22B2", "⊳": "\u22B3", "в": "\u0432", "⊢": "\u22A2", "∨": "\u2228", "⊻": "\u22BB", "≚": "\u225A", "⋮": "\u22EE", "|": "|", "|": "|", "𝔳": "\u{1D533}", "⊲": "\u22B2", "⊂⃒": "\u2282\u20D2", "⊃⃒": "\u2283\u20D2", "𝕧": "\u{1D567}", "∝": "\u221D", "⊳": "\u22B3", "𝓋": "\u{1D4CB}", "⫋︀": "\u2ACB\uFE00", "⊊︀": "\u228A\uFE00", "⫌︀": "\u2ACC\uFE00", "⊋︀": "\u228B\uFE00", "⦚": "\u299A", "ŵ": "\u0175", "⩟": "\u2A5F", "∧": "\u2227", "≙": "\u2259", "℘": "\u2118", "𝔴": "\u{1D534}", "𝕨": "\u{1D568}", "℘": "\u2118", "≀": "\u2240", "≀": "\u2240", "𝓌": "\u{1D4CC}", "⋂": "\u22C2", "◯": "\u25EF", "⋃": "\u22C3", "▽": "\u25BD", "𝔵": "\u{1D535}", "⟺": "\u27FA", "⟷": "\u27F7", "ξ": "\u03BE", "⟸": "\u27F8", "⟵": "\u27F5", "⟼": "\u27FC", "⋻": "\u22FB", "⨀": "\u2A00", "𝕩": "\u{1D569}", "⨁": "\u2A01", "⨂": "\u2A02", "⟹": "\u27F9", "⟶": "\u27F6", "𝓍": "\u{1D4CD}", "⨆": "\u2A06", "⨄": "\u2A04", "△": "\u25B3", "⋁": "\u22C1", "⋀": "\u22C0", "ý": "\xFD", "ý": "\xFD", "я": "\u044F", "ŷ": "\u0177", "ы": "\u044B", "¥": "\xA5", "¥": "\xA5", "𝔶": "\u{1D536}", "ї": "\u0457", "𝕪": "\u{1D56A}", "𝓎": "\u{1D4CE}", "ю": "\u044E", "ÿ": "\xFF", "ÿ": "\xFF", "ź": "\u017A", "ž": "\u017E", "з": "\u0437", "ż": "\u017C", "ℨ": "\u2128", "ζ": "\u03B6", "𝔷": "\u{1D537}", "ж": "\u0436", "⇝": "\u21DD", "𝕫": "\u{1D56B}", "𝓏": "\u{1D4CF}", "‍": "\u200D", "‌": "\u200C" }, characters: { "\xC6": "Æ", "&": "&", "\xC1": "Á", "\u0102": "Ă", "\xC2": "Â", "\u0410": "А", "\u{1D504}": "𝔄", "\xC0": "À", "\u0391": "Α", "\u0100": "Ā", "\u2A53": "⩓", "\u0104": "Ą", "\u{1D538}": "𝔸", "\u2061": "⁡", "\xC5": "Å", "\u{1D49C}": "𝒜", "\u2254": "≔", "\xC3": "Ã", "\xC4": "Ä", "\u2216": "∖", "\u2AE7": "⫧", "\u2306": "⌆", "\u0411": "Б", "\u2235": "∵", "\u212C": "ℬ", "\u0392": "Β", "\u{1D505}": "𝔅", "\u{1D539}": "𝔹", "\u02D8": "˘", "\u224E": "≎", "\u0427": "Ч", "\xA9": "©", "\u0106": "Ć", "\u22D2": "⋒", "\u2145": "ⅅ", "\u212D": "ℭ", "\u010C": "Č", "\xC7": "Ç", "\u0108": "Ĉ", "\u2230": "∰", "\u010A": "Ċ", "\xB8": "¸", "\xB7": "·", "\u03A7": "Χ", "\u2299": "⊙", "\u2296": "⊖", "\u2295": "⊕", "\u2297": "⊗", "\u2232": "∲", "\u201D": "”", "\u2019": "’", "\u2237": "∷", "\u2A74": "⩴", "\u2261": "≡", "\u222F": "∯", "\u222E": "∮", "\u2102": "ℂ", "\u2210": "∐", "\u2233": "∳", "\u2A2F": "⨯", "\u{1D49E}": "𝒞", "\u22D3": "⋓", "\u224D": "≍", "\u2911": "⤑", "\u0402": "Ђ", "\u0405": "Ѕ", "\u040F": "Џ", "\u2021": "‡", "\u21A1": "↡", "\u2AE4": "⫤", "\u010E": "Ď", "\u0414": "Д", "\u2207": "∇", "\u0394": "Δ", "\u{1D507}": "𝔇", "\xB4": "´", "\u02D9": "˙", "\u02DD": "˝", "`": "`", "\u02DC": "˜", "\u22C4": "⋄", "\u2146": "ⅆ", "\u{1D53B}": "𝔻", "\xA8": "¨", "\u20DC": "⃜", "\u2250": "≐", "\u21D3": "⇓", "\u21D0": "⇐", "\u21D4": "⇔", "\u27F8": "⟸", "\u27FA": "⟺", "\u27F9": "⟹", "\u21D2": "⇒", "\u22A8": "⊨", "\u21D1": "⇑", "\u21D5": "⇕", "\u2225": "∥", "\u2193": "↓", "\u2913": "⤓", "\u21F5": "⇵", "\u0311": "̑", "\u2950": "⥐", "\u295E": "⥞", "\u21BD": "↽", "\u2956": "⥖", "\u295F": "⥟", "\u21C1": "⇁", "\u2957": "⥗", "\u22A4": "⊤", "\u21A7": "↧", "\u{1D49F}": "𝒟", "\u0110": "Đ", "\u014A": "Ŋ", "\xD0": "Ð", "\xC9": "É", "\u011A": "Ě", "\xCA": "Ê", "\u042D": "Э", "\u0116": "Ė", "\u{1D508}": "𝔈", "\xC8": "È", "\u2208": "∈", "\u0112": "Ē", "\u25FB": "◻", "\u25AB": "▫", "\u0118": "Ę", "\u{1D53C}": "𝔼", "\u0395": "Ε", "\u2A75": "⩵", "\u2242": "≂", "\u21CC": "⇌", "\u2130": "ℰ", "\u2A73": "⩳", "\u0397": "Η", "\xCB": "Ë", "\u2203": "∃", "\u2147": "ⅇ", "\u0424": "Ф", "\u{1D509}": "𝔉", "\u25FC": "◼", "\u25AA": "▪", "\u{1D53D}": "𝔽", "\u2200": "∀", "\u2131": "ℱ", "\u0403": "Ѓ", ">": ">", "\u0393": "Γ", "\u03DC": "Ϝ", "\u011E": "Ğ", "\u0122": "Ģ", "\u011C": "Ĝ", "\u0413": "Г", "\u0120": "Ġ", "\u{1D50A}": "𝔊", "\u22D9": "⋙", "\u{1D53E}": "𝔾", "\u2265": "≥", "\u22DB": "⋛", "\u2267": "≧", "\u2AA2": "⪢", "\u2277": "≷", "\u2A7E": "⩾", "\u2273": "≳", "\u{1D4A2}": "𝒢", "\u226B": "≫", "\u042A": "Ъ", "\u02C7": "ˇ", "^": "^", "\u0124": "Ĥ", "\u210C": "ℌ", "\u210B": "ℋ", "\u210D": "ℍ", "\u2500": "─", "\u0126": "Ħ", "\u224F": "≏", "\u0415": "Е", "\u0132": "IJ", "\u0401": "Ё", "\xCD": "Í", "\xCE": "Î", "\u0418": "И", "\u0130": "İ", "\u2111": "ℑ", "\xCC": "Ì", "\u012A": "Ī", "\u2148": "ⅈ", "\u222C": "∬", "\u222B": "∫", "\u22C2": "⋂", "\u2063": "⁣", "\u2062": "⁢", "\u012E": "Į", "\u{1D540}": "𝕀", "\u0399": "Ι", "\u2110": "ℐ", "\u0128": "Ĩ", "\u0406": "І", "\xCF": "Ï", "\u0134": "Ĵ", "\u0419": "Й", "\u{1D50D}": "𝔍", "\u{1D541}": "𝕁", "\u{1D4A5}": "𝒥", "\u0408": "Ј", "\u0404": "Є", "\u0425": "Х", "\u040C": "Ќ", "\u039A": "Κ", "\u0136": "Ķ", "\u041A": "К", "\u{1D50E}": "𝔎", "\u{1D542}": "𝕂", "\u{1D4A6}": "𝒦", "\u0409": "Љ", "<": "<", "\u0139": "Ĺ", "\u039B": "Λ", "\u27EA": "⟪", "\u2112": "ℒ", "\u219E": "↞", "\u013D": "Ľ", "\u013B": "Ļ", "\u041B": "Л", "\u27E8": "⟨", "\u2190": "←", "\u21E4": "⇤", "\u21C6": "⇆", "\u2308": "⌈", "\u27E6": "⟦", "\u2961": "⥡", "\u21C3": "⇃", "\u2959": "⥙", "\u230A": "⌊", "\u2194": "↔", "\u294E": "⥎", "\u22A3": "⊣", "\u21A4": "↤", "\u295A": "⥚", "\u22B2": "⊲", "\u29CF": "⧏", "\u22B4": "⊴", "\u2951": "⥑", "\u2960": "⥠", "\u21BF": "↿", "\u2958": "⥘", "\u21BC": "↼", "\u2952": "⥒", "\u22DA": "⋚", "\u2266": "≦", "\u2276": "≶", "\u2AA1": "⪡", "\u2A7D": "⩽", "\u2272": "≲", "\u{1D50F}": "𝔏", "\u22D8": "⋘", "\u21DA": "⇚", "\u013F": "Ŀ", "\u27F5": "⟵", "\u27F7": "⟷", "\u27F6": "⟶", "\u{1D543}": "𝕃", "\u2199": "↙", "\u2198": "↘", "\u21B0": "↰", "\u0141": "Ł", "\u226A": "≪", "\u2905": "⤅", "\u041C": "М", "\u205F": " ", "\u2133": "ℳ", "\u{1D510}": "𝔐", "\u2213": "∓", "\u{1D544}": "𝕄", "\u039C": "Μ", "\u040A": "Њ", "\u0143": "Ń", "\u0147": "Ň", "\u0145": "Ņ", "\u041D": "Н", "\u200B": "​", "\n": "
", "\u{1D511}": "𝔑", "\u2060": "⁠", "\xA0": " ", "\u2115": "ℕ", "\u2AEC": "⫬", "\u2262": "≢", "\u226D": "≭", "\u2226": "∦", "\u2209": "∉", "\u2260": "≠", "\u2242\u0338": "≂̸", "\u2204": "∄", "\u226F": "≯", "\u2271": "≱", "\u2267\u0338": "≧̸", "\u226B\u0338": "≫̸", "\u2279": "≹", "\u2A7E\u0338": "⩾̸", "\u2275": "≵", "\u224E\u0338": "≎̸", "\u224F\u0338": "≏̸", "\u22EA": "⋪", "\u29CF\u0338": "⧏̸", "\u22EC": "⋬", "\u226E": "≮", "\u2270": "≰", "\u2278": "≸", "\u226A\u0338": "≪̸", "\u2A7D\u0338": "⩽̸", "\u2274": "≴", "\u2AA2\u0338": "⪢̸", "\u2AA1\u0338": "⪡̸", "\u2280": "⊀", "\u2AAF\u0338": "⪯̸", "\u22E0": "⋠", "\u220C": "∌", "\u22EB": "⋫", "\u29D0\u0338": "⧐̸", "\u22ED": "⋭", "\u228F\u0338": "⊏̸", "\u22E2": "⋢", "\u2290\u0338": "⊐̸", "\u22E3": "⋣", "\u2282\u20D2": "⊂⃒", "\u2288": "⊈", "\u2281": "⊁", "\u2AB0\u0338": "⪰̸", "\u22E1": "⋡", "\u227F\u0338": "≿̸", "\u2283\u20D2": "⊃⃒", "\u2289": "⊉", "\u2241": "≁", "\u2244": "≄", "\u2247": "≇", "\u2249": "≉", "\u2224": "∤", "\u{1D4A9}": "𝒩", "\xD1": "Ñ", "\u039D": "Ν", "\u0152": "Œ", "\xD3": "Ó", "\xD4": "Ô", "\u041E": "О", "\u0150": "Ő", "\u{1D512}": "𝔒", "\xD2": "Ò", "\u014C": "Ō", "\u03A9": "Ω", "\u039F": "Ο", "\u{1D546}": "𝕆", "\u201C": "“", "\u2018": "‘", "\u2A54": "⩔", "\u{1D4AA}": "𝒪", "\xD8": "Ø", "\xD5": "Õ", "\u2A37": "⨷", "\xD6": "Ö", "\u203E": "‾", "\u23DE": "⏞", "\u23B4": "⎴", "\u23DC": "⏜", "\u2202": "∂", "\u041F": "П", "\u{1D513}": "𝔓", "\u03A6": "Φ", "\u03A0": "Π", "\xB1": "±", "\u2119": "ℙ", "\u2ABB": "⪻", "\u227A": "≺", "\u2AAF": "⪯", "\u227C": "≼", "\u227E": "≾", "\u2033": "″", "\u220F": "∏", "\u221D": "∝", "\u{1D4AB}": "𝒫", "\u03A8": "Ψ", '"': """, "\u{1D514}": "𝔔", "\u211A": "ℚ", "\u{1D4AC}": "𝒬", "\u2910": "⤐", "\xAE": "®", "\u0154": "Ŕ", "\u27EB": "⟫", "\u21A0": "↠", "\u2916": "⤖", "\u0158": "Ř", "\u0156": "Ŗ", "\u0420": "Р", "\u211C": "ℜ", "\u220B": "∋", "\u21CB": "⇋", "\u296F": "⥯", "\u03A1": "Ρ", "\u27E9": "⟩", "\u2192": "→", "\u21E5": "⇥", "\u21C4": "⇄", "\u2309": "⌉", "\u27E7": "⟧", "\u295D": "⥝", "\u21C2": "⇂", "\u2955": "⥕", "\u230B": "⌋", "\u22A2": "⊢", "\u21A6": "↦", "\u295B": "⥛", "\u22B3": "⊳", "\u29D0": "⧐", "\u22B5": "⊵", "\u294F": "⥏", "\u295C": "⥜", "\u21BE": "↾", "\u2954": "⥔", "\u21C0": "⇀", "\u2953": "⥓", "\u211D": "ℝ", "\u2970": "⥰", "\u21DB": "⇛", "\u211B": "ℛ", "\u21B1": "↱", "\u29F4": "⧴", "\u0429": "Щ", "\u0428": "Ш", "\u042C": "Ь", "\u015A": "Ś", "\u2ABC": "⪼", "\u0160": "Š", "\u015E": "Ş", "\u015C": "Ŝ", "\u0421": "С", "\u{1D516}": "𝔖", "\u2191": "↑", "\u03A3": "Σ", "\u2218": "∘", "\u{1D54A}": "𝕊", "\u221A": "√", "\u25A1": "□", "\u2293": "⊓", "\u228F": "⊏", "\u2291": "⊑", "\u2290": "⊐", "\u2292": "⊒", "\u2294": "⊔", "\u{1D4AE}": "𝒮", "\u22C6": "⋆", "\u22D0": "⋐", "\u2286": "⊆", "\u227B": "≻", "\u2AB0": "⪰", "\u227D": "≽", "\u227F": "≿", "\u2211": "∑", "\u22D1": "⋑", "\u2283": "⊃", "\u2287": "⊇", "\xDE": "Þ", "\u2122": "™", "\u040B": "Ћ", "\u0426": "Ц", " ": "	", "\u03A4": "Τ", "\u0164": "Ť", "\u0162": "Ţ", "\u0422": "Т", "\u{1D517}": "𝔗", "\u2234": "∴", "\u0398": "Θ", "\u205F\u200A": "  ", "\u2009": " ", "\u223C": "∼", "\u2243": "≃", "\u2245": "≅", "\u2248": "≈", "\u{1D54B}": "𝕋", "\u20DB": "⃛", "\u{1D4AF}": "𝒯", "\u0166": "Ŧ", "\xDA": "Ú", "\u219F": "↟", "\u2949": "⥉", "\u040E": "Ў", "\u016C": "Ŭ", "\xDB": "Û", "\u0423": "У", "\u0170": "Ű", "\u{1D518}": "𝔘", "\xD9": "Ù", "\u016A": "Ū", _: "_", "\u23DF": "⏟", "\u23B5": "⎵", "\u23DD": "⏝", "\u22C3": "⋃", "\u228E": "⊎", "\u0172": "Ų", "\u{1D54C}": "𝕌", "\u2912": "⤒", "\u21C5": "⇅", "\u2195": "↕", "\u296E": "⥮", "\u22A5": "⊥", "\u21A5": "↥", "\u2196": "↖", "\u2197": "↗", "\u03D2": "ϒ", "\u03A5": "Υ", "\u016E": "Ů", "\u{1D4B0}": "𝒰", "\u0168": "Ũ", "\xDC": "Ü", "\u22AB": "⊫", "\u2AEB": "⫫", "\u0412": "В", "\u22A9": "⊩", "\u2AE6": "⫦", "\u22C1": "⋁", "\u2016": "‖", "\u2223": "∣", "|": "|", "\u2758": "❘", "\u2240": "≀", "\u200A": " ", "\u{1D519}": "𝔙", "\u{1D54D}": "𝕍", "\u{1D4B1}": "𝒱", "\u22AA": "⊪", "\u0174": "Ŵ", "\u22C0": "⋀", "\u{1D51A}": "𝔚", "\u{1D54E}": "𝕎", "\u{1D4B2}": "𝒲", "\u{1D51B}": "𝔛", "\u039E": "Ξ", "\u{1D54F}": "𝕏", "\u{1D4B3}": "𝒳", "\u042F": "Я", "\u0407": "Ї", "\u042E": "Ю", "\xDD": "Ý", "\u0176": "Ŷ", "\u042B": "Ы", "\u{1D51C}": "𝔜", "\u{1D550}": "𝕐", "\u{1D4B4}": "𝒴", "\u0178": "Ÿ", "\u0416": "Ж", "\u0179": "Ź", "\u017D": "Ž", "\u0417": "З", "\u017B": "Ż", "\u0396": "Ζ", "\u2128": "ℨ", "\u2124": "ℤ", "\u{1D4B5}": "𝒵", "\xE1": "á", "\u0103": "ă", "\u223E": "∾", "\u223E\u0333": "∾̳", "\u223F": "∿", "\xE2": "â", "\u0430": "а", "\xE6": "æ", "\u{1D51E}": "𝔞", "\xE0": "à", "\u2135": "ℵ", "\u03B1": "α", "\u0101": "ā", "\u2A3F": "⨿", "\u2227": "∧", "\u2A55": "⩕", "\u2A5C": "⩜", "\u2A58": "⩘", "\u2A5A": "⩚", "\u2220": "∠", "\u29A4": "⦤", "\u2221": "∡", "\u29A8": "⦨", "\u29A9": "⦩", "\u29AA": "⦪", "\u29AB": "⦫", "\u29AC": "⦬", "\u29AD": "⦭", "\u29AE": "⦮", "\u29AF": "⦯", "\u221F": "∟", "\u22BE": "⊾", "\u299D": "⦝", "\u2222": "∢", "\u237C": "⍼", "\u0105": "ą", "\u{1D552}": "𝕒", "\u2A70": "⩰", "\u2A6F": "⩯", "\u224A": "≊", "\u224B": "≋", "'": "'", "\xE5": "å", "\u{1D4B6}": "𝒶", "*": "*", "\xE3": "ã", "\xE4": "ä", "\u2A11": "⨑", "\u2AED": "⫭", "\u224C": "≌", "\u03F6": "϶", "\u2035": "‵", "\u223D": "∽", "\u22CD": "⋍", "\u22BD": "⊽", "\u2305": "⌅", "\u23B6": "⎶", "\u0431": "б", "\u201E": "„", "\u29B0": "⦰", "\u03B2": "β", "\u2136": "ℶ", "\u226C": "≬", "\u{1D51F}": "𝔟", "\u25EF": "◯", "\u2A00": "⨀", "\u2A01": "⨁", "\u2A02": "⨂", "\u2A06": "⨆", "\u2605": "★", "\u25BD": "▽", "\u25B3": "△", "\u2A04": "⨄", "\u290D": "⤍", "\u29EB": "⧫", "\u25B4": "▴", "\u25BE": "▾", "\u25C2": "◂", "\u25B8": "▸", "\u2423": "␣", "\u2592": "▒", "\u2591": "░", "\u2593": "▓", "\u2588": "█", "=\u20E5": "=⃥", "\u2261\u20E5": "≡⃥", "\u2310": "⌐", "\u{1D553}": "𝕓", "\u22C8": "⋈", "\u2557": "╗", "\u2554": "╔", "\u2556": "╖", "\u2553": "╓", "\u2550": "═", "\u2566": "╦", "\u2569": "╩", "\u2564": "╤", "\u2567": "╧", "\u255D": "╝", "\u255A": "╚", "\u255C": "╜", "\u2559": "╙", "\u2551": "║", "\u256C": "╬", "\u2563": "╣", "\u2560": "╠", "\u256B": "╫", "\u2562": "╢", "\u255F": "╟", "\u29C9": "⧉", "\u2555": "╕", "\u2552": "╒", "\u2510": "┐", "\u250C": "┌", "\u2565": "╥", "\u2568": "╨", "\u252C": "┬", "\u2534": "┴", "\u229F": "⊟", "\u229E": "⊞", "\u22A0": "⊠", "\u255B": "╛", "\u2558": "╘", "\u2518": "┘", "\u2514": "└", "\u2502": "│", "\u256A": "╪", "\u2561": "╡", "\u255E": "╞", "\u253C": "┼", "\u2524": "┤", "\u251C": "├", "\xA6": "¦", "\u{1D4B7}": "𝒷", "\u204F": "⁏", "\\": "\", "\u29C5": "⧅", "\u27C8": "⟈", "\u2022": "•", "\u2AAE": "⪮", "\u0107": "ć", "\u2229": "∩", "\u2A44": "⩄", "\u2A49": "⩉", "\u2A4B": "⩋", "\u2A47": "⩇", "\u2A40": "⩀", "\u2229\uFE00": "∩︀", "\u2041": "⁁", "\u2A4D": "⩍", "\u010D": "č", "\xE7": "ç", "\u0109": "ĉ", "\u2A4C": "⩌", "\u2A50": "⩐", "\u010B": "ċ", "\u29B2": "⦲", "\xA2": "¢", "\u{1D520}": "𝔠", "\u0447": "ч", "\u2713": "✓", "\u03C7": "χ", "\u25CB": "○", "\u29C3": "⧃", "\u02C6": "ˆ", "\u2257": "≗", "\u21BA": "↺", "\u21BB": "↻", "\u24C8": "Ⓢ", "\u229B": "⊛", "\u229A": "⊚", "\u229D": "⊝", "\u2A10": "⨐", "\u2AEF": "⫯", "\u29C2": "⧂", "\u2663": "♣", ":": ":", ",": ",", "@": "@", "\u2201": "∁", "\u2A6D": "⩭", "\u{1D554}": "𝕔", "\u2117": "℗", "\u21B5": "↵", "\u2717": "✗", "\u{1D4B8}": "𝒸", "\u2ACF": "⫏", "\u2AD1": "⫑", "\u2AD0": "⫐", "\u2AD2": "⫒", "\u22EF": "⋯", "\u2938": "⤸", "\u2935": "⤵", "\u22DE": "⋞", "\u22DF": "⋟", "\u21B6": "↶", "\u293D": "⤽", "\u222A": "∪", "\u2A48": "⩈", "\u2A46": "⩆", "\u2A4A": "⩊", "\u228D": "⊍", "\u2A45": "⩅", "\u222A\uFE00": "∪︀", "\u21B7": "↷", "\u293C": "⤼", "\u22CE": "⋎", "\u22CF": "⋏", "\xA4": "¤", "\u2231": "∱", "\u232D": "⌭", "\u2965": "⥥", "\u2020": "†", "\u2138": "ℸ", "\u2010": "‐", "\u290F": "⤏", "\u010F": "ď", "\u0434": "д", "\u21CA": "⇊", "\u2A77": "⩷", "\xB0": "°", "\u03B4": "δ", "\u29B1": "⦱", "\u297F": "⥿", "\u{1D521}": "𝔡", "\u2666": "♦", "\u03DD": "ϝ", "\u22F2": "⋲", "\xF7": "÷", "\u22C7": "⋇", "\u0452": "ђ", "\u231E": "⌞", "\u230D": "⌍", $: "$", "\u{1D555}": "𝕕", "\u2251": "≑", "\u2238": "∸", "\u2214": "∔", "\u22A1": "⊡", "\u231F": "⌟", "\u230C": "⌌", "\u{1D4B9}": "𝒹", "\u0455": "ѕ", "\u29F6": "⧶", "\u0111": "đ", "\u22F1": "⋱", "\u25BF": "▿", "\u29A6": "⦦", "\u045F": "џ", "\u27FF": "⟿", "\xE9": "é", "\u2A6E": "⩮", "\u011B": "ě", "\u2256": "≖", "\xEA": "ê", "\u2255": "≕", "\u044D": "э", "\u0117": "ė", "\u2252": "≒", "\u{1D522}": "𝔢", "\u2A9A": "⪚", "\xE8": "è", "\u2A96": "⪖", "\u2A98": "⪘", "\u2A99": "⪙", "\u23E7": "⏧", "\u2113": "ℓ", "\u2A95": "⪕", "\u2A97": "⪗", "\u0113": "ē", "\u2205": "∅", "\u2004": " ", "\u2005": " ", "\u2003": " ", "\u014B": "ŋ", "\u2002": " ", "\u0119": "ę", "\u{1D556}": "𝕖", "\u22D5": "⋕", "\u29E3": "⧣", "\u2A71": "⩱", "\u03B5": "ε", "\u03F5": "ϵ", "=": "=", "\u225F": "≟", "\u2A78": "⩸", "\u29E5": "⧥", "\u2253": "≓", "\u2971": "⥱", "\u212F": "ℯ", "\u03B7": "η", "\xF0": "ð", "\xEB": "ë", "\u20AC": "€", "!": "!", "\u0444": "ф", "\u2640": "♀", "\uFB03": "ffi", "\uFB00": "ff", "\uFB04": "ffl", "\u{1D523}": "𝔣", "\uFB01": "fi", fj: "fj", "\u266D": "♭", "\uFB02": "fl", "\u25B1": "▱", "\u0192": "ƒ", "\u{1D557}": "𝕗", "\u22D4": "⋔", "\u2AD9": "⫙", "\u2A0D": "⨍", "\xBD": "½", "\u2153": "⅓", "\xBC": "¼", "\u2155": "⅕", "\u2159": "⅙", "\u215B": "⅛", "\u2154": "⅔", "\u2156": "⅖", "\xBE": "¾", "\u2157": "⅗", "\u215C": "⅜", "\u2158": "⅘", "\u215A": "⅚", "\u215D": "⅝", "\u215E": "⅞", "\u2044": "⁄", "\u2322": "⌢", "\u{1D4BB}": "𝒻", "\u2A8C": "⪌", "\u01F5": "ǵ", "\u03B3": "γ", "\u2A86": "⪆", "\u011F": "ğ", "\u011D": "ĝ", "\u0433": "г", "\u0121": "ġ", "\u2AA9": "⪩", "\u2A80": "⪀", "\u2A82": "⪂", "\u2A84": "⪄", "\u22DB\uFE00": "⋛︀", "\u2A94": "⪔", "\u{1D524}": "𝔤", "\u2137": "ℷ", "\u0453": "ѓ", "\u2A92": "⪒", "\u2AA5": "⪥", "\u2AA4": "⪤", "\u2269": "≩", "\u2A8A": "⪊", "\u2A88": "⪈", "\u22E7": "⋧", "\u{1D558}": "𝕘", "\u210A": "ℊ", "\u2A8E": "⪎", "\u2A90": "⪐", "\u2AA7": "⪧", "\u2A7A": "⩺", "\u22D7": "⋗", "\u2995": "⦕", "\u2A7C": "⩼", "\u2978": "⥸", "\u2269\uFE00": "≩︀", "\u044A": "ъ", "\u2948": "⥈", "\u21AD": "↭", "\u210F": "ℏ", "\u0125": "ĥ", "\u2665": "♥", "\u2026": "…", "\u22B9": "⊹", "\u{1D525}": "𝔥", "\u2925": "⤥", "\u2926": "⤦", "\u21FF": "⇿", "\u223B": "∻", "\u21A9": "↩", "\u21AA": "↪", "\u{1D559}": "𝕙", "\u2015": "―", "\u{1D4BD}": "𝒽", "\u0127": "ħ", "\u2043": "⁃", "\xED": "í", "\xEE": "î", "\u0438": "и", "\u0435": "е", "\xA1": "¡", "\u{1D526}": "𝔦", "\xEC": "ì", "\u2A0C": "⨌", "\u222D": "∭", "\u29DC": "⧜", "\u2129": "℩", "\u0133": "ij", "\u012B": "ī", "\u0131": "ı", "\u22B7": "⊷", "\u01B5": "Ƶ", "\u2105": "℅", "\u221E": "∞", "\u29DD": "⧝", "\u22BA": "⊺", "\u2A17": "⨗", "\u2A3C": "⨼", "\u0451": "ё", "\u012F": "į", "\u{1D55A}": "𝕚", "\u03B9": "ι", "\xBF": "¿", "\u{1D4BE}": "𝒾", "\u22F9": "⋹", "\u22F5": "⋵", "\u22F4": "⋴", "\u22F3": "⋳", "\u0129": "ĩ", "\u0456": "і", "\xEF": "ï", "\u0135": "ĵ", "\u0439": "й", "\u{1D527}": "𝔧", "\u0237": "ȷ", "\u{1D55B}": "𝕛", "\u{1D4BF}": "𝒿", "\u0458": "ј", "\u0454": "є", "\u03BA": "κ", "\u03F0": "ϰ", "\u0137": "ķ", "\u043A": "к", "\u{1D528}": "𝔨", "\u0138": "ĸ", "\u0445": "х", "\u045C": "ќ", "\u{1D55C}": "𝕜", "\u{1D4C0}": "𝓀", "\u291B": "⤛", "\u290E": "⤎", "\u2A8B": "⪋", "\u2962": "⥢", "\u013A": "ĺ", "\u29B4": "⦴", "\u03BB": "λ", "\u2991": "⦑", "\u2A85": "⪅", "\xAB": "«", "\u291F": "⤟", "\u291D": "⤝", "\u21AB": "↫", "\u2939": "⤹", "\u2973": "⥳", "\u21A2": "↢", "\u2AAB": "⪫", "\u2919": "⤙", "\u2AAD": "⪭", "\u2AAD\uFE00": "⪭︀", "\u290C": "⤌", "\u2772": "❲", "{": "{", "[": "[", "\u298B": "⦋", "\u298F": "⦏", "\u298D": "⦍", "\u013E": "ľ", "\u013C": "ļ", "\u043B": "л", "\u2936": "⤶", "\u2967": "⥧", "\u294B": "⥋", "\u21B2": "↲", "\u2264": "≤", "\u21C7": "⇇", "\u22CB": "⋋", "\u2AA8": "⪨", "\u2A7F": "⩿", "\u2A81": "⪁", "\u2A83": "⪃", "\u22DA\uFE00": "⋚︀", "\u2A93": "⪓", "\u22D6": "⋖", "\u297C": "⥼", "\u{1D529}": "𝔩", "\u2A91": "⪑", "\u296A": "⥪", "\u2584": "▄", "\u0459": "љ", "\u296B": "⥫", "\u25FA": "◺", "\u0140": "ŀ", "\u23B0": "⎰", "\u2268": "≨", "\u2A89": "⪉", "\u2A87": "⪇", "\u22E6": "⋦", "\u27EC": "⟬", "\u21FD": "⇽", "\u27FC": "⟼", "\u21AC": "↬", "\u2985": "⦅", "\u{1D55D}": "𝕝", "\u2A2D": "⨭", "\u2A34": "⨴", "\u2217": "∗", "\u25CA": "◊", "(": "(", "\u2993": "⦓", "\u296D": "⥭", "\u200E": "‎", "\u22BF": "⊿", "\u2039": "‹", "\u{1D4C1}": "𝓁", "\u2A8D": "⪍", "\u2A8F": "⪏", "\u201A": "‚", "\u0142": "ł", "\u2AA6": "⪦", "\u2A79": "⩹", "\u22C9": "⋉", "\u2976": "⥶", "\u2A7B": "⩻", "\u2996": "⦖", "\u25C3": "◃", "\u294A": "⥊", "\u2966": "⥦", "\u2268\uFE00": "≨︀", "\u223A": "∺", "\xAF": "¯", "\u2642": "♂", "\u2720": "✠", "\u25AE": "▮", "\u2A29": "⨩", "\u043C": "м", "\u2014": "—", "\u{1D52A}": "𝔪", "\u2127": "℧", "\xB5": "µ", "\u2AF0": "⫰", "\u2212": "−", "\u2A2A": "⨪", "\u2ADB": "⫛", "\u22A7": "⊧", "\u{1D55E}": "𝕞", "\u{1D4C2}": "𝓂", "\u03BC": "μ", "\u22B8": "⊸", "\u22D9\u0338": "⋙̸", "\u226B\u20D2": "≫⃒", "\u21CD": "⇍", "\u21CE": "⇎", "\u22D8\u0338": "⋘̸", "\u226A\u20D2": "≪⃒", "\u21CF": "⇏", "\u22AF": "⊯", "\u22AE": "⊮", "\u0144": "ń", "\u2220\u20D2": "∠⃒", "\u2A70\u0338": "⩰̸", "\u224B\u0338": "≋̸", "\u0149": "ʼn", "\u266E": "♮", "\u2A43": "⩃", "\u0148": "ň", "\u0146": "ņ", "\u2A6D\u0338": "⩭̸", "\u2A42": "⩂", "\u043D": "н", "\u2013": "–", "\u21D7": "⇗", "\u2924": "⤤", "\u2250\u0338": "≐̸", "\u2928": "⤨", "\u{1D52B}": "𝔫", "\u21AE": "↮", "\u2AF2": "⫲", "\u22FC": "⋼", "\u22FA": "⋺", "\u045A": "њ", "\u2266\u0338": "≦̸", "\u219A": "↚", "\u2025": "‥", "\u{1D55F}": "𝕟", "\xAC": "¬", "\u22F9\u0338": "⋹̸", "\u22F5\u0338": "⋵̸", "\u22F7": "⋷", "\u22F6": "⋶", "\u22FE": "⋾", "\u22FD": "⋽", "\u2AFD\u20E5": "⫽⃥", "\u2202\u0338": "∂̸", "\u2A14": "⨔", "\u219B": "↛", "\u2933\u0338": "⤳̸", "\u219D\u0338": "↝̸", "\u{1D4C3}": "𝓃", "\u2284": "⊄", "\u2AC5\u0338": "⫅̸", "\u2285": "⊅", "\u2AC6\u0338": "⫆̸", "\xF1": "ñ", "\u03BD": "ν", "#": "#", "\u2116": "№", "\u2007": " ", "\u22AD": "⊭", "\u2904": "⤄", "\u224D\u20D2": "≍⃒", "\u22AC": "⊬", "\u2265\u20D2": "≥⃒", ">\u20D2": ">⃒", "\u29DE": "⧞", "\u2902": "⤂", "\u2264\u20D2": "≤⃒", "<\u20D2": "<⃒", "\u22B4\u20D2": "⊴⃒", "\u2903": "⤃", "\u22B5\u20D2": "⊵⃒", "\u223C\u20D2": "∼⃒", "\u21D6": "⇖", "\u2923": "⤣", "\u2927": "⤧", "\xF3": "ó", "\xF4": "ô", "\u043E": "о", "\u0151": "ő", "\u2A38": "⨸", "\u29BC": "⦼", "\u0153": "œ", "\u29BF": "⦿", "\u{1D52C}": "𝔬", "\u02DB": "˛", "\xF2": "ò", "\u29C1": "⧁", "\u29B5": "⦵", "\u29BE": "⦾", "\u29BB": "⦻", "\u29C0": "⧀", "\u014D": "ō", "\u03C9": "ω", "\u03BF": "ο", "\u29B6": "⦶", "\u{1D560}": "𝕠", "\u29B7": "⦷", "\u29B9": "⦹", "\u2228": "∨", "\u2A5D": "⩝", "\u2134": "ℴ", "\xAA": "ª", "\xBA": "º", "\u22B6": "⊶", "\u2A56": "⩖", "\u2A57": "⩗", "\u2A5B": "⩛", "\xF8": "ø", "\u2298": "⊘", "\xF5": "õ", "\u2A36": "⨶", "\xF6": "ö", "\u233D": "⌽", "\xB6": "¶", "\u2AF3": "⫳", "\u2AFD": "⫽", "\u043F": "п", "%": "%", ".": ".", "\u2030": "‰", "\u2031": "‱", "\u{1D52D}": "𝔭", "\u03C6": "φ", "\u03D5": "ϕ", "\u260E": "☎", "\u03C0": "π", "\u03D6": "ϖ", "\u210E": "ℎ", "+": "+", "\u2A23": "⨣", "\u2A22": "⨢", "\u2A25": "⨥", "\u2A72": "⩲", "\u2A26": "⨦", "\u2A27": "⨧", "\u2A15": "⨕", "\u{1D561}": "𝕡", "\xA3": "£", "\u2AB3": "⪳", "\u2AB7": "⪷", "\u2AB9": "⪹", "\u2AB5": "⪵", "\u22E8": "⋨", "\u2032": "′", "\u232E": "⌮", "\u2312": "⌒", "\u2313": "⌓", "\u22B0": "⊰", "\u{1D4C5}": "𝓅", "\u03C8": "ψ", "\u2008": " ", "\u{1D52E}": "𝔮", "\u{1D562}": "𝕢", "\u2057": "⁗", "\u{1D4C6}": "𝓆", "\u2A16": "⨖", "?": "?", "\u291C": "⤜", "\u2964": "⥤", "\u223D\u0331": "∽̱", "\u0155": "ŕ", "\u29B3": "⦳", "\u2992": "⦒", "\u29A5": "⦥", "\xBB": "»", "\u2975": "⥵", "\u2920": "⤠", "\u2933": "⤳", "\u291E": "⤞", "\u2945": "⥅", "\u2974": "⥴", "\u21A3": "↣", "\u219D": "↝", "\u291A": "⤚", "\u2236": "∶", "\u2773": "❳", "}": "}", "]": "]", "\u298C": "⦌", "\u298E": "⦎", "\u2990": "⦐", "\u0159": "ř", "\u0157": "ŗ", "\u0440": "р", "\u2937": "⤷", "\u2969": "⥩", "\u21B3": "↳", "\u25AD": "▭", "\u297D": "⥽", "\u{1D52F}": "𝔯", "\u296C": "⥬", "\u03C1": "ρ", "\u03F1": "ϱ", "\u21C9": "⇉", "\u22CC": "⋌", "\u02DA": "˚", "\u200F": "‏", "\u23B1": "⎱", "\u2AEE": "⫮", "\u27ED": "⟭", "\u21FE": "⇾", "\u2986": "⦆", "\u{1D563}": "𝕣", "\u2A2E": "⨮", "\u2A35": "⨵", ")": ")", "\u2994": "⦔", "\u2A12": "⨒", "\u203A": "›", "\u{1D4C7}": "𝓇", "\u22CA": "⋊", "\u25B9": "▹", "\u29CE": "⧎", "\u2968": "⥨", "\u211E": "℞", "\u015B": "ś", "\u2AB4": "⪴", "\u2AB8": "⪸", "\u0161": "š", "\u015F": "ş", "\u015D": "ŝ", "\u2AB6": "⪶", "\u2ABA": "⪺", "\u22E9": "⋩", "\u2A13": "⨓", "\u0441": "с", "\u22C5": "⋅", "\u2A66": "⩦", "\u21D8": "⇘", "\xA7": "§", ";": ";", "\u2929": "⤩", "\u2736": "✶", "\u{1D530}": "𝔰", "\u266F": "♯", "\u0449": "щ", "\u0448": "ш", "\xAD": "­", "\u03C3": "σ", "\u03C2": "ς", "\u2A6A": "⩪", "\u2A9E": "⪞", "\u2AA0": "⪠", "\u2A9D": "⪝", "\u2A9F": "⪟", "\u2246": "≆", "\u2A24": "⨤", "\u2972": "⥲", "\u2A33": "⨳", "\u29E4": "⧤", "\u2323": "⌣", "\u2AAA": "⪪", "\u2AAC": "⪬", "\u2AAC\uFE00": "⪬︀", "\u044C": "ь", "/": "/", "\u29C4": "⧄", "\u233F": "⌿", "\u{1D564}": "𝕤", "\u2660": "♠", "\u2293\uFE00": "⊓︀", "\u2294\uFE00": "⊔︀", "\u{1D4C8}": "𝓈", "\u2606": "☆", "\u2282": "⊂", "\u2AC5": "⫅", "\u2ABD": "⪽", "\u2AC3": "⫃", "\u2AC1": "⫁", "\u2ACB": "⫋", "\u228A": "⊊", "\u2ABF": "⪿", "\u2979": "⥹", "\u2AC7": "⫇", "\u2AD5": "⫕", "\u2AD3": "⫓", "\u266A": "♪", "\xB9": "¹", "\xB2": "²", "\xB3": "³", "\u2AC6": "⫆", "\u2ABE": "⪾", "\u2AD8": "⫘", "\u2AC4": "⫄", "\u27C9": "⟉", "\u2AD7": "⫗", "\u297B": "⥻", "\u2AC2": "⫂", "\u2ACC": "⫌", "\u228B": "⊋", "\u2AC0": "⫀", "\u2AC8": "⫈", "\u2AD4": "⫔", "\u2AD6": "⫖", "\u21D9": "⇙", "\u292A": "⤪", "\xDF": "ß", "\u2316": "⌖", "\u03C4": "τ", "\u0165": "ť", "\u0163": "ţ", "\u0442": "т", "\u2315": "⌕", "\u{1D531}": "𝔱", "\u03B8": "θ", "\u03D1": "ϑ", "\xFE": "þ", "\xD7": "×", "\u2A31": "⨱", "\u2A30": "⨰", "\u2336": "⌶", "\u2AF1": "⫱", "\u{1D565}": "𝕥", "\u2ADA": "⫚", "\u2034": "‴", "\u25B5": "▵", "\u225C": "≜", "\u25EC": "◬", "\u2A3A": "⨺", "\u2A39": "⨹", "\u29CD": "⧍", "\u2A3B": "⨻", "\u23E2": "⏢", "\u{1D4C9}": "𝓉", "\u0446": "ц", "\u045B": "ћ", "\u0167": "ŧ", "\u2963": "⥣", "\xFA": "ú", "\u045E": "ў", "\u016D": "ŭ", "\xFB": "û", "\u0443": "у", "\u0171": "ű", "\u297E": "⥾", "\u{1D532}": "𝔲", "\xF9": "ù", "\u2580": "▀", "\u231C": "⌜", "\u230F": "⌏", "\u25F8": "◸", "\u016B": "ū", "\u0173": "ų", "\u{1D566}": "𝕦", "\u03C5": "υ", "\u21C8": "⇈", "\u231D": "⌝", "\u230E": "⌎", "\u016F": "ů", "\u25F9": "◹", "\u{1D4CA}": "𝓊", "\u22F0": "⋰", "\u0169": "ũ", "\xFC": "ü", "\u29A7": "⦧", "\u2AE8": "⫨", "\u2AE9": "⫩", "\u299C": "⦜", "\u228A\uFE00": "⊊︀", "\u2ACB\uFE00": "⫋︀", "\u228B\uFE00": "⊋︀", "\u2ACC\uFE00": "⫌︀", "\u0432": "в", "\u22BB": "⊻", "\u225A": "≚", "\u22EE": "⋮", "\u{1D533}": "𝔳", "\u{1D567}": "𝕧", "\u{1D4CB}": "𝓋", "\u299A": "⦚", "\u0175": "ŵ", "\u2A5F": "⩟", "\u2259": "≙", "\u2118": "℘", "\u{1D534}": "𝔴", "\u{1D568}": "𝕨", "\u{1D4CC}": "𝓌", "\u{1D535}": "𝔵", "\u03BE": "ξ", "\u22FB": "⋻", "\u{1D569}": "𝕩", "\u{1D4CD}": "𝓍", "\xFD": "ý", "\u044F": "я", "\u0177": "ŷ", "\u044B": "ы", "\xA5": "¥", "\u{1D536}": "𝔶", "\u0457": "ї", "\u{1D56A}": "𝕪", "\u{1D4CE}": "𝓎", "\u044E": "ю", "\xFF": "ÿ", "\u017A": "ź", "\u017E": "ž", "\u0437": "з", "\u017C": "ż", "\u03B6": "ζ", "\u{1D537}": "𝔷", "\u0436": "ж", "\u21DD": "⇝", "\u{1D56B}": "𝕫", "\u{1D4CF}": "𝓏", "\u200D": "‍", "\u200C": "‌" } } }; - } - }); - - // node_modules/html-entities/lib/numeric-unicode-map.js - var require_numeric_unicode_map = __commonJS({ - "node_modules/html-entities/lib/numeric-unicode-map.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.numericUnicodeMap = { 0: 65533, 128: 8364, 130: 8218, 131: 402, 132: 8222, 133: 8230, 134: 8224, 135: 8225, 136: 710, 137: 8240, 138: 352, 139: 8249, 140: 338, 142: 381, 145: 8216, 146: 8217, 147: 8220, 148: 8221, 149: 8226, 150: 8211, 151: 8212, 152: 732, 153: 8482, 154: 353, 155: 8250, 156: 339, 158: 382, 159: 376 }; - } - }); - - // node_modules/html-entities/lib/surrogate-pairs.js - var require_surrogate_pairs = __commonJS({ - "node_modules/html-entities/lib/surrogate-pairs.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.fromCodePoint = String.fromCodePoint || function(astralCodePoint) { - return String.fromCharCode(Math.floor((astralCodePoint - 65536) / 1024) + 55296, (astralCodePoint - 65536) % 1024 + 56320); - }; - exports.getCodePoint = String.prototype.codePointAt ? function(input, position) { - return input.codePointAt(position); - } : function(input, position) { - return (input.charCodeAt(position) - 55296) * 1024 + input.charCodeAt(position + 1) - 56320 + 65536; - }; - exports.highSurrogateFrom = 55296; - exports.highSurrogateTo = 56319; - } - }); - - // node_modules/html-entities/lib/index.js - var require_lib2 = __commonJS({ - "node_modules/html-entities/lib/index.js"(exports) { - "use strict"; - var __assign = exports && exports.__assign || function() { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - var named_references_1 = require_named_references(); - var numeric_unicode_map_1 = require_numeric_unicode_map(); - var surrogate_pairs_1 = require_surrogate_pairs(); - var allNamedReferences = __assign(__assign({}, named_references_1.namedReferences), { all: named_references_1.namedReferences.html5 }); - function replaceUsingRegExp(macroText, macroRegExp, macroReplacer) { - macroRegExp.lastIndex = 0; - var replaceMatch = macroRegExp.exec(macroText); - var replaceResult; - if (replaceMatch) { - replaceResult = ""; - var replaceLastIndex = 0; - do { - if (replaceLastIndex !== replaceMatch.index) { - replaceResult += macroText.substring(replaceLastIndex, replaceMatch.index); - } - var replaceInput = replaceMatch[0]; - replaceResult += macroReplacer(replaceInput); - replaceLastIndex = replaceMatch.index + replaceInput.length; - } while (replaceMatch = macroRegExp.exec(macroText)); - if (replaceLastIndex !== macroText.length) { - replaceResult += macroText.substring(replaceLastIndex); - } - } else { - replaceResult = macroText; - } - return replaceResult; - } - var encodeRegExps = { specialChars: /[<>'"&]/g, nonAscii: /[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g, nonAsciiPrintable: /[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g, nonAsciiPrintableOnly: /[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g, extensive: /[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g }; - var defaultEncodeOptions = { mode: "specialChars", level: "all", numeric: "decimal" }; - function encode(text3, _a2) { - var _b = _a2 === void 0 ? defaultEncodeOptions : _a2, _c = _b.mode, mode = _c === void 0 ? "specialChars" : _c, _d = _b.numeric, numeric = _d === void 0 ? "decimal" : _d, _e = _b.level, level = _e === void 0 ? "all" : _e; - if (!text3) { - return ""; - } - var encodeRegExp = encodeRegExps[mode]; - var references = allNamedReferences[level].characters; - var isHex = numeric === "hexadecimal"; - return replaceUsingRegExp(text3, encodeRegExp, function(input) { - var result = references[input]; - if (!result) { - var code = input.length > 1 ? surrogate_pairs_1.getCodePoint(input, 0) : input.charCodeAt(0); - result = (isHex ? "&#x" + code.toString(16) : "&#" + code) + ";"; - } - return result; - }); - } - exports.encode = encode; - var defaultDecodeOptions = { scope: "body", level: "all" }; - var strict = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g; - var attribute = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g; - var baseDecodeRegExps = { xml: { strict, attribute, body: named_references_1.bodyRegExps.xml }, html4: { strict, attribute, body: named_references_1.bodyRegExps.html4 }, html5: { strict, attribute, body: named_references_1.bodyRegExps.html5 } }; - var decodeRegExps = __assign(__assign({}, baseDecodeRegExps), { all: baseDecodeRegExps.html5 }); - var fromCharCode = String.fromCharCode; - var outOfBoundsChar = fromCharCode(65533); - var defaultDecodeEntityOptions = { level: "all" }; - function getDecodedEntity(entity, references, isAttribute, isStrict) { - var decodeResult = entity; - var decodeEntityLastChar = entity[entity.length - 1]; - if (isAttribute && decodeEntityLastChar === "=") { - decodeResult = entity; - } else if (isStrict && decodeEntityLastChar !== ";") { - decodeResult = entity; - } else { - var decodeResultByReference = references[entity]; - if (decodeResultByReference) { - decodeResult = decodeResultByReference; - } else if (entity[0] === "&" && entity[1] === "#") { - var decodeSecondChar = entity[2]; - var decodeCode = decodeSecondChar == "x" || decodeSecondChar == "X" ? parseInt(entity.substr(3), 16) : parseInt(entity.substr(2)); - decodeResult = decodeCode >= 1114111 ? outOfBoundsChar : decodeCode > 65535 ? surrogate_pairs_1.fromCodePoint(decodeCode) : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode] || decodeCode); - } - } - return decodeResult; - } - function decodeEntity(entity, _a2) { - var _b = (_a2 === void 0 ? defaultDecodeEntityOptions : _a2).level, level = _b === void 0 ? "all" : _b; - if (!entity) { - return ""; - } - return getDecodedEntity(entity, allNamedReferences[level].entities, false, false); - } - exports.decodeEntity = decodeEntity; - function decode(text3, _a2) { - var _b = _a2 === void 0 ? defaultDecodeOptions : _a2, _c = _b.level, level = _c === void 0 ? "all" : _c, _d = _b.scope, scope = _d === void 0 ? level === "xml" ? "strict" : "body" : _d; - if (!text3) { - return ""; - } - var decodeRegExp = decodeRegExps[level][scope]; - var references = allNamedReferences[level].entities; - var isAttribute = scope === "attribute"; - var isStrict = scope === "strict"; - return replaceUsingRegExp(text3, decodeRegExp, function(entity) { - return getDecodedEntity(entity, references, isAttribute, isStrict); - }); - } - exports.decode = decode; - } - }); - - // src/crypto-js.min.js - var require_crypto_js_min = __commonJS({ - "src/crypto-js.min.js"(exports, module) { - "use strict"; - !function(t, e) { - "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e(); - }(exports, function() { - var W, O, I, U, K, X, L, l, j, T, t, N, q, e, Z, V, G, J, Q, Y, $2, t1, e1, r1, i1, o1, n1, s, s1, c1, a1, h1, l1, o, f1, r, d1, u1, n, c, a, h, f, d, i = function(h3) { - var i3; - if ("undefined" != typeof window && window.crypto && (i3 = window.crypto), "undefined" != typeof self && self.crypto && (i3 = self.crypto), !(i3 = !(i3 = !(i3 = "undefined" != typeof globalThis && globalThis.crypto ? globalThis.crypto : i3) && "undefined" != typeof window && window.msCrypto ? window.msCrypto : i3) && "undefined" != typeof global && global.crypto ? global.crypto : i3) && "function" == typeof __require) try { - i3 = __require("crypto"); - } catch (t4) { - } - var r3 = Object.create || function(t4) { - return e3.prototype = t4, t4 = new e3(), e3.prototype = null, t4; - }; - function e3() { - } - var t3 = {}, o3 = t3.lib = {}, n3 = o3.Base = { extend: function(t4) { - var e4 = r3(this); - return t4 && e4.mixIn(t4), e4.hasOwnProperty("init") && this.init !== e4.init || (e4.init = function() { - e4.$super.init.apply(this, arguments); - }), (e4.init.prototype = e4).$super = this, e4; - }, create: function() { - var t4 = this.extend(); - return t4.init.apply(t4, arguments), t4; - }, init: function() { - }, mixIn: function(t4) { - for (var e4 in t4) t4.hasOwnProperty(e4) && (this[e4] = t4[e4]); - t4.hasOwnProperty("toString") && (this.toString = t4.toString); - }, clone: function() { - return this.init.prototype.extend(this); - } }, l3 = o3.WordArray = n3.extend({ init: function(t4, e4) { - t4 = this.words = t4 || [], this.sigBytes = null != e4 ? e4 : 4 * t4.length; - }, toString: function(t4) { - return (t4 || c3).stringify(this); - }, concat: function(t4) { - var e4 = this.words, r4 = t4.words, i4 = this.sigBytes, o4 = t4.sigBytes; - if (this.clamp(), i4 % 4) for (var n4 = 0; n4 < o4; n4++) { - var s4 = r4[n4 >>> 2] >>> 24 - n4 % 4 * 8 & 255; - e4[i4 + n4 >>> 2] |= s4 << 24 - (i4 + n4) % 4 * 8; - } - else for (var c4 = 0; c4 < o4; c4 += 4) e4[i4 + c4 >>> 2] = r4[c4 >>> 2]; - return this.sigBytes += o4, this; - }, clamp: function() { - var t4 = this.words, e4 = this.sigBytes; - t4[e4 >>> 2] &= 4294967295 << 32 - e4 % 4 * 8, t4.length = h3.ceil(e4 / 4); - }, clone: function() { - var t4 = n3.clone.call(this); - return t4.words = this.words.slice(0), t4; - }, random: function(t4) { - for (var e4 = [], r4 = 0; r4 < t4; r4 += 4) e4.push(function() { - if (i3) { - if ("function" == typeof i3.getRandomValues) try { - return i3.getRandomValues(new Uint32Array(1))[0]; - } catch (t5) { - } - if ("function" == typeof i3.randomBytes) try { - return i3.randomBytes(4).readInt32LE(); - } catch (t5) { - } - } - throw new Error("Native crypto module could not be used to get secure random number."); - }()); - return new l3.init(e4, t4); - } }), s3 = t3.enc = {}, c3 = s3.Hex = { stringify: function(t4) { - for (var e4 = t4.words, r4 = t4.sigBytes, i4 = [], o4 = 0; o4 < r4; o4++) { - var n4 = e4[o4 >>> 2] >>> 24 - o4 % 4 * 8 & 255; - i4.push((n4 >>> 4).toString(16)), i4.push((15 & n4).toString(16)); - } - return i4.join(""); - }, parse: function(t4) { - for (var e4 = t4.length, r4 = [], i4 = 0; i4 < e4; i4 += 2) r4[i4 >>> 3] |= parseInt(t4.substr(i4, 2), 16) << 24 - i4 % 8 * 4; - return new l3.init(r4, e4 / 2); - } }, a3 = s3.Latin1 = { stringify: function(t4) { - for (var e4 = t4.words, r4 = t4.sigBytes, i4 = [], o4 = 0; o4 < r4; o4++) { - var n4 = e4[o4 >>> 2] >>> 24 - o4 % 4 * 8 & 255; - i4.push(String.fromCharCode(n4)); - } - return i4.join(""); - }, parse: function(t4) { - for (var e4 = t4.length, r4 = [], i4 = 0; i4 < e4; i4++) r4[i4 >>> 2] |= (255 & t4.charCodeAt(i4)) << 24 - i4 % 4 * 8; - return new l3.init(r4, e4); - } }, f3 = s3.Utf8 = { stringify: function(t4) { - try { - return decodeURIComponent(escape(a3.stringify(t4))); - } catch (t5) { - throw new Error("Malformed UTF-8 data"); - } - }, parse: function(t4) { - return a3.parse(unescape(encodeURIComponent(t4))); - } }, d3 = o3.BufferedBlockAlgorithm = n3.extend({ reset: function() { - this._data = new l3.init(), this._nDataBytes = 0; - }, _append: function(t4) { - "string" == typeof t4 && (t4 = f3.parse(t4)), this._data.concat(t4), this._nDataBytes += t4.sigBytes; - }, _process: function(t4) { - var e4, r4 = this._data, i4 = r4.words, o4 = r4.sigBytes, n4 = this.blockSize, s4 = o4 / (4 * n4), c4 = (s4 = t4 ? h3.ceil(s4) : h3.max((0 | s4) - this._minBufferSize, 0)) * n4, t4 = h3.min(4 * c4, o4); - if (c4) { - for (var a4 = 0; a4 < c4; a4 += n4) this._doProcessBlock(i4, a4); - e4 = i4.splice(0, c4), r4.sigBytes -= t4; - } - return new l3.init(e4, t4); - }, clone: function() { - var t4 = n3.clone.call(this); - return t4._data = this._data.clone(), t4; - }, _minBufferSize: 0 }), u3 = (o3.Hasher = d3.extend({ cfg: n3.extend(), init: function(t4) { - this.cfg = this.cfg.extend(t4), this.reset(); - }, reset: function() { - d3.reset.call(this), this._doReset(); - }, update: function(t4) { - return this._append(t4), this._process(), this; - }, finalize: function(t4) { - return t4 && this._append(t4), this._doFinalize(); - }, blockSize: 16, _createHelper: function(r4) { - return function(t4, e4) { - return new r4.init(e4).finalize(t4); - }; - }, _createHmacHelper: function(r4) { - return function(t4, e4) { - return new u3.HMAC.init(r4, e4).finalize(t4); - }; - } }), t3.algo = {}); - return t3; - }(Math), u = (u = (p = i).lib, W = u.Base, O = u.WordArray, (u = p.x64 = {}).Word = W.extend({ init: function(t3, e3) { - this.high = t3, this.low = e3; - } }), u.WordArray = W.extend({ init: function(t3, e3) { - t3 = this.words = t3 || [], this.sigBytes = null != e3 ? e3 : 8 * t3.length; - }, toX32: function() { - for (var t3 = this.words, e3 = t3.length, r3 = [], i3 = 0; i3 < e3; i3++) { - var o3 = t3[i3]; - r3.push(o3.high), r3.push(o3.low); - } - return O.create(r3, this.sigBytes); - }, clone: function() { - for (var t3 = W.clone.call(this), e3 = t3.words = this.words.slice(0), r3 = e3.length, i3 = 0; i3 < r3; i3++) e3[i3] = e3[i3].clone(); - return t3; - } }), "function" == typeof ArrayBuffer && (p = i.lib.WordArray, I = p.init, (p.init = function(t3) { - if ((t3 = (t3 = t3 instanceof ArrayBuffer ? new Uint8Array(t3) : t3) instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t3 instanceof Uint8ClampedArray || t3 instanceof Int16Array || t3 instanceof Uint16Array || t3 instanceof Int32Array || t3 instanceof Uint32Array || t3 instanceof Float32Array || t3 instanceof Float64Array ? new Uint8Array(t3.buffer, t3.byteOffset, t3.byteLength) : t3) instanceof Uint8Array) { - for (var e3 = t3.byteLength, r3 = [], i3 = 0; i3 < e3; i3++) r3[i3 >>> 2] |= t3[i3] << 24 - i3 % 4 * 8; - I.call(this, r3, e3); - } else I.apply(this, arguments); - }).prototype = p), i), p1 = u.lib.WordArray; - function _1(t3) { - return t3 << 8 & 4278255360 | t3 >>> 8 & 16711935; - } - (u = u.enc).Utf16 = u.Utf16BE = { stringify: function(t3) { - for (var e3 = t3.words, r3 = t3.sigBytes, i3 = [], o3 = 0; o3 < r3; o3 += 2) { - var n3 = e3[o3 >>> 2] >>> 16 - o3 % 4 * 8 & 65535; - i3.push(String.fromCharCode(n3)); - } - return i3.join(""); - }, parse: function(t3) { - for (var e3 = t3.length, r3 = [], i3 = 0; i3 < e3; i3++) r3[i3 >>> 1] |= t3.charCodeAt(i3) << 16 - i3 % 2 * 16; - return p1.create(r3, 2 * e3); - } }, u.Utf16LE = { stringify: function(t3) { - for (var e3 = t3.words, r3 = t3.sigBytes, i3 = [], o3 = 0; o3 < r3; o3 += 2) { - var n3 = _1(e3[o3 >>> 2] >>> 16 - o3 % 4 * 8 & 65535); - i3.push(String.fromCharCode(n3)); - } - return i3.join(""); - }, parse: function(t3) { - for (var e3 = t3.length, r3 = [], i3 = 0; i3 < e3; i3++) r3[i3 >>> 1] |= _1(t3.charCodeAt(i3) << 16 - i3 % 2 * 16); - return p1.create(r3, 2 * e3); - } }, U = (p = i).lib.WordArray, p.enc.Base64 = { stringify: function(t3) { - for (var e3 = t3.words, r3 = t3.sigBytes, i3 = this._map, o3 = (t3.clamp(), []), n3 = 0; n3 < r3; n3 += 3) for (var s3 = (e3[n3 >>> 2] >>> 24 - n3 % 4 * 8 & 255) << 16 | (e3[n3 + 1 >>> 2] >>> 24 - (n3 + 1) % 4 * 8 & 255) << 8 | e3[n3 + 2 >>> 2] >>> 24 - (n3 + 2) % 4 * 8 & 255, c3 = 0; c3 < 4 && n3 + 0.75 * c3 < r3; c3++) o3.push(i3.charAt(s3 >>> 6 * (3 - c3) & 63)); - var a3 = i3.charAt(64); - if (a3) for (; o3.length % 4; ) o3.push(a3); - return o3.join(""); - }, parse: function(t3) { - var e3 = t3.length, r3 = this._map; - if (!(i3 = this._reverseMap)) for (var i3 = this._reverseMap = [], o3 = 0; o3 < r3.length; o3++) i3[r3.charCodeAt(o3)] = o3; - for (var n3, s3, c3 = r3.charAt(64), a3 = (!c3 || -1 !== (c3 = t3.indexOf(c3)) && (e3 = c3), t3), h3 = e3, l3 = i3, f3 = [], d3 = 0, u3 = 0; u3 < h3; u3++) u3 % 4 && (s3 = l3[a3.charCodeAt(u3 - 1)] << u3 % 4 * 2, n3 = l3[a3.charCodeAt(u3)] >>> 6 - u3 % 4 * 2, s3 = s3 | n3, f3[d3 >>> 2] |= s3 << 24 - d3 % 4 * 8, d3++); - return U.create(f3, d3); - }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }, K = (u = i).lib.WordArray, u.enc.Base64url = { stringify: function(t3, e3) { - for (var r3 = t3.words, i3 = t3.sigBytes, o3 = (e3 = void 0 === e3 ? true : e3) ? this._safe_map : this._map, n3 = (t3.clamp(), []), s3 = 0; s3 < i3; s3 += 3) for (var c3 = (r3[s3 >>> 2] >>> 24 - s3 % 4 * 8 & 255) << 16 | (r3[s3 + 1 >>> 2] >>> 24 - (s3 + 1) % 4 * 8 & 255) << 8 | r3[s3 + 2 >>> 2] >>> 24 - (s3 + 2) % 4 * 8 & 255, a3 = 0; a3 < 4 && s3 + 0.75 * a3 < i3; a3++) n3.push(o3.charAt(c3 >>> 6 * (3 - a3) & 63)); - var h3 = o3.charAt(64); - if (h3) for (; n3.length % 4; ) n3.push(h3); - return n3.join(""); - }, parse: function(t3, e3) { - var r3 = t3.length, i3 = (e3 = void 0 === e3 ? true : e3) ? this._safe_map : this._map; - if (!(o3 = this._reverseMap)) for (var o3 = this._reverseMap = [], n3 = 0; n3 < i3.length; n3++) o3[i3.charCodeAt(n3)] = n3; - for (var s3, c3, e3 = i3.charAt(64), a3 = (!e3 || -1 !== (e3 = t3.indexOf(e3)) && (r3 = e3), t3), h3 = r3, l3 = o3, f3 = [], d3 = 0, u3 = 0; u3 < h3; u3++) u3 % 4 && (c3 = l3[a3.charCodeAt(u3 - 1)] << u3 % 4 * 2, s3 = l3[a3.charCodeAt(u3)] >>> 6 - u3 % 4 * 2, c3 = c3 | s3, f3[d3 >>> 2] |= c3 << 24 - d3 % 4 * 8, d3++); - return K.create(f3, d3); - }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", _safe_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" }; - for (var y1 = Math, p = i, g1 = (u = p.lib).WordArray, v1 = u.Hasher, u = p.algo, A = [], B1 = 0; B1 < 64; B1++) A[B1] = 4294967296 * y1.abs(y1.sin(B1 + 1)) | 0; - function z(t3, e3, r3, i3, o3, n3, s3) { - t3 = t3 + (e3 & r3 | ~e3 & i3) + o3 + s3; - return (t3 << n3 | t3 >>> 32 - n3) + e3; - } - function H(t3, e3, r3, i3, o3, n3, s3) { - t3 = t3 + (e3 & i3 | r3 & ~i3) + o3 + s3; - return (t3 << n3 | t3 >>> 32 - n3) + e3; - } - function C(t3, e3, r3, i3, o3, n3, s3) { - t3 = t3 + (e3 ^ r3 ^ i3) + o3 + s3; - return (t3 << n3 | t3 >>> 32 - n3) + e3; - } - function R(t3, e3, r3, i3, o3, n3, s3) { - t3 = t3 + (r3 ^ (e3 | ~i3)) + o3 + s3; - return (t3 << n3 | t3 >>> 32 - n3) + e3; - } - u = u.MD5 = v1.extend({ _doReset: function() { - this._hash = new g1.init([1732584193, 4023233417, 2562383102, 271733878]); - }, _doProcessBlock: function(t3, e3) { - for (var r3 = 0; r3 < 16; r3++) { - var i3 = e3 + r3, o3 = t3[i3]; - t3[i3] = 16711935 & (o3 << 8 | o3 >>> 24) | 4278255360 & (o3 << 24 | o3 >>> 8); - } - var n3 = this._hash.words, s3 = t3[e3 + 0], c3 = t3[e3 + 1], a3 = t3[e3 + 2], h3 = t3[e3 + 3], l3 = t3[e3 + 4], f3 = t3[e3 + 5], d3 = t3[e3 + 6], u3 = t3[e3 + 7], p3 = t3[e3 + 8], _3 = t3[e3 + 9], y3 = t3[e3 + 10], g3 = t3[e3 + 11], v3 = t3[e3 + 12], B3 = t3[e3 + 13], w3 = t3[e3 + 14], k3 = t3[e3 + 15], x3 = z(n3[0], S3 = n3[1], m3 = n3[2], b3 = n3[3], s3, 7, A[0]), b3 = z(b3, x3, S3, m3, c3, 12, A[1]), m3 = z(m3, b3, x3, S3, a3, 17, A[2]), S3 = z(S3, m3, b3, x3, h3, 22, A[3]); - x3 = z(x3, S3, m3, b3, l3, 7, A[4]), b3 = z(b3, x3, S3, m3, f3, 12, A[5]), m3 = z(m3, b3, x3, S3, d3, 17, A[6]), S3 = z(S3, m3, b3, x3, u3, 22, A[7]), x3 = z(x3, S3, m3, b3, p3, 7, A[8]), b3 = z(b3, x3, S3, m3, _3, 12, A[9]), m3 = z(m3, b3, x3, S3, y3, 17, A[10]), S3 = z(S3, m3, b3, x3, g3, 22, A[11]), x3 = z(x3, S3, m3, b3, v3, 7, A[12]), b3 = z(b3, x3, S3, m3, B3, 12, A[13]), m3 = z(m3, b3, x3, S3, w3, 17, A[14]), x3 = H(x3, S3 = z(S3, m3, b3, x3, k3, 22, A[15]), m3, b3, c3, 5, A[16]), b3 = H(b3, x3, S3, m3, d3, 9, A[17]), m3 = H(m3, b3, x3, S3, g3, 14, A[18]), S3 = H(S3, m3, b3, x3, s3, 20, A[19]), x3 = H(x3, S3, m3, b3, f3, 5, A[20]), b3 = H(b3, x3, S3, m3, y3, 9, A[21]), m3 = H(m3, b3, x3, S3, k3, 14, A[22]), S3 = H(S3, m3, b3, x3, l3, 20, A[23]), x3 = H(x3, S3, m3, b3, _3, 5, A[24]), b3 = H(b3, x3, S3, m3, w3, 9, A[25]), m3 = H(m3, b3, x3, S3, h3, 14, A[26]), S3 = H(S3, m3, b3, x3, p3, 20, A[27]), x3 = H(x3, S3, m3, b3, B3, 5, A[28]), b3 = H(b3, x3, S3, m3, a3, 9, A[29]), m3 = H(m3, b3, x3, S3, u3, 14, A[30]), x3 = C(x3, S3 = H(S3, m3, b3, x3, v3, 20, A[31]), m3, b3, f3, 4, A[32]), b3 = C(b3, x3, S3, m3, p3, 11, A[33]), m3 = C(m3, b3, x3, S3, g3, 16, A[34]), S3 = C(S3, m3, b3, x3, w3, 23, A[35]), x3 = C(x3, S3, m3, b3, c3, 4, A[36]), b3 = C(b3, x3, S3, m3, l3, 11, A[37]), m3 = C(m3, b3, x3, S3, u3, 16, A[38]), S3 = C(S3, m3, b3, x3, y3, 23, A[39]), x3 = C(x3, S3, m3, b3, B3, 4, A[40]), b3 = C(b3, x3, S3, m3, s3, 11, A[41]), m3 = C(m3, b3, x3, S3, h3, 16, A[42]), S3 = C(S3, m3, b3, x3, d3, 23, A[43]), x3 = C(x3, S3, m3, b3, _3, 4, A[44]), b3 = C(b3, x3, S3, m3, v3, 11, A[45]), m3 = C(m3, b3, x3, S3, k3, 16, A[46]), x3 = R(x3, S3 = C(S3, m3, b3, x3, a3, 23, A[47]), m3, b3, s3, 6, A[48]), b3 = R(b3, x3, S3, m3, u3, 10, A[49]), m3 = R(m3, b3, x3, S3, w3, 15, A[50]), S3 = R(S3, m3, b3, x3, f3, 21, A[51]), x3 = R(x3, S3, m3, b3, v3, 6, A[52]), b3 = R(b3, x3, S3, m3, h3, 10, A[53]), m3 = R(m3, b3, x3, S3, y3, 15, A[54]), S3 = R(S3, m3, b3, x3, c3, 21, A[55]), x3 = R(x3, S3, m3, b3, p3, 6, A[56]), b3 = R(b3, x3, S3, m3, k3, 10, A[57]), m3 = R(m3, b3, x3, S3, d3, 15, A[58]), S3 = R(S3, m3, b3, x3, B3, 21, A[59]), x3 = R(x3, S3, m3, b3, l3, 6, A[60]), b3 = R(b3, x3, S3, m3, g3, 10, A[61]), m3 = R(m3, b3, x3, S3, a3, 15, A[62]), S3 = R(S3, m3, b3, x3, _3, 21, A[63]), n3[0] = n3[0] + x3 | 0, n3[1] = n3[1] + S3 | 0, n3[2] = n3[2] + m3 | 0, n3[3] = n3[3] + b3 | 0; - }, _doFinalize: function() { - for (var t3 = this._data, e3 = t3.words, r3 = 8 * this._nDataBytes, i3 = 8 * t3.sigBytes, o3 = (e3[i3 >>> 5] |= 128 << 24 - i3 % 32, y1.floor(r3 / 4294967296)), o3 = (e3[15 + (64 + i3 >>> 9 << 4)] = 16711935 & (o3 << 8 | o3 >>> 24) | 4278255360 & (o3 << 24 | o3 >>> 8), e3[14 + (64 + i3 >>> 9 << 4)] = 16711935 & (r3 << 8 | r3 >>> 24) | 4278255360 & (r3 << 24 | r3 >>> 8), t3.sigBytes = 4 * (e3.length + 1), this._process(), this._hash), n3 = o3.words, s3 = 0; s3 < 4; s3++) { - var c3 = n3[s3]; - n3[s3] = 16711935 & (c3 << 8 | c3 >>> 24) | 4278255360 & (c3 << 24 | c3 >>> 8); - } - return o3; - }, clone: function() { - var t3 = v1.clone.call(this); - return t3._hash = this._hash.clone(), t3; - } }), p.MD5 = v1._createHelper(u), p.HmacMD5 = v1._createHmacHelper(u), u = (p = i).lib, X = u.WordArray, L = u.Hasher, u = p.algo, l = [], u = u.SHA1 = L.extend({ _doReset: function() { - this._hash = new X.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, _doProcessBlock: function(t3, e3) { - for (var r3 = this._hash.words, i3 = r3[0], o3 = r3[1], n3 = r3[2], s3 = r3[3], c3 = r3[4], a3 = 0; a3 < 80; a3++) { - a3 < 16 ? l[a3] = 0 | t3[e3 + a3] : (h3 = l[a3 - 3] ^ l[a3 - 8] ^ l[a3 - 14] ^ l[a3 - 16], l[a3] = h3 << 1 | h3 >>> 31); - var h3 = (i3 << 5 | i3 >>> 27) + c3 + l[a3]; - h3 += a3 < 20 ? 1518500249 + (o3 & n3 | ~o3 & s3) : a3 < 40 ? 1859775393 + (o3 ^ n3 ^ s3) : a3 < 60 ? (o3 & n3 | o3 & s3 | n3 & s3) - 1894007588 : (o3 ^ n3 ^ s3) - 899497514, c3 = s3, s3 = n3, n3 = o3 << 30 | o3 >>> 2, o3 = i3, i3 = h3; - } - r3[0] = r3[0] + i3 | 0, r3[1] = r3[1] + o3 | 0, r3[2] = r3[2] + n3 | 0, r3[3] = r3[3] + s3 | 0, r3[4] = r3[4] + c3 | 0; - }, _doFinalize: function() { - var t3 = this._data, e3 = t3.words, r3 = 8 * this._nDataBytes, i3 = 8 * t3.sigBytes; - return e3[i3 >>> 5] |= 128 << 24 - i3 % 32, e3[14 + (64 + i3 >>> 9 << 4)] = Math.floor(r3 / 4294967296), e3[15 + (64 + i3 >>> 9 << 4)] = r3, t3.sigBytes = 4 * e3.length, this._process(), this._hash; - }, clone: function() { - var t3 = L.clone.call(this); - return t3._hash = this._hash.clone(), t3; - } }), p.SHA1 = L._createHelper(u), p.HmacSHA1 = L._createHmacHelper(u); - var w1 = Math, p = i, k1 = (u = p.lib).WordArray, x1 = u.Hasher, u = p.algo, b1 = [], m1 = []; - function S1(t3) { - return 4294967296 * (t3 - (0 | t3)) | 0; - } - for (var A1 = 2, z1 = 0; z1 < 64; ) !function(t3) { - for (var e3 = w1.sqrt(t3), r3 = 2; r3 <= e3; r3++) if (!(t3 % r3)) return; - return 1; - }(A1) || (z1 < 8 && (b1[z1] = S1(w1.pow(A1, 0.5))), m1[z1] = S1(w1.pow(A1, 1 / 3)), z1++), A1++; - var _ = [], u = u.SHA256 = x1.extend({ _doReset: function() { - this._hash = new k1.init(b1.slice(0)); - }, _doProcessBlock: function(t3, e3) { - for (var r3 = this._hash.words, i3 = r3[0], o3 = r3[1], n3 = r3[2], s3 = r3[3], c3 = r3[4], a3 = r3[5], h3 = r3[6], l3 = r3[7], f3 = 0; f3 < 64; f3++) { - f3 < 16 ? _[f3] = 0 | t3[e3 + f3] : (d3 = _[f3 - 15], u3 = _[f3 - 2], _[f3] = ((d3 << 25 | d3 >>> 7) ^ (d3 << 14 | d3 >>> 18) ^ d3 >>> 3) + _[f3 - 7] + ((u3 << 15 | u3 >>> 17) ^ (u3 << 13 | u3 >>> 19) ^ u3 >>> 10) + _[f3 - 16]); - var d3 = i3 & o3 ^ i3 & n3 ^ o3 & n3, u3 = l3 + ((c3 << 26 | c3 >>> 6) ^ (c3 << 21 | c3 >>> 11) ^ (c3 << 7 | c3 >>> 25)) + (c3 & a3 ^ ~c3 & h3) + m1[f3] + _[f3], l3 = h3, h3 = a3, a3 = c3, c3 = s3 + u3 | 0, s3 = n3, n3 = o3, o3 = i3, i3 = u3 + (((i3 << 30 | i3 >>> 2) ^ (i3 << 19 | i3 >>> 13) ^ (i3 << 10 | i3 >>> 22)) + d3) | 0; - } - r3[0] = r3[0] + i3 | 0, r3[1] = r3[1] + o3 | 0, r3[2] = r3[2] + n3 | 0, r3[3] = r3[3] + s3 | 0, r3[4] = r3[4] + c3 | 0, r3[5] = r3[5] + a3 | 0, r3[6] = r3[6] + h3 | 0, r3[7] = r3[7] + l3 | 0; - }, _doFinalize: function() { - var t3 = this._data, e3 = t3.words, r3 = 8 * this._nDataBytes, i3 = 8 * t3.sigBytes; - return e3[i3 >>> 5] |= 128 << 24 - i3 % 32, e3[14 + (64 + i3 >>> 9 << 4)] = w1.floor(r3 / 4294967296), e3[15 + (64 + i3 >>> 9 << 4)] = r3, t3.sigBytes = 4 * e3.length, this._process(), this._hash; - }, clone: function() { - var t3 = x1.clone.call(this); - return t3._hash = this._hash.clone(), t3; - } }), p = (p.SHA256 = x1._createHelper(u), p.HmacSHA256 = x1._createHmacHelper(u), j = (p = i).lib.WordArray, u = p.algo, T = u.SHA256, u = u.SHA224 = T.extend({ _doReset: function() { - this._hash = new j.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); - }, _doFinalize: function() { - var t3 = T._doFinalize.call(this); - return t3.sigBytes -= 4, t3; - } }), p.SHA224 = T._createHelper(u), p.HmacSHA224 = T._createHmacHelper(u), i), H1 = p.lib.Hasher, y = (u = p.x64).Word, C1 = u.WordArray, u = p.algo; - function g() { - return y.create.apply(y, arguments); - } - for (var R1 = [g(1116352408, 3609767458), g(1899447441, 602891725), g(3049323471, 3964484399), g(3921009573, 2173295548), g(961987163, 4081628472), g(1508970993, 3053834265), g(2453635748, 2937671579), g(2870763221, 3664609560), g(3624381080, 2734883394), g(310598401, 1164996542), g(607225278, 1323610764), g(1426881987, 3590304994), g(1925078388, 4068182383), g(2162078206, 991336113), g(2614888103, 633803317), g(3248222580, 3479774868), g(3835390401, 2666613458), g(4022224774, 944711139), g(264347078, 2341262773), g(604807628, 2007800933), g(770255983, 1495990901), g(1249150122, 1856431235), g(1555081692, 3175218132), g(1996064986, 2198950837), g(2554220882, 3999719339), g(2821834349, 766784016), g(2952996808, 2566594879), g(3210313671, 3203337956), g(3336571891, 1034457026), g(3584528711, 2466948901), g(113926993, 3758326383), g(338241895, 168717936), g(666307205, 1188179964), g(773529912, 1546045734), g(1294757372, 1522805485), g(1396182291, 2643833823), g(1695183700, 2343527390), g(1986661051, 1014477480), g(2177026350, 1206759142), g(2456956037, 344077627), g(2730485921, 1290863460), g(2820302411, 3158454273), g(3259730800, 3505952657), g(3345764771, 106217008), g(3516065817, 3606008344), g(3600352804, 1432725776), g(4094571909, 1467031594), g(275423344, 851169720), g(430227734, 3100823752), g(506948616, 1363258195), g(659060556, 3750685593), g(883997877, 3785050280), g(958139571, 3318307427), g(1322822218, 3812723403), g(1537002063, 2003034995), g(1747873779, 3602036899), g(1955562222, 1575990012), g(2024104815, 1125592928), g(2227730452, 2716904306), g(2361852424, 442776044), g(2428436474, 593698344), g(2756734187, 3733110249), g(3204031479, 2999351573), g(3329325298, 3815920427), g(3391569614, 3928383900), g(3515267271, 566280711), g(3940187606, 3454069534), g(4118630271, 4000239992), g(116418474, 1914138554), g(174292421, 2731055270), g(289380356, 3203993006), g(460393269, 320620315), g(685471733, 587496836), g(852142971, 1086792851), g(1017036298, 365543100), g(1126000580, 2618297676), g(1288033470, 3409855158), g(1501505948, 4234509866), g(1607167915, 987167468), g(1816402316, 1246189591)], D1 = [], E1 = 0; E1 < 80; E1++) D1[E1] = g(); - u = u.SHA512 = H1.extend({ _doReset: function() { - this._hash = new C1.init([new y.init(1779033703, 4089235720), new y.init(3144134277, 2227873595), new y.init(1013904242, 4271175723), new y.init(2773480762, 1595750129), new y.init(1359893119, 2917565137), new y.init(2600822924, 725511199), new y.init(528734635, 4215389547), new y.init(1541459225, 327033209)]); - }, _doProcessBlock: function(W2, O2) { - for (var t3 = this._hash.words, e3 = t3[0], r3 = t3[1], i3 = t3[2], o3 = t3[3], n3 = t3[4], s3 = t3[5], c3 = t3[6], t3 = t3[7], I2 = e3.high, a3 = e3.low, U2 = r3.high, h3 = r3.low, K2 = i3.high, l3 = i3.low, X2 = o3.high, f3 = o3.low, L2 = n3.high, d3 = n3.low, j2 = s3.high, u3 = s3.low, T2 = c3.high, p3 = c3.low, N2 = t3.high, _3 = t3.low, y3 = I2, g3 = a3, v3 = U2, B3 = h3, w3 = K2, k3 = l3, q2 = X2, x3 = f3, b3 = L2, m3 = d3, Z2 = j2, S3 = u3, V2 = T2, G2 = p3, J2 = N2, Q2 = _3, A3 = 0; A3 < 80; A3++) var z3, H3, C3 = D1[A3], R3 = (A3 < 16 ? (H3 = C3.high = 0 | W2[O2 + 2 * A3], z3 = C3.low = 0 | W2[O2 + 2 * A3 + 1]) : (F = (P2 = D1[A3 - 15]).high, P2 = P2.low, M2 = (E2 = D1[A3 - 2]).high, E2 = E2.low, D2 = (R3 = D1[A3 - 7]).high, R3 = R3.low, $3 = (Y2 = D1[A3 - 16]).high, H3 = (H3 = ((F >>> 1 | P2 << 31) ^ (F >>> 8 | P2 << 24) ^ F >>> 7) + D2 + ((z3 = (D2 = (P2 >>> 1 | F << 31) ^ (P2 >>> 8 | F << 24) ^ (P2 >>> 7 | F << 25)) + R3) >>> 0 < D2 >>> 0 ? 1 : 0)) + ((M2 >>> 19 | E2 << 13) ^ (M2 << 3 | E2 >>> 29) ^ M2 >>> 6) + ((z3 += P2 = (E2 >>> 19 | M2 << 13) ^ (E2 << 3 | M2 >>> 29) ^ (E2 >>> 6 | M2 << 26)) >>> 0 < P2 >>> 0 ? 1 : 0), z3 += F = Y2.low, C3.high = H3 = H3 + $3 + (z3 >>> 0 < F >>> 0 ? 1 : 0), C3.low = z3), b3 & Z2 ^ ~b3 & V2), D2 = m3 & S3 ^ ~m3 & G2, E2 = y3 & v3 ^ y3 & w3 ^ v3 & w3, M2 = (g3 >>> 28 | y3 << 4) ^ (g3 << 30 | y3 >>> 2) ^ (g3 << 25 | y3 >>> 7), P2 = R1[A3], Y2 = P2.high, $3 = P2.low, F = Q2 + ((m3 >>> 14 | b3 << 18) ^ (m3 >>> 18 | b3 << 14) ^ (m3 << 23 | b3 >>> 9)), C3 = J2 + ((b3 >>> 14 | m3 << 18) ^ (b3 >>> 18 | m3 << 14) ^ (b3 << 23 | m3 >>> 9)) + (F >>> 0 < Q2 >>> 0 ? 1 : 0), t12 = M2 + (g3 & B3 ^ g3 & k3 ^ B3 & k3), J2 = V2, Q2 = G2, V2 = Z2, G2 = S3, Z2 = b3, S3 = m3, b3 = q2 + (C3 = C3 + R3 + ((F = F + D2) >>> 0 < D2 >>> 0 ? 1 : 0) + Y2 + ((F = F + $3) >>> 0 < $3 >>> 0 ? 1 : 0) + H3 + ((F = F + z3) >>> 0 < z3 >>> 0 ? 1 : 0)) + ((m3 = x3 + F | 0) >>> 0 < x3 >>> 0 ? 1 : 0) | 0, q2 = w3, x3 = k3, w3 = v3, k3 = B3, v3 = y3, B3 = g3, y3 = C3 + (((y3 >>> 28 | g3 << 4) ^ (y3 << 30 | g3 >>> 2) ^ (y3 << 25 | g3 >>> 7)) + E2 + (t12 >>> 0 < M2 >>> 0 ? 1 : 0)) + ((g3 = F + t12 | 0) >>> 0 < F >>> 0 ? 1 : 0) | 0; - a3 = e3.low = a3 + g3, e3.high = I2 + y3 + (a3 >>> 0 < g3 >>> 0 ? 1 : 0), h3 = r3.low = h3 + B3, r3.high = U2 + v3 + (h3 >>> 0 < B3 >>> 0 ? 1 : 0), l3 = i3.low = l3 + k3, i3.high = K2 + w3 + (l3 >>> 0 < k3 >>> 0 ? 1 : 0), f3 = o3.low = f3 + x3, o3.high = X2 + q2 + (f3 >>> 0 < x3 >>> 0 ? 1 : 0), d3 = n3.low = d3 + m3, n3.high = L2 + b3 + (d3 >>> 0 < m3 >>> 0 ? 1 : 0), u3 = s3.low = u3 + S3, s3.high = j2 + Z2 + (u3 >>> 0 < S3 >>> 0 ? 1 : 0), p3 = c3.low = p3 + G2, c3.high = T2 + V2 + (p3 >>> 0 < G2 >>> 0 ? 1 : 0), _3 = t3.low = _3 + Q2, t3.high = N2 + J2 + (_3 >>> 0 < Q2 >>> 0 ? 1 : 0); - }, _doFinalize: function() { - var t3 = this._data, e3 = t3.words, r3 = 8 * this._nDataBytes, i3 = 8 * t3.sigBytes; - return e3[i3 >>> 5] |= 128 << 24 - i3 % 32, e3[30 + (128 + i3 >>> 10 << 5)] = Math.floor(r3 / 4294967296), e3[31 + (128 + i3 >>> 10 << 5)] = r3, t3.sigBytes = 4 * e3.length, this._process(), this._hash.toX32(); - }, clone: function() { - var t3 = H1.clone.call(this); - return t3._hash = this._hash.clone(), t3; - }, blockSize: 32 }), p.SHA512 = H1._createHelper(u), p.HmacSHA512 = H1._createHmacHelper(u), u = (p = i).x64, t = u.Word, N = u.WordArray, u = p.algo, q = u.SHA512, u = u.SHA384 = q.extend({ _doReset: function() { - this._hash = new N.init([new t.init(3418070365, 3238371032), new t.init(1654270250, 914150663), new t.init(2438529370, 812702999), new t.init(355462360, 4144912697), new t.init(1731405415, 4290775857), new t.init(2394180231, 1750603025), new t.init(3675008525, 1694076839), new t.init(1203062813, 3204075428)]); - }, _doFinalize: function() { - var t3 = q._doFinalize.call(this); - return t3.sigBytes -= 16, t3; - } }), p.SHA384 = q._createHelper(u), p.HmacSHA384 = q._createHmacHelper(u); - for (var M1 = Math, p = i, P1 = (u = p.lib).WordArray, F1 = u.Hasher, W1 = p.x64.Word, u = p.algo, O1 = [], I1 = [], U1 = [], v = 1, B = 0, K1 = 0; K1 < 24; K1++) { - O1[v + 5 * B] = (K1 + 1) * (K1 + 2) / 2 % 64; - var X1 = (2 * v + 3 * B) % 5; - v = B % 5, B = X1; - } - for (v = 0; v < 5; v++) for (B = 0; B < 5; B++) I1[v + 5 * B] = B + (2 * v + 3 * B) % 5 * 5; - for (var L1 = 1, j1 = 0; j1 < 24; j1++) { - for (var T1, N1 = 0, q1 = 0, Z1 = 0; Z1 < 7; Z1++) 1 & L1 && ((T1 = (1 << Z1) - 1) < 32 ? q1 ^= 1 << T1 : N1 ^= 1 << T1 - 32), 128 & L1 ? L1 = L1 << 1 ^ 113 : L1 <<= 1; - U1[j1] = W1.create(N1, q1); - } - for (var D = [], V1 = 0; V1 < 25; V1++) D[V1] = W1.create(); - function G1(t3, e3, r3) { - return t3 & e3 | ~t3 & r3; - } - function J1(t3, e3, r3) { - return t3 & r3 | e3 & ~r3; - } - function Q1(t3, e3) { - return t3 << e3 | t3 >>> 32 - e3; - } - function Y1(t3) { - return "string" == typeof t3 ? f1 : o; - } - function $1(t3, e3, r3) { - var i3, o3 = this._iv; - o3 ? (i3 = o3, this._iv = void 0) : i3 = this._prevBlock; - for (var n3 = 0; n3 < r3; n3++) t3[e3 + n3] ^= i3[n3]; - } - function t2(t3, e3, r3, i3) { - var o3, n3 = this._iv; - n3 ? (o3 = n3.slice(0), this._iv = void 0) : o3 = this._prevBlock, i3.encryptBlock(o3, 0); - for (var s3 = 0; s3 < r3; s3++) t3[e3 + s3] ^= o3[s3]; - } - function e2(t3) { - var e3, r3, i3; - return 255 == (t3 >> 24 & 255) ? (r3 = t3 >> 8 & 255, i3 = 255 & t3, 255 === (e3 = t3 >> 16 & 255) ? (e3 = 0, 255 === r3 ? (r3 = 0, 255 === i3 ? i3 = 0 : ++i3) : ++r3) : ++e3, t3 = 0, t3 = (t3 += e3 << 16) + (r3 << 8) + i3) : t3 += 1 << 24, t3; - } - u = u.SHA3 = F1.extend({ cfg: F1.cfg.extend({ outputLength: 512 }), _doReset: function() { - for (var t3 = this._state = [], e3 = 0; e3 < 25; e3++) t3[e3] = new W1.init(); - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, _doProcessBlock: function(t3, e3) { - for (var r3 = this._state, i3 = this.blockSize / 2, o3 = 0; o3 < i3; o3++) { - var n3 = t3[e3 + 2 * o3], s3 = t3[e3 + 2 * o3 + 1], n3 = 16711935 & (n3 << 8 | n3 >>> 24) | 4278255360 & (n3 << 24 | n3 >>> 8); - (x3 = r3[o3]).high ^= 16711935 & (s3 << 8 | s3 >>> 24) | 4278255360 & (s3 << 24 | s3 >>> 8), x3.low ^= n3; - } - for (var c3 = 0; c3 < 24; c3++) { - for (var a3 = 0; a3 < 5; a3++) { - for (var h3 = 0, l3 = 0, f3 = 0; f3 < 5; f3++) h3 ^= (x3 = r3[a3 + 5 * f3]).high, l3 ^= x3.low; - var d3 = D[a3]; - d3.high = h3, d3.low = l3; - } - for (a3 = 0; a3 < 5; a3++) for (var u3 = D[(a3 + 4) % 5], p3 = D[(a3 + 1) % 5], _3 = p3.high, p3 = p3.low, h3 = u3.high ^ (_3 << 1 | p3 >>> 31), l3 = u3.low ^ (p3 << 1 | _3 >>> 31), f3 = 0; f3 < 5; f3++) (x3 = r3[a3 + 5 * f3]).high ^= h3, x3.low ^= l3; - for (var y3 = 1; y3 < 25; y3++) { - var g3 = (x3 = r3[y3]).high, v3 = x3.low, B3 = O1[y3], g3 = (l3 = B3 < 32 ? (h3 = g3 << B3 | v3 >>> 32 - B3, v3 << B3 | g3 >>> 32 - B3) : (h3 = v3 << B3 - 32 | g3 >>> 64 - B3, g3 << B3 - 32 | v3 >>> 64 - B3), D[I1[y3]]); - g3.high = h3, g3.low = l3; - } - var w3 = D[0], k3 = r3[0]; - w3.high = k3.high, w3.low = k3.low; - for (a3 = 0; a3 < 5; a3++) for (f3 = 0; f3 < 5; f3++) { - var x3 = r3[y3 = a3 + 5 * f3], b3 = D[y3], m3 = D[(a3 + 1) % 5 + 5 * f3], S3 = D[(a3 + 2) % 5 + 5 * f3]; - x3.high = b3.high ^ ~m3.high & S3.high, x3.low = b3.low ^ ~m3.low & S3.low; - } - x3 = r3[0], w3 = U1[c3]; - x3.high ^= w3.high, x3.low ^= w3.low; - } - }, _doFinalize: function() { - for (var t3 = this._data, e3 = t3.words, r3 = (this._nDataBytes, 8 * t3.sigBytes), i3 = 32 * this.blockSize, o3 = (e3[r3 >>> 5] |= 1 << 24 - r3 % 32, e3[(M1.ceil((1 + r3) / i3) * i3 >>> 5) - 1] |= 128, t3.sigBytes = 4 * e3.length, this._process(), this._state), r3 = this.cfg.outputLength / 8, n3 = r3 / 8, s3 = [], c3 = 0; c3 < n3; c3++) { - var a3 = o3[c3], h3 = a3.high, a3 = a3.low, h3 = 16711935 & (h3 << 8 | h3 >>> 24) | 4278255360 & (h3 << 24 | h3 >>> 8); - s3.push(16711935 & (a3 << 8 | a3 >>> 24) | 4278255360 & (a3 << 24 | a3 >>> 8)), s3.push(h3); - } - return new P1.init(s3, r3); - }, clone: function() { - for (var t3 = F1.clone.call(this), e3 = t3._state = this._state.slice(0), r3 = 0; r3 < 25; r3++) e3[r3] = e3[r3].clone(); - return t3; - } }), p.SHA3 = F1._createHelper(u), p.HmacSHA3 = F1._createHmacHelper(u), Math, u = (p = i).lib, e = u.WordArray, Z = u.Hasher, u = p.algo, V = e.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), G = e.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), J = e.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), Q = e.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), Y = e.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), $2 = e.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), u = u.RIPEMD160 = Z.extend({ _doReset: function() { - this._hash = e.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, _doProcessBlock: function(t3, e3) { - for (var r3 = 0; r3 < 16; r3++) { - var i3 = e3 + r3, o3 = t3[i3]; - t3[i3] = 16711935 & (o3 << 8 | o3 >>> 24) | 4278255360 & (o3 << 24 | o3 >>> 8); - } - for (var n3, s3, c3, a3, h3, l3, f3 = this._hash.words, d3 = Y.words, u3 = $2.words, p3 = V.words, _3 = G.words, y3 = J.words, g3 = Q.words, v3 = n3 = f3[0], B3 = s3 = f3[1], w3 = c3 = f3[2], k3 = a3 = f3[3], x3 = h3 = f3[4], r3 = 0; r3 < 80; r3 += 1) l3 = (l3 = Q1(l3 = (l3 = n3 + t3[e3 + p3[r3]] | 0) + (r3 < 16 ? (s3 ^ c3 ^ a3) + d3[0] : r3 < 32 ? G1(s3, c3, a3) + d3[1] : r3 < 48 ? ((s3 | ~c3) ^ a3) + d3[2] : r3 < 64 ? J1(s3, c3, a3) + d3[3] : (s3 ^ (c3 | ~a3)) + d3[4]) | 0, y3[r3])) + h3 | 0, n3 = h3, h3 = a3, a3 = Q1(c3, 10), c3 = s3, s3 = l3, l3 = (l3 = Q1(l3 = (l3 = v3 + t3[e3 + _3[r3]] | 0) + (r3 < 16 ? (B3 ^ (w3 | ~k3)) + u3[0] : r3 < 32 ? J1(B3, w3, k3) + u3[1] : r3 < 48 ? ((B3 | ~w3) ^ k3) + u3[2] : r3 < 64 ? G1(B3, w3, k3) + u3[3] : (B3 ^ w3 ^ k3) + u3[4]) | 0, g3[r3])) + x3 | 0, v3 = x3, x3 = k3, k3 = Q1(w3, 10), w3 = B3, B3 = l3; - l3 = f3[1] + c3 + k3 | 0, f3[1] = f3[2] + a3 + x3 | 0, f3[2] = f3[3] + h3 + v3 | 0, f3[3] = f3[4] + n3 + B3 | 0, f3[4] = f3[0] + s3 + w3 | 0, f3[0] = l3; - }, _doFinalize: function() { - for (var t3 = this._data, e3 = t3.words, r3 = 8 * this._nDataBytes, i3 = 8 * t3.sigBytes, i3 = (e3[i3 >>> 5] |= 128 << 24 - i3 % 32, e3[14 + (64 + i3 >>> 9 << 4)] = 16711935 & (r3 << 8 | r3 >>> 24) | 4278255360 & (r3 << 24 | r3 >>> 8), t3.sigBytes = 4 * (e3.length + 1), this._process(), this._hash), o3 = i3.words, n3 = 0; n3 < 5; n3++) { - var s3 = o3[n3]; - o3[n3] = 16711935 & (s3 << 8 | s3 >>> 24) | 4278255360 & (s3 << 24 | s3 >>> 8); - } - return i3; - }, clone: function() { - var t3 = Z.clone.call(this); - return t3._hash = this._hash.clone(), t3; - } }), p.RIPEMD160 = Z._createHelper(u), p.HmacRIPEMD160 = Z._createHmacHelper(u), u = (p = i).lib.Base, t1 = p.enc.Utf8, p.algo.HMAC = u.extend({ init: function(t3, e3) { - t3 = this._hasher = new t3.init(), "string" == typeof e3 && (e3 = t1.parse(e3)); - for (var r3 = t3.blockSize, i3 = 4 * r3, t3 = ((e3 = e3.sigBytes > i3 ? t3.finalize(e3) : e3).clamp(), this._oKey = e3.clone()), e3 = this._iKey = e3.clone(), o3 = t3.words, n3 = e3.words, s3 = 0; s3 < r3; s3++) o3[s3] ^= 1549556828, n3[s3] ^= 909522486; - t3.sigBytes = e3.sigBytes = i3, this.reset(); - }, reset: function() { - var t3 = this._hasher; - t3.reset(), t3.update(this._iKey); - }, update: function(t3) { - return this._hasher.update(t3), this; - }, finalize: function(t3) { - var e3 = this._hasher, t3 = e3.finalize(t3); - return e3.reset(), e3.finalize(this._oKey.clone().concat(t3)); - } }), u = (p = i).lib, w = u.Base, e1 = u.WordArray, u = p.algo, P = u.SHA256, r1 = u.HMAC, i1 = u.PBKDF2 = w.extend({ cfg: w.extend({ keySize: 4, hasher: P, iterations: 25e4 }), init: function(t3) { - this.cfg = this.cfg.extend(t3); - }, compute: function(t3, e3) { - for (var r3 = this.cfg, i3 = r1.create(r3.hasher, t3), o3 = e1.create(), n3 = e1.create([1]), s3 = o3.words, c3 = n3.words, a3 = r3.keySize, h3 = r3.iterations; s3.length < a3; ) { - for (var l3 = i3.update(e3).finalize(n3), f3 = (i3.reset(), l3.words), d3 = f3.length, u3 = l3, p3 = 1; p3 < h3; p3++) { - u3 = i3.finalize(u3), i3.reset(); - for (var _3 = u3.words, y3 = 0; y3 < d3; y3++) f3[y3] ^= _3[y3]; - } - o3.concat(l3), c3[0]++; - } - return o3.sigBytes = 4 * a3, o3; - } }), p.PBKDF2 = function(t3, e3, r3) { - return i1.create(r3).compute(t3, e3); - }, w = (u = i).lib, P = w.Base, o1 = w.WordArray, w = u.algo, p = w.MD5, n1 = w.EvpKDF = P.extend({ cfg: P.extend({ keySize: 4, hasher: p, iterations: 1 }), init: function(t3) { - this.cfg = this.cfg.extend(t3); - }, compute: function(t3, e3) { - for (var r3, i3 = this.cfg, o3 = i3.hasher.create(), n3 = o1.create(), s3 = n3.words, c3 = i3.keySize, a3 = i3.iterations; s3.length < c3; ) { - r3 && o3.update(r3), r3 = o3.update(t3).finalize(e3), o3.reset(); - for (var h3 = 1; h3 < a3; h3++) r3 = o3.finalize(r3), o3.reset(); - n3.concat(r3); - } - return n3.sigBytes = 4 * c3, n3; - } }), u.EvpKDF = function(t3, e3, r3) { - return n1.create(r3).compute(t3, e3); - }, i.lib.Cipher || (P = (w = i).lib, p = P.Base, s = P.WordArray, s1 = P.BufferedBlockAlgorithm, (u = w.enc).Utf8, c1 = u.Base64, a1 = w.algo.EvpKDF, h1 = P.Cipher = s1.extend({ cfg: p.extend(), createEncryptor: function(t3, e3) { - return this.create(this._ENC_XFORM_MODE, t3, e3); - }, createDecryptor: function(t3, e3) { - return this.create(this._DEC_XFORM_MODE, t3, e3); - }, init: function(t3, e3, r3) { - this.cfg = this.cfg.extend(r3), this._xformMode = t3, this._key = e3, this.reset(); - }, reset: function() { - s1.reset.call(this), this._doReset(); - }, process: function(t3) { - return this._append(t3), this._process(); - }, finalize: function(t3) { - return t3 && this._append(t3), this._doFinalize(); - }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function(i3) { - return { encrypt: function(t3, e3, r3) { - return Y1(e3).encrypt(i3, t3, e3, r3); - }, decrypt: function(t3, e3, r3) { - return Y1(e3).decrypt(i3, t3, e3, r3); - } }; - } }), P.StreamCipher = h1.extend({ _doFinalize: function() { - return this._process(true); - }, blockSize: 1 }), u = w.mode = {}, r = P.BlockCipherMode = p.extend({ createEncryptor: function(t3, e3) { - return this.Encryptor.create(t3, e3); - }, createDecryptor: function(t3, e3) { - return this.Decryptor.create(t3, e3); - }, init: function(t3, e3) { - this._cipher = t3, this._iv = e3; - } }), r = u.CBC = ((u = r.extend()).Encryptor = u.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize; - $1.call(this, t3, e3, i3), r3.encryptBlock(t3, e3), this._prevBlock = t3.slice(e3, e3 + i3); - } }), u.Decryptor = u.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize, o3 = t3.slice(e3, e3 + i3); - r3.decryptBlock(t3, e3), $1.call(this, t3, e3, i3), this._prevBlock = o3; - } }), u), u = (w.pad = {}).Pkcs7 = { pad: function(t3, e3) { - for (var e3 = 4 * e3, r3 = e3 - t3.sigBytes % e3, i3 = r3 << 24 | r3 << 16 | r3 << 8 | r3, o3 = [], n3 = 0; n3 < r3; n3 += 4) o3.push(i3); - e3 = s.create(o3, r3); - t3.concat(e3); - }, unpad: function(t3) { - var e3 = 255 & t3.words[t3.sigBytes - 1 >>> 2]; - t3.sigBytes -= e3; - } }, P.BlockCipher = h1.extend({ cfg: h1.cfg.extend({ mode: r, padding: u }), reset: function() { - h1.reset.call(this); - var t3, e3 = this.cfg, r3 = e3.iv, e3 = e3.mode; - this._xformMode == this._ENC_XFORM_MODE ? t3 = e3.createEncryptor : (t3 = e3.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == t3 ? this._mode.init(this, r3 && r3.words) : (this._mode = t3.call(e3, this, r3 && r3.words), this._mode.__creator = t3); - }, _doProcessBlock: function(t3, e3) { - this._mode.processBlock(t3, e3); - }, _doFinalize: function() { - var t3, e3 = this.cfg.padding; - return this._xformMode == this._ENC_XFORM_MODE ? (e3.pad(this._data, this.blockSize), t3 = this._process(true)) : (t3 = this._process(true), e3.unpad(t3)), t3; - }, blockSize: 4 }), l1 = P.CipherParams = p.extend({ init: function(t3) { - this.mixIn(t3); - }, toString: function(t3) { - return (t3 || this.formatter).stringify(this); - } }), r = (w.format = {}).OpenSSL = { stringify: function(t3) { - var e3 = t3.ciphertext, t3 = t3.salt, t3 = t3 ? s.create([1398893684, 1701076831]).concat(t3).concat(e3) : e3; - return t3.toString(c1); - }, parse: function(t3) { - var e3, t3 = c1.parse(t3), r3 = t3.words; - return 1398893684 == r3[0] && 1701076831 == r3[1] && (e3 = s.create(r3.slice(2, 4)), r3.splice(0, 4), t3.sigBytes -= 16), l1.create({ ciphertext: t3, salt: e3 }); - } }, o = P.SerializableCipher = p.extend({ cfg: p.extend({ format: r }), encrypt: function(t3, e3, r3, i3) { - i3 = this.cfg.extend(i3); - var o3 = t3.createEncryptor(r3, i3), e3 = o3.finalize(e3), o3 = o3.cfg; - return l1.create({ ciphertext: e3, key: r3, iv: o3.iv, algorithm: t3, mode: o3.mode, padding: o3.padding, blockSize: t3.blockSize, formatter: i3.format }); - }, decrypt: function(t3, e3, r3, i3) { - return i3 = this.cfg.extend(i3), e3 = this._parse(e3, i3.format), t3.createDecryptor(r3, i3).finalize(e3.ciphertext); - }, _parse: function(t3, e3) { - return "string" == typeof t3 ? e3.parse(t3, this) : t3; - } }), u = (w.kdf = {}).OpenSSL = { execute: function(t3, e3, r3, i3, o3) { - i3 = i3 || s.random(8), o3 = (o3 ? a1.create({ keySize: e3 + r3, hasher: o3 }) : a1.create({ keySize: e3 + r3 })).compute(t3, i3); - t3 = s.create(o3.words.slice(e3), 4 * r3); - return o3.sigBytes = 4 * e3, l1.create({ key: o3, iv: t3, salt: i3 }); - } }, f1 = P.PasswordBasedCipher = o.extend({ cfg: o.cfg.extend({ kdf: u }), encrypt: function(t3, e3, r3, i3) { - r3 = (i3 = this.cfg.extend(i3)).kdf.execute(r3, t3.keySize, t3.ivSize, i3.salt, i3.hasher), i3.iv = r3.iv, t3 = o.encrypt.call(this, t3, e3, r3.key, i3); - return t3.mixIn(r3), t3; - }, decrypt: function(t3, e3, r3, i3) { - i3 = this.cfg.extend(i3), e3 = this._parse(e3, i3.format); - r3 = i3.kdf.execute(r3, t3.keySize, t3.ivSize, e3.salt, i3.hasher); - return i3.iv = r3.iv, o.decrypt.call(this, t3, e3, r3.key, i3); - } })), i.mode.CFB = ((p = i.lib.BlockCipherMode.extend()).Encryptor = p.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize; - t2.call(this, t3, e3, i3, r3), this._prevBlock = t3.slice(e3, e3 + i3); - } }), p.Decryptor = p.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize, o3 = t3.slice(e3, e3 + i3); - t2.call(this, t3, e3, i3, r3), this._prevBlock = o3; - } }), p), i.mode.CTR = (r = i.lib.BlockCipherMode.extend(), w = r.Encryptor = r.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize, o3 = this._iv, n3 = this._counter, s3 = (o3 && (n3 = this._counter = o3.slice(0), this._iv = void 0), n3.slice(0)); - r3.encryptBlock(s3, 0), n3[i3 - 1] = n3[i3 - 1] + 1 | 0; - for (var c3 = 0; c3 < i3; c3++) t3[e3 + c3] ^= s3[c3]; - } }), r.Decryptor = w, r), i.mode.CTRGladman = (P = i.lib.BlockCipherMode.extend(), u = P.Encryptor = P.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize, o3 = this._iv, n3 = this._counter, s3 = (o3 && (n3 = this._counter = o3.slice(0), this._iv = void 0), 0 === ((o3 = n3)[0] = e2(o3[0])) && (o3[1] = e2(o3[1])), n3.slice(0)); - r3.encryptBlock(s3, 0); - for (var c3 = 0; c3 < i3; c3++) t3[e3 + c3] ^= s3[c3]; - } }), P.Decryptor = u, P), i.mode.OFB = (p = i.lib.BlockCipherMode.extend(), w = p.Encryptor = p.extend({ processBlock: function(t3, e3) { - var r3 = this._cipher, i3 = r3.blockSize, o3 = this._iv, n3 = this._keystream; - o3 && (n3 = this._keystream = o3.slice(0), this._iv = void 0), r3.encryptBlock(n3, 0); - for (var s3 = 0; s3 < i3; s3++) t3[e3 + s3] ^= n3[s3]; - } }), p.Decryptor = w, p), i.mode.ECB = ((u = i.lib.BlockCipherMode.extend()).Encryptor = u.extend({ processBlock: function(t3, e3) { - this._cipher.encryptBlock(t3, e3); - } }), u.Decryptor = u.extend({ processBlock: function(t3, e3) { - this._cipher.decryptBlock(t3, e3); - } }), u), i.pad.AnsiX923 = { pad: function(t3, e3) { - var r3 = t3.sigBytes, e3 = 4 * e3, e3 = e3 - r3 % e3, r3 = r3 + e3 - 1; - t3.clamp(), t3.words[r3 >>> 2] |= e3 << 24 - r3 % 4 * 8, t3.sigBytes += e3; - }, unpad: function(t3) { - var e3 = 255 & t3.words[t3.sigBytes - 1 >>> 2]; - t3.sigBytes -= e3; - } }, i.pad.Iso10126 = { pad: function(t3, e3) { - e3 *= 4, e3 -= t3.sigBytes % e3; - t3.concat(i.lib.WordArray.random(e3 - 1)).concat(i.lib.WordArray.create([e3 << 24], 1)); - }, unpad: function(t3) { - var e3 = 255 & t3.words[t3.sigBytes - 1 >>> 2]; - t3.sigBytes -= e3; - } }, i.pad.Iso97971 = { pad: function(t3, e3) { - t3.concat(i.lib.WordArray.create([2147483648], 1)), i.pad.ZeroPadding.pad(t3, e3); - }, unpad: function(t3) { - i.pad.ZeroPadding.unpad(t3), t3.sigBytes--; - } }, i.pad.ZeroPadding = { pad: function(t3, e3) { - e3 *= 4; - t3.clamp(), t3.sigBytes += e3 - (t3.sigBytes % e3 || e3); - }, unpad: function(t3) { - for (var e3 = t3.words, r3 = t3.sigBytes - 1, r3 = t3.sigBytes - 1; 0 <= r3; r3--) if (e3[r3 >>> 2] >>> 24 - r3 % 4 * 8 & 255) { - t3.sigBytes = r3 + 1; - break; - } - } }, i.pad.NoPadding = { pad: function() { - }, unpad: function() { - } }, d1 = (P = i).lib.CipherParams, u1 = P.enc.Hex, P.format.Hex = { stringify: function(t3) { - return t3.ciphertext.toString(u1); - }, parse: function(t3) { - t3 = u1.parse(t3); - return d1.create({ ciphertext: t3 }); - } }; - for (var w = i, p = w.lib.BlockCipher, u = w.algo, k = [], r2 = [], i2 = [], o2 = [], n2 = [], s2 = [], c2 = [], a2 = [], h2 = [], l2 = [], x = [], b = 0; b < 256; b++) x[b] = b < 128 ? b << 1 : b << 1 ^ 283; - for (var m = 0, S = 0, b = 0; b < 256; b++) { - var E = S ^ S << 1 ^ S << 2 ^ S << 3 ^ S << 4, f2 = (k[m] = E = E >>> 8 ^ 255 & E ^ 99, x[r2[E] = m]), d2 = x[f2], u2 = x[d2], M = 257 * x[E] ^ 16843008 * E; - i2[m] = M << 24 | M >>> 8, o2[m] = M << 16 | M >>> 16, n2[m] = M << 8 | M >>> 24, s2[m] = M, c2[E] = (M = 16843009 * u2 ^ 65537 * d2 ^ 257 * f2 ^ 16843008 * m) << 24 | M >>> 8, a2[E] = M << 16 | M >>> 16, h2[E] = M << 8 | M >>> 24, l2[E] = M, m ? (m = f2 ^ x[x[x[u2 ^ f2]]], S ^= x[x[S]]) : m = S = 1; - } - var p2 = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], u = u.AES = p.extend({ _doReset: function() { - if (!this._nRounds || this._keyPriorReset !== this._key) { - for (var t3 = this._keyPriorReset = this._key, e3 = t3.words, r3 = t3.sigBytes / 4, i3 = 4 * (1 + (this._nRounds = 6 + r3)), o3 = this._keySchedule = [], n3 = 0; n3 < i3; n3++) n3 < r3 ? o3[n3] = e3[n3] : (a3 = o3[n3 - 1], n3 % r3 ? 6 < r3 && n3 % r3 == 4 && (a3 = k[a3 >>> 24] << 24 | k[a3 >>> 16 & 255] << 16 | k[a3 >>> 8 & 255] << 8 | k[255 & a3]) : (a3 = k[(a3 = a3 << 8 | a3 >>> 24) >>> 24] << 24 | k[a3 >>> 16 & 255] << 16 | k[a3 >>> 8 & 255] << 8 | k[255 & a3], a3 ^= p2[n3 / r3 | 0] << 24), o3[n3] = o3[n3 - r3] ^ a3); - for (var s3 = this._invKeySchedule = [], c3 = 0; c3 < i3; c3++) { - var a3, n3 = i3 - c3; - a3 = c3 % 4 ? o3[n3] : o3[n3 - 4], s3[c3] = c3 < 4 || n3 <= 4 ? a3 : c2[k[a3 >>> 24]] ^ a2[k[a3 >>> 16 & 255]] ^ h2[k[a3 >>> 8 & 255]] ^ l2[k[255 & a3]]; - } - } - }, encryptBlock: function(t3, e3) { - this._doCryptBlock(t3, e3, this._keySchedule, i2, o2, n2, s2, k); - }, decryptBlock: function(t3, e3) { - var r3 = t3[e3 + 1], r3 = (t3[e3 + 1] = t3[e3 + 3], t3[e3 + 3] = r3, this._doCryptBlock(t3, e3, this._invKeySchedule, c2, a2, h2, l2, r2), t3[e3 + 1]); - t3[e3 + 1] = t3[e3 + 3], t3[e3 + 3] = r3; - }, _doCryptBlock: function(t3, e3, r3, i3, o3, n3, s3, c3) { - for (var a3 = this._nRounds, h3 = t3[e3] ^ r3[0], l3 = t3[e3 + 1] ^ r3[1], f3 = t3[e3 + 2] ^ r3[2], d3 = t3[e3 + 3] ^ r3[3], u3 = 4, p3 = 1; p3 < a3; p3++) var _3 = i3[h3 >>> 24] ^ o3[l3 >>> 16 & 255] ^ n3[f3 >>> 8 & 255] ^ s3[255 & d3] ^ r3[u3++], y3 = i3[l3 >>> 24] ^ o3[f3 >>> 16 & 255] ^ n3[d3 >>> 8 & 255] ^ s3[255 & h3] ^ r3[u3++], g3 = i3[f3 >>> 24] ^ o3[d3 >>> 16 & 255] ^ n3[h3 >>> 8 & 255] ^ s3[255 & l3] ^ r3[u3++], v3 = i3[d3 >>> 24] ^ o3[h3 >>> 16 & 255] ^ n3[l3 >>> 8 & 255] ^ s3[255 & f3] ^ r3[u3++], h3 = _3, l3 = y3, f3 = g3, d3 = v3; - _3 = (c3[h3 >>> 24] << 24 | c3[l3 >>> 16 & 255] << 16 | c3[f3 >>> 8 & 255] << 8 | c3[255 & d3]) ^ r3[u3++], y3 = (c3[l3 >>> 24] << 24 | c3[f3 >>> 16 & 255] << 16 | c3[d3 >>> 8 & 255] << 8 | c3[255 & h3]) ^ r3[u3++], g3 = (c3[f3 >>> 24] << 24 | c3[d3 >>> 16 & 255] << 16 | c3[h3 >>> 8 & 255] << 8 | c3[255 & l3]) ^ r3[u3++], v3 = (c3[d3 >>> 24] << 24 | c3[h3 >>> 16 & 255] << 16 | c3[l3 >>> 8 & 255] << 8 | c3[255 & f3]) ^ r3[u3++]; - t3[e3] = _3, t3[e3 + 1] = y3, t3[e3 + 2] = g3, t3[e3 + 3] = v3; - }, keySize: 8 }), P = (w.AES = p._createHelper(u), i), _2 = (w = P.lib).WordArray, w = w.BlockCipher, p = P.algo, y2 = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], g2 = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], v2 = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], B2 = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], w2 = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], k2 = p.DES = w.extend({ _doReset: function() { - for (var t3 = this._key.words, e3 = [], r3 = 0; r3 < 56; r3++) { - var i3 = y2[r3] - 1; - e3[r3] = t3[i3 >>> 5] >>> 31 - i3 % 32 & 1; - } - for (var o3 = this._subKeys = [], n3 = 0; n3 < 16; n3++) { - for (var s3 = o3[n3] = [], c3 = v2[n3], r3 = 0; r3 < 24; r3++) s3[r3 / 6 | 0] |= e3[(g2[r3] - 1 + c3) % 28] << 31 - r3 % 6, s3[4 + (r3 / 6 | 0)] |= e3[28 + (g2[r3 + 24] - 1 + c3) % 28] << 31 - r3 % 6; - s3[0] = s3[0] << 1 | s3[0] >>> 31; - for (r3 = 1; r3 < 7; r3++) s3[r3] = s3[r3] >>> 4 * (r3 - 1) + 3; - s3[7] = s3[7] << 5 | s3[7] >>> 27; - } - for (var a3 = this._invSubKeys = [], r3 = 0; r3 < 16; r3++) a3[r3] = o3[15 - r3]; - }, encryptBlock: function(t3, e3) { - this._doCryptBlock(t3, e3, this._subKeys); - }, decryptBlock: function(t3, e3) { - this._doCryptBlock(t3, e3, this._invSubKeys); - }, _doCryptBlock: function(t3, e3, r3) { - this._lBlock = t3[e3], this._rBlock = t3[e3 + 1], x2.call(this, 4, 252645135), x2.call(this, 16, 65535), b2.call(this, 2, 858993459), b2.call(this, 8, 16711935), x2.call(this, 1, 1431655765); - for (var i3 = 0; i3 < 16; i3++) { - for (var o3 = r3[i3], n3 = this._lBlock, s3 = this._rBlock, c3 = 0, a3 = 0; a3 < 8; a3++) c3 |= B2[a3][((s3 ^ o3[a3]) & w2[a3]) >>> 0]; - this._lBlock = s3, this._rBlock = n3 ^ c3; - } - var h3 = this._lBlock; - this._lBlock = this._rBlock, this._rBlock = h3, x2.call(this, 1, 1431655765), b2.call(this, 8, 16711935), b2.call(this, 2, 858993459), x2.call(this, 16, 65535), x2.call(this, 4, 252645135), t3[e3] = this._lBlock, t3[e3 + 1] = this._rBlock; - }, keySize: 2, ivSize: 2, blockSize: 2 }); - function x2(t3, e3) { - e3 = (this._lBlock >>> t3 ^ this._rBlock) & e3; - this._rBlock ^= e3, this._lBlock ^= e3 << t3; - } - function b2(t3, e3) { - e3 = (this._rBlock >>> t3 ^ this._lBlock) & e3; - this._lBlock ^= e3, this._rBlock ^= e3 << t3; - } - P.DES = w._createHelper(k2), p = p.TripleDES = w.extend({ _doReset: function() { - var t3 = this._key.words; - if (2 !== t3.length && 4 !== t3.length && t3.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192."); - var e3 = t3.slice(0, 2), r3 = t3.length < 4 ? t3.slice(0, 2) : t3.slice(2, 4), t3 = t3.length < 6 ? t3.slice(0, 2) : t3.slice(4, 6); - this._des1 = k2.createEncryptor(_2.create(e3)), this._des2 = k2.createEncryptor(_2.create(r3)), this._des3 = k2.createEncryptor(_2.create(t3)); - }, encryptBlock: function(t3, e3) { - this._des1.encryptBlock(t3, e3), this._des2.decryptBlock(t3, e3), this._des3.encryptBlock(t3, e3); - }, decryptBlock: function(t3, e3) { - this._des3.decryptBlock(t3, e3), this._des2.encryptBlock(t3, e3), this._des1.decryptBlock(t3, e3); - }, keySize: 6, ivSize: 2, blockSize: 2 }), P.TripleDES = w._createHelper(p); - var u = i, P = u.lib.StreamCipher, w = u.algo, m2 = w.RC4 = P.extend({ _doReset: function() { - for (var t3 = this._key, e3 = t3.words, r3 = t3.sigBytes, i3 = this._S = [], o3 = 0; o3 < 256; o3++) i3[o3] = o3; - for (var o3 = 0, n3 = 0; o3 < 256; o3++) { - var s3 = o3 % r3, s3 = e3[s3 >>> 2] >>> 24 - s3 % 4 * 8 & 255, n3 = (n3 + i3[o3] + s3) % 256, s3 = i3[o3]; - i3[o3] = i3[n3], i3[n3] = s3; - } - this._i = this._j = 0; - }, _doProcessBlock: function(t3, e3) { - t3[e3] ^= S2.call(this); - }, keySize: 8, ivSize: 0 }); - function S2() { - for (var t3 = this._S, e3 = this._i, r3 = this._j, i3 = 0, o3 = 0; o3 < 4; o3++) { - var r3 = (r3 + t3[e3 = (e3 + 1) % 256]) % 256, n3 = t3[e3]; - t3[e3] = t3[r3], t3[r3] = n3, i3 |= t3[(t3[e3] + t3[r3]) % 256] << 24 - 8 * o3; - } - return this._i = e3, this._j = r3, i3; - } - function A2() { - for (var t3 = this._X, e3 = this._C, r3 = 0; r3 < 8; r3++) c[r3] = e3[r3]; - e3[0] = e3[0] + 1295307597 + this._b | 0, e3[1] = e3[1] + 3545052371 + (e3[0] >>> 0 < c[0] >>> 0 ? 1 : 0) | 0, e3[2] = e3[2] + 886263092 + (e3[1] >>> 0 < c[1] >>> 0 ? 1 : 0) | 0, e3[3] = e3[3] + 1295307597 + (e3[2] >>> 0 < c[2] >>> 0 ? 1 : 0) | 0, e3[4] = e3[4] + 3545052371 + (e3[3] >>> 0 < c[3] >>> 0 ? 1 : 0) | 0, e3[5] = e3[5] + 886263092 + (e3[4] >>> 0 < c[4] >>> 0 ? 1 : 0) | 0, e3[6] = e3[6] + 1295307597 + (e3[5] >>> 0 < c[5] >>> 0 ? 1 : 0) | 0, e3[7] = e3[7] + 3545052371 + (e3[6] >>> 0 < c[6] >>> 0 ? 1 : 0) | 0, this._b = e3[7] >>> 0 < c[7] >>> 0 ? 1 : 0; - for (r3 = 0; r3 < 8; r3++) { - var i3 = t3[r3] + e3[r3], o3 = 65535 & i3, n3 = i3 >>> 16; - a[r3] = ((o3 * o3 >>> 17) + o3 * n3 >>> 15) + n3 * n3 ^ ((4294901760 & i3) * i3 | 0) + ((65535 & i3) * i3 | 0); - } - t3[0] = a[0] + (a[7] << 16 | a[7] >>> 16) + (a[6] << 16 | a[6] >>> 16) | 0, t3[1] = a[1] + (a[0] << 8 | a[0] >>> 24) + a[7] | 0, t3[2] = a[2] + (a[1] << 16 | a[1] >>> 16) + (a[0] << 16 | a[0] >>> 16) | 0, t3[3] = a[3] + (a[2] << 8 | a[2] >>> 24) + a[1] | 0, t3[4] = a[4] + (a[3] << 16 | a[3] >>> 16) + (a[2] << 16 | a[2] >>> 16) | 0, t3[5] = a[5] + (a[4] << 8 | a[4] >>> 24) + a[3] | 0, t3[6] = a[6] + (a[5] << 16 | a[5] >>> 16) + (a[4] << 16 | a[4] >>> 16) | 0, t3[7] = a[7] + (a[6] << 8 | a[6] >>> 24) + a[5] | 0; - } - function z2() { - for (var t3 = this._X, e3 = this._C, r3 = 0; r3 < 8; r3++) f[r3] = e3[r3]; - e3[0] = e3[0] + 1295307597 + this._b | 0, e3[1] = e3[1] + 3545052371 + (e3[0] >>> 0 < f[0] >>> 0 ? 1 : 0) | 0, e3[2] = e3[2] + 886263092 + (e3[1] >>> 0 < f[1] >>> 0 ? 1 : 0) | 0, e3[3] = e3[3] + 1295307597 + (e3[2] >>> 0 < f[2] >>> 0 ? 1 : 0) | 0, e3[4] = e3[4] + 3545052371 + (e3[3] >>> 0 < f[3] >>> 0 ? 1 : 0) | 0, e3[5] = e3[5] + 886263092 + (e3[4] >>> 0 < f[4] >>> 0 ? 1 : 0) | 0, e3[6] = e3[6] + 1295307597 + (e3[5] >>> 0 < f[5] >>> 0 ? 1 : 0) | 0, e3[7] = e3[7] + 3545052371 + (e3[6] >>> 0 < f[6] >>> 0 ? 1 : 0) | 0, this._b = e3[7] >>> 0 < f[7] >>> 0 ? 1 : 0; - for (r3 = 0; r3 < 8; r3++) { - var i3 = t3[r3] + e3[r3], o3 = 65535 & i3, n3 = i3 >>> 16; - d[r3] = ((o3 * o3 >>> 17) + o3 * n3 >>> 15) + n3 * n3 ^ ((4294901760 & i3) * i3 | 0) + ((65535 & i3) * i3 | 0); - } - t3[0] = d[0] + (d[7] << 16 | d[7] >>> 16) + (d[6] << 16 | d[6] >>> 16) | 0, t3[1] = d[1] + (d[0] << 8 | d[0] >>> 24) + d[7] | 0, t3[2] = d[2] + (d[1] << 16 | d[1] >>> 16) + (d[0] << 16 | d[0] >>> 16) | 0, t3[3] = d[3] + (d[2] << 8 | d[2] >>> 24) + d[1] | 0, t3[4] = d[4] + (d[3] << 16 | d[3] >>> 16) + (d[2] << 16 | d[2] >>> 16) | 0, t3[5] = d[5] + (d[4] << 8 | d[4] >>> 24) + d[3] | 0, t3[6] = d[6] + (d[5] << 16 | d[5] >>> 16) + (d[4] << 16 | d[4] >>> 16) | 0, t3[7] = d[7] + (d[6] << 8 | d[6] >>> 24) + d[5] | 0; - } - u.RC4 = P._createHelper(m2), w = w.RC4Drop = m2.extend({ cfg: m2.cfg.extend({ drop: 192 }), _doReset: function() { - m2._doReset.call(this); - for (var t3 = this.cfg.drop; 0 < t3; t3--) S2.call(this); - } }), u.RC4Drop = P._createHelper(w), u = (p = i).lib.StreamCipher, P = p.algo, n = [], c = [], a = [], P = P.Rabbit = u.extend({ _doReset: function() { - for (var t3 = this._key.words, e3 = this.cfg.iv, r3 = 0; r3 < 4; r3++) t3[r3] = 16711935 & (t3[r3] << 8 | t3[r3] >>> 24) | 4278255360 & (t3[r3] << 24 | t3[r3] >>> 8); - for (var i3 = this._X = [t3[0], t3[3] << 16 | t3[2] >>> 16, t3[1], t3[0] << 16 | t3[3] >>> 16, t3[2], t3[1] << 16 | t3[0] >>> 16, t3[3], t3[2] << 16 | t3[1] >>> 16], o3 = this._C = [t3[2] << 16 | t3[2] >>> 16, 4294901760 & t3[0] | 65535 & t3[1], t3[3] << 16 | t3[3] >>> 16, 4294901760 & t3[1] | 65535 & t3[2], t3[0] << 16 | t3[0] >>> 16, 4294901760 & t3[2] | 65535 & t3[3], t3[1] << 16 | t3[1] >>> 16, 4294901760 & t3[3] | 65535 & t3[0]], r3 = this._b = 0; r3 < 4; r3++) A2.call(this); - for (r3 = 0; r3 < 8; r3++) o3[r3] ^= i3[r3 + 4 & 7]; - if (e3) { - var e3 = e3.words, n3 = e3[0], e3 = e3[1], n3 = 16711935 & (n3 << 8 | n3 >>> 24) | 4278255360 & (n3 << 24 | n3 >>> 8), e3 = 16711935 & (e3 << 8 | e3 >>> 24) | 4278255360 & (e3 << 24 | e3 >>> 8), s3 = n3 >>> 16 | 4294901760 & e3, c3 = e3 << 16 | 65535 & n3; - o3[0] ^= n3, o3[1] ^= s3, o3[2] ^= e3, o3[3] ^= c3, o3[4] ^= n3, o3[5] ^= s3, o3[6] ^= e3, o3[7] ^= c3; - for (r3 = 0; r3 < 4; r3++) A2.call(this); - } - }, _doProcessBlock: function(t3, e3) { - var r3 = this._X; - A2.call(this), n[0] = r3[0] ^ r3[5] >>> 16 ^ r3[3] << 16, n[1] = r3[2] ^ r3[7] >>> 16 ^ r3[5] << 16, n[2] = r3[4] ^ r3[1] >>> 16 ^ r3[7] << 16, n[3] = r3[6] ^ r3[3] >>> 16 ^ r3[1] << 16; - for (var i3 = 0; i3 < 4; i3++) n[i3] = 16711935 & (n[i3] << 8 | n[i3] >>> 24) | 4278255360 & (n[i3] << 24 | n[i3] >>> 8), t3[e3 + i3] ^= n[i3]; - }, blockSize: 4, ivSize: 2 }), p.Rabbit = u._createHelper(P), p = (w = i).lib.StreamCipher, u = w.algo, h = [], f = [], d = [], u = u.RabbitLegacy = p.extend({ _doReset: function() { - for (var t3 = this._key.words, e3 = this.cfg.iv, r3 = this._X = [t3[0], t3[3] << 16 | t3[2] >>> 16, t3[1], t3[0] << 16 | t3[3] >>> 16, t3[2], t3[1] << 16 | t3[0] >>> 16, t3[3], t3[2] << 16 | t3[1] >>> 16], i3 = this._C = [t3[2] << 16 | t3[2] >>> 16, 4294901760 & t3[0] | 65535 & t3[1], t3[3] << 16 | t3[3] >>> 16, 4294901760 & t3[1] | 65535 & t3[2], t3[0] << 16 | t3[0] >>> 16, 4294901760 & t3[2] | 65535 & t3[3], t3[1] << 16 | t3[1] >>> 16, 4294901760 & t3[3] | 65535 & t3[0]], o3 = this._b = 0; o3 < 4; o3++) z2.call(this); - for (o3 = 0; o3 < 8; o3++) i3[o3] ^= r3[o3 + 4 & 7]; - if (e3) { - var t3 = e3.words, e3 = t3[0], t3 = t3[1], e3 = 16711935 & (e3 << 8 | e3 >>> 24) | 4278255360 & (e3 << 24 | e3 >>> 8), t3 = 16711935 & (t3 << 8 | t3 >>> 24) | 4278255360 & (t3 << 24 | t3 >>> 8), n3 = e3 >>> 16 | 4294901760 & t3, s3 = t3 << 16 | 65535 & e3; - i3[0] ^= e3, i3[1] ^= n3, i3[2] ^= t3, i3[3] ^= s3, i3[4] ^= e3, i3[5] ^= n3, i3[6] ^= t3, i3[7] ^= s3; - for (o3 = 0; o3 < 4; o3++) z2.call(this); - } - }, _doProcessBlock: function(t3, e3) { - var r3 = this._X; - z2.call(this), h[0] = r3[0] ^ r3[5] >>> 16 ^ r3[3] << 16, h[1] = r3[2] ^ r3[7] >>> 16 ^ r3[5] << 16, h[2] = r3[4] ^ r3[1] >>> 16 ^ r3[7] << 16, h[3] = r3[6] ^ r3[3] >>> 16 ^ r3[1] << 16; - for (var i3 = 0; i3 < 4; i3++) h[i3] = 16711935 & (h[i3] << 8 | h[i3] >>> 24) | 4278255360 & (h[i3] << 24 | h[i3] >>> 8), t3[e3 + i3] ^= h[i3]; - }, blockSize: 4, ivSize: 2 }), w.RabbitLegacy = p._createHelper(u); - { - let C22 = function(t3, e3) { - var r3 = t3.sbox[0][e3 >> 24 & 255] + t3.sbox[1][e3 >> 16 & 255]; - return r3 = (r3 ^= t3.sbox[2][e3 >> 8 & 255]) + t3.sbox[3][255 & e3]; - }, R22 = function(e3, t3, r3) { - let i3 = t3, o3 = r3, n3; - for (let t4 = 0; t4 < F; ++t4) i3 ^= e3.pbox[t4], o3 = C22(e3, i3) ^ o3, n3 = i3, i3 = o3, o3 = n3; - return n3 = i3, i3 = o3, o3 = n3, o3 ^= e3.pbox[F], { left: i3 ^= e3.pbox[F + 1], right: o3 }; - }; - var C2 = C22, R2 = R22; - w = (P = i).lib.BlockCipher, p = P.algo; - const F = 16, D2 = [608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731], E2 = [[3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946], [1266315497, 3048417604, 3681880366, 3289982499, 290971e4, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055], [3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504], [976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409e3, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]]; - var H2 = { pbox: [], sbox: [] }; - p = p.Blowfish = w.extend({ _doReset: function() { - if (this._keyPriorReset !== this._key) { - var t3 = this._keyPriorReset = this._key, n3 = t3.words, t3 = t3.sigBytes / 4; - { - var s3 = H2, c3 = n3, a3 = t3; - for (let e4 = 0; e4 < 4; e4++) { - s3.sbox[e4] = []; - for (let t4 = 0; t4 < 256; t4++) s3.sbox[e4][t4] = E2[e4][t4]; - } - let e3 = 0; - for (let t4 = 0; t4 < F + 2; t4++) s3.pbox[t4] = D2[t4] ^ c3[e3], ++e3 >= a3 && (e3 = 0); - let r3 = 0, i3 = 0, o3 = 0; - for (let t4 = 0; t4 < F + 2; t4 += 2) o3 = R22(s3, r3, i3), r3 = o3.left, i3 = o3.right, s3.pbox[t4] = r3, s3.pbox[t4 + 1] = i3; - for (let e4 = 0; e4 < 4; e4++) for (let t4 = 0; t4 < 256; t4 += 2) o3 = R22(s3, r3, i3), r3 = o3.left, i3 = o3.right, s3.sbox[e4][t4] = r3, s3.sbox[e4][t4 + 1] = i3; - } - } - }, encryptBlock: function(t3, e3) { - var r3 = R22(H2, t3[e3], t3[e3 + 1]); - t3[e3] = r3.left, t3[e3 + 1] = r3.right; - }, decryptBlock: function(t3, e3) { - var r3 = function(e4, t4, r4) { - let i3 = t4, o3 = r4, n3; - for (let t5 = F + 1; 1 < t5; --t5) i3 ^= e4.pbox[t5], o3 = C22(e4, i3) ^ o3, n3 = i3, i3 = o3, o3 = n3; - return n3 = i3, i3 = o3, o3 = n3, o3 ^= e4.pbox[1], { left: i3 ^= e4.pbox[0], right: o3 }; - }(H2, t3[e3], t3[e3 + 1]); - t3[e3] = r3.left, t3[e3 + 1] = r3.right; - }, blockSize: 2, keySize: 4, ivSize: 2 }), P.Blowfish = w._createHelper(p); - } - return i; - }); - } - }); - - // src/ReaperScansFR/ReaperScansFR.ts - var ReaperScansFR_exports = {}; - __export(ReaperScansFR_exports, { - ReaperScansFR: () => ReaperScansFR, - ReaperScansFRInfo: () => ReaperScansFRInfo - }); - var import_types3 = __toESM(require_lib()); - - // src/Madara.ts - var import_types2 = __toESM(require_lib()); - - // node_modules/cheerio/dist/browser/static.js - var static_exports = {}; - __export(static_exports, { - contains: () => contains, - extract: () => extract, - html: () => html, - merge: () => merge, - parseHTML: () => parseHTML, - root: () => root, - text: () => text, - xml: () => xml - }); - - // node_modules/domutils/lib/esm/index.js - var esm_exports2 = {}; - __export(esm_exports2, { - DocumentPosition: () => DocumentPosition, - append: () => append, - appendChild: () => appendChild, - compareDocumentPosition: () => compareDocumentPosition, - existsOne: () => existsOne, - filter: () => filter, - find: () => find, - findAll: () => findAll, - findOne: () => findOne, - findOneChild: () => findOneChild, - getAttributeValue: () => getAttributeValue, - getChildren: () => getChildren, - getElementById: () => getElementById, - getElements: () => getElements, - getElementsByTagName: () => getElementsByTagName, - getElementsByTagType: () => getElementsByTagType, - getFeed: () => getFeed, - getInnerHTML: () => getInnerHTML, - getName: () => getName, - getOuterHTML: () => getOuterHTML, - getParent: () => getParent, - getSiblings: () => getSiblings, - getText: () => getText, - hasAttrib: () => hasAttrib, - hasChildren: () => hasChildren, - innerText: () => innerText, - isCDATA: () => isCDATA, - isComment: () => isComment, - isDocument: () => isDocument, - isTag: () => isTag2, - isText: () => isText, - nextElementSibling: () => nextElementSibling, - prepend: () => prepend, - prependChild: () => prependChild, - prevElementSibling: () => prevElementSibling, - removeElement: () => removeElement, - removeSubsets: () => removeSubsets, - replaceElement: () => replaceElement, - testElement: () => testElement, - textContent: () => textContent, - uniqueSort: () => uniqueSort - }); - - // node_modules/domelementtype/lib/esm/index.js - var ElementType; - (function(ElementType2) { - ElementType2["Root"] = "root"; - ElementType2["Text"] = "text"; - ElementType2["Directive"] = "directive"; - ElementType2["Comment"] = "comment"; - ElementType2["Script"] = "script"; - ElementType2["Style"] = "style"; - ElementType2["Tag"] = "tag"; - ElementType2["CDATA"] = "cdata"; - ElementType2["Doctype"] = "doctype"; - })(ElementType || (ElementType = {})); - function isTag(elem) { - return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style; - } - var Root = ElementType.Root; - var Text = ElementType.Text; - var Directive = ElementType.Directive; - var Comment = ElementType.Comment; - var Script = ElementType.Script; - var Style = ElementType.Style; - var Tag = ElementType.Tag; - var CDATA = ElementType.CDATA; - var Doctype = ElementType.Doctype; - - // node_modules/domhandler/lib/esm/node.js - var Node = class { - constructor() { - this.parent = null; - this.prev = null; - this.next = null; - this.startIndex = null; - this.endIndex = null; - } - // Read-write aliases for properties - /** - * Same as {@link parent}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get parentNode() { - return this.parent; - } - set parentNode(parent2) { - this.parent = parent2; - } - /** - * Same as {@link prev}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get previousSibling() { - return this.prev; - } - set previousSibling(prev2) { - this.prev = prev2; - } - /** - * Same as {@link next}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get nextSibling() { - return this.next; - } - set nextSibling(next2) { - this.next = next2; - } - /** - * Clone this node, and optionally its children. - * - * @param recursive Clone child nodes as well. - * @returns A clone of the node. - */ - cloneNode(recursive = false) { - return cloneNode(this, recursive); - } - }; - var DataNode = class extends Node { - /** - * @param data The content of the data node - */ - constructor(data2) { - super(); - this.data = data2; - } - /** - * Same as {@link data}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get nodeValue() { - return this.data; - } - set nodeValue(data2) { - this.data = data2; - } - }; - var Text2 = class extends DataNode { - constructor() { - super(...arguments); - this.type = ElementType.Text; - } - get nodeType() { - return 3; - } - }; - var Comment2 = class extends DataNode { - constructor() { - super(...arguments); - this.type = ElementType.Comment; - } - get nodeType() { - return 8; - } - }; - var ProcessingInstruction = class extends DataNode { - constructor(name, data2) { - super(data2); - this.name = name; - this.type = ElementType.Directive; - } - get nodeType() { - return 1; - } - }; - var NodeWithChildren = class extends Node { - /** - * @param children Children of the node. Only certain node types can have children. - */ - constructor(children2) { - super(); - this.children = children2; - } - // Aliases - /** First child of the node. */ - get firstChild() { - var _a2; - return (_a2 = this.children[0]) !== null && _a2 !== void 0 ? _a2 : null; - } - /** Last child of the node. */ - get lastChild() { - return this.children.length > 0 ? this.children[this.children.length - 1] : null; - } - /** - * Same as {@link children}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get childNodes() { - return this.children; - } - set childNodes(children2) { - this.children = children2; - } - }; - var CDATA2 = class extends NodeWithChildren { - constructor() { - super(...arguments); - this.type = ElementType.CDATA; - } - get nodeType() { - return 4; - } - }; - var Document = class extends NodeWithChildren { - constructor() { - super(...arguments); - this.type = ElementType.Root; - } - get nodeType() { - return 9; - } - }; - var Element = class extends NodeWithChildren { - /** - * @param name Name of the tag, eg. `div`, `span`. - * @param attribs Object mapping attribute names to attribute values. - * @param children Children of the node. - */ - constructor(name, attribs, children2 = [], type = name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag) { - super(children2); - this.name = name; - this.attribs = attribs; - this.type = type; - } - get nodeType() { - return 1; - } - // DOM Level 1 aliases - /** - * Same as {@link name}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get tagName() { - return this.name; - } - set tagName(name) { - this.name = name; - } - get attributes() { - return Object.keys(this.attribs).map((name) => { - var _a2, _b; - return { - name, - value: this.attribs[name], - namespace: (_a2 = this["x-attribsNamespace"]) === null || _a2 === void 0 ? void 0 : _a2[name], - prefix: (_b = this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] - }; - }); - } - }; - function isTag2(node) { - return isTag(node); - } - function isCDATA(node) { - return node.type === ElementType.CDATA; - } - function isText(node) { - return node.type === ElementType.Text; - } - function isComment(node) { - return node.type === ElementType.Comment; - } - function isDirective(node) { - return node.type === ElementType.Directive; - } - function isDocument(node) { - return node.type === ElementType.Root; - } - function hasChildren(node) { - return Object.prototype.hasOwnProperty.call(node, "children"); - } - function cloneNode(node, recursive = false) { - let result; - if (isText(node)) { - result = new Text2(node.data); - } else if (isComment(node)) { - result = new Comment2(node.data); - } else if (isTag2(node)) { - const children2 = recursive ? cloneChildren(node.children) : []; - const clone2 = new Element(node.name, { ...node.attribs }, children2); - children2.forEach((child) => child.parent = clone2); - if (node.namespace != null) { - clone2.namespace = node.namespace; - } - if (node["x-attribsNamespace"]) { - clone2["x-attribsNamespace"] = { ...node["x-attribsNamespace"] }; - } - if (node["x-attribsPrefix"]) { - clone2["x-attribsPrefix"] = { ...node["x-attribsPrefix"] }; - } - result = clone2; - } else if (isCDATA(node)) { - const children2 = recursive ? cloneChildren(node.children) : []; - const clone2 = new CDATA2(children2); - children2.forEach((child) => child.parent = clone2); - result = clone2; - } else if (isDocument(node)) { - const children2 = recursive ? cloneChildren(node.children) : []; - const clone2 = new Document(children2); - children2.forEach((child) => child.parent = clone2); - if (node["x-mode"]) { - clone2["x-mode"] = node["x-mode"]; - } - result = clone2; - } else if (isDirective(node)) { - const instruction = new ProcessingInstruction(node.name, node.data); - if (node["x-name"] != null) { - instruction["x-name"] = node["x-name"]; - instruction["x-publicId"] = node["x-publicId"]; - instruction["x-systemId"] = node["x-systemId"]; - } - result = instruction; - } else { - throw new Error(`Not implemented yet: ${node.type}`); - } - result.startIndex = node.startIndex; - result.endIndex = node.endIndex; - if (node.sourceCodeLocation != null) { - result.sourceCodeLocation = node.sourceCodeLocation; - } - return result; - } - function cloneChildren(childs) { - const children2 = childs.map((child) => cloneNode(child, true)); - for (let i = 1; i < children2.length; i++) { - children2[i].prev = children2[i - 1]; - children2[i - 1].next = children2[i]; - } - return children2; - } - - // node_modules/domhandler/lib/esm/index.js - var defaultOpts = { - withStartIndices: false, - withEndIndices: false, - xmlMode: false - }; - var DomHandler = class { - /** - * @param callback Called once parsing has completed. - * @param options Settings for the handler. - * @param elementCB Callback whenever a tag is closed. - */ - constructor(callback, options, elementCB) { - this.dom = []; - this.root = new Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - if (typeof options === "function") { - elementCB = options; - options = defaultOpts; - } - if (typeof callback === "object") { - options = callback; - callback = void 0; - } - this.callback = callback !== null && callback !== void 0 ? callback : null; - this.options = options !== null && options !== void 0 ? options : defaultOpts; - this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; - } - onparserinit(parser) { - this.parser = parser; - } - // Resets the handler back to starting state - onreset() { - this.dom = []; - this.root = new Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - } - // Signals the handler that parsing is done - onend() { - if (this.done) - return; - this.done = true; - this.parser = null; - this.handleCallback(null); - } - onerror(error) { - this.handleCallback(error); - } - onclosetag() { - this.lastNode = null; - const elem = this.tagStack.pop(); - if (this.options.withEndIndices) { - elem.endIndex = this.parser.endIndex; - } - if (this.elementCB) - this.elementCB(elem); - } - onopentag(name, attribs) { - const type = this.options.xmlMode ? ElementType.Tag : void 0; - const element = new Element(name, attribs, void 0, type); - this.addNode(element); - this.tagStack.push(element); - } - ontext(data2) { - const { lastNode } = this; - if (lastNode && lastNode.type === ElementType.Text) { - lastNode.data += data2; - if (this.options.withEndIndices) { - lastNode.endIndex = this.parser.endIndex; - } - } else { - const node = new Text2(data2); - this.addNode(node); - this.lastNode = node; - } - } - oncomment(data2) { - if (this.lastNode && this.lastNode.type === ElementType.Comment) { - this.lastNode.data += data2; - return; - } - const node = new Comment2(data2); - this.addNode(node); - this.lastNode = node; - } - oncommentend() { - this.lastNode = null; - } - oncdatastart() { - const text3 = new Text2(""); - const node = new CDATA2([text3]); - this.addNode(node); - text3.parent = node; - this.lastNode = text3; - } - oncdataend() { - this.lastNode = null; - } - onprocessinginstruction(name, data2) { - const node = new ProcessingInstruction(name, data2); - this.addNode(node); - } - handleCallback(error) { - if (typeof this.callback === "function") { - this.callback(error, this.dom); - } else if (error) { - throw error; - } - } - addNode(node) { - const parent2 = this.tagStack[this.tagStack.length - 1]; - const previousSibling = parent2.children[parent2.children.length - 1]; - if (this.options.withStartIndices) { - node.startIndex = this.parser.startIndex; - } - if (this.options.withEndIndices) { - node.endIndex = this.parser.endIndex; - } - parent2.children.push(node); - if (previousSibling) { - node.prev = previousSibling; - previousSibling.next = node; - } - node.parent = parent2; - this.lastNode = null; - } - }; - - // node_modules/entities/lib/esm/generated/decode-data-html.js - var decode_data_html_default = new Uint16Array( - // prettier-ignore - '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) - ); - - // node_modules/entities/lib/esm/generated/decode-data-xml.js - var decode_data_xml_default = new Uint16Array( - // prettier-ignore - "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) - ); - - // node_modules/entities/lib/esm/decode_codepoint.js - var _a; - var decodeMap = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] - ]); - var fromCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins - (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } - ); - function replaceCodePoint(codePoint) { - var _a2; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint; - } - - // node_modules/entities/lib/esm/decode.js - var CharCodes; - (function(CharCodes3) { - CharCodes3[CharCodes3["NUM"] = 35] = "NUM"; - CharCodes3[CharCodes3["SEMI"] = 59] = "SEMI"; - CharCodes3[CharCodes3["EQUALS"] = 61] = "EQUALS"; - CharCodes3[CharCodes3["ZERO"] = 48] = "ZERO"; - CharCodes3[CharCodes3["NINE"] = 57] = "NINE"; - CharCodes3[CharCodes3["LOWER_A"] = 97] = "LOWER_A"; - CharCodes3[CharCodes3["LOWER_F"] = 102] = "LOWER_F"; - CharCodes3[CharCodes3["LOWER_X"] = 120] = "LOWER_X"; - CharCodes3[CharCodes3["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes3[CharCodes3["UPPER_A"] = 65] = "UPPER_A"; - CharCodes3[CharCodes3["UPPER_F"] = 70] = "UPPER_F"; - CharCodes3[CharCodes3["UPPER_Z"] = 90] = "UPPER_Z"; - })(CharCodes || (CharCodes = {})); - var TO_LOWER_BIT = 32; - var BinTrieFlags; - (function(BinTrieFlags2) { - BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; - })(BinTrieFlags || (BinTrieFlags = {})); - function isNumber(code) { - return code >= CharCodes.ZERO && code <= CharCodes.NINE; - } - function isHexadecimalCharacter(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; - } - function isAsciiAlphaNumeric(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); - } - function isEntityInAttributeInvalidEnd(code) { - return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); - } - var EntityDecoderState; - (function(EntityDecoderState2) { - EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity"; - })(EntityDecoderState || (EntityDecoderState = {})); - var DecodingMode; - (function(DecodingMode2) { - DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy"; - DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict"; - DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute"; - })(DecodingMode || (DecodingMode = {})); - var EntityDecoder = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param string The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(str, offset) { - switch (this.state) { - case EntityDecoderState.EntityStart: { - if (str.charCodeAt(offset) === CharCodes.NUM) { - this.state = EntityDecoderState.NumericStart; - this.consumed += 1; - return this.stateNumericStart(str, offset + 1); - } - this.state = EntityDecoderState.NamedEntity; - return this.stateNamedEntity(str, offset); - } - case EntityDecoderState.NumericStart: { - return this.stateNumericStart(str, offset); - } - case EntityDecoderState.NumericDecimal: { - return this.stateNumericDecimal(str, offset); - } - case EntityDecoderState.NumericHex: { - return this.stateNumericHex(str, offset); - } - case EntityDecoderState.NamedEntity: { - return this.stateNamedEntity(str, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(str, offset) { - if (offset >= str.length) { - return -1; - } - if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { - this.state = EntityDecoderState.NumericHex; - this.consumed += 1; - return this.stateNumericHex(str, offset + 1); - } - this.state = EntityDecoderState.NumericDecimal; - return this.stateNumericDecimal(str, offset); - } - addToNumericResult(str, start, end2, base) { - if (start !== end2) { - const digitCount = end2 - start; - this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char) || isHexadecimalCharacter(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(str, startIdx, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(str, startIdx, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a2; - if (this.consumed <= expectedLength) { - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(str, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - for (; offset < str.length; offset++, this.excess++) { - const char = str.charCodeAt(offset); - this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a2; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a2; - switch (this.state) { - case EntityDecoderState.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - case EntityDecoderState.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState.NumericStart: { - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState.EntityStart: { - return 0; - } - } - } - }; - function getDecoder(decodeTree) { - let ret = ""; - const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint(str)); - return function decodeWithTrie(str, decodeMode) { - let lastIndex = 0; - let offset = 0; - while ((offset = str.indexOf("&", offset)) >= 0) { - ret += str.slice(lastIndex, offset); - decoder.startEntity(decodeMode); - const len = decoder.write( - str, - // Skip the "&" - offset + 1 - ); - if (len < 0) { - lastIndex = offset + decoder.end(); - break; - } - lastIndex = offset + len; - offset = len === 0 ? lastIndex + 1 : lastIndex; - } - const result = ret + str.slice(lastIndex); - ret = ""; - return result; - }; - } - function determineBranch(decodeTree, current, nodeIdx, char) { - const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; - } - let lo = nodeIdx; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } else if (midVal > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; - } - var htmlDecoder = getDecoder(decode_data_html_default); - var xmlDecoder = getDecoder(decode_data_xml_default); - - // node_modules/entities/lib/esm/generated/encode-html.js - function restoreDiff(arr) { - for (let i = 1; i < arr.length; i++) { - arr[i][0] += arr[i - 1][0] + 1; - } - return arr; - } - var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, "	"], [0, "
"], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [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, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); - - // node_modules/entities/lib/esm/escape.js - var xmlReplacer = /["&'<>$\x80-\uFFFF]/g; - var xmlCodeMap = /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] - ]); - var getCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - String.prototype.codePointAt != null ? (str, index2) => str.codePointAt(index2) : ( - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - (c, index2) => (c.charCodeAt(index2) & 64512) === 55296 ? (c.charCodeAt(index2) - 55296) * 1024 + c.charCodeAt(index2 + 1) - 56320 + 65536 : c.charCodeAt(index2) - ) - ); - function encodeXML(str) { - let ret = ""; - let lastIdx = 0; - let match; - while ((match = xmlReplacer.exec(str)) !== null) { - const i = match.index; - const char = str.charCodeAt(i); - const next2 = xmlCodeMap.get(char); - if (next2 !== void 0) { - ret += str.substring(lastIdx, i) + next2; - lastIdx = i + 1; - } else { - ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`; - lastIdx = xmlReplacer.lastIndex += Number((char & 64512) === 55296); - } - } - return ret + str.substr(lastIdx); - } - function getEscaper(regex, map2) { - return function escape3(data2) { - let match; - let lastIdx = 0; - let result = ""; - while (match = regex.exec(data2)) { - if (lastIdx !== match.index) { - result += data2.substring(lastIdx, match.index); - } - result += map2.get(match[0].charCodeAt(0)); - lastIdx = match.index + 1; - } - return result + data2.substring(lastIdx); - }; - } - var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); - var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [160, " "] - ])); - var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] - ])); - - // node_modules/entities/lib/esm/index.js - var EntityLevel; - (function(EntityLevel2) { - EntityLevel2[EntityLevel2["XML"] = 0] = "XML"; - EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML"; - })(EntityLevel || (EntityLevel = {})); - var EncodingMode; - (function(EncodingMode2) { - EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8"; - EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII"; - EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive"; - EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute"; - EncodingMode2[EncodingMode2["Text"] = 4] = "Text"; - })(EncodingMode || (EncodingMode = {})); - - // node_modules/dom-serializer/lib/esm/foreignNames.js - var elementNames = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feDropShadow", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" - ].map((val2) => [val2.toLowerCase(), val2])); - var attributeNames = new Map([ - "definitionURL", - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" - ].map((val2) => [val2.toLowerCase(), val2])); - - // node_modules/dom-serializer/lib/esm/index.js - var unencodedElements = /* @__PURE__ */ new Set([ - "style", - "script", - "xmp", - "iframe", - "noembed", - "noframes", - "plaintext", - "noscript" - ]); - function replaceQuotes(value) { - return value.replace(/"/g, """); - } - function formatAttributes(attributes2, opts) { - var _a2; - if (!attributes2) - return; - const encode = ((_a2 = opts.encodeEntities) !== null && _a2 !== void 0 ? _a2 : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML : escapeAttribute; - return Object.keys(attributes2).map((key) => { - var _a3, _b; - const value = (_a3 = attributes2[key]) !== null && _a3 !== void 0 ? _a3 : ""; - if (opts.xmlMode === "foreign") { - key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; - } - if (!opts.emptyAttrs && !opts.xmlMode && value === "") { - return key; - } - return `${key}="${encode(value)}"`; - }).join(" "); - } - var singleTag = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" - ]); - function render(node, options = {}) { - const nodes = "length" in node ? node : [node]; - let output = ""; - for (let i = 0; i < nodes.length; i++) { - output += renderNode(nodes[i], options); - } - return output; - } - var esm_default = render; - function renderNode(node, options) { - switch (node.type) { - case Root: - return render(node.children, options); - case Doctype: - case Directive: - return renderDirective(node); - case Comment: - return renderComment(node); - case CDATA: - return renderCdata(node); - case Script: - case Style: - case Tag: - return renderTag(node, options); - case Text: - return renderText(node, options); - } - } - var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignObject", - "desc", - "title" - ]); - var foreignElements = /* @__PURE__ */ new Set(["svg", "math"]); - function renderTag(elem, opts) { - var _a2; - if (opts.xmlMode === "foreign") { - elem.name = (_a2 = elementNames.get(elem.name)) !== null && _a2 !== void 0 ? _a2 : elem.name; - if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) { - opts = { ...opts, xmlMode: false }; - } - } - if (!opts.xmlMode && foreignElements.has(elem.name)) { - opts = { ...opts, xmlMode: "foreign" }; - } - let tag = `<${elem.name}`; - const attribs = formatAttributes(elem.attribs, opts); - if (attribs) { - tag += ` ${attribs}`; - } - if (elem.children.length === 0 && (opts.xmlMode ? ( - // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags - opts.selfClosingTags !== false - ) : ( - // User explicitly asked for self-closing tags, even in HTML mode - opts.selfClosingTags && singleTag.has(elem.name) - ))) { - if (!opts.xmlMode) - tag += " "; - tag += "/>"; - } else { - tag += ">"; - if (elem.children.length > 0) { - tag += render(elem.children, opts); - } - if (opts.xmlMode || !singleTag.has(elem.name)) { - tag += `</${elem.name}>`; - } - } - return tag; - } - function renderDirective(elem) { - return `<${elem.data}>`; - } - function renderText(elem, opts) { - var _a2; - let data2 = elem.data || ""; - if (((_a2 = opts.encodeEntities) !== null && _a2 !== void 0 ? _a2 : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) { - data2 = opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML(data2) : escapeText(data2); - } - return data2; - } - function renderCdata(elem) { - return `<![CDATA[${elem.children[0].data}]]>`; - } - function renderComment(elem) { - return `<!--${elem.data}-->`; - } - - // node_modules/domutils/lib/esm/stringify.js - function getOuterHTML(node, options) { - return esm_default(node, options); - } - function getInnerHTML(node, options) { - return hasChildren(node) ? node.children.map((node2) => getOuterHTML(node2, options)).join("") : ""; - } - function getText(node) { - if (Array.isArray(node)) - return node.map(getText).join(""); - if (isTag2(node)) - return node.name === "br" ? "\n" : getText(node.children); - if (isCDATA(node)) - return getText(node.children); - if (isText(node)) - return node.data; - return ""; - } - function textContent(node) { - if (Array.isArray(node)) - return node.map(textContent).join(""); - if (hasChildren(node) && !isComment(node)) { - return textContent(node.children); - } - if (isText(node)) - return node.data; - return ""; - } - function innerText(node) { - if (Array.isArray(node)) - return node.map(innerText).join(""); - if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) { - return innerText(node.children); - } - if (isText(node)) - return node.data; - return ""; - } - - // node_modules/domutils/lib/esm/traversal.js - function getChildren(elem) { - return hasChildren(elem) ? elem.children : []; - } - function getParent(elem) { - return elem.parent || null; - } - function getSiblings(elem) { - const parent2 = getParent(elem); - if (parent2 != null) - return getChildren(parent2); - const siblings2 = [elem]; - let { prev: prev2, next: next2 } = elem; - while (prev2 != null) { - siblings2.unshift(prev2); - ({ prev: prev2 } = prev2); - } - while (next2 != null) { - siblings2.push(next2); - ({ next: next2 } = next2); - } - return siblings2; - } - function getAttributeValue(elem, name) { - var _a2; - return (_a2 = elem.attribs) === null || _a2 === void 0 ? void 0 : _a2[name]; - } - function hasAttrib(elem, name) { - return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; - } - function getName(elem) { - return elem.name; - } - function nextElementSibling(elem) { - let { next: next2 } = elem; - while (next2 !== null && !isTag2(next2)) - ({ next: next2 } = next2); - return next2; - } - function prevElementSibling(elem) { - let { prev: prev2 } = elem; - while (prev2 !== null && !isTag2(prev2)) - ({ prev: prev2 } = prev2); - return prev2; - } - - // node_modules/domutils/lib/esm/manipulation.js - function removeElement(elem) { - if (elem.prev) - elem.prev.next = elem.next; - if (elem.next) - elem.next.prev = elem.prev; - if (elem.parent) { - const childs = elem.parent.children; - const childsIndex = childs.lastIndexOf(elem); - if (childsIndex >= 0) { - childs.splice(childsIndex, 1); - } - } - elem.next = null; - elem.prev = null; - elem.parent = null; - } - function replaceElement(elem, replacement) { - const prev2 = replacement.prev = elem.prev; - if (prev2) { - prev2.next = replacement; - } - const next2 = replacement.next = elem.next; - if (next2) { - next2.prev = replacement; - } - const parent2 = replacement.parent = elem.parent; - if (parent2) { - const childs = parent2.children; - childs[childs.lastIndexOf(elem)] = replacement; - elem.parent = null; - } - } - function appendChild(parent2, child) { - removeElement(child); - child.next = null; - child.parent = parent2; - if (parent2.children.push(child) > 1) { - const sibling = parent2.children[parent2.children.length - 2]; - sibling.next = child; - child.prev = sibling; - } else { - child.prev = null; - } - } - function append(elem, next2) { - removeElement(next2); - const { parent: parent2 } = elem; - const currNext = elem.next; - next2.next = currNext; - next2.prev = elem; - elem.next = next2; - next2.parent = parent2; - if (currNext) { - currNext.prev = next2; - if (parent2) { - const childs = parent2.children; - childs.splice(childs.lastIndexOf(currNext), 0, next2); - } - } else if (parent2) { - parent2.children.push(next2); - } - } - function prependChild(parent2, child) { - removeElement(child); - child.parent = parent2; - child.prev = null; - if (parent2.children.unshift(child) !== 1) { - const sibling = parent2.children[1]; - sibling.prev = child; - child.next = sibling; - } else { - child.next = null; - } - } - function prepend(elem, prev2) { - removeElement(prev2); - const { parent: parent2 } = elem; - if (parent2) { - const childs = parent2.children; - childs.splice(childs.indexOf(elem), 0, prev2); - } - if (elem.prev) { - elem.prev.next = prev2; - } - prev2.parent = parent2; - prev2.prev = elem.prev; - prev2.next = elem; - elem.prev = prev2; - } - - // node_modules/domutils/lib/esm/querying.js - function filter(test, node, recurse = true, limit = Infinity) { - return find(test, Array.isArray(node) ? node : [node], recurse, limit); - } - function find(test, nodes, recurse, limit) { - const result = []; - const nodeStack = [nodes]; - const indexStack = [0]; - for (; ; ) { - if (indexStack[0] >= nodeStack[0].length) { - if (indexStack.length === 1) { - return result; - } - nodeStack.shift(); - indexStack.shift(); - continue; - } - const elem = nodeStack[0][indexStack[0]++]; - if (test(elem)) { - result.push(elem); - if (--limit <= 0) - return result; - } - if (recurse && hasChildren(elem) && elem.children.length > 0) { - indexStack.unshift(0); - nodeStack.unshift(elem.children); - } - } - } - function findOneChild(test, nodes) { - return nodes.find(test); - } - function findOne(test, nodes, recurse = true) { - let elem = null; - for (let i = 0; i < nodes.length && !elem; i++) { - const node = nodes[i]; - if (!isTag2(node)) { - continue; - } else if (test(node)) { - elem = node; - } else if (recurse && node.children.length > 0) { - elem = findOne(test, node.children, true); - } - } - return elem; - } - function existsOne(test, nodes) { - return nodes.some((checked) => isTag2(checked) && (test(checked) || existsOne(test, checked.children))); - } - function findAll(test, nodes) { - const result = []; - const nodeStack = [nodes]; - const indexStack = [0]; - for (; ; ) { - if (indexStack[0] >= nodeStack[0].length) { - if (nodeStack.length === 1) { - return result; - } - nodeStack.shift(); - indexStack.shift(); - continue; - } - const elem = nodeStack[0][indexStack[0]++]; - if (!isTag2(elem)) - continue; - if (test(elem)) - result.push(elem); - if (elem.children.length > 0) { - indexStack.unshift(0); - nodeStack.unshift(elem.children); - } - } - } - - // node_modules/domutils/lib/esm/legacy.js - var Checks = { - tag_name(name) { - if (typeof name === "function") { - return (elem) => isTag2(elem) && name(elem.name); - } else if (name === "*") { - return isTag2; - } - return (elem) => isTag2(elem) && elem.name === name; - }, - tag_type(type) { - if (typeof type === "function") { - return (elem) => type(elem.type); - } - return (elem) => elem.type === type; - }, - tag_contains(data2) { - if (typeof data2 === "function") { - return (elem) => isText(elem) && data2(elem.data); - } - return (elem) => isText(elem) && elem.data === data2; - } - }; - function getAttribCheck(attrib, value) { - if (typeof value === "function") { - return (elem) => isTag2(elem) && value(elem.attribs[attrib]); - } - return (elem) => isTag2(elem) && elem.attribs[attrib] === value; - } - function combineFuncs(a, b) { - return (elem) => a(elem) || b(elem); - } - function compileTest(options) { - const funcs = Object.keys(options).map((key) => { - const value = options[key]; - return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value); - }); - return funcs.length === 0 ? null : funcs.reduce(combineFuncs); - } - function testElement(options, node) { - const test = compileTest(options); - return test ? test(node) : true; - } - function getElements(options, nodes, recurse, limit = Infinity) { - const test = compileTest(options); - return test ? filter(test, nodes, recurse, limit) : []; - } - function getElementById(id, nodes, recurse = true) { - if (!Array.isArray(nodes)) - nodes = [nodes]; - return findOne(getAttribCheck("id", id), nodes, recurse); - } - function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) { - return filter(Checks["tag_name"](tagName), nodes, recurse, limit); - } - function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) { - return filter(Checks["tag_type"](type), nodes, recurse, limit); - } - - // node_modules/domutils/lib/esm/helpers.js - function removeSubsets(nodes) { - let idx = nodes.length; - while (--idx >= 0) { - const node = nodes[idx]; - if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { - nodes.splice(idx, 1); - continue; - } - for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) { - if (nodes.includes(ancestor)) { - nodes.splice(idx, 1); - break; - } - } - } - return nodes; - } - var DocumentPosition; - (function(DocumentPosition2) { - DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED"; - DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING"; - DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING"; - DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS"; - DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY"; - })(DocumentPosition || (DocumentPosition = {})); - function compareDocumentPosition(nodeA, nodeB) { - const aParents = []; - const bParents = []; - if (nodeA === nodeB) { - return 0; - } - let current = hasChildren(nodeA) ? nodeA : nodeA.parent; - while (current) { - aParents.unshift(current); - current = current.parent; - } - current = hasChildren(nodeB) ? nodeB : nodeB.parent; - while (current) { - bParents.unshift(current); - current = current.parent; - } - const maxIdx = Math.min(aParents.length, bParents.length); - let idx = 0; - while (idx < maxIdx && aParents[idx] === bParents[idx]) { - idx++; - } - if (idx === 0) { - return DocumentPosition.DISCONNECTED; - } - const sharedParent = aParents[idx - 1]; - const siblings2 = sharedParent.children; - const aSibling = aParents[idx]; - const bSibling = bParents[idx]; - if (siblings2.indexOf(aSibling) > siblings2.indexOf(bSibling)) { - if (sharedParent === nodeB) { - return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY; - } - return DocumentPosition.FOLLOWING; - } - if (sharedParent === nodeA) { - return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS; - } - return DocumentPosition.PRECEDING; - } - function uniqueSort(nodes) { - nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1)); - nodes.sort((a, b) => { - const relative = compareDocumentPosition(a, b); - if (relative & DocumentPosition.PRECEDING) { - return -1; - } else if (relative & DocumentPosition.FOLLOWING) { - return 1; - } - return 0; - }); - return nodes; - } - - // node_modules/domutils/lib/esm/feeds.js - function getFeed(doc) { - const feedRoot = getOneElement(isValidFeed, doc); - return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot); - } - function getAtomFeed(feedRoot) { - var _a2; - const childs = feedRoot.children; - const feed = { - type: "atom", - items: getElementsByTagName("entry", childs).map((item) => { - var _a3; - const { children: children2 } = item; - const entry = { media: getMediaElements(children2) }; - addConditionally(entry, "id", "id", children2); - addConditionally(entry, "title", "title", children2); - const href2 = (_a3 = getOneElement("link", children2)) === null || _a3 === void 0 ? void 0 : _a3.attribs["href"]; - if (href2) { - entry.link = href2; - } - const description = fetch("summary", children2) || fetch("content", children2); - if (description) { - entry.description = description; - } - const pubDate = fetch("updated", children2); - if (pubDate) { - entry.pubDate = new Date(pubDate); - } - return entry; - }) - }; - addConditionally(feed, "id", "id", childs); - addConditionally(feed, "title", "title", childs); - const href = (_a2 = getOneElement("link", childs)) === null || _a2 === void 0 ? void 0 : _a2.attribs["href"]; - if (href) { - feed.link = href; - } - addConditionally(feed, "description", "subtitle", childs); - const updated = fetch("updated", childs); - if (updated) { - feed.updated = new Date(updated); - } - addConditionally(feed, "author", "email", childs, true); - return feed; - } - function getRssFeed(feedRoot) { - var _a2, _b; - const childs = (_b = (_a2 = getOneElement("channel", feedRoot.children)) === null || _a2 === void 0 ? void 0 : _a2.children) !== null && _b !== void 0 ? _b : []; - const feed = { - type: feedRoot.name.substr(0, 3), - id: "", - items: getElementsByTagName("item", feedRoot.children).map((item) => { - const { children: children2 } = item; - const entry = { media: getMediaElements(children2) }; - addConditionally(entry, "id", "guid", children2); - addConditionally(entry, "title", "title", children2); - addConditionally(entry, "link", "link", children2); - addConditionally(entry, "description", "description", children2); - const pubDate = fetch("pubDate", children2) || fetch("dc:date", children2); - if (pubDate) - entry.pubDate = new Date(pubDate); - return entry; - }) - }; - addConditionally(feed, "title", "title", childs); - addConditionally(feed, "link", "link", childs); - addConditionally(feed, "description", "description", childs); - const updated = fetch("lastBuildDate", childs); - if (updated) { - feed.updated = new Date(updated); - } - addConditionally(feed, "author", "managingEditor", childs, true); - return feed; - } - var MEDIA_KEYS_STRING = ["url", "type", "lang"]; - var MEDIA_KEYS_INT = [ - "fileSize", - "bitrate", - "framerate", - "samplingrate", - "channels", - "duration", - "height", - "width" - ]; - function getMediaElements(where) { - return getElementsByTagName("media:content", where).map((elem) => { - const { attribs } = elem; - const media = { - medium: attribs["medium"], - isDefault: !!attribs["isDefault"] - }; - for (const attrib of MEDIA_KEYS_STRING) { - if (attribs[attrib]) { - media[attrib] = attribs[attrib]; - } - } - for (const attrib of MEDIA_KEYS_INT) { - if (attribs[attrib]) { - media[attrib] = parseInt(attribs[attrib], 10); - } - } - if (attribs["expression"]) { - media.expression = attribs["expression"]; - } - return media; - }); - } - function getOneElement(tagName, node) { - return getElementsByTagName(tagName, node, true, 1)[0]; - } - function fetch(tagName, where, recurse = false) { - return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim(); - } - function addConditionally(obj, prop2, tagName, where, recurse = false) { - const val2 = fetch(tagName, where, recurse); - if (val2) - obj[prop2] = val2; - } - function isValidFeed(value) { - return value === "rss" || value === "feed" || value === "rdf:RDF"; - } - - // node_modules/cheerio/dist/browser/options.js - var defaultOpts2 = { - _useHtmlParser2: false - }; - function flattenOptions(options, baseOptions) { - if (!options) { - return baseOptions !== null && baseOptions !== void 0 ? baseOptions : defaultOpts2; - } - const opts = { - _useHtmlParser2: !!options.xmlMode, - ...baseOptions, - ...options - }; - if (options.xml) { - opts._useHtmlParser2 = true; - opts.xmlMode = true; - if (options.xml !== true) { - Object.assign(opts, options.xml); - } - } else if (options.xmlMode) { - opts._useHtmlParser2 = true; - } - return opts; - } - - // node_modules/cheerio/dist/browser/static.js - function render2(that, dom, options) { - if (!that) - return ""; - return that(dom !== null && dom !== void 0 ? dom : that._root.children, null, void 0, options).toString(); - } - function isOptions(dom, options) { - return !options && typeof dom === "object" && dom != null && !("length" in dom) && !("type" in dom); - } - function html(dom, options) { - const toRender = isOptions(dom) ? (options = dom, void 0) : dom; - const opts = { - ...this === null || this === void 0 ? void 0 : this._options, - ...flattenOptions(options) - }; - return render2(this, toRender, opts); - } - function xml(dom) { - const options = { ...this._options, xmlMode: true }; - return render2(this, dom, options); - } - function text(elements) { - const elems = elements !== null && elements !== void 0 ? elements : this ? this.root() : []; - let ret = ""; - for (let i = 0; i < elems.length; i++) { - ret += textContent(elems[i]); - } - return ret; - } - function parseHTML(data2, context, keepScripts = typeof context === "boolean" ? context : false) { - if (!data2 || typeof data2 !== "string") { - return null; - } - if (typeof context === "boolean") { - keepScripts = context; - } - const parsed = this.load(data2, this._options, false); - if (!keepScripts) { - parsed("script").remove(); - } - return [...parsed.root()[0].children]; - } - function root() { - return this(this._root); - } - function contains(container, contained) { - if (contained === container) { - return false; - } - let next2 = contained; - while (next2 && next2 !== next2.parent) { - next2 = next2.parent; - if (next2 === container) { - return true; - } - } - return false; - } - function extract(map2) { - return this.root().extract(map2); - } - function merge(arr1, arr2) { - if (!isArrayLike(arr1) || !isArrayLike(arr2)) { - return; - } - let newLength = arr1.length; - const len = +arr2.length; - for (let i = 0; i < len; i++) { - arr1[newLength++] = arr2[i]; - } - arr1.length = newLength; - return arr1; - } - function isArrayLike(item) { - if (Array.isArray(item)) { - return true; - } - if (typeof item !== "object" || item === null || !("length" in item) || typeof item.length !== "number" || item.length < 0) { - return false; - } - for (let i = 0; i < item.length; i++) { - if (!(i in item)) { - return false; - } - } - return true; - } - - // node_modules/cheerio/dist/browser/api/attributes.js - var attributes_exports = {}; - __export(attributes_exports, { - addClass: () => addClass, - attr: () => attr, - data: () => data, - hasClass: () => hasClass, - prop: () => prop, - removeAttr: () => removeAttr, - removeClass: () => removeClass, - toggleClass: () => toggleClass, - val: () => val - }); - - // node_modules/cheerio/dist/browser/utils.js - function isCheerio(maybeCheerio) { - return maybeCheerio.cheerio != null; - } - function camelCase(str) { - return str.replace(/[._-](\w|$)/g, (_, x) => x.toUpperCase()); - } - function cssCase(str) { - return str.replace(/[A-Z]/g, "-$&").toLowerCase(); - } - function domEach(array, fn) { - const len = array.length; - for (let i = 0; i < len; i++) - fn(array[i], i); - return array; - } - var CharacterCodes; - (function(CharacterCodes2) { - CharacterCodes2[CharacterCodes2["LowerA"] = 97] = "LowerA"; - CharacterCodes2[CharacterCodes2["LowerZ"] = 122] = "LowerZ"; - CharacterCodes2[CharacterCodes2["UpperA"] = 65] = "UpperA"; - CharacterCodes2[CharacterCodes2["UpperZ"] = 90] = "UpperZ"; - CharacterCodes2[CharacterCodes2["Exclamation"] = 33] = "Exclamation"; - })(CharacterCodes || (CharacterCodes = {})); - function isHtml(str) { - const tagStart = str.indexOf("<"); - if (tagStart < 0 || tagStart > str.length - 3) - return false; - const tagChar = str.charCodeAt(tagStart + 1); - return (tagChar >= CharacterCodes.LowerA && tagChar <= CharacterCodes.LowerZ || tagChar >= CharacterCodes.UpperA && tagChar <= CharacterCodes.UpperZ || tagChar === CharacterCodes.Exclamation) && str.includes(">", tagStart + 2); - } - - // node_modules/cheerio/dist/browser/api/attributes.js - var hasOwn = Object.prototype.hasOwnProperty; - var rspace = /\s+/; - var dataAttrPrefix = "data-"; - var rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i; - var rbrace = /^{[^]*}$|^\[[^]*]$/; - function getAttr(elem, name, xmlMode) { - var _a2; - if (!elem || !isTag2(elem)) - return void 0; - (_a2 = elem.attribs) !== null && _a2 !== void 0 ? _a2 : elem.attribs = {}; - if (!name) { - return elem.attribs; - } - if (hasOwn.call(elem.attribs, name)) { - return !xmlMode && rboolean.test(name) ? name : elem.attribs[name]; - } - if (elem.name === "option" && name === "value") { - return text(elem.children); - } - if (elem.name === "input" && (elem.attribs["type"] === "radio" || elem.attribs["type"] === "checkbox") && name === "value") { - return "on"; - } - return void 0; - } - function setAttr(el, name, value) { - if (value === null) { - removeAttribute(el, name); - } else { - el.attribs[name] = `${value}`; - } - } - function attr(name, value) { - if (typeof name === "object" || value !== void 0) { - if (typeof value === "function") { - if (typeof name !== "string") { - { - throw new Error("Bad combination of arguments."); - } - } - return domEach(this, (el, i) => { - if (isTag2(el)) - setAttr(el, name, value.call(el, i, el.attribs[name])); - }); - } - return domEach(this, (el) => { - if (!isTag2(el)) - return; - if (typeof name === "object") { - for (const objName of Object.keys(name)) { - const objValue = name[objName]; - setAttr(el, objName, objValue); - } - } else { - setAttr(el, name, value); - } - }); - } - return arguments.length > 1 ? this : getAttr(this[0], name, this.options.xmlMode); - } - function getProp(el, name, xmlMode) { - return name in el ? ( - // @ts-expect-error TS doesn't like us accessing the value directly here. - el[name] - ) : !xmlMode && rboolean.test(name) ? getAttr(el, name, false) !== void 0 : getAttr(el, name, xmlMode); - } - function setProp(el, name, value, xmlMode) { - if (name in el) { - el[name] = value; - } else { - setAttr(el, name, !xmlMode && rboolean.test(name) ? value ? "" : null : `${value}`); - } - } - function prop(name, value) { - var _a2; - if (typeof name === "string" && value === void 0) { - const el = this[0]; - if (!el || !isTag2(el)) - return void 0; - switch (name) { - case "style": { - const property = this.css(); - const keys = Object.keys(property); - for (let i = 0; i < keys.length; i++) { - property[i] = keys[i]; - } - property.length = keys.length; - return property; - } - case "tagName": - case "nodeName": { - return el.name.toUpperCase(); - } - case "href": - case "src": { - const prop2 = (_a2 = el.attribs) === null || _a2 === void 0 ? void 0 : _a2[name]; - if (typeof URL !== "undefined" && (name === "href" && (el.tagName === "a" || el.tagName === "link") || name === "src" && (el.tagName === "img" || el.tagName === "iframe" || el.tagName === "audio" || el.tagName === "video" || el.tagName === "source")) && prop2 !== void 0 && this.options.baseURI) { - return new URL(prop2, this.options.baseURI).href; - } - return prop2; - } - case "innerText": { - return innerText(el); - } - case "textContent": { - return textContent(el); - } - case "outerHTML": { - return this.clone().wrap("<container />").parent().html(); - } - case "innerHTML": { - return this.html(); - } - default: { - return getProp(el, name, this.options.xmlMode); - } - } - } - if (typeof name === "object" || value !== void 0) { - if (typeof value === "function") { - if (typeof name === "object") { - throw new TypeError("Bad combination of arguments."); - } - return domEach(this, (el, i) => { - if (isTag2(el)) { - setProp(el, name, value.call(el, i, getProp(el, name, this.options.xmlMode)), this.options.xmlMode); - } - }); - } - return domEach(this, (el) => { - if (!isTag2(el)) - return; - if (typeof name === "object") { - for (const key of Object.keys(name)) { - const val2 = name[key]; - setProp(el, key, val2, this.options.xmlMode); - } - } else { - setProp(el, name, value, this.options.xmlMode); - } - }); - } - return void 0; - } - function setData(elem, name, value) { - var _a2; - (_a2 = elem.data) !== null && _a2 !== void 0 ? _a2 : elem.data = {}; - if (typeof name === "object") - Object.assign(elem.data, name); - else if (typeof name === "string" && value !== void 0) { - elem.data[name] = value; - } - } - function readAllData(el) { - for (const domName of Object.keys(el.attribs)) { - if (!domName.startsWith(dataAttrPrefix)) { - continue; - } - const jsName = camelCase(domName.slice(dataAttrPrefix.length)); - if (!hasOwn.call(el.data, jsName)) { - el.data[jsName] = parseDataValue(el.attribs[domName]); - } - } - return el.data; - } - function readData(el, name) { - const domName = dataAttrPrefix + cssCase(name); - const data2 = el.data; - if (hasOwn.call(data2, name)) { - return data2[name]; - } - if (hasOwn.call(el.attribs, domName)) { - return data2[name] = parseDataValue(el.attribs[domName]); - } - return void 0; - } - function parseDataValue(value) { - if (value === "null") - return null; - if (value === "true") - return true; - if (value === "false") - return false; - const num = Number(value); - if (value === String(num)) - return num; - if (rbrace.test(value)) { - try { - return JSON.parse(value); - } catch { - } - } - return value; - } - function data(name, value) { - var _a2; - const elem = this[0]; - if (!elem || !isTag2(elem)) - return; - const dataEl = elem; - (_a2 = dataEl.data) !== null && _a2 !== void 0 ? _a2 : dataEl.data = {}; - if (name == null) { - return readAllData(dataEl); - } - if (typeof name === "object" || value !== void 0) { - domEach(this, (el) => { - if (isTag2(el)) { - if (typeof name === "object") - setData(el, name); - else - setData(el, name, value); - } - }); - return this; - } - return readData(dataEl, name); - } - function val(value) { - const querying = arguments.length === 0; - const element = this[0]; - if (!element || !isTag2(element)) - return querying ? void 0 : this; - switch (element.name) { - case "textarea": { - return this.text(value); - } - case "select": { - const option = this.find("option:selected"); - if (!querying) { - if (this.attr("multiple") == null && typeof value === "object") { - return this; - } - this.find("option").removeAttr("selected"); - const values = typeof value === "object" ? value : [value]; - for (const val2 of values) { - this.find(`option[value="${val2}"]`).attr("selected", ""); - } - return this; - } - return this.attr("multiple") ? option.toArray().map((el) => text(el.children)) : option.attr("value"); - } - case "input": - case "option": { - return querying ? this.attr("value") : this.attr("value", value); - } - } - return void 0; - } - function removeAttribute(elem, name) { - if (!elem.attribs || !hasOwn.call(elem.attribs, name)) - return; - delete elem.attribs[name]; - } - function splitNames(names) { - return names ? names.trim().split(rspace) : []; - } - function removeAttr(name) { - const attrNames = splitNames(name); - for (const attrName of attrNames) { - domEach(this, (elem) => { - if (isTag2(elem)) - removeAttribute(elem, attrName); - }); - } - return this; - } - function hasClass(className) { - return this.toArray().some((elem) => { - const clazz = isTag2(elem) && elem.attribs["class"]; - let idx = -1; - if (clazz && className.length > 0) { - while ((idx = clazz.indexOf(className, idx + 1)) > -1) { - const end2 = idx + className.length; - if ((idx === 0 || rspace.test(clazz[idx - 1])) && (end2 === clazz.length || rspace.test(clazz[end2]))) { - return true; - } - } - } - return false; - }); - } - function addClass(value) { - if (typeof value === "function") { - return domEach(this, (el, i) => { - if (isTag2(el)) { - const className = el.attribs["class"] || ""; - addClass.call([el], value.call(el, i, className)); - } - }); - } - if (!value || typeof value !== "string") - return this; - const classNames = value.split(rspace); - const numElements = this.length; - for (let i = 0; i < numElements; i++) { - const el = this[i]; - if (!isTag2(el)) - continue; - const className = getAttr(el, "class", false); - if (className) { - let setClass = ` ${className} `; - for (const cn of classNames) { - const appendClass = `${cn} `; - if (!setClass.includes(` ${appendClass}`)) - setClass += appendClass; - } - setAttr(el, "class", setClass.trim()); - } else { - setAttr(el, "class", classNames.join(" ").trim()); - } - } - return this; - } - function removeClass(name) { - if (typeof name === "function") { - return domEach(this, (el, i) => { - if (isTag2(el)) { - removeClass.call([el], name.call(el, i, el.attribs["class"] || "")); - } - }); - } - const classes = splitNames(name); - const numClasses = classes.length; - const removeAll = arguments.length === 0; - return domEach(this, (el) => { - if (!isTag2(el)) - return; - if (removeAll) { - el.attribs["class"] = ""; - } else { - const elClasses = splitNames(el.attribs["class"]); - let changed = false; - for (let j = 0; j < numClasses; j++) { - const index2 = elClasses.indexOf(classes[j]); - if (index2 >= 0) { - elClasses.splice(index2, 1); - changed = true; - j--; - } - } - if (changed) { - el.attribs["class"] = elClasses.join(" "); - } - } - }); - } - function toggleClass(value, stateVal) { - if (typeof value === "function") { - return domEach(this, (el, i) => { - if (isTag2(el)) { - toggleClass.call([el], value.call(el, i, el.attribs["class"] || "", stateVal), stateVal); - } - }); - } - if (!value || typeof value !== "string") - return this; - const classNames = value.split(rspace); - const numClasses = classNames.length; - const state = typeof stateVal === "boolean" ? stateVal ? 1 : -1 : 0; - const numElements = this.length; - for (let i = 0; i < numElements; i++) { - const el = this[i]; - if (!isTag2(el)) - continue; - const elementClasses = splitNames(el.attribs["class"]); - for (let j = 0; j < numClasses; j++) { - const index2 = elementClasses.indexOf(classNames[j]); - if (state >= 0 && index2 < 0) { - elementClasses.push(classNames[j]); - } else if (state <= 0 && index2 >= 0) { - elementClasses.splice(index2, 1); - } - } - el.attribs["class"] = elementClasses.join(" "); - } - return this; - } - - // node_modules/cheerio/dist/browser/api/traversing.js - var traversing_exports = {}; - __export(traversing_exports, { - _findBySelector: () => _findBySelector, - add: () => add, - addBack: () => addBack, - children: () => children, - closest: () => closest, - contents: () => contents, - each: () => each, - end: () => end, - eq: () => eq, - filter: () => filter3, - filterArray: () => filterArray, - find: () => find3, - first: () => first, - get: () => get, - has: () => has, - index: () => index, - is: () => is3, - last: () => last, - map: () => map, - next: () => next, - nextAll: () => nextAll, - nextUntil: () => nextUntil, - not: () => not, - parent: () => parent, - parents: () => parents, - parentsUntil: () => parentsUntil, - prev: () => prev, - prevAll: () => prevAll, - prevUntil: () => prevUntil, - siblings: () => siblings, - slice: () => slice, - toArray: () => toArray - }); - - // node_modules/css-what/lib/es/types.js - var SelectorType; - (function(SelectorType2) { - SelectorType2["Attribute"] = "attribute"; - SelectorType2["Pseudo"] = "pseudo"; - SelectorType2["PseudoElement"] = "pseudo-element"; - SelectorType2["Tag"] = "tag"; - SelectorType2["Universal"] = "universal"; - SelectorType2["Adjacent"] = "adjacent"; - SelectorType2["Child"] = "child"; - SelectorType2["Descendant"] = "descendant"; - SelectorType2["Parent"] = "parent"; - SelectorType2["Sibling"] = "sibling"; - SelectorType2["ColumnCombinator"] = "column-combinator"; - })(SelectorType || (SelectorType = {})); - var AttributeAction; - (function(AttributeAction2) { - AttributeAction2["Any"] = "any"; - AttributeAction2["Element"] = "element"; - AttributeAction2["End"] = "end"; - AttributeAction2["Equals"] = "equals"; - AttributeAction2["Exists"] = "exists"; - AttributeAction2["Hyphen"] = "hyphen"; - AttributeAction2["Not"] = "not"; - AttributeAction2["Start"] = "start"; - })(AttributeAction || (AttributeAction = {})); - - // node_modules/css-what/lib/es/parse.js - var reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; - var reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; - var actionTypes = /* @__PURE__ */ new Map([ - [126, AttributeAction.Element], - [94, AttributeAction.Start], - [36, AttributeAction.End], - [42, AttributeAction.Any], - [33, AttributeAction.Not], - [124, AttributeAction.Hyphen] - ]); - var unpackPseudos = /* @__PURE__ */ new Set([ - "has", - "not", - "matches", - "is", - "where", - "host", - "host-context" - ]); - function isTraversal(selector) { - switch (selector.type) { - case SelectorType.Adjacent: - case SelectorType.Child: - case SelectorType.Descendant: - case SelectorType.Parent: - case SelectorType.Sibling: - case SelectorType.ColumnCombinator: - return true; - default: - return false; - } - } - var stripQuotesFromPseudos = /* @__PURE__ */ new Set(["contains", "icontains"]); - function funescape(_, escaped, escapedWhitespace) { - const high = parseInt(escaped, 16) - 65536; - return high !== high || escapedWhitespace ? escaped : high < 0 ? ( - // BMP codepoint - String.fromCharCode(high + 65536) - ) : ( - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320) - ); - } - function unescapeCSS(str) { - return str.replace(reEscape, funescape); - } - function isQuote(c) { - return c === 39 || c === 34; - } - function isWhitespace(c) { - return c === 32 || c === 9 || c === 10 || c === 12 || c === 13; - } - function parse(selector) { - const subselects2 = []; - const endIndex = parseSelector(subselects2, `${selector}`, 0); - if (endIndex < selector.length) { - throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`); - } - return subselects2; - } - function parseSelector(subselects2, selector, selectorIndex) { - let tokens = []; - function getName2(offset) { - const match = selector.slice(selectorIndex + offset).match(reName); - if (!match) { - throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`); - } - const [name] = match; - selectorIndex += offset + name.length; - return unescapeCSS(name); - } - function stripWhitespace(offset) { - selectorIndex += offset; - while (selectorIndex < selector.length && isWhitespace(selector.charCodeAt(selectorIndex))) { - selectorIndex++; - } - } - function readValueWithParenthesis() { - selectorIndex += 1; - const start = selectorIndex; - let counter = 1; - for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) { - if (selector.charCodeAt(selectorIndex) === 40 && !isEscaped(selectorIndex)) { - counter++; - } else if (selector.charCodeAt(selectorIndex) === 41 && !isEscaped(selectorIndex)) { - counter--; - } - } - if (counter) { - throw new Error("Parenthesis not matched"); - } - return unescapeCSS(selector.slice(start, selectorIndex - 1)); - } - function isEscaped(pos) { - let slashCount = 0; - while (selector.charCodeAt(--pos) === 92) - slashCount++; - return (slashCount & 1) === 1; - } - function ensureNotTraversal() { - if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { - throw new Error("Did not expect successive traversals."); - } - } - function addTraversal(type) { - if (tokens.length > 0 && tokens[tokens.length - 1].type === SelectorType.Descendant) { - tokens[tokens.length - 1].type = type; - return; - } - ensureNotTraversal(); - tokens.push({ type }); - } - function addSpecialAttribute(name, action) { - tokens.push({ - type: SelectorType.Attribute, - name, - action, - value: getName2(1), - namespace: null, - ignoreCase: "quirks" - }); - } - function finalizeSubselector() { - if (tokens.length && tokens[tokens.length - 1].type === SelectorType.Descendant) { - tokens.pop(); - } - if (tokens.length === 0) { - throw new Error("Empty sub-selector"); - } - subselects2.push(tokens); - } - stripWhitespace(0); - if (selector.length === selectorIndex) { - return selectorIndex; - } - loop: while (selectorIndex < selector.length) { - const firstChar = selector.charCodeAt(selectorIndex); - switch (firstChar) { - case 32: - case 9: - case 10: - case 12: - case 13: { - if (tokens.length === 0 || tokens[0].type !== SelectorType.Descendant) { - ensureNotTraversal(); - tokens.push({ type: SelectorType.Descendant }); - } - stripWhitespace(1); - break; - } - case 62: { - addTraversal(SelectorType.Child); - stripWhitespace(1); - break; - } - case 60: { - addTraversal(SelectorType.Parent); - stripWhitespace(1); - break; - } - case 126: { - addTraversal(SelectorType.Sibling); - stripWhitespace(1); - break; - } - case 43: { - addTraversal(SelectorType.Adjacent); - stripWhitespace(1); - break; - } - case 46: { - addSpecialAttribute("class", AttributeAction.Element); - break; - } - case 35: { - addSpecialAttribute("id", AttributeAction.Equals); - break; - } - case 91: { - stripWhitespace(1); - let name; - let namespace = null; - if (selector.charCodeAt(selectorIndex) === 124) { - name = getName2(1); - } else if (selector.startsWith("*|", selectorIndex)) { - namespace = "*"; - name = getName2(2); - } else { - name = getName2(0); - if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) { - namespace = name; - name = getName2(1); - } - } - stripWhitespace(0); - let action = AttributeAction.Exists; - const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex)); - if (possibleAction) { - action = possibleAction; - if (selector.charCodeAt(selectorIndex + 1) !== 61) { - throw new Error("Expected `=`"); - } - stripWhitespace(2); - } else if (selector.charCodeAt(selectorIndex) === 61) { - action = AttributeAction.Equals; - stripWhitespace(1); - } - let value = ""; - let ignoreCase = null; - if (action !== "exists") { - if (isQuote(selector.charCodeAt(selectorIndex))) { - const quote = selector.charCodeAt(selectorIndex); - let sectionEnd = selectorIndex + 1; - while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) { - sectionEnd += 1; - } - if (selector.charCodeAt(sectionEnd) !== quote) { - throw new Error("Attribute value didn't end"); - } - value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd)); - selectorIndex = sectionEnd + 1; - } else { - const valueStart = selectorIndex; - while (selectorIndex < selector.length && (!isWhitespace(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) { - selectorIndex += 1; - } - value = unescapeCSS(selector.slice(valueStart, selectorIndex)); - } - stripWhitespace(0); - const forceIgnore = selector.charCodeAt(selectorIndex) | 32; - if (forceIgnore === 115) { - ignoreCase = false; - stripWhitespace(1); - } else if (forceIgnore === 105) { - ignoreCase = true; - stripWhitespace(1); - } - } - if (selector.charCodeAt(selectorIndex) !== 93) { - throw new Error("Attribute selector didn't terminate"); - } - selectorIndex += 1; - const attributeSelector = { - type: SelectorType.Attribute, - name, - action, - value, - namespace, - ignoreCase - }; - tokens.push(attributeSelector); - break; - } - case 58: { - if (selector.charCodeAt(selectorIndex + 1) === 58) { - tokens.push({ - type: SelectorType.PseudoElement, - name: getName2(2).toLowerCase(), - data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null - }); - continue; - } - const name = getName2(1).toLowerCase(); - let data2 = null; - if (selector.charCodeAt(selectorIndex) === 40) { - if (unpackPseudos.has(name)) { - if (isQuote(selector.charCodeAt(selectorIndex + 1))) { - throw new Error(`Pseudo-selector ${name} cannot be quoted`); - } - data2 = []; - selectorIndex = parseSelector(data2, selector, selectorIndex + 1); - if (selector.charCodeAt(selectorIndex) !== 41) { - throw new Error(`Missing closing parenthesis in :${name} (${selector})`); - } - selectorIndex += 1; - } else { - data2 = readValueWithParenthesis(); - if (stripQuotesFromPseudos.has(name)) { - const quot = data2.charCodeAt(0); - if (quot === data2.charCodeAt(data2.length - 1) && isQuote(quot)) { - data2 = data2.slice(1, -1); - } - } - data2 = unescapeCSS(data2); - } - } - tokens.push({ type: SelectorType.Pseudo, name, data: data2 }); - break; - } - case 44: { - finalizeSubselector(); - tokens = []; - stripWhitespace(1); - break; - } - default: { - if (selector.startsWith("/*", selectorIndex)) { - const endIndex = selector.indexOf("*/", selectorIndex + 2); - if (endIndex < 0) { - throw new Error("Comment was not terminated"); - } - selectorIndex = endIndex + 2; - if (tokens.length === 0) { - stripWhitespace(0); - } - break; - } - let namespace = null; - let name; - if (firstChar === 42) { - selectorIndex += 1; - name = "*"; - } else if (firstChar === 124) { - name = ""; - if (selector.charCodeAt(selectorIndex + 1) === 124) { - addTraversal(SelectorType.ColumnCombinator); - stripWhitespace(2); - break; - } - } else if (reName.test(selector.slice(selectorIndex))) { - name = getName2(0); - } else { - break loop; - } - if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) { - namespace = name; - if (selector.charCodeAt(selectorIndex + 1) === 42) { - name = "*"; - selectorIndex += 2; - } else { - name = getName2(1); - } - } - tokens.push(name === "*" ? { type: SelectorType.Universal, namespace } : { type: SelectorType.Tag, name, namespace }); - } - } - } - finalizeSubselector(); - return selectorIndex; - } - - // node_modules/css-select/lib/esm/index.js - var import_boolbase6 = __toESM(require_boolbase(), 1); - - // node_modules/css-select/lib/esm/compile.js - var import_boolbase5 = __toESM(require_boolbase(), 1); - - // node_modules/css-select/lib/esm/sort.js - var procedure = /* @__PURE__ */ new Map([ - [SelectorType.Universal, 50], - [SelectorType.Tag, 30], - [SelectorType.Attribute, 1], - [SelectorType.Pseudo, 0] - ]); - function isTraversal2(token) { - return !procedure.has(token.type); - } - var attributes = /* @__PURE__ */ new Map([ - [AttributeAction.Exists, 10], - [AttributeAction.Equals, 8], - [AttributeAction.Not, 7], - [AttributeAction.Start, 6], - [AttributeAction.End, 6], - [AttributeAction.Any, 5] - ]); - function sortByProcedure(arr) { - const procs = arr.map(getProcedure); - for (let i = 1; i < arr.length; i++) { - const procNew = procs[i]; - if (procNew < 0) - continue; - for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) { - const token = arr[j + 1]; - arr[j + 1] = arr[j]; - arr[j] = token; - procs[j + 1] = procs[j]; - procs[j] = procNew; - } - } - } - function getProcedure(token) { - var _a2, _b; - let proc = (_a2 = procedure.get(token.type)) !== null && _a2 !== void 0 ? _a2 : -1; - if (token.type === SelectorType.Attribute) { - proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4; - if (token.action === AttributeAction.Equals && token.name === "id") { - proc = 9; - } - if (token.ignoreCase) { - proc >>= 1; - } - } else if (token.type === SelectorType.Pseudo) { - if (!token.data) { - proc = 3; - } else if (token.name === "has" || token.name === "contains") { - proc = 0; - } else if (Array.isArray(token.data)) { - proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure)))); - if (proc < 0) { - proc = 0; - } - } else { - proc = 2; - } - } - return proc; - } - - // node_modules/css-select/lib/esm/attributes.js - var import_boolbase = __toESM(require_boolbase(), 1); - var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g; - function escapeRegex(value) { - return value.replace(reChars, "\\$&"); - } - var caseInsensitiveAttributes = /* @__PURE__ */ new Set([ - "accept", - "accept-charset", - "align", - "alink", - "axis", - "bgcolor", - "charset", - "checked", - "clear", - "codetype", - "color", - "compact", - "declare", - "defer", - "dir", - "direction", - "disabled", - "enctype", - "face", - "frame", - "hreflang", - "http-equiv", - "lang", - "language", - "link", - "media", - "method", - "multiple", - "nohref", - "noresize", - "noshade", - "nowrap", - "readonly", - "rel", - "rev", - "rules", - "scope", - "scrolling", - "selected", - "shape", - "target", - "text", - "type", - "valign", - "valuetype", - "vlink" - ]); - function shouldIgnoreCase(selector, options) { - return typeof selector.ignoreCase === "boolean" ? selector.ignoreCase : selector.ignoreCase === "quirks" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); - } - var attributeRules = { - equals(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length === value.length && attr2.toLowerCase() === value && next2(elem); - }; - } - return (elem) => adapter2.getAttributeValue(elem, name) === value && next2(elem); - }, - hyphen(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - const len = value.length; - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return function hyphenIC(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && (attr2.length === len || attr2.charAt(len) === "-") && attr2.substr(0, len).toLowerCase() === value && next2(elem); - }; - } - return function hyphen(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && (attr2.length === len || attr2.charAt(len) === "-") && attr2.substr(0, len) === value && next2(elem); - }; - }, - element(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name, value } = data2; - if (/\s/.test(value)) { - return import_boolbase.default.falseFunc; - } - const regex = new RegExp(`(?:^|\\s)${escapeRegex(value)}(?:$|\\s)`, shouldIgnoreCase(data2, options) ? "i" : ""); - return function element(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length >= value.length && regex.test(attr2) && next2(elem); - }; - }, - exists(next2, { name }, { adapter: adapter2 }) { - return (elem) => adapter2.hasAttrib(elem, name) && next2(elem); - }, - start(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - const len = value.length; - if (len === 0) { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length >= len && attr2.substr(0, len).toLowerCase() === value && next2(elem); - }; - } - return (elem) => { - var _a2; - return !!((_a2 = adapter2.getAttributeValue(elem, name)) === null || _a2 === void 0 ? void 0 : _a2.startsWith(value)) && next2(elem); - }; - }, - end(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - const len = -value.length; - if (len === 0) { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - var _a2; - return ((_a2 = adapter2.getAttributeValue(elem, name)) === null || _a2 === void 0 ? void 0 : _a2.substr(len).toLowerCase()) === value && next2(elem); - }; - } - return (elem) => { - var _a2; - return !!((_a2 = adapter2.getAttributeValue(elem, name)) === null || _a2 === void 0 ? void 0 : _a2.endsWith(value)) && next2(elem); - }; - }, - any(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name, value } = data2; - if (value === "") { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data2, options)) { - const regex = new RegExp(escapeRegex(value), "i"); - return function anyIC(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length >= value.length && regex.test(attr2) && next2(elem); - }; - } - return (elem) => { - var _a2; - return !!((_a2 = adapter2.getAttributeValue(elem, name)) === null || _a2 === void 0 ? void 0 : _a2.includes(value)) && next2(elem); - }; - }, - not(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - if (value === "") { - return (elem) => !!adapter2.getAttributeValue(elem, name) && next2(elem); - } else if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr2 = adapter2.getAttributeValue(elem, name); - return (attr2 == null || attr2.length !== value.length || attr2.toLowerCase() !== value) && next2(elem); - }; - } - return (elem) => adapter2.getAttributeValue(elem, name) !== value && next2(elem); - } - }; - - // node_modules/nth-check/lib/esm/parse.js - var whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]); - var ZERO = "0".charCodeAt(0); - var NINE = "9".charCodeAt(0); - function parse2(formula) { - formula = formula.trim().toLowerCase(); - if (formula === "even") { - return [2, 0]; - } else if (formula === "odd") { - return [2, 1]; - } - let idx = 0; - let a = 0; - let sign = readSign(); - let number = readNumber(); - if (idx < formula.length && formula.charAt(idx) === "n") { - idx++; - a = sign * (number !== null && number !== void 0 ? number : 1); - skipWhitespace(); - if (idx < formula.length) { - sign = readSign(); - skipWhitespace(); - number = readNumber(); - } else { - sign = number = 0; - } - } - if (number === null || idx < formula.length) { - throw new Error(`n-th rule couldn't be parsed ('${formula}')`); - } - return [a, sign * number]; - function readSign() { - if (formula.charAt(idx) === "-") { - idx++; - return -1; - } - if (formula.charAt(idx) === "+") { - idx++; - } - return 1; - } - function readNumber() { - const start = idx; - let value = 0; - while (idx < formula.length && formula.charCodeAt(idx) >= ZERO && formula.charCodeAt(idx) <= NINE) { - value = value * 10 + (formula.charCodeAt(idx) - ZERO); - idx++; - } - return idx === start ? null : value; - } - function skipWhitespace() { - while (idx < formula.length && whitespace.has(formula.charCodeAt(idx))) { - idx++; - } - } - } - - // node_modules/nth-check/lib/esm/compile.js - var import_boolbase2 = __toESM(require_boolbase(), 1); - function compile(parsed) { - const a = parsed[0]; - const b = parsed[1] - 1; - if (b < 0 && a <= 0) - return import_boolbase2.default.falseFunc; - if (a === -1) - return (index2) => index2 <= b; - if (a === 0) - return (index2) => index2 === b; - if (a === 1) - return b < 0 ? import_boolbase2.default.trueFunc : (index2) => index2 >= b; - const absA = Math.abs(a); - const bMod = (b % absA + absA) % absA; - return a > 1 ? (index2) => index2 >= b && index2 % absA === bMod : (index2) => index2 <= b && index2 % absA === bMod; - } - - // node_modules/nth-check/lib/esm/index.js - function nthCheck(formula) { - return compile(parse2(formula)); - } - - // node_modules/css-select/lib/esm/pseudo-selectors/filters.js - var import_boolbase3 = __toESM(require_boolbase(), 1); - function getChildFunc(next2, adapter2) { - return (elem) => { - const parent2 = adapter2.getParent(elem); - return parent2 != null && adapter2.isTag(parent2) && next2(elem); - }; - } - var filters = { - contains(next2, text3, { adapter: adapter2 }) { - return function contains2(elem) { - return next2(elem) && adapter2.getText(elem).includes(text3); - }; - }, - icontains(next2, text3, { adapter: adapter2 }) { - const itext = text3.toLowerCase(); - return function icontains(elem) { - return next2(elem) && adapter2.getText(elem).toLowerCase().includes(itext); - }; - }, - // Location specific methods - "nth-child"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthChild(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = 0; i < siblings2.length; i++) { - if (equals(elem, siblings2[i])) - break; - if (adapter2.isTag(siblings2[i])) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - "nth-last-child"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthLastChild(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = siblings2.length - 1; i >= 0; i--) { - if (equals(elem, siblings2[i])) - break; - if (adapter2.isTag(siblings2[i])) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - "nth-of-type"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthOfType(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === adapter2.getName(elem)) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - "nth-last-of-type"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthLastOfType(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = siblings2.length - 1; i >= 0; i--) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === adapter2.getName(elem)) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - // TODO determine the actual root element - root(next2, _rule, { adapter: adapter2 }) { - return (elem) => { - const parent2 = adapter2.getParent(elem); - return (parent2 == null || !adapter2.isTag(parent2)) && next2(elem); - }; - }, - scope(next2, rule, options, context) { - const { equals } = options; - if (!context || context.length === 0) { - return filters["root"](next2, rule, options); - } - if (context.length === 1) { - return (elem) => equals(context[0], elem) && next2(elem); - } - return (elem) => context.includes(elem) && next2(elem); - }, - hover: dynamicStatePseudo("isHovered"), - visited: dynamicStatePseudo("isVisited"), - active: dynamicStatePseudo("isActive") - }; - function dynamicStatePseudo(name) { - return function dynamicPseudo(next2, _rule, { adapter: adapter2 }) { - const func = adapter2[name]; - if (typeof func !== "function") { - return import_boolbase3.default.falseFunc; - } - return function active(elem) { - return func(elem) && next2(elem); - }; - }; - } - - // node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js - var pseudos = { - empty(elem, { adapter: adapter2 }) { - return !adapter2.getChildren(elem).some((elem2) => ( - // FIXME: `getText` call is potentially expensive. - adapter2.isTag(elem2) || adapter2.getText(elem2) !== "" - )); - }, - "first-child"(elem, { adapter: adapter2, equals }) { - if (adapter2.prevElementSibling) { - return adapter2.prevElementSibling(elem) == null; - } - const firstChild = adapter2.getSiblings(elem).find((elem2) => adapter2.isTag(elem2)); - return firstChild != null && equals(elem, firstChild); - }, - "last-child"(elem, { adapter: adapter2, equals }) { - const siblings2 = adapter2.getSiblings(elem); - for (let i = siblings2.length - 1; i >= 0; i--) { - if (equals(elem, siblings2[i])) - return true; - if (adapter2.isTag(siblings2[i])) - break; - } - return false; - }, - "first-of-type"(elem, { adapter: adapter2, equals }) { - const siblings2 = adapter2.getSiblings(elem); - const elemName = adapter2.getName(elem); - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - return true; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === elemName) { - break; - } - } - return false; - }, - "last-of-type"(elem, { adapter: adapter2, equals }) { - const siblings2 = adapter2.getSiblings(elem); - const elemName = adapter2.getName(elem); - for (let i = siblings2.length - 1; i >= 0; i--) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - return true; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === elemName) { - break; - } - } - return false; - }, - "only-of-type"(elem, { adapter: adapter2, equals }) { - const elemName = adapter2.getName(elem); - return adapter2.getSiblings(elem).every((sibling) => equals(elem, sibling) || !adapter2.isTag(sibling) || adapter2.getName(sibling) !== elemName); - }, - "only-child"(elem, { adapter: adapter2, equals }) { - return adapter2.getSiblings(elem).every((sibling) => equals(elem, sibling) || !adapter2.isTag(sibling)); - } - }; - function verifyPseudoArgs(func, name, subselect, argIndex) { - if (subselect === null) { - if (func.length > argIndex) { - throw new Error(`Pseudo-class :${name} requires an argument`); - } - } else if (func.length === argIndex) { - throw new Error(`Pseudo-class :${name} doesn't have any arguments`); - } - } - - // node_modules/css-select/lib/esm/pseudo-selectors/aliases.js - var aliases = { - // Links - "any-link": ":is(a, area, link)[href]", - link: ":any-link:not(:visited)", - // Forms - // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements - disabled: `:is( - :is(button, input, select, textarea, optgroup, option)[disabled], - optgroup[disabled] > option, - fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) - )`, - enabled: ":not(:disabled)", - checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", - required: ":is(input, select, textarea)[required]", - optional: ":is(input, select, textarea):not([required])", - // JQuery extensions - // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness - selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", - checkbox: "[type=checkbox]", - file: "[type=file]", - password: "[type=password]", - radio: "[type=radio]", - reset: "[type=reset]", - image: "[type=image]", - submit: "[type=submit]", - parent: ":not(:empty)", - header: ":is(h1, h2, h3, h4, h5, h6)", - button: ":is(button, input[type=button])", - input: ":is(input, textarea, select, button)", - text: "input:is(:not([type!='']), [type=text])" - }; - - // node_modules/css-select/lib/esm/pseudo-selectors/subselects.js - var import_boolbase4 = __toESM(require_boolbase(), 1); - var PLACEHOLDER_ELEMENT = {}; - function ensureIsTag(next2, adapter2) { - if (next2 === import_boolbase4.default.falseFunc) - return import_boolbase4.default.falseFunc; - return (elem) => adapter2.isTag(elem) && next2(elem); - } - function getNextSiblings(elem, adapter2) { - const siblings2 = adapter2.getSiblings(elem); - if (siblings2.length <= 1) - return []; - const elemIndex = siblings2.indexOf(elem); - if (elemIndex < 0 || elemIndex === siblings2.length - 1) - return []; - return siblings2.slice(elemIndex + 1).filter(adapter2.isTag); - } - function copyOptions(options) { - return { - xmlMode: !!options.xmlMode, - lowerCaseAttributeNames: !!options.lowerCaseAttributeNames, - lowerCaseTags: !!options.lowerCaseTags, - quirksMode: !!options.quirksMode, - cacheResults: !!options.cacheResults, - pseudos: options.pseudos, - adapter: options.adapter, - equals: options.equals - }; - } - var is = (next2, token, options, context, compileToken2) => { - const func = compileToken2(token, copyOptions(options), context); - return func === import_boolbase4.default.trueFunc ? next2 : func === import_boolbase4.default.falseFunc ? import_boolbase4.default.falseFunc : (elem) => func(elem) && next2(elem); - }; - var subselects = { - is, - /** - * `:matches` and `:where` are aliases for `:is`. - */ - matches: is, - where: is, - not(next2, token, options, context, compileToken2) { - const func = compileToken2(token, copyOptions(options), context); - return func === import_boolbase4.default.falseFunc ? next2 : func === import_boolbase4.default.trueFunc ? import_boolbase4.default.falseFunc : (elem) => !func(elem) && next2(elem); - }, - has(next2, subselect, options, _context, compileToken2) { - const { adapter: adapter2 } = options; - const opts = copyOptions(options); - opts.relativeSelector = true; - const context = subselect.some((s) => s.some(isTraversal2)) ? ( - // Used as a placeholder. Will be replaced with the actual element. - [PLACEHOLDER_ELEMENT] - ) : void 0; - const compiled = compileToken2(subselect, opts, context); - if (compiled === import_boolbase4.default.falseFunc) - return import_boolbase4.default.falseFunc; - const hasElement = ensureIsTag(compiled, adapter2); - if (context && compiled !== import_boolbase4.default.trueFunc) { - const { shouldTestNextSiblings = false } = compiled; - return (elem) => { - if (!next2(elem)) - return false; - context[0] = elem; - const childs = adapter2.getChildren(elem); - const nextElements = shouldTestNextSiblings ? [...childs, ...getNextSiblings(elem, adapter2)] : childs; - return adapter2.existsOne(hasElement, nextElements); - }; - } - return (elem) => next2(elem) && adapter2.existsOne(hasElement, adapter2.getChildren(elem)); - } - }; - - // node_modules/css-select/lib/esm/pseudo-selectors/index.js - function compilePseudoSelector(next2, selector, options, context, compileToken2) { - var _a2; - const { name, data: data2 } = selector; - if (Array.isArray(data2)) { - if (!(name in subselects)) { - throw new Error(`Unknown pseudo-class :${name}(${data2})`); - } - return subselects[name](next2, data2, options, context, compileToken2); - } - const userPseudo = (_a2 = options.pseudos) === null || _a2 === void 0 ? void 0 : _a2[name]; - const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name]; - if (typeof stringPseudo === "string") { - if (data2 != null) { - throw new Error(`Pseudo ${name} doesn't have any arguments`); - } - const alias = parse(stringPseudo); - return subselects["is"](next2, alias, options, context, compileToken2); - } - if (typeof userPseudo === "function") { - verifyPseudoArgs(userPseudo, name, data2, 1); - return (elem) => userPseudo(elem, data2) && next2(elem); - } - if (name in filters) { - return filters[name](next2, data2, options, context); - } - if (name in pseudos) { - const pseudo = pseudos[name]; - verifyPseudoArgs(pseudo, name, data2, 2); - return (elem) => pseudo(elem, options, data2) && next2(elem); - } - throw new Error(`Unknown pseudo-class :${name}`); - } - - // node_modules/css-select/lib/esm/general.js - function getElementParent(node, adapter2) { - const parent2 = adapter2.getParent(node); - if (parent2 && adapter2.isTag(parent2)) { - return parent2; - } - return null; - } - function compileGeneralSelector(next2, selector, options, context, compileToken2) { - const { adapter: adapter2, equals } = options; - switch (selector.type) { - case SelectorType.PseudoElement: { - throw new Error("Pseudo-elements are not supported by css-select"); - } - case SelectorType.ColumnCombinator: { - throw new Error("Column combinators are not yet supported by css-select"); - } - case SelectorType.Attribute: { - if (selector.namespace != null) { - throw new Error("Namespaced attributes are not yet supported by css-select"); - } - if (!options.xmlMode || options.lowerCaseAttributeNames) { - selector.name = selector.name.toLowerCase(); - } - return attributeRules[selector.action](next2, selector, options); - } - case SelectorType.Pseudo: { - return compilePseudoSelector(next2, selector, options, context, compileToken2); - } - case SelectorType.Tag: { - if (selector.namespace != null) { - throw new Error("Namespaced tag names are not yet supported by css-select"); - } - let { name } = selector; - if (!options.xmlMode || options.lowerCaseTags) { - name = name.toLowerCase(); - } - return function tag(elem) { - return adapter2.getName(elem) === name && next2(elem); - }; - } - case SelectorType.Descendant: { - if (options.cacheResults === false || typeof WeakSet === "undefined") { - return function descendant(elem) { - let current = elem; - while (current = getElementParent(current, adapter2)) { - if (next2(current)) { - return true; - } - } - return false; - }; - } - const isFalseCache = /* @__PURE__ */ new WeakSet(); - return function cachedDescendant(elem) { - let current = elem; - while (current = getElementParent(current, adapter2)) { - if (!isFalseCache.has(current)) { - if (adapter2.isTag(current) && next2(current)) { - return true; - } - isFalseCache.add(current); - } - } - return false; - }; - } - case "_flexibleDescendant": { - return function flexibleDescendant(elem) { - let current = elem; - do { - if (next2(current)) - return true; - } while (current = getElementParent(current, adapter2)); - return false; - }; - } - case SelectorType.Parent: { - return function parent2(elem) { - return adapter2.getChildren(elem).some((elem2) => adapter2.isTag(elem2) && next2(elem2)); - }; - } - case SelectorType.Child: { - return function child(elem) { - const parent2 = adapter2.getParent(elem); - return parent2 != null && adapter2.isTag(parent2) && next2(parent2); - }; - } - case SelectorType.Sibling: { - return function sibling(elem) { - const siblings2 = adapter2.getSiblings(elem); - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && next2(currentSibling)) { - return true; - } - } - return false; - }; - } - case SelectorType.Adjacent: { - if (adapter2.prevElementSibling) { - return function adjacent(elem) { - const previous = adapter2.prevElementSibling(elem); - return previous != null && next2(previous); - }; - } - return function adjacent(elem) { - const siblings2 = adapter2.getSiblings(elem); - let lastElement; - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling)) { - lastElement = currentSibling; - } - } - return !!lastElement && next2(lastElement); - }; - } - case SelectorType.Universal: { - if (selector.namespace != null && selector.namespace !== "*") { - throw new Error("Namespaced universal selectors are not yet supported by css-select"); - } - return next2; - } - } - } - - // node_modules/css-select/lib/esm/compile.js - function compile2(selector, options, context) { - const next2 = compileUnsafe(selector, options, context); - return ensureIsTag(next2, options.adapter); - } - function compileUnsafe(selector, options, context) { - const token = typeof selector === "string" ? parse(selector) : selector; - return compileToken(token, options, context); - } - function includesScopePseudo(t) { - return t.type === SelectorType.Pseudo && (t.name === "scope" || Array.isArray(t.data) && t.data.some((data2) => data2.some(includesScopePseudo))); - } - var DESCENDANT_TOKEN = { type: SelectorType.Descendant }; - var FLEXIBLE_DESCENDANT_TOKEN = { - type: "_flexibleDescendant" - }; - var SCOPE_TOKEN = { - type: SelectorType.Pseudo, - name: "scope", - data: null - }; - function absolutize(token, { adapter: adapter2 }, context) { - const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => { - const parent2 = adapter2.isTag(e) && adapter2.getParent(e); - return e === PLACEHOLDER_ELEMENT || parent2 && adapter2.isTag(parent2); - })); - for (const t of token) { - if (t.length > 0 && isTraversal2(t[0]) && t[0].type !== SelectorType.Descendant) { - } else if (hasContext && !t.some(includesScopePseudo)) { - t.unshift(DESCENDANT_TOKEN); - } else { - continue; - } - t.unshift(SCOPE_TOKEN); - } - } - function compileToken(token, options, context) { - var _a2; - token.forEach(sortByProcedure); - context = (_a2 = options.context) !== null && _a2 !== void 0 ? _a2 : context; - const isArrayContext = Array.isArray(context); - const finalContext = context && (Array.isArray(context) ? context : [context]); - if (options.relativeSelector !== false) { - absolutize(token, options, finalContext); - } else if (token.some((t) => t.length > 0 && isTraversal2(t[0]))) { - throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); - } - let shouldTestNextSiblings = false; - const query = token.map((rules) => { - if (rules.length >= 2) { - const [first2, second] = rules; - if (first2.type !== SelectorType.Pseudo || first2.name !== "scope") { - } else if (isArrayContext && second.type === SelectorType.Descendant) { - rules[1] = FLEXIBLE_DESCENDANT_TOKEN; - } else if (second.type === SelectorType.Adjacent || second.type === SelectorType.Sibling) { - shouldTestNextSiblings = true; - } - } - return compileRules(rules, options, finalContext); - }).reduce(reduceRules, import_boolbase5.default.falseFunc); - query.shouldTestNextSiblings = shouldTestNextSiblings; - return query; - } - function compileRules(rules, options, context) { - var _a2; - return rules.reduce((previous, rule) => previous === import_boolbase5.default.falseFunc ? import_boolbase5.default.falseFunc : compileGeneralSelector(previous, rule, options, context, compileToken), (_a2 = options.rootFunc) !== null && _a2 !== void 0 ? _a2 : import_boolbase5.default.trueFunc); - } - function reduceRules(a, b) { - if (b === import_boolbase5.default.falseFunc || a === import_boolbase5.default.trueFunc) { - return a; - } - if (a === import_boolbase5.default.falseFunc || b === import_boolbase5.default.trueFunc) { - return b; - } - return function combine(elem) { - return a(elem) || b(elem); - }; - } - - // node_modules/css-select/lib/esm/index.js - var defaultEquals = (a, b) => a === b; - var defaultOptions = { - adapter: esm_exports2, - equals: defaultEquals - }; - function convertOptionFormats(options) { - var _a2, _b, _c, _d; - const opts = options !== null && options !== void 0 ? options : defaultOptions; - (_a2 = opts.adapter) !== null && _a2 !== void 0 ? _a2 : opts.adapter = esm_exports2; - (_b = opts.equals) !== null && _b !== void 0 ? _b : opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals; - return opts; - } - function wrapCompile(func) { - return function addAdapter(selector, options, context) { - const opts = convertOptionFormats(options); - return func(selector, opts, context); - }; - } - var compile3 = wrapCompile(compile2); - var _compileUnsafe = wrapCompile(compileUnsafe); - var _compileToken = wrapCompile(compileToken); - function getSelectorFunc(searchFunc) { - return function select2(query, elements, options) { - const opts = convertOptionFormats(options); - if (typeof query !== "function") { - query = compileUnsafe(query, opts, elements); - } - const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings); - return searchFunc(query, filteredElements, opts); - }; - } - function prepareContext(elems, adapter2, shouldTestNextSiblings = false) { - if (shouldTestNextSiblings) { - elems = appendNextSiblings(elems, adapter2); - } - return Array.isArray(elems) ? adapter2.removeSubsets(elems) : adapter2.getChildren(elems); - } - function appendNextSiblings(elem, adapter2) { - const elems = Array.isArray(elem) ? elem.slice(0) : [elem]; - const elemsLength = elems.length; - for (let i = 0; i < elemsLength; i++) { - const nextSiblings = getNextSiblings(elems[i], adapter2); - elems.push(...nextSiblings); - } - return elems; - } - var selectAll = getSelectorFunc((query, elems, options) => query === import_boolbase6.default.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query, elems)); - var selectOne = getSelectorFunc((query, elems, options) => query === import_boolbase6.default.falseFunc || !elems || elems.length === 0 ? null : options.adapter.findOne(query, elems)); - - // node_modules/cheerio-select/lib/esm/index.js - var boolbase7 = __toESM(require_boolbase(), 1); - - // node_modules/cheerio-select/lib/esm/positionals.js - var filterNames = /* @__PURE__ */ new Set([ - "first", - "last", - "eq", - "gt", - "nth", - "lt", - "even", - "odd" - ]); - function isFilter(s) { - if (s.type !== "pseudo") - return false; - if (filterNames.has(s.name)) - return true; - if (s.name === "not" && Array.isArray(s.data)) { - return s.data.some((s2) => s2.some(isFilter)); - } - return false; - } - function getLimit(filter4, data2, partLimit) { - const num = data2 != null ? parseInt(data2, 10) : NaN; - switch (filter4) { - case "first": - return 1; - case "nth": - case "eq": - return isFinite(num) ? num >= 0 ? num + 1 : Infinity : 0; - case "lt": - return isFinite(num) ? num >= 0 ? Math.min(num, partLimit) : Infinity : 0; - case "gt": - return isFinite(num) ? Infinity : 0; - case "odd": - return 2 * partLimit; - case "even": - return 2 * partLimit - 1; - case "last": - case "not": - return Infinity; - } - } - - // node_modules/cheerio-select/lib/esm/helpers.js - function getDocumentRoot(node) { - while (node.parent) - node = node.parent; - return node; - } - function groupSelectors(selectors) { - const filteredSelectors = []; - const plainSelectors = []; - for (const selector of selectors) { - if (selector.some(isFilter)) { - filteredSelectors.push(selector); - } else { - plainSelectors.push(selector); - } - } - return [plainSelectors, filteredSelectors]; - } - - // node_modules/cheerio-select/lib/esm/index.js - var UNIVERSAL_SELECTOR = { - type: SelectorType.Universal, - namespace: null - }; - var SCOPE_PSEUDO = { - type: SelectorType.Pseudo, - name: "scope", - data: null - }; - function is2(element, selector, options = {}) { - return some([element], selector, options); - } - function some(elements, selector, options = {}) { - if (typeof selector === "function") - return elements.some(selector); - const [plain, filtered] = groupSelectors(parse(selector)); - return plain.length > 0 && elements.some(_compileToken(plain, options)) || filtered.some((sel) => filterBySelector(sel, elements, options).length > 0); - } - function filterByPosition(filter4, elems, data2, options) { - const num = typeof data2 === "string" ? parseInt(data2, 10) : NaN; - switch (filter4) { - case "first": - case "lt": - return elems; - case "last": - return elems.length > 0 ? [elems[elems.length - 1]] : elems; - case "nth": - case "eq": - return isFinite(num) && Math.abs(num) < elems.length ? [num < 0 ? elems[elems.length + num] : elems[num]] : []; - case "gt": - return isFinite(num) ? elems.slice(num + 1) : []; - case "even": - return elems.filter((_, i) => i % 2 === 0); - case "odd": - return elems.filter((_, i) => i % 2 === 1); - case "not": { - const filtered = new Set(filterParsed(data2, elems, options)); - return elems.filter((e) => !filtered.has(e)); - } - } - } - function filter2(selector, elements, options = {}) { - return filterParsed(parse(selector), elements, options); - } - function filterParsed(selector, elements, options) { - if (elements.length === 0) - return []; - const [plainSelectors, filteredSelectors] = groupSelectors(selector); - let found; - if (plainSelectors.length) { - const filtered = filterElements(elements, plainSelectors, options); - if (filteredSelectors.length === 0) { - return filtered; - } - if (filtered.length) { - found = new Set(filtered); - } - } - for (let i = 0; i < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i++) { - const filteredSelector = filteredSelectors[i]; - const missing = found ? elements.filter((e) => isTag2(e) && !found.has(e)) : elements; - if (missing.length === 0) - break; - const filtered = filterBySelector(filteredSelector, elements, options); - if (filtered.length) { - if (!found) { - if (i === filteredSelectors.length - 1) { - return filtered; - } - found = new Set(filtered); - } else { - filtered.forEach((el) => found.add(el)); - } - } - } - return typeof found !== "undefined" ? found.size === elements.length ? elements : ( - // Filter elements to preserve order - elements.filter((el) => found.has(el)) - ) : []; - } - function filterBySelector(selector, elements, options) { - var _a2; - if (selector.some(isTraversal)) { - const root2 = (_a2 = options.root) !== null && _a2 !== void 0 ? _a2 : getDocumentRoot(elements[0]); - const opts = { ...options, context: elements, relativeSelector: false }; - selector.push(SCOPE_PSEUDO); - return findFilterElements(root2, selector, opts, true, elements.length); - } - return findFilterElements(elements, selector, options, false, elements.length); - } - function select(selector, root2, options = {}, limit = Infinity) { - if (typeof selector === "function") { - return find2(root2, selector); - } - const [plain, filtered] = groupSelectors(parse(selector)); - const results = filtered.map((sel) => findFilterElements(root2, sel, options, true, limit)); - if (plain.length) { - results.push(findElements(root2, plain, options, limit)); - } - if (results.length === 0) { - return []; - } - if (results.length === 1) { - return results[0]; - } - return uniqueSort(results.reduce((a, b) => [...a, ...b])); - } - function findFilterElements(root2, selector, options, queryForSelector, totalLimit) { - const filterIndex = selector.findIndex(isFilter); - const sub = selector.slice(0, filterIndex); - const filter4 = selector[filterIndex]; - const partLimit = selector.length - 1 === filterIndex ? totalLimit : Infinity; - const limit = getLimit(filter4.name, filter4.data, partLimit); - if (limit === 0) - return []; - const elemsNoLimit = sub.length === 0 && !Array.isArray(root2) ? getChildren(root2).filter(isTag2) : sub.length === 0 ? (Array.isArray(root2) ? root2 : [root2]).filter(isTag2) : queryForSelector || sub.some(isTraversal) ? findElements(root2, [sub], options, limit) : filterElements(root2, [sub], options); - const elems = elemsNoLimit.slice(0, limit); - let result = filterByPosition(filter4.name, elems, filter4.data, options); - if (result.length === 0 || selector.length === filterIndex + 1) { - return result; - } - const remainingSelector = selector.slice(filterIndex + 1); - const remainingHasTraversal = remainingSelector.some(isTraversal); - if (remainingHasTraversal) { - if (isTraversal(remainingSelector[0])) { - const { type } = remainingSelector[0]; - if (type === SelectorType.Sibling || type === SelectorType.Adjacent) { - result = prepareContext(result, esm_exports2, true); - } - remainingSelector.unshift(UNIVERSAL_SELECTOR); - } - options = { - ...options, - // Avoid absolutizing the selector - relativeSelector: false, - /* - * Add a custom root func, to make sure traversals don't match elements - * that aren't a part of the considered tree. - */ - rootFunc: (el) => result.includes(el) - }; - } else if (options.rootFunc && options.rootFunc !== boolbase7.trueFunc) { - options = { ...options, rootFunc: boolbase7.trueFunc }; - } - return remainingSelector.some(isFilter) ? findFilterElements(result, remainingSelector, options, false, totalLimit) : remainingHasTraversal ? ( - // Query existing elements to resolve traversal. - findElements(result, [remainingSelector], options, totalLimit) - ) : ( - // If we don't have any more traversals, simply filter elements. - filterElements(result, [remainingSelector], options) - ); - } - function findElements(root2, sel, options, limit) { - const query = _compileToken(sel, options, root2); - return find2(root2, query, limit); - } - function find2(root2, query, limit = Infinity) { - const elems = prepareContext(root2, esm_exports2, query.shouldTestNextSiblings); - return find((node) => isTag2(node) && query(node), elems, true, limit); - } - function filterElements(elements, sel, options) { - const els = (Array.isArray(elements) ? elements : [elements]).filter(isTag2); - if (els.length === 0) - return els; - const query = _compileToken(sel, options); - return query === boolbase7.trueFunc ? els : els.filter(query); - } - - // node_modules/cheerio/dist/browser/api/traversing.js - var reSiblingSelector = /^\s*[+~]/; - function find3(selectorOrHaystack) { - if (!selectorOrHaystack) { - return this._make([]); - } - if (typeof selectorOrHaystack !== "string") { - const haystack = isCheerio(selectorOrHaystack) ? selectorOrHaystack.toArray() : [selectorOrHaystack]; - const context = this.toArray(); - return this._make(haystack.filter((elem) => context.some((node) => contains(node, elem)))); - } - return this._findBySelector(selectorOrHaystack, Number.POSITIVE_INFINITY); - } - function _findBySelector(selector, limit) { - var _a2; - const context = this.toArray(); - const elems = reSiblingSelector.test(selector) ? context : this.children().toArray(); - const options = { - context, - root: (_a2 = this._root) === null || _a2 === void 0 ? void 0 : _a2[0], - // Pass options that are recognized by `cheerio-select` - xmlMode: this.options.xmlMode, - lowerCaseTags: this.options.lowerCaseTags, - lowerCaseAttributeNames: this.options.lowerCaseAttributeNames, - pseudos: this.options.pseudos, - quirksMode: this.options.quirksMode - }; - return this._make(select(selector, elems, options, limit)); - } - function _getMatcher(matchMap) { - return function(fn, ...postFns) { - return function(selector) { - var _a2; - let matched = matchMap(fn, this); - if (selector) { - matched = filterArray(matched, selector, this.options.xmlMode, (_a2 = this._root) === null || _a2 === void 0 ? void 0 : _a2[0]); - } - return this._make( - // Post processing is only necessary if there is more than one element. - this.length > 1 && matched.length > 1 ? postFns.reduce((elems, fn2) => fn2(elems), matched) : matched - ); - }; - }; - } - var _matcher = _getMatcher((fn, elems) => { - let ret = []; - for (let i = 0; i < elems.length; i++) { - const value = fn(elems[i]); - if (value.length > 0) - ret = ret.concat(value); - } - return ret; - }); - var _singleMatcher = _getMatcher((fn, elems) => { - const ret = []; - for (let i = 0; i < elems.length; i++) { - const value = fn(elems[i]); - if (value !== null) { - ret.push(value); - } - } - return ret; - }); - function _matchUntil(nextElem, ...postFns) { - let matches = null; - const innerMatcher = _getMatcher((nextElem2, elems) => { - const matched = []; - domEach(elems, (elem) => { - for (let next2; next2 = nextElem2(elem); elem = next2) { - if (matches === null || matches === void 0 ? void 0 : matches(next2, matched.length)) - break; - matched.push(next2); - } - }); - return matched; - })(nextElem, ...postFns); - return function(selector, filterSelector) { - matches = typeof selector === "string" ? (elem) => is2(elem, selector, this.options) : selector ? getFilterFn(selector) : null; - const ret = innerMatcher.call(this, filterSelector); - matches = null; - return ret; - }; - } - function _removeDuplicates(elems) { - return elems.length > 1 ? Array.from(new Set(elems)) : elems; - } - var parent = _singleMatcher(({ parent: parent2 }) => parent2 && !isDocument(parent2) ? parent2 : null, _removeDuplicates); - var parents = _matcher((elem) => { - const matched = []; - while (elem.parent && !isDocument(elem.parent)) { - matched.push(elem.parent); - elem = elem.parent; - } - return matched; - }, uniqueSort, (elems) => elems.reverse()); - var parentsUntil = _matchUntil(({ parent: parent2 }) => parent2 && !isDocument(parent2) ? parent2 : null, uniqueSort, (elems) => elems.reverse()); - function closest(selector) { - var _a2; - const set = []; - if (!selector) { - return this._make(set); - } - const selectOpts = { - xmlMode: this.options.xmlMode, - root: (_a2 = this._root) === null || _a2 === void 0 ? void 0 : _a2[0] - }; - const selectFn = typeof selector === "string" ? (elem) => is2(elem, selector, selectOpts) : getFilterFn(selector); - domEach(this, (elem) => { - if (elem && !isDocument(elem) && !isTag2(elem)) { - elem = elem.parent; - } - while (elem && isTag2(elem)) { - if (selectFn(elem, 0)) { - if (!set.includes(elem)) { - set.push(elem); - } - break; - } - elem = elem.parent; - } - }); - return this._make(set); - } - var next = _singleMatcher((elem) => nextElementSibling(elem)); - var nextAll = _matcher((elem) => { - const matched = []; - while (elem.next) { - elem = elem.next; - if (isTag2(elem)) - matched.push(elem); - } - return matched; - }, _removeDuplicates); - var nextUntil = _matchUntil((el) => nextElementSibling(el), _removeDuplicates); - var prev = _singleMatcher((elem) => prevElementSibling(elem)); - var prevAll = _matcher((elem) => { - const matched = []; - while (elem.prev) { - elem = elem.prev; - if (isTag2(elem)) - matched.push(elem); - } - return matched; - }, _removeDuplicates); - var prevUntil = _matchUntil((el) => prevElementSibling(el), _removeDuplicates); - var siblings = _matcher((elem) => getSiblings(elem).filter((el) => isTag2(el) && el !== elem), uniqueSort); - var children = _matcher((elem) => getChildren(elem).filter(isTag2), _removeDuplicates); - function contents() { - const elems = this.toArray().reduce((newElems, elem) => hasChildren(elem) ? newElems.concat(elem.children) : newElems, []); - return this._make(elems); - } - function each(fn) { - let i = 0; - const len = this.length; - while (i < len && fn.call(this[i], i, this[i]) !== false) - ++i; - return this; - } - function map(fn) { - let elems = []; - for (let i = 0; i < this.length; i++) { - const el = this[i]; - const val2 = fn.call(el, i, el); - if (val2 != null) { - elems = elems.concat(val2); - } - } - return this._make(elems); - } - function getFilterFn(match) { - if (typeof match === "function") { - return (el, i) => match.call(el, i, el); - } - if (isCheerio(match)) { - return (el) => Array.prototype.includes.call(match, el); - } - return function(el) { - return match === el; - }; - } - function filter3(match) { - var _a2; - return this._make(filterArray(this.toArray(), match, this.options.xmlMode, (_a2 = this._root) === null || _a2 === void 0 ? void 0 : _a2[0])); - } - function filterArray(nodes, match, xmlMode, root2) { - return typeof match === "string" ? filter2(match, nodes, { xmlMode, root: root2 }) : nodes.filter(getFilterFn(match)); - } - function is3(selector) { - const nodes = this.toArray(); - return typeof selector === "string" ? some(nodes.filter(isTag2), selector, this.options) : selector ? nodes.some(getFilterFn(selector)) : false; - } - function not(match) { - let nodes = this.toArray(); - if (typeof match === "string") { - const matches = new Set(filter2(match, nodes, this.options)); - nodes = nodes.filter((el) => !matches.has(el)); - } else { - const filterFn = getFilterFn(match); - nodes = nodes.filter((el, i) => !filterFn(el, i)); - } - return this._make(nodes); - } - function has(selectorOrHaystack) { - return this.filter(typeof selectorOrHaystack === "string" ? ( - // Using the `:has` selector here short-circuits searches. - `:has(${selectorOrHaystack})` - ) : (_, el) => this._make(el).find(selectorOrHaystack).length > 0); - } - function first() { - return this.length > 1 ? this._make(this[0]) : this; - } - function last() { - return this.length > 0 ? this._make(this[this.length - 1]) : this; - } - function eq(i) { - var _a2; - i = +i; - if (i === 0 && this.length <= 1) - return this; - if (i < 0) - i = this.length + i; - return this._make((_a2 = this[i]) !== null && _a2 !== void 0 ? _a2 : []); - } - function get(i) { - if (i == null) { - return this.toArray(); - } - return this[i < 0 ? this.length + i : i]; - } - function toArray() { - return Array.prototype.slice.call(this); - } - function index(selectorOrNeedle) { - let $haystack; - let needle; - if (selectorOrNeedle == null) { - $haystack = this.parent().children(); - needle = this[0]; - } else if (typeof selectorOrNeedle === "string") { - $haystack = this._make(selectorOrNeedle); - needle = this[0]; - } else { - $haystack = this; - needle = isCheerio(selectorOrNeedle) ? selectorOrNeedle[0] : selectorOrNeedle; - } - return Array.prototype.indexOf.call($haystack, needle); - } - function slice(start, end2) { - return this._make(Array.prototype.slice.call(this, start, end2)); - } - function end() { - var _a2; - return (_a2 = this.prevObject) !== null && _a2 !== void 0 ? _a2 : this._make([]); - } - function add(other, context) { - const selection = this._make(other, context); - const contents2 = uniqueSort([...this.get(), ...selection.get()]); - return this._make(contents2); - } - function addBack(selector) { - return this.prevObject ? this.add(selector ? this.prevObject.filter(selector) : this.prevObject) : this; - } - - // node_modules/cheerio/dist/browser/api/manipulation.js - var manipulation_exports = {}; - __export(manipulation_exports, { - _makeDomArray: () => _makeDomArray, - after: () => after, - append: () => append2, - appendTo: () => appendTo, - before: () => before, - clone: () => clone, - empty: () => empty, - html: () => html2, - insertAfter: () => insertAfter, - insertBefore: () => insertBefore, - prepend: () => prepend2, - prependTo: () => prependTo, - remove: () => remove, - replaceWith: () => replaceWith, - text: () => text2, - toString: () => toString, - unwrap: () => unwrap, - wrap: () => wrap, - wrapAll: () => wrapAll, - wrapInner: () => wrapInner - }); - - // node_modules/cheerio/dist/browser/parse.js - function getParse(parser) { - return function parse6(content, options, isDocument2, context) { - if (typeof Buffer !== "undefined" && Buffer.isBuffer(content)) { - content = content.toString(); - } - if (typeof content === "string") { - return parser(content, options, isDocument2, context); - } - const doc = content; - if (!Array.isArray(doc) && isDocument(doc)) { - return doc; - } - const root2 = new Document([]); - update(doc, root2); - return root2; - }; - } - function update(newChilds, parent2) { - const arr = Array.isArray(newChilds) ? newChilds : [newChilds]; - if (parent2) { - parent2.children = arr; - } else { - parent2 = null; - } - for (let i = 0; i < arr.length; i++) { - const node = arr[i]; - if (node.parent && node.parent.children !== arr) { - removeElement(node); - } - if (parent2) { - node.prev = arr[i - 1] || null; - node.next = arr[i + 1] || null; - } else { - node.prev = node.next = null; - } - node.parent = parent2; - } - return parent2; - } - - // node_modules/cheerio/dist/browser/api/manipulation.js - function _makeDomArray(elem, clone2) { - if (elem == null) { - return []; - } - if (typeof elem === "string") { - return this._parse(elem, this.options, false, null).children.slice(0); - } - if ("length" in elem) { - if (elem.length === 1) { - return this._makeDomArray(elem[0], clone2); - } - const result = []; - for (let i = 0; i < elem.length; i++) { - const el = elem[i]; - if (typeof el === "object") { - if (el == null) { - continue; - } - if (!("length" in el)) { - result.push(clone2 ? cloneNode(el, true) : el); - continue; - } - } - result.push(...this._makeDomArray(el, clone2)); - } - return result; - } - return [clone2 ? cloneNode(elem, true) : elem]; - } - function _insert(concatenator) { - return function(...elems) { - const lastIdx = this.length - 1; - return domEach(this, (el, i) => { - if (!hasChildren(el)) - return; - const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems; - const dom = this._makeDomArray(domSrc, i < lastIdx); - concatenator(dom, el.children, el); - }); - }; - } - function uniqueSplice(array, spliceIdx, spliceCount, newElems, parent2) { - var _a2, _b; - const spliceArgs = [ - spliceIdx, - spliceCount, - ...newElems - ]; - const prev2 = spliceIdx === 0 ? null : array[spliceIdx - 1]; - const next2 = spliceIdx + spliceCount >= array.length ? null : array[spliceIdx + spliceCount]; - for (let idx = 0; idx < newElems.length; ++idx) { - const node = newElems[idx]; - const oldParent = node.parent; - if (oldParent) { - const oldSiblings = oldParent.children; - const prevIdx = oldSiblings.indexOf(node); - if (prevIdx > -1) { - oldParent.children.splice(prevIdx, 1); - if (parent2 === oldParent && spliceIdx > prevIdx) { - spliceArgs[0]--; - } - } - } - node.parent = parent2; - if (node.prev) { - node.prev.next = (_a2 = node.next) !== null && _a2 !== void 0 ? _a2 : null; - } - if (node.next) { - node.next.prev = (_b = node.prev) !== null && _b !== void 0 ? _b : null; - } - node.prev = idx === 0 ? prev2 : newElems[idx - 1]; - node.next = idx === newElems.length - 1 ? next2 : newElems[idx + 1]; - } - if (prev2) { - prev2.next = newElems[0]; - } - if (next2) { - next2.prev = newElems[newElems.length - 1]; - } - return array.splice(...spliceArgs); - } - function appendTo(target) { - const appendTarget = isCheerio(target) ? target : this._make(target); - appendTarget.append(this); - return this; - } - function prependTo(target) { - const prependTarget = isCheerio(target) ? target : this._make(target); - prependTarget.prepend(this); - return this; - } - var append2 = _insert((dom, children2, parent2) => { - uniqueSplice(children2, children2.length, 0, dom, parent2); - }); - var prepend2 = _insert((dom, children2, parent2) => { - uniqueSplice(children2, 0, 0, dom, parent2); - }); - function _wrap(insert) { - return function(wrapper) { - const lastIdx = this.length - 1; - const lastParent = this.parents().last(); - for (let i = 0; i < this.length; i++) { - const el = this[i]; - const wrap2 = typeof wrapper === "function" ? wrapper.call(el, i, el) : typeof wrapper === "string" && !isHtml(wrapper) ? lastParent.find(wrapper).clone() : wrapper; - const [wrapperDom] = this._makeDomArray(wrap2, i < lastIdx); - if (!wrapperDom || !hasChildren(wrapperDom)) - continue; - let elInsertLocation = wrapperDom; - let j = 0; - while (j < elInsertLocation.children.length) { - const child = elInsertLocation.children[j]; - if (isTag2(child)) { - elInsertLocation = child; - j = 0; - } else { - j++; - } - } - insert(el, elInsertLocation, [wrapperDom]); - } - return this; - }; - } - var wrap = _wrap((el, elInsertLocation, wrapperDom) => { - const { parent: parent2 } = el; - if (!parent2) - return; - const siblings2 = parent2.children; - const index2 = siblings2.indexOf(el); - update([el], elInsertLocation); - uniqueSplice(siblings2, index2, 0, wrapperDom, parent2); - }); - var wrapInner = _wrap((el, elInsertLocation, wrapperDom) => { - if (!hasChildren(el)) - return; - update(el.children, elInsertLocation); - update(wrapperDom, el); - }); - function unwrap(selector) { - this.parent(selector).not("body").each((_, el) => { - this._make(el).replaceWith(el.children); - }); - return this; - } - function wrapAll(wrapper) { - const el = this[0]; - if (el) { - const wrap2 = this._make(typeof wrapper === "function" ? wrapper.call(el, 0, el) : wrapper).insertBefore(el); - let elInsertLocation; - for (let i = 0; i < wrap2.length; i++) { - if (wrap2[i].type === "tag") - elInsertLocation = wrap2[i]; - } - let j = 0; - while (elInsertLocation && j < elInsertLocation.children.length) { - const child = elInsertLocation.children[j]; - if (child.type === "tag") { - elInsertLocation = child; - j = 0; - } else { - j++; - } - } - if (elInsertLocation) - this._make(elInsertLocation).append(this); - } - return this; - } - function after(...elems) { - const lastIdx = this.length - 1; - return domEach(this, (el, i) => { - if (!hasChildren(el) || !el.parent) { - return; - } - const siblings2 = el.parent.children; - const index2 = siblings2.indexOf(el); - if (index2 < 0) - return; - const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems; - const dom = this._makeDomArray(domSrc, i < lastIdx); - uniqueSplice(siblings2, index2 + 1, 0, dom, el.parent); - }); - } - function insertAfter(target) { - if (typeof target === "string") { - target = this._make(target); - } - this.remove(); - const clones = []; - for (const el of this._makeDomArray(target)) { - const clonedSelf = this.clone().toArray(); - const { parent: parent2 } = el; - if (!parent2) { - continue; - } - const siblings2 = parent2.children; - const index2 = siblings2.indexOf(el); - if (index2 < 0) - continue; - uniqueSplice(siblings2, index2 + 1, 0, clonedSelf, parent2); - clones.push(...clonedSelf); - } - return this._make(clones); - } - function before(...elems) { - const lastIdx = this.length - 1; - return domEach(this, (el, i) => { - if (!hasChildren(el) || !el.parent) { - return; - } - const siblings2 = el.parent.children; - const index2 = siblings2.indexOf(el); - if (index2 < 0) - return; - const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems; - const dom = this._makeDomArray(domSrc, i < lastIdx); - uniqueSplice(siblings2, index2, 0, dom, el.parent); - }); - } - function insertBefore(target) { - const targetArr = this._make(target); - this.remove(); - const clones = []; - domEach(targetArr, (el) => { - const clonedSelf = this.clone().toArray(); - const { parent: parent2 } = el; - if (!parent2) { - return; - } - const siblings2 = parent2.children; - const index2 = siblings2.indexOf(el); - if (index2 < 0) - return; - uniqueSplice(siblings2, index2, 0, clonedSelf, parent2); - clones.push(...clonedSelf); - }); - return this._make(clones); - } - function remove(selector) { - const elems = selector ? this.filter(selector) : this; - domEach(elems, (el) => { - removeElement(el); - el.prev = el.next = el.parent = null; - }); - return this; - } - function replaceWith(content) { - return domEach(this, (el, i) => { - const { parent: parent2 } = el; - if (!parent2) { - return; - } - const siblings2 = parent2.children; - const cont = typeof content === "function" ? content.call(el, i, el) : content; - const dom = this._makeDomArray(cont); - update(dom, null); - const index2 = siblings2.indexOf(el); - uniqueSplice(siblings2, index2, 1, dom, parent2); - if (!dom.includes(el)) { - el.parent = el.prev = el.next = null; - } - }); - } - function empty() { - return domEach(this, (el) => { - if (!hasChildren(el)) - return; - for (const child of el.children) { - child.next = child.prev = child.parent = null; - } - el.children.length = 0; - }); - } - function html2(str) { - if (str === void 0) { - const el = this[0]; - if (!el || !hasChildren(el)) - return null; - return this._render(el.children); - } - return domEach(this, (el) => { - if (!hasChildren(el)) - return; - for (const child of el.children) { - child.next = child.prev = child.parent = null; - } - const content = isCheerio(str) ? str.toArray() : this._parse(`${str}`, this.options, false, el).children; - update(content, el); - }); - } - function toString() { - return this._render(this); - } - function text2(str) { - if (str === void 0) { - return text(this); - } - if (typeof str === "function") { - return domEach(this, (el, i) => this._make(el).text(str.call(el, i, text([el])))); - } - return domEach(this, (el) => { - if (!hasChildren(el)) - return; - for (const child of el.children) { - child.next = child.prev = child.parent = null; - } - const textNode = new Text2(`${str}`); - update(textNode, el); - }); - } - function clone() { - const clone2 = Array.prototype.map.call(this.get(), (el) => cloneNode(el, true)); - const root2 = new Document(clone2); - for (const node of clone2) { - node.parent = root2; - } - return this._make(clone2); - } - - // node_modules/cheerio/dist/browser/api/css.js - var css_exports = {}; - __export(css_exports, { - css: () => css - }); - function css(prop2, val2) { - if (prop2 != null && val2 != null || // When `prop` is a "plain" object - typeof prop2 === "object" && !Array.isArray(prop2)) { - return domEach(this, (el, i) => { - if (isTag2(el)) { - setCss(el, prop2, val2, i); - } - }); - } - if (this.length === 0) { - return void 0; - } - return getCss(this[0], prop2); - } - function setCss(el, prop2, value, idx) { - if (typeof prop2 === "string") { - const styles = getCss(el); - const val2 = typeof value === "function" ? value.call(el, idx, styles[prop2]) : value; - if (val2 === "") { - delete styles[prop2]; - } else if (val2 != null) { - styles[prop2] = val2; - } - el.attribs["style"] = stringify(styles); - } else if (typeof prop2 === "object") { - const keys = Object.keys(prop2); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - setCss(el, k, prop2[k], i); - } - } - } - function getCss(el, prop2) { - if (!el || !isTag2(el)) - return; - const styles = parse3(el.attribs["style"]); - if (typeof prop2 === "string") { - return styles[prop2]; - } - if (Array.isArray(prop2)) { - const newStyles = {}; - for (const item of prop2) { - if (styles[item] != null) { - newStyles[item] = styles[item]; - } - } - return newStyles; - } - return styles; - } - function stringify(obj) { - return Object.keys(obj).reduce((str, prop2) => `${str}${str ? " " : ""}${prop2}: ${obj[prop2]};`, ""); - } - function parse3(styles) { - styles = (styles || "").trim(); - if (!styles) - return {}; - const obj = {}; - let key; - for (const str of styles.split(";")) { - const n = str.indexOf(":"); - if (n < 1 || n === str.length - 1) { - const trimmed = str.trimEnd(); - if (trimmed.length > 0 && key !== void 0) { - obj[key] += `;${trimmed}`; - } - } else { - key = str.slice(0, n).trim(); - obj[key] = str.slice(n + 1).trim(); - } - } - return obj; - } - - // node_modules/cheerio/dist/browser/api/forms.js - var forms_exports = {}; - __export(forms_exports, { - serialize: () => serialize, - serializeArray: () => serializeArray - }); - var submittableSelector = "input,select,textarea,keygen"; - var r20 = /%20/g; - var rCRLF = /\r?\n/g; - function serialize() { - const arr = this.serializeArray(); - const retArr = arr.map((data2) => `${encodeURIComponent(data2.name)}=${encodeURIComponent(data2.value)}`); - return retArr.join("&").replace(r20, "+"); - } - function serializeArray() { - return this.map((_, elem) => { - const $elem = this._make(elem); - if (isTag2(elem) && elem.name === "form") { - return $elem.find(submittableSelector).toArray(); - } - return $elem.filter(submittableSelector).toArray(); - }).filter( - // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`) - '[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))' - ).map((_, elem) => { - var _a2; - const $elem = this._make(elem); - const name = $elem.attr("name"); - const value = (_a2 = $elem.val()) !== null && _a2 !== void 0 ? _a2 : ""; - if (Array.isArray(value)) { - return value.map((val2) => ( - /* - * We trim replace any line endings (e.g. `\r` or `\r\n` with `\r\n`) to guarantee consistency across platforms - * These can occur inside of `<textarea>'s` - */ - { name, value: val2.replace(rCRLF, "\r\n") } - )); - } - return { name, value: value.replace(rCRLF, "\r\n") }; - }).toArray(); - } - - // node_modules/cheerio/dist/browser/api/extract.js - var extract_exports = {}; - __export(extract_exports, { - extract: () => extract2 - }); - function getExtractDescr(descr) { - var _a2; - if (typeof descr === "string") { - return { selector: descr, value: "textContent" }; - } - return { - selector: descr.selector, - value: (_a2 = descr.value) !== null && _a2 !== void 0 ? _a2 : "textContent" - }; - } - function extract2(map2) { - const ret = {}; - for (const key in map2) { - const descr = map2[key]; - const isArray = Array.isArray(descr); - const { selector, value } = getExtractDescr(isArray ? descr[0] : descr); - const fn = typeof value === "function" ? value : typeof value === "string" ? (el) => this._make(el).prop(value) : (el) => this._make(el).extract(value); - if (isArray) { - ret[key] = this._findBySelector(selector, Number.POSITIVE_INFINITY).map((_, el) => fn(el, key, ret)).get(); - } else { - const $2 = this._findBySelector(selector, 1); - ret[key] = $2.length > 0 ? fn($2[0], key, ret) : void 0; - } - } - return ret; - } - - // node_modules/cheerio/dist/browser/cheerio.js - var Cheerio = class { - /** - * Instance of cheerio. Methods are specified in the modules. Usage of this - * constructor is not recommended. Please use `$.load` instead. - * - * @private - * @param elements - The new selection. - * @param root - Sets the root node. - * @param options - Options for the instance. - */ - constructor(elements, root2, options) { - this.length = 0; - this.options = options; - this._root = root2; - if (elements) { - for (let idx = 0; idx < elements.length; idx++) { - this[idx] = elements[idx]; - } - this.length = elements.length; - } - } - }; - Cheerio.prototype.cheerio = "[cheerio object]"; - Cheerio.prototype.splice = Array.prototype.splice; - Cheerio.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator]; - Object.assign(Cheerio.prototype, attributes_exports, traversing_exports, manipulation_exports, css_exports, forms_exports, extract_exports); - - // node_modules/cheerio/dist/browser/load.js - function getLoad(parse6, render3) { - return function load2(content, options, isDocument2 = true) { - if (content == null) { - throw new Error("cheerio.load() expects a string"); - } - const internalOpts = flattenOptions(options); - const initialRoot = parse6(content, internalOpts, isDocument2, null); - class LoadedCheerio extends Cheerio { - _make(selector, context) { - const cheerio = initialize(selector, context); - cheerio.prevObject = this; - return cheerio; - } - _parse(content2, options2, isDocument3, context) { - return parse6(content2, options2, isDocument3, context); - } - _render(dom) { - return render3(dom, this.options); - } - } - function initialize(selector, context, root2 = initialRoot, opts) { - if (selector && isCheerio(selector)) - return selector; - const options2 = flattenOptions(opts, internalOpts); - const r = typeof root2 === "string" ? [parse6(root2, options2, false, null)] : "length" in root2 ? root2 : [root2]; - const rootInstance = isCheerio(r) ? r : new LoadedCheerio(r, null, options2); - rootInstance._root = rootInstance; - if (!selector) { - return new LoadedCheerio(void 0, rootInstance, options2); - } - const elements = typeof selector === "string" && isHtml(selector) ? ( - // $(<html>) - parse6(selector, options2, false, null).children - ) : isNode(selector) ? ( - // $(dom) - [selector] - ) : Array.isArray(selector) ? ( - // $([dom]) - selector - ) : void 0; - const instance = new LoadedCheerio(elements, rootInstance, options2); - if (elements) { - return instance; - } - if (typeof selector !== "string") { - throw new TypeError("Unexpected type of selector"); - } - let search = selector; - const searchContext = context ? ( - // If we don't have a context, maybe we have a root, from loading - typeof context === "string" ? isHtml(context) ? ( - // $('li', '<ul>...</ul>') - new LoadedCheerio([parse6(context, options2, false, null)], rootInstance, options2) - ) : ( - // $('li', 'ul') - (search = `${context} ${search}`, rootInstance) - ) : isCheerio(context) ? ( - // $('li', $) - context - ) : ( - // $('li', node), $('li', [nodes]) - new LoadedCheerio(Array.isArray(context) ? context : [context], rootInstance, options2) - ) - ) : rootInstance; - if (!searchContext) - return instance; - return searchContext.find(search); - } - Object.assign(initialize, static_exports, { - load: load2, - // `_root` and `_options` are used in static methods. - _root: initialRoot, - _options: internalOpts, - // Add `fn` for plugins - fn: LoadedCheerio.prototype, - // Add the prototype here to maintain `instanceof` behavior. - prototype: LoadedCheerio.prototype - }); - return initialize; - }; - } - function isNode(obj) { - return !!obj.name || obj.type === "root" || obj.type === "text" || obj.type === "comment"; - } - - // node_modules/parse5/dist/common/unicode.js - var UNDEFINED_CODE_POINTS = /* @__PURE__ */ new Set([ - 65534, - 65535, - 131070, - 131071, - 196606, - 196607, - 262142, - 262143, - 327678, - 327679, - 393214, - 393215, - 458750, - 458751, - 524286, - 524287, - 589822, - 589823, - 655358, - 655359, - 720894, - 720895, - 786430, - 786431, - 851966, - 851967, - 917502, - 917503, - 983038, - 983039, - 1048574, - 1048575, - 1114110, - 1114111 - ]); - var REPLACEMENT_CHARACTER = "\uFFFD"; - var CODE_POINTS; - (function(CODE_POINTS2) { - CODE_POINTS2[CODE_POINTS2["EOF"] = -1] = "EOF"; - CODE_POINTS2[CODE_POINTS2["NULL"] = 0] = "NULL"; - CODE_POINTS2[CODE_POINTS2["TABULATION"] = 9] = "TABULATION"; - CODE_POINTS2[CODE_POINTS2["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; - CODE_POINTS2[CODE_POINTS2["LINE_FEED"] = 10] = "LINE_FEED"; - CODE_POINTS2[CODE_POINTS2["FORM_FEED"] = 12] = "FORM_FEED"; - CODE_POINTS2[CODE_POINTS2["SPACE"] = 32] = "SPACE"; - CODE_POINTS2[CODE_POINTS2["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; - CODE_POINTS2[CODE_POINTS2["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; - CODE_POINTS2[CODE_POINTS2["AMPERSAND"] = 38] = "AMPERSAND"; - CODE_POINTS2[CODE_POINTS2["APOSTROPHE"] = 39] = "APOSTROPHE"; - CODE_POINTS2[CODE_POINTS2["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; - CODE_POINTS2[CODE_POINTS2["SOLIDUS"] = 47] = "SOLIDUS"; - CODE_POINTS2[CODE_POINTS2["DIGIT_0"] = 48] = "DIGIT_0"; - CODE_POINTS2[CODE_POINTS2["DIGIT_9"] = 57] = "DIGIT_9"; - CODE_POINTS2[CODE_POINTS2["SEMICOLON"] = 59] = "SEMICOLON"; - CODE_POINTS2[CODE_POINTS2["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; - CODE_POINTS2[CODE_POINTS2["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["QUESTION_MARK"] = 63] = "QUESTION_MARK"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; - CODE_POINTS2[CODE_POINTS2["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; - CODE_POINTS2[CODE_POINTS2["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; - })(CODE_POINTS || (CODE_POINTS = {})); - var SEQUENCES = { - DASH_DASH: "--", - CDATA_START: "[CDATA[", - DOCTYPE: "doctype", - SCRIPT: "script", - PUBLIC: "public", - SYSTEM: "system" - }; - function isSurrogate(cp) { - return cp >= 55296 && cp <= 57343; - } - function isSurrogatePair(cp) { - return cp >= 56320 && cp <= 57343; - } - function getSurrogatePairCodePoint(cp1, cp2) { - return (cp1 - 55296) * 1024 + 9216 + cp2; - } - function isControlCodePoint(cp) { - return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159; - } - function isUndefinedCodePoint(cp) { - return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp); - } - - // node_modules/parse5/dist/common/error-codes.js - var ERR; - (function(ERR2) { - ERR2["controlCharacterInInputStream"] = "control-character-in-input-stream"; - ERR2["noncharacterInInputStream"] = "noncharacter-in-input-stream"; - ERR2["surrogateInInputStream"] = "surrogate-in-input-stream"; - ERR2["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; - ERR2["endTagWithAttributes"] = "end-tag-with-attributes"; - ERR2["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; - ERR2["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; - ERR2["unexpectedNullCharacter"] = "unexpected-null-character"; - ERR2["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; - ERR2["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; - ERR2["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; - ERR2["missingEndTagName"] = "missing-end-tag-name"; - ERR2["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; - ERR2["unknownNamedCharacterReference"] = "unknown-named-character-reference"; - ERR2["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; - ERR2["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; - ERR2["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; - ERR2["eofBeforeTagName"] = "eof-before-tag-name"; - ERR2["eofInTag"] = "eof-in-tag"; - ERR2["missingAttributeValue"] = "missing-attribute-value"; - ERR2["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; - ERR2["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; - ERR2["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; - ERR2["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; - ERR2["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; - ERR2["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; - ERR2["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; - ERR2["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; - ERR2["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; - ERR2["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; - ERR2["cdataInHtmlContent"] = "cdata-in-html-content"; - ERR2["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; - ERR2["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; - ERR2["eofInDoctype"] = "eof-in-doctype"; - ERR2["nestedComment"] = "nested-comment"; - ERR2["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; - ERR2["eofInComment"] = "eof-in-comment"; - ERR2["incorrectlyClosedComment"] = "incorrectly-closed-comment"; - ERR2["eofInCdata"] = "eof-in-cdata"; - ERR2["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; - ERR2["nullCharacterReference"] = "null-character-reference"; - ERR2["surrogateCharacterReference"] = "surrogate-character-reference"; - ERR2["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; - ERR2["controlCharacterReference"] = "control-character-reference"; - ERR2["noncharacterCharacterReference"] = "noncharacter-character-reference"; - ERR2["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; - ERR2["missingDoctypeName"] = "missing-doctype-name"; - ERR2["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; - ERR2["duplicateAttribute"] = "duplicate-attribute"; - ERR2["nonConformingDoctype"] = "non-conforming-doctype"; - ERR2["missingDoctype"] = "missing-doctype"; - ERR2["misplacedDoctype"] = "misplaced-doctype"; - ERR2["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; - ERR2["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; - ERR2["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; - ERR2["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; - ERR2["abandonedHeadElementChild"] = "abandoned-head-element-child"; - ERR2["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; - ERR2["nestedNoscriptInHead"] = "nested-noscript-in-head"; - ERR2["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; - })(ERR || (ERR = {})); - - // node_modules/parse5/dist/tokenizer/preprocessor.js - var DEFAULT_BUFFER_WATERLINE = 1 << 16; - var Preprocessor = class { - constructor(handler) { - this.handler = handler; - this.html = ""; - this.pos = -1; - this.lastGapPos = -2; - this.gapStack = []; - this.skipNextNewLine = false; - this.lastChunkWritten = false; - this.endOfChunkHit = false; - this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; - this.isEol = false; - this.lineStartPos = 0; - this.droppedBufferSize = 0; - this.line = 1; - this.lastErrOffset = -1; - } - /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ - get col() { - return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); - } - get offset() { - return this.droppedBufferSize + this.pos; - } - getError(code, cpOffset) { - const { line, col, offset } = this; - const startCol = col + cpOffset; - const startOffset = offset + cpOffset; - return { - code, - startLine: line, - endLine: line, - startCol, - endCol: startCol, - startOffset, - endOffset: startOffset - }; - } - _err(code) { - if (this.handler.onParseError && this.lastErrOffset !== this.offset) { - this.lastErrOffset = this.offset; - this.handler.onParseError(this.getError(code, 0)); - } - } - _addGap() { - this.gapStack.push(this.lastGapPos); - this.lastGapPos = this.pos; - } - _processSurrogate(cp) { - if (this.pos !== this.html.length - 1) { - const nextCp = this.html.charCodeAt(this.pos + 1); - if (isSurrogatePair(nextCp)) { - this.pos++; - this._addGap(); - return getSurrogatePairCodePoint(cp, nextCp); - } - } else if (!this.lastChunkWritten) { - this.endOfChunkHit = true; - return CODE_POINTS.EOF; - } - this._err(ERR.surrogateInInputStream); - return cp; - } - willDropParsedChunk() { - return this.pos > this.bufferWaterline; - } - dropParsedChunk() { - if (this.willDropParsedChunk()) { - this.html = this.html.substring(this.pos); - this.lineStartPos -= this.pos; - this.droppedBufferSize += this.pos; - this.pos = 0; - this.lastGapPos = -2; - this.gapStack.length = 0; - } - } - write(chunk, isLastChunk) { - if (this.html.length > 0) { - this.html += chunk; - } else { - this.html = chunk; - } - this.endOfChunkHit = false; - this.lastChunkWritten = isLastChunk; - } - insertHtmlAtCurrentPos(chunk) { - this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); - this.endOfChunkHit = false; - } - startsWith(pattern, caseSensitive) { - if (this.pos + pattern.length > this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return false; - } - if (caseSensitive) { - return this.html.startsWith(pattern, this.pos); - } - for (let i = 0; i < pattern.length; i++) { - const cp = this.html.charCodeAt(this.pos + i) | 32; - if (cp !== pattern.charCodeAt(i)) { - return false; - } - } - return true; - } - peek(offset) { - const pos = this.pos + offset; - if (pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - const code = this.html.charCodeAt(pos); - return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code; - } - advance() { - this.pos++; - if (this.isEol) { - this.isEol = false; - this.line++; - this.lineStartPos = this.pos; - } - if (this.pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - let cp = this.html.charCodeAt(this.pos); - if (cp === CODE_POINTS.CARRIAGE_RETURN) { - this.isEol = true; - this.skipNextNewLine = true; - return CODE_POINTS.LINE_FEED; - } - if (cp === CODE_POINTS.LINE_FEED) { - this.isEol = true; - if (this.skipNextNewLine) { - this.line--; - this.skipNextNewLine = false; - this._addGap(); - return this.advance(); - } - } - this.skipNextNewLine = false; - if (isSurrogate(cp)) { - cp = this._processSurrogate(cp); - } - const isCommonValidRange = this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976; - if (!isCommonValidRange) { - this._checkForProblematicCharacters(cp); - } - return cp; - } - _checkForProblematicCharacters(cp) { - if (isControlCodePoint(cp)) { - this._err(ERR.controlCharacterInInputStream); - } else if (isUndefinedCodePoint(cp)) { - this._err(ERR.noncharacterInInputStream); - } - } - retreat(count) { - this.pos -= count; - while (this.pos < this.lastGapPos) { - this.lastGapPos = this.gapStack.pop(); - this.pos--; - } - this.isEol = false; - } - }; - - // node_modules/parse5/dist/common/token.js - var TokenType; - (function(TokenType2) { - TokenType2[TokenType2["CHARACTER"] = 0] = "CHARACTER"; - TokenType2[TokenType2["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; - TokenType2[TokenType2["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; - TokenType2[TokenType2["START_TAG"] = 3] = "START_TAG"; - TokenType2[TokenType2["END_TAG"] = 4] = "END_TAG"; - TokenType2[TokenType2["COMMENT"] = 5] = "COMMENT"; - TokenType2[TokenType2["DOCTYPE"] = 6] = "DOCTYPE"; - TokenType2[TokenType2["EOF"] = 7] = "EOF"; - TokenType2[TokenType2["HIBERNATION"] = 8] = "HIBERNATION"; - })(TokenType || (TokenType = {})); - function getTokenAttr(token, attrName) { - for (let i = token.attrs.length - 1; i >= 0; i--) { - if (token.attrs[i].name === attrName) { - return token.attrs[i].value; - } - } - return null; - } - - // node_modules/parse5/dist/common/html.js - var html_exports = {}; - __export(html_exports, { - ATTRS: () => ATTRS, - DOCUMENT_MODE: () => DOCUMENT_MODE, - NS: () => NS, - NUMBERED_HEADERS: () => NUMBERED_HEADERS, - SPECIAL_ELEMENTS: () => SPECIAL_ELEMENTS, - TAG_ID: () => TAG_ID, - TAG_NAMES: () => TAG_NAMES, - getTagID: () => getTagID, - hasUnescapedText: () => hasUnescapedText - }); - var NS; - (function(NS2) { - NS2["HTML"] = "http://www.w3.org/1999/xhtml"; - NS2["MATHML"] = "http://www.w3.org/1998/Math/MathML"; - NS2["SVG"] = "http://www.w3.org/2000/svg"; - NS2["XLINK"] = "http://www.w3.org/1999/xlink"; - NS2["XML"] = "http://www.w3.org/XML/1998/namespace"; - NS2["XMLNS"] = "http://www.w3.org/2000/xmlns/"; - })(NS || (NS = {})); - var ATTRS; - (function(ATTRS2) { - ATTRS2["TYPE"] = "type"; - ATTRS2["ACTION"] = "action"; - ATTRS2["ENCODING"] = "encoding"; - ATTRS2["PROMPT"] = "prompt"; - ATTRS2["NAME"] = "name"; - ATTRS2["COLOR"] = "color"; - ATTRS2["FACE"] = "face"; - ATTRS2["SIZE"] = "size"; - })(ATTRS || (ATTRS = {})); - var DOCUMENT_MODE; - (function(DOCUMENT_MODE2) { - DOCUMENT_MODE2["NO_QUIRKS"] = "no-quirks"; - DOCUMENT_MODE2["QUIRKS"] = "quirks"; - DOCUMENT_MODE2["LIMITED_QUIRKS"] = "limited-quirks"; - })(DOCUMENT_MODE || (DOCUMENT_MODE = {})); - var TAG_NAMES; - (function(TAG_NAMES2) { - TAG_NAMES2["A"] = "a"; - TAG_NAMES2["ADDRESS"] = "address"; - TAG_NAMES2["ANNOTATION_XML"] = "annotation-xml"; - TAG_NAMES2["APPLET"] = "applet"; - TAG_NAMES2["AREA"] = "area"; - TAG_NAMES2["ARTICLE"] = "article"; - TAG_NAMES2["ASIDE"] = "aside"; - TAG_NAMES2["B"] = "b"; - TAG_NAMES2["BASE"] = "base"; - TAG_NAMES2["BASEFONT"] = "basefont"; - TAG_NAMES2["BGSOUND"] = "bgsound"; - TAG_NAMES2["BIG"] = "big"; - TAG_NAMES2["BLOCKQUOTE"] = "blockquote"; - TAG_NAMES2["BODY"] = "body"; - TAG_NAMES2["BR"] = "br"; - TAG_NAMES2["BUTTON"] = "button"; - TAG_NAMES2["CAPTION"] = "caption"; - TAG_NAMES2["CENTER"] = "center"; - TAG_NAMES2["CODE"] = "code"; - TAG_NAMES2["COL"] = "col"; - TAG_NAMES2["COLGROUP"] = "colgroup"; - TAG_NAMES2["DD"] = "dd"; - TAG_NAMES2["DESC"] = "desc"; - TAG_NAMES2["DETAILS"] = "details"; - TAG_NAMES2["DIALOG"] = "dialog"; - TAG_NAMES2["DIR"] = "dir"; - TAG_NAMES2["DIV"] = "div"; - TAG_NAMES2["DL"] = "dl"; - TAG_NAMES2["DT"] = "dt"; - TAG_NAMES2["EM"] = "em"; - TAG_NAMES2["EMBED"] = "embed"; - TAG_NAMES2["FIELDSET"] = "fieldset"; - TAG_NAMES2["FIGCAPTION"] = "figcaption"; - TAG_NAMES2["FIGURE"] = "figure"; - TAG_NAMES2["FONT"] = "font"; - TAG_NAMES2["FOOTER"] = "footer"; - TAG_NAMES2["FOREIGN_OBJECT"] = "foreignObject"; - TAG_NAMES2["FORM"] = "form"; - TAG_NAMES2["FRAME"] = "frame"; - TAG_NAMES2["FRAMESET"] = "frameset"; - TAG_NAMES2["H1"] = "h1"; - TAG_NAMES2["H2"] = "h2"; - TAG_NAMES2["H3"] = "h3"; - TAG_NAMES2["H4"] = "h4"; - TAG_NAMES2["H5"] = "h5"; - TAG_NAMES2["H6"] = "h6"; - TAG_NAMES2["HEAD"] = "head"; - TAG_NAMES2["HEADER"] = "header"; - TAG_NAMES2["HGROUP"] = "hgroup"; - TAG_NAMES2["HR"] = "hr"; - TAG_NAMES2["HTML"] = "html"; - TAG_NAMES2["I"] = "i"; - TAG_NAMES2["IMG"] = "img"; - TAG_NAMES2["IMAGE"] = "image"; - TAG_NAMES2["INPUT"] = "input"; - TAG_NAMES2["IFRAME"] = "iframe"; - TAG_NAMES2["KEYGEN"] = "keygen"; - TAG_NAMES2["LABEL"] = "label"; - TAG_NAMES2["LI"] = "li"; - TAG_NAMES2["LINK"] = "link"; - TAG_NAMES2["LISTING"] = "listing"; - TAG_NAMES2["MAIN"] = "main"; - TAG_NAMES2["MALIGNMARK"] = "malignmark"; - TAG_NAMES2["MARQUEE"] = "marquee"; - TAG_NAMES2["MATH"] = "math"; - TAG_NAMES2["MENU"] = "menu"; - TAG_NAMES2["META"] = "meta"; - TAG_NAMES2["MGLYPH"] = "mglyph"; - TAG_NAMES2["MI"] = "mi"; - TAG_NAMES2["MO"] = "mo"; - TAG_NAMES2["MN"] = "mn"; - TAG_NAMES2["MS"] = "ms"; - TAG_NAMES2["MTEXT"] = "mtext"; - TAG_NAMES2["NAV"] = "nav"; - TAG_NAMES2["NOBR"] = "nobr"; - TAG_NAMES2["NOFRAMES"] = "noframes"; - TAG_NAMES2["NOEMBED"] = "noembed"; - TAG_NAMES2["NOSCRIPT"] = "noscript"; - TAG_NAMES2["OBJECT"] = "object"; - TAG_NAMES2["OL"] = "ol"; - TAG_NAMES2["OPTGROUP"] = "optgroup"; - TAG_NAMES2["OPTION"] = "option"; - TAG_NAMES2["P"] = "p"; - TAG_NAMES2["PARAM"] = "param"; - TAG_NAMES2["PLAINTEXT"] = "plaintext"; - TAG_NAMES2["PRE"] = "pre"; - TAG_NAMES2["RB"] = "rb"; - TAG_NAMES2["RP"] = "rp"; - TAG_NAMES2["RT"] = "rt"; - TAG_NAMES2["RTC"] = "rtc"; - TAG_NAMES2["RUBY"] = "ruby"; - TAG_NAMES2["S"] = "s"; - TAG_NAMES2["SCRIPT"] = "script"; - TAG_NAMES2["SEARCH"] = "search"; - TAG_NAMES2["SECTION"] = "section"; - TAG_NAMES2["SELECT"] = "select"; - TAG_NAMES2["SOURCE"] = "source"; - TAG_NAMES2["SMALL"] = "small"; - TAG_NAMES2["SPAN"] = "span"; - TAG_NAMES2["STRIKE"] = "strike"; - TAG_NAMES2["STRONG"] = "strong"; - TAG_NAMES2["STYLE"] = "style"; - TAG_NAMES2["SUB"] = "sub"; - TAG_NAMES2["SUMMARY"] = "summary"; - TAG_NAMES2["SUP"] = "sup"; - TAG_NAMES2["TABLE"] = "table"; - TAG_NAMES2["TBODY"] = "tbody"; - TAG_NAMES2["TEMPLATE"] = "template"; - TAG_NAMES2["TEXTAREA"] = "textarea"; - TAG_NAMES2["TFOOT"] = "tfoot"; - TAG_NAMES2["TD"] = "td"; - TAG_NAMES2["TH"] = "th"; - TAG_NAMES2["THEAD"] = "thead"; - TAG_NAMES2["TITLE"] = "title"; - TAG_NAMES2["TR"] = "tr"; - TAG_NAMES2["TRACK"] = "track"; - TAG_NAMES2["TT"] = "tt"; - TAG_NAMES2["U"] = "u"; - TAG_NAMES2["UL"] = "ul"; - TAG_NAMES2["SVG"] = "svg"; - TAG_NAMES2["VAR"] = "var"; - TAG_NAMES2["WBR"] = "wbr"; - TAG_NAMES2["XMP"] = "xmp"; - })(TAG_NAMES || (TAG_NAMES = {})); - var TAG_ID; - (function(TAG_ID2) { - TAG_ID2[TAG_ID2["UNKNOWN"] = 0] = "UNKNOWN"; - TAG_ID2[TAG_ID2["A"] = 1] = "A"; - TAG_ID2[TAG_ID2["ADDRESS"] = 2] = "ADDRESS"; - TAG_ID2[TAG_ID2["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; - TAG_ID2[TAG_ID2["APPLET"] = 4] = "APPLET"; - TAG_ID2[TAG_ID2["AREA"] = 5] = "AREA"; - TAG_ID2[TAG_ID2["ARTICLE"] = 6] = "ARTICLE"; - TAG_ID2[TAG_ID2["ASIDE"] = 7] = "ASIDE"; - TAG_ID2[TAG_ID2["B"] = 8] = "B"; - TAG_ID2[TAG_ID2["BASE"] = 9] = "BASE"; - TAG_ID2[TAG_ID2["BASEFONT"] = 10] = "BASEFONT"; - TAG_ID2[TAG_ID2["BGSOUND"] = 11] = "BGSOUND"; - TAG_ID2[TAG_ID2["BIG"] = 12] = "BIG"; - TAG_ID2[TAG_ID2["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; - TAG_ID2[TAG_ID2["BODY"] = 14] = "BODY"; - TAG_ID2[TAG_ID2["BR"] = 15] = "BR"; - TAG_ID2[TAG_ID2["BUTTON"] = 16] = "BUTTON"; - TAG_ID2[TAG_ID2["CAPTION"] = 17] = "CAPTION"; - TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER"; - TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE"; - TAG_ID2[TAG_ID2["COL"] = 20] = "COL"; - TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP"; - TAG_ID2[TAG_ID2["DD"] = 22] = "DD"; - TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC"; - TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS"; - TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG"; - TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR"; - TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV"; - TAG_ID2[TAG_ID2["DL"] = 28] = "DL"; - TAG_ID2[TAG_ID2["DT"] = 29] = "DT"; - TAG_ID2[TAG_ID2["EM"] = 30] = "EM"; - TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED"; - TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET"; - TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION"; - TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE"; - TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT"; - TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER"; - TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; - TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM"; - TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME"; - TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET"; - TAG_ID2[TAG_ID2["H1"] = 41] = "H1"; - TAG_ID2[TAG_ID2["H2"] = 42] = "H2"; - TAG_ID2[TAG_ID2["H3"] = 43] = "H3"; - TAG_ID2[TAG_ID2["H4"] = 44] = "H4"; - TAG_ID2[TAG_ID2["H5"] = 45] = "H5"; - TAG_ID2[TAG_ID2["H6"] = 46] = "H6"; - TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD"; - TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER"; - TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP"; - TAG_ID2[TAG_ID2["HR"] = 50] = "HR"; - TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML"; - TAG_ID2[TAG_ID2["I"] = 52] = "I"; - TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG"; - TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE"; - TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT"; - TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME"; - TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN"; - TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL"; - TAG_ID2[TAG_ID2["LI"] = 59] = "LI"; - TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK"; - TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING"; - TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN"; - TAG_ID2[TAG_ID2["MALIGNMARK"] = 63] = "MALIGNMARK"; - TAG_ID2[TAG_ID2["MARQUEE"] = 64] = "MARQUEE"; - TAG_ID2[TAG_ID2["MATH"] = 65] = "MATH"; - TAG_ID2[TAG_ID2["MENU"] = 66] = "MENU"; - TAG_ID2[TAG_ID2["META"] = 67] = "META"; - TAG_ID2[TAG_ID2["MGLYPH"] = 68] = "MGLYPH"; - TAG_ID2[TAG_ID2["MI"] = 69] = "MI"; - TAG_ID2[TAG_ID2["MO"] = 70] = "MO"; - TAG_ID2[TAG_ID2["MN"] = 71] = "MN"; - TAG_ID2[TAG_ID2["MS"] = 72] = "MS"; - TAG_ID2[TAG_ID2["MTEXT"] = 73] = "MTEXT"; - TAG_ID2[TAG_ID2["NAV"] = 74] = "NAV"; - TAG_ID2[TAG_ID2["NOBR"] = 75] = "NOBR"; - TAG_ID2[TAG_ID2["NOFRAMES"] = 76] = "NOFRAMES"; - TAG_ID2[TAG_ID2["NOEMBED"] = 77] = "NOEMBED"; - TAG_ID2[TAG_ID2["NOSCRIPT"] = 78] = "NOSCRIPT"; - TAG_ID2[TAG_ID2["OBJECT"] = 79] = "OBJECT"; - TAG_ID2[TAG_ID2["OL"] = 80] = "OL"; - TAG_ID2[TAG_ID2["OPTGROUP"] = 81] = "OPTGROUP"; - TAG_ID2[TAG_ID2["OPTION"] = 82] = "OPTION"; - TAG_ID2[TAG_ID2["P"] = 83] = "P"; - TAG_ID2[TAG_ID2["PARAM"] = 84] = "PARAM"; - TAG_ID2[TAG_ID2["PLAINTEXT"] = 85] = "PLAINTEXT"; - TAG_ID2[TAG_ID2["PRE"] = 86] = "PRE"; - TAG_ID2[TAG_ID2["RB"] = 87] = "RB"; - TAG_ID2[TAG_ID2["RP"] = 88] = "RP"; - TAG_ID2[TAG_ID2["RT"] = 89] = "RT"; - TAG_ID2[TAG_ID2["RTC"] = 90] = "RTC"; - TAG_ID2[TAG_ID2["RUBY"] = 91] = "RUBY"; - TAG_ID2[TAG_ID2["S"] = 92] = "S"; - TAG_ID2[TAG_ID2["SCRIPT"] = 93] = "SCRIPT"; - TAG_ID2[TAG_ID2["SEARCH"] = 94] = "SEARCH"; - TAG_ID2[TAG_ID2["SECTION"] = 95] = "SECTION"; - TAG_ID2[TAG_ID2["SELECT"] = 96] = "SELECT"; - TAG_ID2[TAG_ID2["SOURCE"] = 97] = "SOURCE"; - TAG_ID2[TAG_ID2["SMALL"] = 98] = "SMALL"; - TAG_ID2[TAG_ID2["SPAN"] = 99] = "SPAN"; - TAG_ID2[TAG_ID2["STRIKE"] = 100] = "STRIKE"; - TAG_ID2[TAG_ID2["STRONG"] = 101] = "STRONG"; - TAG_ID2[TAG_ID2["STYLE"] = 102] = "STYLE"; - TAG_ID2[TAG_ID2["SUB"] = 103] = "SUB"; - TAG_ID2[TAG_ID2["SUMMARY"] = 104] = "SUMMARY"; - TAG_ID2[TAG_ID2["SUP"] = 105] = "SUP"; - TAG_ID2[TAG_ID2["TABLE"] = 106] = "TABLE"; - TAG_ID2[TAG_ID2["TBODY"] = 107] = "TBODY"; - TAG_ID2[TAG_ID2["TEMPLATE"] = 108] = "TEMPLATE"; - TAG_ID2[TAG_ID2["TEXTAREA"] = 109] = "TEXTAREA"; - TAG_ID2[TAG_ID2["TFOOT"] = 110] = "TFOOT"; - TAG_ID2[TAG_ID2["TD"] = 111] = "TD"; - TAG_ID2[TAG_ID2["TH"] = 112] = "TH"; - TAG_ID2[TAG_ID2["THEAD"] = 113] = "THEAD"; - TAG_ID2[TAG_ID2["TITLE"] = 114] = "TITLE"; - TAG_ID2[TAG_ID2["TR"] = 115] = "TR"; - TAG_ID2[TAG_ID2["TRACK"] = 116] = "TRACK"; - TAG_ID2[TAG_ID2["TT"] = 117] = "TT"; - TAG_ID2[TAG_ID2["U"] = 118] = "U"; - TAG_ID2[TAG_ID2["UL"] = 119] = "UL"; - TAG_ID2[TAG_ID2["SVG"] = 120] = "SVG"; - TAG_ID2[TAG_ID2["VAR"] = 121] = "VAR"; - TAG_ID2[TAG_ID2["WBR"] = 122] = "WBR"; - TAG_ID2[TAG_ID2["XMP"] = 123] = "XMP"; - })(TAG_ID || (TAG_ID = {})); - var TAG_NAME_TO_ID = /* @__PURE__ */ new Map([ - [TAG_NAMES.A, TAG_ID.A], - [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], - [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], - [TAG_NAMES.APPLET, TAG_ID.APPLET], - [TAG_NAMES.AREA, TAG_ID.AREA], - [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], - [TAG_NAMES.ASIDE, TAG_ID.ASIDE], - [TAG_NAMES.B, TAG_ID.B], - [TAG_NAMES.BASE, TAG_ID.BASE], - [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], - [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], - [TAG_NAMES.BIG, TAG_ID.BIG], - [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], - [TAG_NAMES.BODY, TAG_ID.BODY], - [TAG_NAMES.BR, TAG_ID.BR], - [TAG_NAMES.BUTTON, TAG_ID.BUTTON], - [TAG_NAMES.CAPTION, TAG_ID.CAPTION], - [TAG_NAMES.CENTER, TAG_ID.CENTER], - [TAG_NAMES.CODE, TAG_ID.CODE], - [TAG_NAMES.COL, TAG_ID.COL], - [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], - [TAG_NAMES.DD, TAG_ID.DD], - [TAG_NAMES.DESC, TAG_ID.DESC], - [TAG_NAMES.DETAILS, TAG_ID.DETAILS], - [TAG_NAMES.DIALOG, TAG_ID.DIALOG], - [TAG_NAMES.DIR, TAG_ID.DIR], - [TAG_NAMES.DIV, TAG_ID.DIV], - [TAG_NAMES.DL, TAG_ID.DL], - [TAG_NAMES.DT, TAG_ID.DT], - [TAG_NAMES.EM, TAG_ID.EM], - [TAG_NAMES.EMBED, TAG_ID.EMBED], - [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], - [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], - [TAG_NAMES.FIGURE, TAG_ID.FIGURE], - [TAG_NAMES.FONT, TAG_ID.FONT], - [TAG_NAMES.FOOTER, TAG_ID.FOOTER], - [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], - [TAG_NAMES.FORM, TAG_ID.FORM], - [TAG_NAMES.FRAME, TAG_ID.FRAME], - [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], - [TAG_NAMES.H1, TAG_ID.H1], - [TAG_NAMES.H2, TAG_ID.H2], - [TAG_NAMES.H3, TAG_ID.H3], - [TAG_NAMES.H4, TAG_ID.H4], - [TAG_NAMES.H5, TAG_ID.H5], - [TAG_NAMES.H6, TAG_ID.H6], - [TAG_NAMES.HEAD, TAG_ID.HEAD], - [TAG_NAMES.HEADER, TAG_ID.HEADER], - [TAG_NAMES.HGROUP, TAG_ID.HGROUP], - [TAG_NAMES.HR, TAG_ID.HR], - [TAG_NAMES.HTML, TAG_ID.HTML], - [TAG_NAMES.I, TAG_ID.I], - [TAG_NAMES.IMG, TAG_ID.IMG], - [TAG_NAMES.IMAGE, TAG_ID.IMAGE], - [TAG_NAMES.INPUT, TAG_ID.INPUT], - [TAG_NAMES.IFRAME, TAG_ID.IFRAME], - [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], - [TAG_NAMES.LABEL, TAG_ID.LABEL], - [TAG_NAMES.LI, TAG_ID.LI], - [TAG_NAMES.LINK, TAG_ID.LINK], - [TAG_NAMES.LISTING, TAG_ID.LISTING], - [TAG_NAMES.MAIN, TAG_ID.MAIN], - [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], - [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], - [TAG_NAMES.MATH, TAG_ID.MATH], - [TAG_NAMES.MENU, TAG_ID.MENU], - [TAG_NAMES.META, TAG_ID.META], - [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], - [TAG_NAMES.MI, TAG_ID.MI], - [TAG_NAMES.MO, TAG_ID.MO], - [TAG_NAMES.MN, TAG_ID.MN], - [TAG_NAMES.MS, TAG_ID.MS], - [TAG_NAMES.MTEXT, TAG_ID.MTEXT], - [TAG_NAMES.NAV, TAG_ID.NAV], - [TAG_NAMES.NOBR, TAG_ID.NOBR], - [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], - [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], - [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], - [TAG_NAMES.OBJECT, TAG_ID.OBJECT], - [TAG_NAMES.OL, TAG_ID.OL], - [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], - [TAG_NAMES.OPTION, TAG_ID.OPTION], - [TAG_NAMES.P, TAG_ID.P], - [TAG_NAMES.PARAM, TAG_ID.PARAM], - [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], - [TAG_NAMES.PRE, TAG_ID.PRE], - [TAG_NAMES.RB, TAG_ID.RB], - [TAG_NAMES.RP, TAG_ID.RP], - [TAG_NAMES.RT, TAG_ID.RT], - [TAG_NAMES.RTC, TAG_ID.RTC], - [TAG_NAMES.RUBY, TAG_ID.RUBY], - [TAG_NAMES.S, TAG_ID.S], - [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], - [TAG_NAMES.SEARCH, TAG_ID.SEARCH], - [TAG_NAMES.SECTION, TAG_ID.SECTION], - [TAG_NAMES.SELECT, TAG_ID.SELECT], - [TAG_NAMES.SOURCE, TAG_ID.SOURCE], - [TAG_NAMES.SMALL, TAG_ID.SMALL], - [TAG_NAMES.SPAN, TAG_ID.SPAN], - [TAG_NAMES.STRIKE, TAG_ID.STRIKE], - [TAG_NAMES.STRONG, TAG_ID.STRONG], - [TAG_NAMES.STYLE, TAG_ID.STYLE], - [TAG_NAMES.SUB, TAG_ID.SUB], - [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], - [TAG_NAMES.SUP, TAG_ID.SUP], - [TAG_NAMES.TABLE, TAG_ID.TABLE], - [TAG_NAMES.TBODY, TAG_ID.TBODY], - [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], - [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], - [TAG_NAMES.TFOOT, TAG_ID.TFOOT], - [TAG_NAMES.TD, TAG_ID.TD], - [TAG_NAMES.TH, TAG_ID.TH], - [TAG_NAMES.THEAD, TAG_ID.THEAD], - [TAG_NAMES.TITLE, TAG_ID.TITLE], - [TAG_NAMES.TR, TAG_ID.TR], - [TAG_NAMES.TRACK, TAG_ID.TRACK], - [TAG_NAMES.TT, TAG_ID.TT], - [TAG_NAMES.U, TAG_ID.U], - [TAG_NAMES.UL, TAG_ID.UL], - [TAG_NAMES.SVG, TAG_ID.SVG], - [TAG_NAMES.VAR, TAG_ID.VAR], - [TAG_NAMES.WBR, TAG_ID.WBR], - [TAG_NAMES.XMP, TAG_ID.XMP] - ]); - function getTagID(tagName) { - var _a2; - return (_a2 = TAG_NAME_TO_ID.get(tagName)) !== null && _a2 !== void 0 ? _a2 : TAG_ID.UNKNOWN; - } - var $ = TAG_ID; - var SPECIAL_ELEMENTS = { - [NS.HTML]: /* @__PURE__ */ new Set([ - $.ADDRESS, - $.APPLET, - $.AREA, - $.ARTICLE, - $.ASIDE, - $.BASE, - $.BASEFONT, - $.BGSOUND, - $.BLOCKQUOTE, - $.BODY, - $.BR, - $.BUTTON, - $.CAPTION, - $.CENTER, - $.COL, - $.COLGROUP, - $.DD, - $.DETAILS, - $.DIR, - $.DIV, - $.DL, - $.DT, - $.EMBED, - $.FIELDSET, - $.FIGCAPTION, - $.FIGURE, - $.FOOTER, - $.FORM, - $.FRAME, - $.FRAMESET, - $.H1, - $.H2, - $.H3, - $.H4, - $.H5, - $.H6, - $.HEAD, - $.HEADER, - $.HGROUP, - $.HR, - $.HTML, - $.IFRAME, - $.IMG, - $.INPUT, - $.LI, - $.LINK, - $.LISTING, - $.MAIN, - $.MARQUEE, - $.MENU, - $.META, - $.NAV, - $.NOEMBED, - $.NOFRAMES, - $.NOSCRIPT, - $.OBJECT, - $.OL, - $.P, - $.PARAM, - $.PLAINTEXT, - $.PRE, - $.SCRIPT, - $.SECTION, - $.SELECT, - $.SOURCE, - $.STYLE, - $.SUMMARY, - $.TABLE, - $.TBODY, - $.TD, - $.TEMPLATE, - $.TEXTAREA, - $.TFOOT, - $.TH, - $.THEAD, - $.TITLE, - $.TR, - $.TRACK, - $.UL, - $.WBR, - $.XMP - ]), - [NS.MATHML]: /* @__PURE__ */ new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), - [NS.SVG]: /* @__PURE__ */ new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), - [NS.XLINK]: /* @__PURE__ */ new Set(), - [NS.XML]: /* @__PURE__ */ new Set(), - [NS.XMLNS]: /* @__PURE__ */ new Set() - }; - var NUMBERED_HEADERS = /* @__PURE__ */ new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]); - var UNESCAPED_TEXT = /* @__PURE__ */ new Set([ - TAG_NAMES.STYLE, - TAG_NAMES.SCRIPT, - TAG_NAMES.XMP, - TAG_NAMES.IFRAME, - TAG_NAMES.NOEMBED, - TAG_NAMES.NOFRAMES, - TAG_NAMES.PLAINTEXT - ]); - function hasUnescapedText(tn, scriptingEnabled) { - return UNESCAPED_TEXT.has(tn) || scriptingEnabled && tn === TAG_NAMES.NOSCRIPT; - } - - // node_modules/parse5/dist/tokenizer/index.js - var State; - (function(State3) { - State3[State3["DATA"] = 0] = "DATA"; - State3[State3["RCDATA"] = 1] = "RCDATA"; - State3[State3["RAWTEXT"] = 2] = "RAWTEXT"; - State3[State3["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; - State3[State3["PLAINTEXT"] = 4] = "PLAINTEXT"; - State3[State3["TAG_OPEN"] = 5] = "TAG_OPEN"; - State3[State3["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; - State3[State3["TAG_NAME"] = 7] = "TAG_NAME"; - State3[State3["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; - State3[State3["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; - State3[State3["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; - State3[State3["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; - State3[State3["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; - State3[State3["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; - State3[State3["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; - State3[State3["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; - State3[State3["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; - State3[State3["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; - State3[State3["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; - State3[State3["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; - State3[State3["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; - State3[State3["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; - State3[State3["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; - State3[State3["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; - State3[State3["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; - State3[State3["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; - State3[State3["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; - State3[State3["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; - State3[State3["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; - State3[State3["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; - State3[State3["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; - State3[State3["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; - State3[State3["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; - State3[State3["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; - State3[State3["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; - State3[State3["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; - State3[State3["COMMENT_START"] = 42] = "COMMENT_START"; - State3[State3["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; - State3[State3["COMMENT"] = 44] = "COMMENT"; - State3[State3["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; - State3[State3["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; - State3[State3["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; - State3[State3["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; - State3[State3["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; - State3[State3["COMMENT_END"] = 50] = "COMMENT_END"; - State3[State3["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; - State3[State3["DOCTYPE"] = 52] = "DOCTYPE"; - State3[State3["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; - State3[State3["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; - State3[State3["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; - State3[State3["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; - State3[State3["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; - State3[State3["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; - State3[State3["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; - State3[State3["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; - State3[State3["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; - State3[State3["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; - State3[State3["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; - State3[State3["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; - State3[State3["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; - State3[State3["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; - State3[State3["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; - State3[State3["CDATA_SECTION"] = 68] = "CDATA_SECTION"; - State3[State3["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; - State3[State3["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; - State3[State3["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; - State3[State3["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND"; - })(State || (State = {})); - var TokenizerMode = { - DATA: State.DATA, - RCDATA: State.RCDATA, - RAWTEXT: State.RAWTEXT, - SCRIPT_DATA: State.SCRIPT_DATA, - PLAINTEXT: State.PLAINTEXT, - CDATA_SECTION: State.CDATA_SECTION - }; - function isAsciiDigit(cp) { - return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9; - } - function isAsciiUpper(cp) { - return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z; - } - function isAsciiLower(cp) { - return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z; - } - function isAsciiLetter(cp) { - return isAsciiLower(cp) || isAsciiUpper(cp); - } - function isAsciiAlphaNumeric2(cp) { - return isAsciiLetter(cp) || isAsciiDigit(cp); - } - function toAsciiLower(cp) { - return cp + 32; - } - function isWhitespace2(cp) { - return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED; - } - function isScriptDataDoubleEscapeSequenceEnd(cp) { - return isWhitespace2(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN; - } - function getErrorForNumericCharacterReference(code) { - if (code === CODE_POINTS.NULL) { - return ERR.nullCharacterReference; - } else if (code > 1114111) { - return ERR.characterReferenceOutsideUnicodeRange; - } else if (isSurrogate(code)) { - return ERR.surrogateCharacterReference; - } else if (isUndefinedCodePoint(code)) { - return ERR.noncharacterCharacterReference; - } else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) { - return ERR.controlCharacterReference; - } - return null; - } - var Tokenizer = class { - constructor(options, handler) { - this.options = options; - this.handler = handler; - this.paused = false; - this.inLoop = false; - this.inForeignNode = false; - this.lastStartTagName = ""; - this.active = false; - this.state = State.DATA; - this.returnState = State.DATA; - this.entityStartPos = 0; - this.consumedAfterSnapshot = -1; - this.currentCharacterToken = null; - this.currentToken = null; - this.currentAttr = { name: "", value: "" }; - this.preprocessor = new Preprocessor(handler); - this.currentLocation = this.getCurrentLocation(-1); - this.entityDecoder = new EntityDecoder(decode_data_html_default, (cp, consumed) => { - this.preprocessor.pos = this.entityStartPos + consumed - 1; - this._flushCodePointConsumedAsCharacterReference(cp); - }, handler.onParseError ? { - missingSemicolonAfterCharacterReference: () => { - this._err(ERR.missingSemicolonAfterCharacterReference, 1); - }, - absenceOfDigitsInNumericCharacterReference: (consumed) => { - this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed); - }, - validateNumericCharacterReference: (code) => { - const error = getErrorForNumericCharacterReference(code); - if (error) - this._err(error, 1); - } - } : void 0); - } - //Errors - _err(code, cpOffset = 0) { - var _a2, _b; - (_b = (_a2 = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a2, this.preprocessor.getError(code, cpOffset)); - } - // NOTE: `offset` may never run across line boundaries. - getCurrentLocation(offset) { - if (!this.options.sourceCodeLocationInfo) { - return null; - } - return { - startLine: this.preprocessor.line, - startCol: this.preprocessor.col - offset, - startOffset: this.preprocessor.offset - offset, - endLine: -1, - endCol: -1, - endOffset: -1 - }; - } - _runParsingLoop() { - if (this.inLoop) - return; - this.inLoop = true; - while (this.active && !this.paused) { - this.consumedAfterSnapshot = 0; - const cp = this._consume(); - if (!this._ensureHibernation()) { - this._callState(cp); - } - } - this.inLoop = false; - } - //API - pause() { - this.paused = true; - } - resume(writeCallback) { - if (!this.paused) { - throw new Error("Parser was already resumed"); - } - this.paused = false; - if (this.inLoop) - return; - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - write(chunk, isLastChunk, writeCallback) { - this.active = true; - this.preprocessor.write(chunk, isLastChunk); - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - insertHtmlAtCurrentPos(chunk) { - this.active = true; - this.preprocessor.insertHtmlAtCurrentPos(chunk); - this._runParsingLoop(); - } - //Hibernation - _ensureHibernation() { - if (this.preprocessor.endOfChunkHit) { - this.preprocessor.retreat(this.consumedAfterSnapshot); - this.consumedAfterSnapshot = 0; - this.active = false; - return true; - } - return false; - } - //Consumption - _consume() { - this.consumedAfterSnapshot++; - return this.preprocessor.advance(); - } - _advanceBy(count) { - this.consumedAfterSnapshot += count; - for (let i = 0; i < count; i++) { - this.preprocessor.advance(); - } - } - _consumeSequenceIfMatch(pattern, caseSensitive) { - if (this.preprocessor.startsWith(pattern, caseSensitive)) { - this._advanceBy(pattern.length - 1); - return true; - } - return false; - } - //Token creation - _createStartTagToken() { - this.currentToken = { - type: TokenType.START_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(1) - }; - } - _createEndTagToken() { - this.currentToken = { - type: TokenType.END_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(2) - }; - } - _createCommentToken(offset) { - this.currentToken = { - type: TokenType.COMMENT, - data: "", - location: this.getCurrentLocation(offset) - }; - } - _createDoctypeToken(initialName) { - this.currentToken = { - type: TokenType.DOCTYPE, - name: initialName, - forceQuirks: false, - publicId: null, - systemId: null, - location: this.currentLocation - }; - } - _createCharacterToken(type, chars) { - this.currentCharacterToken = { - type, - chars, - location: this.currentLocation - }; - } - //Tag attributes - _createAttr(attrNameFirstCh) { - this.currentAttr = { - name: attrNameFirstCh, - value: "" - }; - this.currentLocation = this.getCurrentLocation(0); - } - _leaveAttrName() { - var _a2; - var _b; - const token = this.currentToken; - if (getTokenAttr(token, this.currentAttr.name) === null) { - token.attrs.push(this.currentAttr); - if (token.location && this.currentLocation) { - const attrLocations = (_a2 = (_b = token.location).attrs) !== null && _a2 !== void 0 ? _a2 : _b.attrs = /* @__PURE__ */ Object.create(null); - attrLocations[this.currentAttr.name] = this.currentLocation; - this._leaveAttrValue(); - } - } else { - this._err(ERR.duplicateAttribute); - } - } - _leaveAttrValue() { - if (this.currentLocation) { - this.currentLocation.endLine = this.preprocessor.line; - this.currentLocation.endCol = this.preprocessor.col; - this.currentLocation.endOffset = this.preprocessor.offset; - } - } - //Token emission - prepareToken(ct) { - this._emitCurrentCharacterToken(ct.location); - this.currentToken = null; - if (ct.location) { - ct.location.endLine = this.preprocessor.line; - ct.location.endCol = this.preprocessor.col + 1; - ct.location.endOffset = this.preprocessor.offset + 1; - } - this.currentLocation = this.getCurrentLocation(-1); - } - emitCurrentTagToken() { - const ct = this.currentToken; - this.prepareToken(ct); - ct.tagID = getTagID(ct.tagName); - if (ct.type === TokenType.START_TAG) { - this.lastStartTagName = ct.tagName; - this.handler.onStartTag(ct); - } else { - if (ct.attrs.length > 0) { - this._err(ERR.endTagWithAttributes); - } - if (ct.selfClosing) { - this._err(ERR.endTagWithTrailingSolidus); - } - this.handler.onEndTag(ct); - } - this.preprocessor.dropParsedChunk(); - } - emitCurrentComment(ct) { - this.prepareToken(ct); - this.handler.onComment(ct); - this.preprocessor.dropParsedChunk(); - } - emitCurrentDoctype(ct) { - this.prepareToken(ct); - this.handler.onDoctype(ct); - this.preprocessor.dropParsedChunk(); - } - _emitCurrentCharacterToken(nextLocation) { - if (this.currentCharacterToken) { - if (nextLocation && this.currentCharacterToken.location) { - this.currentCharacterToken.location.endLine = nextLocation.startLine; - this.currentCharacterToken.location.endCol = nextLocation.startCol; - this.currentCharacterToken.location.endOffset = nextLocation.startOffset; - } - switch (this.currentCharacterToken.type) { - case TokenType.CHARACTER: { - this.handler.onCharacter(this.currentCharacterToken); - break; - } - case TokenType.NULL_CHARACTER: { - this.handler.onNullCharacter(this.currentCharacterToken); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.handler.onWhitespaceCharacter(this.currentCharacterToken); - break; - } - } - this.currentCharacterToken = null; - } - } - _emitEOFToken() { - const location = this.getCurrentLocation(0); - if (location) { - location.endLine = location.startLine; - location.endCol = location.startCol; - location.endOffset = location.startOffset; - } - this._emitCurrentCharacterToken(location); - this.handler.onEof({ type: TokenType.EOF, location }); - this.active = false; - } - //Characters emission - //OPTIMIZATION: The specification uses only one type of character token (one token per character). - //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. - //If we have a sequence of characters that belong to the same group, the parser can process it - //as a single solid character token. - //So, there are 3 types of character tokens in parse5: - //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') - //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') - //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') - _appendCharToCurrentCharacterToken(type, ch) { - if (this.currentCharacterToken) { - if (this.currentCharacterToken.type === type) { - this.currentCharacterToken.chars += ch; - return; - } else { - this.currentLocation = this.getCurrentLocation(0); - this._emitCurrentCharacterToken(this.currentLocation); - this.preprocessor.dropParsedChunk(); - } - } - this._createCharacterToken(type, ch); - } - _emitCodePoint(cp) { - const type = isWhitespace2(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER; - this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); - } - //NOTE: used when we emit characters explicitly. - //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. - _emitChars(ch) { - this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch); - } - // Character reference helpers - _startCharacterReference() { - this.returnState = this.state; - this.state = State.CHARACTER_REFERENCE; - this.entityStartPos = this.preprocessor.pos; - this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy); - } - _isCharacterReferenceInAttribute() { - return this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED; - } - _flushCodePointConsumedAsCharacterReference(cp) { - if (this._isCharacterReferenceInAttribute()) { - this.currentAttr.value += String.fromCodePoint(cp); - } else { - this._emitCodePoint(cp); - } - } - // Calling states this way turns out to be much faster than any other approach. - _callState(cp) { - switch (this.state) { - case State.DATA: { - this._stateData(cp); - break; - } - case State.RCDATA: { - this._stateRcdata(cp); - break; - } - case State.RAWTEXT: { - this._stateRawtext(cp); - break; - } - case State.SCRIPT_DATA: { - this._stateScriptData(cp); - break; - } - case State.PLAINTEXT: { - this._statePlaintext(cp); - break; - } - case State.TAG_OPEN: { - this._stateTagOpen(cp); - break; - } - case State.END_TAG_OPEN: { - this._stateEndTagOpen(cp); - break; - } - case State.TAG_NAME: { - this._stateTagName(cp); - break; - } - case State.RCDATA_LESS_THAN_SIGN: { - this._stateRcdataLessThanSign(cp); - break; - } - case State.RCDATA_END_TAG_OPEN: { - this._stateRcdataEndTagOpen(cp); - break; - } - case State.RCDATA_END_TAG_NAME: { - this._stateRcdataEndTagName(cp); - break; - } - case State.RAWTEXT_LESS_THAN_SIGN: { - this._stateRawtextLessThanSign(cp); - break; - } - case State.RAWTEXT_END_TAG_OPEN: { - this._stateRawtextEndTagOpen(cp); - break; - } - case State.RAWTEXT_END_TAG_NAME: { - this._stateRawtextEndTagName(cp); - break; - } - case State.SCRIPT_DATA_LESS_THAN_SIGN: { - this._stateScriptDataLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_END_TAG_OPEN: { - this._stateScriptDataEndTagOpen(cp); - break; - } - case State.SCRIPT_DATA_END_TAG_NAME: { - this._stateScriptDataEndTagName(cp); - break; - } - case State.SCRIPT_DATA_ESCAPE_START: { - this._stateScriptDataEscapeStart(cp); - break; - } - case State.SCRIPT_DATA_ESCAPE_START_DASH: { - this._stateScriptDataEscapeStartDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED: { - this._stateScriptDataEscaped(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_DASH: { - this._stateScriptDataEscapedDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_DASH_DASH: { - this._stateScriptDataEscapedDashDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataEscapedLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { - this._stateScriptDataEscapedEndTagOpen(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { - this._stateScriptDataEscapedEndTagName(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: { - this._stateScriptDataDoubleEscapeStart(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED: { - this._stateScriptDataDoubleEscaped(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { - this._stateScriptDataDoubleEscapedDash(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { - this._stateScriptDataDoubleEscapedDashDash(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataDoubleEscapedLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: { - this._stateScriptDataDoubleEscapeEnd(cp); - break; - } - case State.BEFORE_ATTRIBUTE_NAME: { - this._stateBeforeAttributeName(cp); - break; - } - case State.ATTRIBUTE_NAME: { - this._stateAttributeName(cp); - break; - } - case State.AFTER_ATTRIBUTE_NAME: { - this._stateAfterAttributeName(cp); - break; - } - case State.BEFORE_ATTRIBUTE_VALUE: { - this._stateBeforeAttributeValue(cp); - break; - } - case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { - this._stateAttributeValueDoubleQuoted(cp); - break; - } - case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: { - this._stateAttributeValueSingleQuoted(cp); - break; - } - case State.ATTRIBUTE_VALUE_UNQUOTED: { - this._stateAttributeValueUnquoted(cp); - break; - } - case State.AFTER_ATTRIBUTE_VALUE_QUOTED: { - this._stateAfterAttributeValueQuoted(cp); - break; - } - case State.SELF_CLOSING_START_TAG: { - this._stateSelfClosingStartTag(cp); - break; - } - case State.BOGUS_COMMENT: { - this._stateBogusComment(cp); - break; - } - case State.MARKUP_DECLARATION_OPEN: { - this._stateMarkupDeclarationOpen(cp); - break; - } - case State.COMMENT_START: { - this._stateCommentStart(cp); - break; - } - case State.COMMENT_START_DASH: { - this._stateCommentStartDash(cp); - break; - } - case State.COMMENT: { - this._stateComment(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN: { - this._stateCommentLessThanSign(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG: { - this._stateCommentLessThanSignBang(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: { - this._stateCommentLessThanSignBangDash(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { - this._stateCommentLessThanSignBangDashDash(cp); - break; - } - case State.COMMENT_END_DASH: { - this._stateCommentEndDash(cp); - break; - } - case State.COMMENT_END: { - this._stateCommentEnd(cp); - break; - } - case State.COMMENT_END_BANG: { - this._stateCommentEndBang(cp); - break; - } - case State.DOCTYPE: { - this._stateDoctype(cp); - break; - } - case State.BEFORE_DOCTYPE_NAME: { - this._stateBeforeDoctypeName(cp); - break; - } - case State.DOCTYPE_NAME: { - this._stateDoctypeName(cp); - break; - } - case State.AFTER_DOCTYPE_NAME: { - this._stateAfterDoctypeName(cp); - break; - } - case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: { - this._stateAfterDoctypePublicKeyword(cp); - break; - } - case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateBeforeDoctypePublicIdentifier(cp); - break; - } - case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypePublicIdentifierDoubleQuoted(cp); - break; - } - case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypePublicIdentifierSingleQuoted(cp); - break; - } - case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateAfterDoctypePublicIdentifier(cp); - break; - } - case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { - this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); - break; - } - case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: { - this._stateAfterDoctypeSystemKeyword(cp); - break; - } - case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateBeforeDoctypeSystemIdentifier(cp); - break; - } - case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypeSystemIdentifierDoubleQuoted(cp); - break; - } - case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypeSystemIdentifierSingleQuoted(cp); - break; - } - case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateAfterDoctypeSystemIdentifier(cp); - break; - } - case State.BOGUS_DOCTYPE: { - this._stateBogusDoctype(cp); - break; - } - case State.CDATA_SECTION: { - this._stateCdataSection(cp); - break; - } - case State.CDATA_SECTION_BRACKET: { - this._stateCdataSectionBracket(cp); - break; - } - case State.CDATA_SECTION_END: { - this._stateCdataSectionEnd(cp); - break; - } - case State.CHARACTER_REFERENCE: { - this._stateCharacterReference(); - break; - } - case State.AMBIGUOUS_AMPERSAND: { - this._stateAmbiguousAmpersand(cp); - break; - } - default: { - throw new Error("Unknown state"); - } - } - } - // State machine - // Data state - //------------------------------------------------------------------ - _stateData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.TAG_OPEN; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RCDATA state - //------------------------------------------------------------------ - _stateRcdata(cp) { - switch (cp) { - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.RCDATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RAWTEXT state - //------------------------------------------------------------------ - _stateRawtext(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.RAWTEXT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data state - //------------------------------------------------------------------ - _stateScriptData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // PLAINTEXT state - //------------------------------------------------------------------ - _statePlaintext(cp) { - switch (cp) { - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Tag open state - //------------------------------------------------------------------ - _stateTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createStartTagToken(); - this.state = State.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.MARKUP_DECLARATION_OPEN; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.END_TAG_OPEN; - break; - } - case CODE_POINTS.QUESTION_MARK: { - this._err(ERR.unexpectedQuestionMarkInsteadOfTagName); - this._createCommentToken(1); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("<"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._emitChars("<"); - this.state = State.DATA; - this._stateData(cp); - } - } - } - // End tag open state - //------------------------------------------------------------------ - _stateEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createEndTagToken(); - this.state = State.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingEndTagName); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("</"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._createCommentToken(2); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - } - // Tag name state - //------------------------------------------------------------------ - _stateTagName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.tagName += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // RCDATA less-than sign state - //------------------------------------------------------------------ - _stateRcdataLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.RCDATA_END_TAG_OPEN; - } else { - this._emitChars("<"); - this.state = State.RCDATA; - this._stateRcdata(cp); - } - } - // RCDATA end tag open state - //------------------------------------------------------------------ - _stateRcdataEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.RCDATA_END_TAG_NAME; - this._stateRcdataEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.RCDATA; - this._stateRcdata(cp); - } - } - handleSpecialEndTag(_cp) { - if (!this.preprocessor.startsWith(this.lastStartTagName, false)) { - return !this._ensureHibernation(); - } - this._createEndTagToken(); - const token = this.currentToken; - token.tagName = this.lastStartTagName; - const cp = this.preprocessor.peek(this.lastStartTagName.length); - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._advanceBy(this.lastStartTagName.length); - this.state = State.BEFORE_ATTRIBUTE_NAME; - return false; - } - case CODE_POINTS.SOLIDUS: { - this._advanceBy(this.lastStartTagName.length); - this.state = State.SELF_CLOSING_START_TAG; - return false; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._advanceBy(this.lastStartTagName.length); - this.emitCurrentTagToken(); - this.state = State.DATA; - return false; - } - default: { - return !this._ensureHibernation(); - } - } - } - // RCDATA end tag name state - //------------------------------------------------------------------ - _stateRcdataEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.RCDATA; - this._stateRcdata(cp); - } - } - // RAWTEXT less-than sign state - //------------------------------------------------------------------ - _stateRawtextLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.RAWTEXT_END_TAG_OPEN; - } else { - this._emitChars("<"); - this.state = State.RAWTEXT; - this._stateRawtext(cp); - } - } - // RAWTEXT end tag open state - //------------------------------------------------------------------ - _stateRawtextEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.RAWTEXT_END_TAG_NAME; - this._stateRawtextEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.RAWTEXT; - this._stateRawtext(cp); - } - } - // RAWTEXT end tag name state - //------------------------------------------------------------------ - _stateRawtextEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.RAWTEXT; - this._stateRawtext(cp); - } - } - // Script data less-than sign state - //------------------------------------------------------------------ - _stateScriptDataLessThanSign(cp) { - switch (cp) { - case CODE_POINTS.SOLIDUS: { - this.state = State.SCRIPT_DATA_END_TAG_OPEN; - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.SCRIPT_DATA_ESCAPE_START; - this._emitChars("<!"); - break; - } - default: { - this._emitChars("<"); - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - } - // Script data end tag open state - //------------------------------------------------------------------ - _stateScriptDataEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.SCRIPT_DATA_END_TAG_NAME; - this._stateScriptDataEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data end tag name state - //------------------------------------------------------------------ - _stateScriptDataEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escape start state - //------------------------------------------------------------------ - _stateScriptDataEscapeStart(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.SCRIPT_DATA_ESCAPE_START_DASH; - this._emitChars("-"); - } else { - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escape start dash state - //------------------------------------------------------------------ - _stateScriptDataEscapeStartDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; - this._emitChars("-"); - } else { - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escaped state - //------------------------------------------------------------------ - _stateScriptDataEscaped(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_ESCAPED_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data escaped dash state - //------------------------------------------------------------------ - _stateScriptDataEscapedDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped dash dash state - //------------------------------------------------------------------ - _stateScriptDataEscapedDashDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.SCRIPT_DATA; - this._emitChars(">"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; - } else if (isAsciiLetter(cp)) { - this._emitChars("<"); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; - this._stateScriptDataDoubleEscapeStart(cp); - } else { - this._emitChars("<"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag open state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; - this._stateScriptDataEscapedEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag name state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data double escape start state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeStart(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data double escaped state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscaped(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data double escaped dash state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped dash dash state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedDashDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.SCRIPT_DATA; - this._emitChars(">"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; - this._emitChars("/"); - } else { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Script data double escape end state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeEnd(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State.SCRIPT_DATA_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Before attribute name state - //------------------------------------------------------------------ - _stateBeforeAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this.state = State.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._err(ERR.unexpectedEqualsSignBeforeAttributeName); - this._createAttr("="); - this.state = State.ATTRIBUTE_NAME; - break; - } - default: { - this._createAttr(""); - this.state = State.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Attribute name state - //------------------------------------------------------------------ - _stateAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this._leaveAttrName(); - this.state = State.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._leaveAttrName(); - this.state = State.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: { - this._err(ERR.unexpectedCharacterInAttributeName); - this.currentAttr.name += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.name += REPLACEMENT_CHARACTER; - break; - } - default: { - this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After attribute name state - //------------------------------------------------------------------ - _stateAfterAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this.state = State.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._createAttr(""); - this.state = State.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Before attribute value state - //------------------------------------------------------------------ - _stateBeforeAttributeValue(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingAttributeValue); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - default: { - this.state = State.ATTRIBUTE_VALUE_UNQUOTED; - this._stateAttributeValueUnquoted(cp); - } - } - } - // Attribute value (double-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueDoubleQuoted(cp) { - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (single-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueSingleQuoted(cp) { - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (unquoted) state - //------------------------------------------------------------------ - _stateAttributeValueUnquoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: - case CODE_POINTS.EQUALS_SIGN: - case CODE_POINTS.GRAVE_ACCENT: { - this._err(ERR.unexpectedCharacterInUnquotedAttributeValue); - this.currentAttr.value += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // After attribute value (quoted) state - //------------------------------------------------------------------ - _stateAfterAttributeValueQuoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this._leaveAttrValue(); - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBetweenAttributes); - this.state = State.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Self-closing start tag state - //------------------------------------------------------------------ - _stateSelfClosingStartTag(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - const token = this.currentToken; - token.selfClosing = true; - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedSolidusInTag); - this.state = State.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Bogus comment state - //------------------------------------------------------------------ - _stateBogusComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Markup declaration open state - //------------------------------------------------------------------ - _stateMarkupDeclarationOpen(cp) { - if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) { - this._createCommentToken(SEQUENCES.DASH_DASH.length + 1); - this.state = State.COMMENT_START; - } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) { - this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1); - this.state = State.DOCTYPE; - } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) { - if (this.inForeignNode) { - this.state = State.CDATA_SECTION; - } else { - this._err(ERR.cdataInHtmlContent); - this._createCommentToken(SEQUENCES.CDATA_START.length + 1); - this.currentToken.data = "[CDATA["; - this.state = State.BOGUS_COMMENT; - } - } else if (!this._ensureHibernation()) { - this._err(ERR.incorrectlyOpenedComment); - this._createCommentToken(2); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - // Comment start state - //------------------------------------------------------------------ - _stateCommentStart(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_START_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State.DATA; - const token = this.currentToken; - this.emitCurrentComment(token); - break; - } - default: { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment start dash state - //------------------------------------------------------------------ - _stateCommentStartDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment state - //------------------------------------------------------------------ - _stateComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END_DASH; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - this.state = State.COMMENT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Comment less-than sign state - //------------------------------------------------------------------ - _stateCommentLessThanSign(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - token.data += "!"; - this.state = State.COMMENT_LESS_THAN_SIGN_BANG; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - break; - } - default: { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment less-than sign bang state - //------------------------------------------------------------------ - _stateCommentLessThanSignBang(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; - } else { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - // Comment less-than sign bang dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; - } else { - this.state = State.COMMENT_END_DASH; - this._stateCommentEndDash(cp); - } - } - // Comment less-than sign bang dash dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDashDash(cp) { - if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) { - this._err(ERR.nestedComment); - } - this.state = State.COMMENT_END; - this._stateCommentEnd(cp); - } - // Comment end dash state - //------------------------------------------------------------------ - _stateCommentEndDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end state - //------------------------------------------------------------------ - _stateCommentEnd(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.COMMENT_END_BANG; - break; - } - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "-"; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end bang state - //------------------------------------------------------------------ - _stateCommentEndBang(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "--!"; - this.state = State.COMMENT_END_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.incorrectlyClosedComment); - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--!"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // DOCTYPE state - //------------------------------------------------------------------ - _stateDoctype(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBeforeDoctypeName); - this.state = State.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - } - } - } - // Before DOCTYPE name state - //------------------------------------------------------------------ - _stateBeforeDoctypeName(cp) { - if (isAsciiUpper(cp)) { - this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); - this.state = State.DOCTYPE_NAME; - } else - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._createDoctypeToken(REPLACEMENT_CHARACTER); - this.state = State.DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeName); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._createDoctypeToken(String.fromCodePoint(cp)); - this.state = State.DOCTYPE_NAME; - } - } - } - // DOCTYPE name state - //------------------------------------------------------------------ - _stateDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.AFTER_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.name += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After DOCTYPE name state - //------------------------------------------------------------------ - _stateAfterDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) { - this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; - } else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) { - this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; - } else if (!this._ensureHibernation()) { - this._err(ERR.invalidCharacterSequenceAfterDoctypeName); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - } - // After DOCTYPE public keyword state - //------------------------------------------------------------------ - _stateAfterDoctypePublicKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE public identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE public identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateAfterDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Between DOCTYPE public and system identifiers state - //------------------------------------------------------------------ - _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // After DOCTYPE system keyword state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE system identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE system identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Bogus DOCTYPE state - //------------------------------------------------------------------ - _stateBogusDoctype(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: - } - } - // CDATA section state - //------------------------------------------------------------------ - _stateCdataSection(cp) { - switch (cp) { - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this.state = State.CDATA_SECTION_BRACKET; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInCdata); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // CDATA section bracket state - //------------------------------------------------------------------ - _stateCdataSectionBracket(cp) { - if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) { - this.state = State.CDATA_SECTION_END; - } else { - this._emitChars("]"); - this.state = State.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - // CDATA section end state - //------------------------------------------------------------------ - _stateCdataSectionEnd(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - break; - } - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this._emitChars("]"); - break; - } - default: { - this._emitChars("]]"); - this.state = State.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - } - // Character reference state - //------------------------------------------------------------------ - _stateCharacterReference() { - let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos); - if (length < 0) { - if (this.preprocessor.lastChunkWritten) { - length = this.entityDecoder.end(); - } else { - this.active = false; - this.preprocessor.pos = this.preprocessor.html.length - 1; - this.consumedAfterSnapshot = 0; - this.preprocessor.endOfChunkHit = true; - return; - } - } - if (length === 0) { - this.preprocessor.pos = this.entityStartPos; - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this.state = !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric2(this.preprocessor.peek(1)) ? State.AMBIGUOUS_AMPERSAND : this.returnState; - } else { - this.state = this.returnState; - } - } - // Ambiguos ampersand state - //------------------------------------------------------------------ - _stateAmbiguousAmpersand(cp) { - if (isAsciiAlphaNumeric2(cp)) { - this._flushCodePointConsumedAsCharacterReference(cp); - } else { - if (cp === CODE_POINTS.SEMICOLON) { - this._err(ERR.unknownNamedCharacterReference); - } - this.state = this.returnState; - this._callState(cp); - } - } - }; - - // node_modules/parse5/dist/parser/open-element-stack.js - var IMPLICIT_END_TAG_REQUIRED = /* @__PURE__ */ new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]); - var IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = /* @__PURE__ */ new Set([ - ...IMPLICIT_END_TAG_REQUIRED, - TAG_ID.CAPTION, - TAG_ID.COLGROUP, - TAG_ID.TBODY, - TAG_ID.TD, - TAG_ID.TFOOT, - TAG_ID.TH, - TAG_ID.THEAD, - TAG_ID.TR - ]); - var SCOPING_ELEMENTS_HTML = /* @__PURE__ */ new Set([ - TAG_ID.APPLET, - TAG_ID.CAPTION, - TAG_ID.HTML, - TAG_ID.MARQUEE, - TAG_ID.OBJECT, - TAG_ID.TABLE, - TAG_ID.TD, - TAG_ID.TEMPLATE, - TAG_ID.TH - ]); - var SCOPING_ELEMENTS_HTML_LIST = /* @__PURE__ */ new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.OL, TAG_ID.UL]); - var SCOPING_ELEMENTS_HTML_BUTTON = /* @__PURE__ */ new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]); - var SCOPING_ELEMENTS_MATHML = /* @__PURE__ */ new Set([TAG_ID.ANNOTATION_XML, TAG_ID.MI, TAG_ID.MN, TAG_ID.MO, TAG_ID.MS, TAG_ID.MTEXT]); - var SCOPING_ELEMENTS_SVG = /* @__PURE__ */ new Set([TAG_ID.DESC, TAG_ID.FOREIGN_OBJECT, TAG_ID.TITLE]); - var TABLE_ROW_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]); - var TABLE_BODY_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]); - var TABLE_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]); - var TABLE_CELLS = /* @__PURE__ */ new Set([TAG_ID.TD, TAG_ID.TH]); - var OpenElementStack = class { - get currentTmplContentOrNode() { - return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; - } - constructor(document, treeAdapter, handler) { - this.treeAdapter = treeAdapter; - this.handler = handler; - this.items = []; - this.tagIDs = []; - this.stackTop = -1; - this.tmplCount = 0; - this.currentTagId = TAG_ID.UNKNOWN; - this.current = document; - } - //Index of element - _indexOf(element) { - return this.items.lastIndexOf(element, this.stackTop); - } - //Update current element - _isInTemplate() { - return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; - } - _updateCurrentElement() { - this.current = this.items[this.stackTop]; - this.currentTagId = this.tagIDs[this.stackTop]; - } - //Mutations - push(element, tagID) { - this.stackTop++; - this.items[this.stackTop] = element; - this.current = element; - this.tagIDs[this.stackTop] = tagID; - this.currentTagId = tagID; - if (this._isInTemplate()) { - this.tmplCount++; - } - this.handler.onItemPush(element, tagID, true); - } - pop() { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount--; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, true); - } - replace(oldElement, newElement) { - const idx = this._indexOf(oldElement); - this.items[idx] = newElement; - if (idx === this.stackTop) { - this.current = newElement; - } - } - insertAfter(referenceElement, newElement, newElementID) { - const insertionIdx = this._indexOf(referenceElement) + 1; - this.items.splice(insertionIdx, 0, newElement); - this.tagIDs.splice(insertionIdx, 0, newElementID); - this.stackTop++; - if (insertionIdx === this.stackTop) { - this._updateCurrentElement(); - } - this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); - } - popUntilTagNamePopped(tagName) { - let targetIdx = this.stackTop + 1; - do { - targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); - } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); - this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); - } - shortenToLength(idx) { - while (this.stackTop >= idx) { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount -= 1; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, this.stackTop < idx); - } - } - popUntilElementPopped(element) { - const idx = this._indexOf(element); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilPopped(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilNumberedHeaderPopped() { - this.popUntilPopped(NUMBERED_HEADERS, NS.HTML); - } - popUntilTableCellPopped() { - this.popUntilPopped(TABLE_CELLS, NS.HTML); - } - popAllUpToHtmlElement() { - this.tmplCount = 0; - this.shortenToLength(1); - } - _indexOfTagNames(tagNames, namespace) { - for (let i = this.stackTop; i >= 0; i--) { - if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { - return i; - } - } - return -1; - } - clearBackTo(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx + 1); - } - clearBackToTableContext() { - this.clearBackTo(TABLE_CONTEXT, NS.HTML); - } - clearBackToTableBodyContext() { - this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); - } - clearBackToTableRowContext() { - this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); - } - remove(element) { - const idx = this._indexOf(element); - if (idx >= 0) { - if (idx === this.stackTop) { - this.pop(); - } else { - this.items.splice(idx, 1); - this.tagIDs.splice(idx, 1); - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(element, false); - } - } - } - //Search - tryPeekProperlyNestedBodyElement() { - return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null; - } - contains(element) { - return this._indexOf(element) > -1; - } - getCommonAncestor(element) { - const elementIdx = this._indexOf(element) - 1; - return elementIdx >= 0 ? this.items[elementIdx] : null; - } - isRootHtmlElementCurrent() { - return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML; - } - //Element in scope - hasInDynamicScope(tagName, htmlScope) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - switch (this.treeAdapter.getNamespaceURI(this.items[i])) { - case NS.HTML: { - if (tn === tagName) - return true; - if (htmlScope.has(tn)) - return false; - break; - } - case NS.SVG: { - if (SCOPING_ELEMENTS_SVG.has(tn)) - return false; - break; - } - case NS.MATHML: { - if (SCOPING_ELEMENTS_MATHML.has(tn)) - return false; - break; - } - } - } - return true; - } - hasInScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML); - } - hasInListItemScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST); - } - hasInButtonScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON); - } - hasNumberedHeaderInScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - switch (this.treeAdapter.getNamespaceURI(this.items[i])) { - case NS.HTML: { - if (NUMBERED_HEADERS.has(tn)) - return true; - if (SCOPING_ELEMENTS_HTML.has(tn)) - return false; - break; - } - case NS.SVG: { - if (SCOPING_ELEMENTS_SVG.has(tn)) - return false; - break; - } - case NS.MATHML: { - if (SCOPING_ELEMENTS_MATHML.has(tn)) - return false; - break; - } - } - } - return true; - } - hasInTableScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case tagName: { - return true; - } - case TAG_ID.TABLE: - case TAG_ID.HTML: { - return false; - } - } - } - return true; - } - hasTableBodyContextInTableScope() { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - return true; - } - case TAG_ID.TABLE: - case TAG_ID.HTML: { - return false; - } - } - } - return true; - } - hasInSelectScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case tagName: { - return true; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - break; - } - default: { - return false; - } - } - } - return true; - } - //Implied end tags - generateImpliedEndTags() { - while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsThoroughly() { - while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsWithExclusion(exclusionId) { - while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } - }; - - // node_modules/parse5/dist/parser/formatting-element-list.js - var NOAH_ARK_CAPACITY = 3; - var EntryType; - (function(EntryType2) { - EntryType2[EntryType2["Marker"] = 0] = "Marker"; - EntryType2[EntryType2["Element"] = 1] = "Element"; - })(EntryType || (EntryType = {})); - var MARKER = { type: EntryType.Marker }; - var FormattingElementList = class { - constructor(treeAdapter) { - this.treeAdapter = treeAdapter; - this.entries = []; - this.bookmark = null; - } - //Noah Ark's condition - //OPTIMIZATION: at first we try to find possible candidates for exclusion using - //lightweight heuristics without thorough attributes check. - _getNoahArkConditionCandidates(newElement, neAttrs) { - const candidates = []; - const neAttrsLength = neAttrs.length; - const neTagName = this.treeAdapter.getTagName(newElement); - const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); - for (let i = 0; i < this.entries.length; i++) { - const entry = this.entries[i]; - if (entry.type === EntryType.Marker) { - break; - } - const { element } = entry; - if (this.treeAdapter.getTagName(element) === neTagName && this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { - const elementAttrs = this.treeAdapter.getAttrList(element); - if (elementAttrs.length === neAttrsLength) { - candidates.push({ idx: i, attrs: elementAttrs }); - } - } - } - return candidates; - } - _ensureNoahArkCondition(newElement) { - if (this.entries.length < NOAH_ARK_CAPACITY) - return; - const neAttrs = this.treeAdapter.getAttrList(newElement); - const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); - if (candidates.length < NOAH_ARK_CAPACITY) - return; - const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); - let validCandidates = 0; - for (let i = 0; i < candidates.length; i++) { - const candidate = candidates[i]; - if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { - validCandidates += 1; - if (validCandidates >= NOAH_ARK_CAPACITY) { - this.entries.splice(candidate.idx, 1); - } - } - } - } - //Mutations - insertMarker() { - this.entries.unshift(MARKER); - } - pushElement(element, token) { - this._ensureNoahArkCondition(element); - this.entries.unshift({ - type: EntryType.Element, - element, - token - }); - } - insertElementAfterBookmark(element, token) { - const bookmarkIdx = this.entries.indexOf(this.bookmark); - this.entries.splice(bookmarkIdx, 0, { - type: EntryType.Element, - element, - token - }); - } - removeEntry(entry) { - const entryIndex = this.entries.indexOf(entry); - if (entryIndex >= 0) { - this.entries.splice(entryIndex, 1); - } - } - /** - * Clears the list of formatting elements up to the last marker. - * - * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker - */ - clearToLastMarker() { - const markerIdx = this.entries.indexOf(MARKER); - if (markerIdx >= 0) { - this.entries.splice(0, markerIdx + 1); - } else { - this.entries.length = 0; - } - } - //Search - getElementEntryInScopeWithTagName(tagName) { - const entry = this.entries.find((entry2) => entry2.type === EntryType.Marker || this.treeAdapter.getTagName(entry2.element) === tagName); - return entry && entry.type === EntryType.Element ? entry : null; - } - getElementEntry(element) { - return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); - } - }; - - // node_modules/parse5/dist/tree-adapters/default.js - var defaultTreeAdapter = { - //Node construction - createDocument() { - return { - nodeName: "#document", - mode: DOCUMENT_MODE.NO_QUIRKS, - childNodes: [] - }; - }, - createDocumentFragment() { - return { - nodeName: "#document-fragment", - childNodes: [] - }; - }, - createElement(tagName, namespaceURI, attrs) { - return { - nodeName: tagName, - tagName, - attrs, - namespaceURI, - childNodes: [], - parentNode: null - }; - }, - createCommentNode(data2) { - return { - nodeName: "#comment", - data: data2, - parentNode: null - }; - }, - createTextNode(value) { - return { - nodeName: "#text", - value, - parentNode: null - }; - }, - //Tree mutation - appendChild(parentNode, newNode) { - parentNode.childNodes.push(newNode); - newNode.parentNode = parentNode; - }, - insertBefore(parentNode, newNode, referenceNode) { - const insertionIdx = parentNode.childNodes.indexOf(referenceNode); - parentNode.childNodes.splice(insertionIdx, 0, newNode); - newNode.parentNode = parentNode; - }, - setTemplateContent(templateElement, contentElement) { - templateElement.content = contentElement; - }, - getTemplateContent(templateElement) { - return templateElement.content; - }, - setDocumentType(document, name, publicId, systemId) { - const doctypeNode = document.childNodes.find((node) => node.nodeName === "#documentType"); - if (doctypeNode) { - doctypeNode.name = name; - doctypeNode.publicId = publicId; - doctypeNode.systemId = systemId; - } else { - const node = { - nodeName: "#documentType", - name, - publicId, - systemId, - parentNode: null - }; - defaultTreeAdapter.appendChild(document, node); - } - }, - setDocumentMode(document, mode) { - document.mode = mode; - }, - getDocumentMode(document) { - return document.mode; - }, - detachNode(node) { - if (node.parentNode) { - const idx = node.parentNode.childNodes.indexOf(node); - node.parentNode.childNodes.splice(idx, 1); - node.parentNode = null; - } - }, - insertText(parentNode, text3) { - if (parentNode.childNodes.length > 0) { - const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; - if (defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text3; - return; - } - } - defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text3)); - }, - insertTextBefore(parentNode, text3, referenceNode) { - const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; - if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text3; - } else { - defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text3), referenceNode); - } - }, - adoptAttributes(recipient, attrs) { - const recipientAttrsMap = new Set(recipient.attrs.map((attr2) => attr2.name)); - for (let j = 0; j < attrs.length; j++) { - if (!recipientAttrsMap.has(attrs[j].name)) { - recipient.attrs.push(attrs[j]); - } - } - }, - //Tree traversing - getFirstChild(node) { - return node.childNodes[0]; - }, - getChildNodes(node) { - return node.childNodes; - }, - getParentNode(node) { - return node.parentNode; - }, - getAttrList(element) { - return element.attrs; - }, - //Node data - getTagName(element) { - return element.tagName; - }, - getNamespaceURI(element) { - return element.namespaceURI; - }, - getTextNodeContent(textNode) { - return textNode.value; - }, - getCommentNodeContent(commentNode) { - return commentNode.data; - }, - getDocumentTypeNodeName(doctypeNode) { - return doctypeNode.name; - }, - getDocumentTypeNodePublicId(doctypeNode) { - return doctypeNode.publicId; - }, - getDocumentTypeNodeSystemId(doctypeNode) { - return doctypeNode.systemId; - }, - //Node types - isTextNode(node) { - return node.nodeName === "#text"; - }, - isCommentNode(node) { - return node.nodeName === "#comment"; - }, - isDocumentTypeNode(node) { - return node.nodeName === "#documentType"; - }, - isElementNode(node) { - return Object.prototype.hasOwnProperty.call(node, "tagName"); - }, - // Source code location - setNodeSourceCodeLocation(node, location) { - node.sourceCodeLocation = location; - }, - getNodeSourceCodeLocation(node) { - return node.sourceCodeLocation; - }, - updateNodeSourceCodeLocation(node, endLocation) { - node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation }; - } - }; - - // node_modules/parse5/dist/common/doctype.js - var VALID_DOCTYPE_NAME = "html"; - var VALID_SYSTEM_ID = "about:legacy-compat"; - var QUIRKS_MODE_SYSTEM_ID = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; - var QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ - "+//silmaril//dtd html pro v0r11 19970101//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//" - ]; - var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" - ]; - var QUIRKS_MODE_PUBLIC_IDS = /* @__PURE__ */ new Set([ - "-//w3o//dtd w3 html strict 3.0//en//", - "-/w3c/dtd html 4.0 transitional/en", - "html" - ]); - var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"]; - var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" - ]; - function hasPrefix(publicId, prefixes) { - return prefixes.some((prefix) => publicId.startsWith(prefix)); - } - function isConforming(token) { - return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID); - } - function getDocumentMode(token) { - if (token.name !== VALID_DOCTYPE_NAME) { - return DOCUMENT_MODE.QUIRKS; - } - const { systemId } = token; - if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { - return DOCUMENT_MODE.QUIRKS; - } - let { publicId } = token; - if (publicId !== null) { - publicId = publicId.toLowerCase(); - if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { - return DOCUMENT_MODE.QUIRKS; - } - let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.QUIRKS; - } - prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.LIMITED_QUIRKS; - } - } - return DOCUMENT_MODE.NO_QUIRKS; - } - - // node_modules/parse5/dist/common/foreign-content.js - var MIME_TYPES = { - TEXT_HTML: "text/html", - APPLICATION_XML: "application/xhtml+xml" - }; - var DEFINITION_URL_ATTR = "definitionurl"; - var ADJUSTED_DEFINITION_URL_ATTR = "definitionURL"; - var SVG_ATTRS_ADJUSTMENT_MAP = new Map([ - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" - ].map((attr2) => [attr2.toLowerCase(), attr2])); - var XML_ATTRS_ADJUSTMENT_MAP = /* @__PURE__ */ new Map([ - ["xlink:actuate", { prefix: "xlink", name: "actuate", namespace: NS.XLINK }], - ["xlink:arcrole", { prefix: "xlink", name: "arcrole", namespace: NS.XLINK }], - ["xlink:href", { prefix: "xlink", name: "href", namespace: NS.XLINK }], - ["xlink:role", { prefix: "xlink", name: "role", namespace: NS.XLINK }], - ["xlink:show", { prefix: "xlink", name: "show", namespace: NS.XLINK }], - ["xlink:title", { prefix: "xlink", name: "title", namespace: NS.XLINK }], - ["xlink:type", { prefix: "xlink", name: "type", namespace: NS.XLINK }], - ["xml:lang", { prefix: "xml", name: "lang", namespace: NS.XML }], - ["xml:space", { prefix: "xml", name: "space", namespace: NS.XML }], - ["xmlns", { prefix: "", name: "xmlns", namespace: NS.XMLNS }], - ["xmlns:xlink", { prefix: "xmlns", name: "xlink", namespace: NS.XMLNS }] - ]); - var SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" - ].map((tn) => [tn.toLowerCase(), tn])); - var EXITS_FOREIGN_CONTENT = /* @__PURE__ */ new Set([ - TAG_ID.B, - TAG_ID.BIG, - TAG_ID.BLOCKQUOTE, - TAG_ID.BODY, - TAG_ID.BR, - TAG_ID.CENTER, - TAG_ID.CODE, - TAG_ID.DD, - TAG_ID.DIV, - TAG_ID.DL, - TAG_ID.DT, - TAG_ID.EM, - TAG_ID.EMBED, - TAG_ID.H1, - TAG_ID.H2, - TAG_ID.H3, - TAG_ID.H4, - TAG_ID.H5, - TAG_ID.H6, - TAG_ID.HEAD, - TAG_ID.HR, - TAG_ID.I, - TAG_ID.IMG, - TAG_ID.LI, - TAG_ID.LISTING, - TAG_ID.MENU, - TAG_ID.META, - TAG_ID.NOBR, - TAG_ID.OL, - TAG_ID.P, - TAG_ID.PRE, - TAG_ID.RUBY, - TAG_ID.S, - TAG_ID.SMALL, - TAG_ID.SPAN, - TAG_ID.STRONG, - TAG_ID.STRIKE, - TAG_ID.SUB, - TAG_ID.SUP, - TAG_ID.TABLE, - TAG_ID.TT, - TAG_ID.U, - TAG_ID.UL, - TAG_ID.VAR - ]); - function causesExit(startTagToken) { - const tn = startTagToken.tagID; - const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE); - return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); - } - function adjustTokenMathMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - if (token.attrs[i].name === DEFINITION_URL_ATTR) { - token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; - break; - } - } - } - function adjustTokenSVGAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrName != null) { - token.attrs[i].name = adjustedAttrName; - } - } - } - function adjustTokenXMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrEntry) { - token.attrs[i].prefix = adjustedAttrEntry.prefix; - token.attrs[i].name = adjustedAttrEntry.name; - token.attrs[i].namespace = adjustedAttrEntry.namespace; - } - } - } - function adjustTokenSVGTagName(token) { - const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); - if (adjustedTagName != null) { - token.tagName = adjustedTagName; - token.tagID = getTagID(token.tagName); - } - } - function isMathMLTextIntegrationPoint(tn, ns) { - return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT); - } - function isHtmlIntegrationPoint(tn, ns, attrs) { - if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) { - for (let i = 0; i < attrs.length; i++) { - if (attrs[i].name === ATTRS.ENCODING) { - const value = attrs[i].value.toLowerCase(); - return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; - } - } - } - return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE); - } - function isIntegrationPoint(tn, ns, attrs, foreignNS) { - return (!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns); - } - - // node_modules/parse5/dist/parser/index.js - var HIDDEN_INPUT_TYPE = "hidden"; - var AA_OUTER_LOOP_ITER = 8; - var AA_INNER_LOOP_ITER = 3; - var InsertionMode; - (function(InsertionMode2) { - InsertionMode2[InsertionMode2["INITIAL"] = 0] = "INITIAL"; - InsertionMode2[InsertionMode2["BEFORE_HTML"] = 1] = "BEFORE_HTML"; - InsertionMode2[InsertionMode2["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD"] = 3] = "IN_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; - InsertionMode2[InsertionMode2["AFTER_HEAD"] = 5] = "AFTER_HEAD"; - InsertionMode2[InsertionMode2["IN_BODY"] = 6] = "IN_BODY"; - InsertionMode2[InsertionMode2["TEXT"] = 7] = "TEXT"; - InsertionMode2[InsertionMode2["IN_TABLE"] = 8] = "IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; - InsertionMode2[InsertionMode2["IN_CAPTION"] = 10] = "IN_CAPTION"; - InsertionMode2[InsertionMode2["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; - InsertionMode2[InsertionMode2["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; - InsertionMode2[InsertionMode2["IN_ROW"] = 13] = "IN_ROW"; - InsertionMode2[InsertionMode2["IN_CELL"] = 14] = "IN_CELL"; - InsertionMode2[InsertionMode2["IN_SELECT"] = 15] = "IN_SELECT"; - InsertionMode2[InsertionMode2["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; - InsertionMode2[InsertionMode2["AFTER_BODY"] = 18] = "AFTER_BODY"; - InsertionMode2[InsertionMode2["IN_FRAMESET"] = 19] = "IN_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; - InsertionMode2[InsertionMode2["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; - })(InsertionMode || (InsertionMode = {})); - var BASE_LOC = { - startLine: -1, - startCol: -1, - startOffset: -1, - endLine: -1, - endCol: -1, - endOffset: -1 - }; - var TABLE_STRUCTURE_TAGS = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]); - var defaultParserOptions = { - scriptingEnabled: true, - sourceCodeLocationInfo: false, - treeAdapter: defaultTreeAdapter, - onParseError: null - }; - var Parser = class { - constructor(options, document, fragmentContext = null, scriptHandler = null) { - this.fragmentContext = fragmentContext; - this.scriptHandler = scriptHandler; - this.currentToken = null; - this.stopped = false; - this.insertionMode = InsertionMode.INITIAL; - this.originalInsertionMode = InsertionMode.INITIAL; - this.headElement = null; - this.formElement = null; - this.currentNotInHTML = false; - this.tmplInsertionModeStack = []; - this.pendingCharacterTokens = []; - this.hasNonWhitespacePendingCharacterToken = false; - this.framesetOk = true; - this.skipNextNewLine = false; - this.fosterParentingEnabled = false; - this.options = { - ...defaultParserOptions, - ...options - }; - this.treeAdapter = this.options.treeAdapter; - this.onParseError = this.options.onParseError; - if (this.onParseError) { - this.options.sourceCodeLocationInfo = true; - } - this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); - this.tokenizer = new Tokenizer(this.options, this); - this.activeFormattingElements = new FormattingElementList(this.treeAdapter); - this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN; - this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); - this.openElements = new OpenElementStack(this.document, this.treeAdapter, this); - } - // API - static parse(html3, options) { - const parser = new this(options); - parser.tokenizer.write(html3, true); - return parser.document; - } - static getFragmentParser(fragmentContext, options) { - const opts = { - ...defaultParserOptions, - ...options - }; - fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, NS.HTML, []); - const documentMock = opts.treeAdapter.createElement("documentmock", NS.HTML, []); - const parser = new this(opts, documentMock, fragmentContext); - if (parser.fragmentContextID === TAG_ID.TEMPLATE) { - parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - } - parser._initTokenizerForFragmentParsing(); - parser._insertFakeRootElement(); - parser._resetInsertionMode(); - parser._findFormInFragmentContext(); - return parser; - } - getFragment() { - const rootElement = this.treeAdapter.getFirstChild(this.document); - const fragment = this.treeAdapter.createDocumentFragment(); - this._adoptNodes(rootElement, fragment); - return fragment; - } - //Errors - /** @internal */ - _err(token, code, beforeToken) { - var _a2; - if (!this.onParseError) - return; - const loc = (_a2 = token.location) !== null && _a2 !== void 0 ? _a2 : BASE_LOC; - const err = { - code, - startLine: loc.startLine, - startCol: loc.startCol, - startOffset: loc.startOffset, - endLine: beforeToken ? loc.startLine : loc.endLine, - endCol: beforeToken ? loc.startCol : loc.endCol, - endOffset: beforeToken ? loc.startOffset : loc.endOffset - }; - this.onParseError(err); - } - //Stack events - /** @internal */ - onItemPush(node, tid, isTop) { - var _a2, _b; - (_b = (_a2 = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a2, node); - if (isTop && this.openElements.stackTop > 0) - this._setContextModes(node, tid); - } - /** @internal */ - onItemPop(node, isTop) { - var _a2, _b; - if (this.options.sourceCodeLocationInfo) { - this._setEndLocation(node, this.currentToken); - } - (_b = (_a2 = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a2, node, this.openElements.current); - if (isTop) { - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - this._setContextModes(current, currentTagId); - } - } - _setContextModes(current, tid) { - const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML; - this.currentNotInHTML = !isHTML; - this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current); - } - /** @protected */ - _switchToTextParsing(currentToken, nextTokenizerState) { - this._insertElement(currentToken, NS.HTML); - this.tokenizer.state = nextTokenizerState; - this.originalInsertionMode = this.insertionMode; - this.insertionMode = InsertionMode.TEXT; - } - switchToPlaintextParsing() { - this.insertionMode = InsertionMode.TEXT; - this.originalInsertionMode = InsertionMode.IN_BODY; - this.tokenizer.state = TokenizerMode.PLAINTEXT; - } - //Fragment parsing - /** @protected */ - _getAdjustedCurrentElement() { - return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current; - } - /** @protected */ - _findFormInFragmentContext() { - let node = this.fragmentContext; - while (node) { - if (this.treeAdapter.getTagName(node) === TAG_NAMES.FORM) { - this.formElement = node; - break; - } - node = this.treeAdapter.getParentNode(node); - } - } - _initTokenizerForFragmentParsing() { - if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) { - return; - } - switch (this.fragmentContextID) { - case TAG_ID.TITLE: - case TAG_ID.TEXTAREA: { - this.tokenizer.state = TokenizerMode.RCDATA; - break; - } - case TAG_ID.STYLE: - case TAG_ID.XMP: - case TAG_ID.IFRAME: - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: - case TAG_ID.NOSCRIPT: { - this.tokenizer.state = TokenizerMode.RAWTEXT; - break; - } - case TAG_ID.SCRIPT: { - this.tokenizer.state = TokenizerMode.SCRIPT_DATA; - break; - } - case TAG_ID.PLAINTEXT: { - this.tokenizer.state = TokenizerMode.PLAINTEXT; - break; - } - default: - } - } - //Tree mutation - /** @protected */ - _setDocumentType(token) { - const name = token.name || ""; - const publicId = token.publicId || ""; - const systemId = token.systemId || ""; - this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); - if (token.location) { - const documentChildren = this.treeAdapter.getChildNodes(this.document); - const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node)); - if (docTypeNode) { - this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); - } - } - } - /** @protected */ - _attachElementToTree(element, location) { - if (this.options.sourceCodeLocationInfo) { - const loc = location && { - ...location, - startTag: location - }; - this.treeAdapter.setNodeSourceCodeLocation(element, loc); - } - if (this._shouldFosterParentOnInsertion()) { - this._fosterParentElement(element); - } else { - const parent2 = this.openElements.currentTmplContentOrNode; - this.treeAdapter.appendChild(parent2, element); - } - } - /** - * For self-closing tags. Add an element to the tree, but skip adding it - * to the stack. - */ - /** @protected */ - _appendElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - } - /** @protected */ - _insertElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - this.openElements.push(element, token.tagID); - } - /** @protected */ - _insertFakeElement(tagName, tagID) { - const element = this.treeAdapter.createElement(tagName, NS.HTML, []); - this._attachElementToTree(element, null); - this.openElements.push(element, tagID); - } - /** @protected */ - _insertTemplate(token) { - const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs); - const content = this.treeAdapter.createDocumentFragment(); - this.treeAdapter.setTemplateContent(tmpl, content); - this._attachElementToTree(tmpl, token.location); - this.openElements.push(tmpl, token.tagID); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(content, null); - } - /** @protected */ - _insertFakeRootElement() { - const element = this.treeAdapter.createElement(TAG_NAMES.HTML, NS.HTML, []); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(element, null); - this.treeAdapter.appendChild(this.openElements.current, element); - this.openElements.push(element, TAG_ID.HTML); - } - /** @protected */ - _appendCommentNode(token, parent2) { - const commentNode = this.treeAdapter.createCommentNode(token.data); - this.treeAdapter.appendChild(parent2, commentNode); - if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); - } - } - /** @protected */ - _insertCharacters(token) { - let parent2; - let beforeElement; - if (this._shouldFosterParentOnInsertion()) { - ({ parent: parent2, beforeElement } = this._findFosterParentingLocation()); - if (beforeElement) { - this.treeAdapter.insertTextBefore(parent2, token.chars, beforeElement); - } else { - this.treeAdapter.insertText(parent2, token.chars); - } - } else { - parent2 = this.openElements.currentTmplContentOrNode; - this.treeAdapter.insertText(parent2, token.chars); - } - if (!token.location) - return; - const siblings2 = this.treeAdapter.getChildNodes(parent2); - const textNodeIdx = beforeElement ? siblings2.lastIndexOf(beforeElement) : siblings2.length; - const textNode = siblings2[textNodeIdx - 1]; - const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode); - if (tnLoc) { - const { endLine, endCol, endOffset } = token.location; - this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset }); - } else if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); - } - } - /** @protected */ - _adoptNodes(donor, recipient) { - for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { - this.treeAdapter.detachNode(child); - this.treeAdapter.appendChild(recipient, child); - } - } - /** @protected */ - _setEndLocation(element, closingToken) { - if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { - const ctLoc = closingToken.location; - const tn = this.treeAdapter.getTagName(element); - const endLoc = ( - // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing - // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag. - closingToken.type === TokenType.END_TAG && tn === closingToken.tagName ? { - endTag: { ...ctLoc }, - endLine: ctLoc.endLine, - endCol: ctLoc.endCol, - endOffset: ctLoc.endOffset - } : { - endLine: ctLoc.startLine, - endCol: ctLoc.startCol, - endOffset: ctLoc.startOffset - } - ); - this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); - } - } - //Token processing - shouldProcessStartTagTokenInForeignContent(token) { - if (!this.currentNotInHTML) - return false; - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - if (token.tagID === TAG_ID.SVG && this.treeAdapter.getTagName(current) === TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current) === NS.MATHML) { - return false; - } - return ( - // Check that `current` is not an integration point for HTML or MathML elements. - this.tokenizer.inForeignNode || // If it _is_ an integration point, then we might have to check that it is not an HTML - // integration point. - (token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) && !this._isIntegrationPoint(currentTagId, current, NS.HTML) - ); - } - /** @protected */ - _processToken(token) { - switch (token.type) { - case TokenType.CHARACTER: { - this.onCharacter(token); - break; - } - case TokenType.NULL_CHARACTER: { - this.onNullCharacter(token); - break; - } - case TokenType.COMMENT: { - this.onComment(token); - break; - } - case TokenType.DOCTYPE: { - this.onDoctype(token); - break; - } - case TokenType.START_TAG: { - this._processStartTag(token); - break; - } - case TokenType.END_TAG: { - this.onEndTag(token); - break; - } - case TokenType.EOF: { - this.onEof(token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.onWhitespaceCharacter(token); - break; - } - } - } - //Integration points - /** @protected */ - _isIntegrationPoint(tid, element, foreignNS) { - const ns = this.treeAdapter.getNamespaceURI(element); - const attrs = this.treeAdapter.getAttrList(element); - return isIntegrationPoint(tid, ns, attrs, foreignNS); - } - //Active formatting elements reconstruction - /** @protected */ - _reconstructActiveFormattingElements() { - const listLength = this.activeFormattingElements.entries.length; - if (listLength) { - const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element)); - const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1; - for (let i = unopenIdx; i >= 0; i--) { - const entry = this.activeFormattingElements.entries[i]; - this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); - entry.element = this.openElements.current; - } - } - } - //Close elements - /** @protected */ - _closeTableCell() { - this.openElements.generateImpliedEndTags(); - this.openElements.popUntilTableCellPopped(); - this.activeFormattingElements.clearToLastMarker(); - this.insertionMode = InsertionMode.IN_ROW; - } - /** @protected */ - _closePElement() { - this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P); - this.openElements.popUntilTagNamePopped(TAG_ID.P); - } - //Insertion modes - /** @protected */ - _resetInsertionMode() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { - case TAG_ID.TR: { - this.insertionMode = InsertionMode.IN_ROW; - return; - } - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - this.insertionMode = InsertionMode.IN_TABLE_BODY; - return; - } - case TAG_ID.CAPTION: { - this.insertionMode = InsertionMode.IN_CAPTION; - return; - } - case TAG_ID.COLGROUP: { - this.insertionMode = InsertionMode.IN_COLUMN_GROUP; - return; - } - case TAG_ID.TABLE: { - this.insertionMode = InsertionMode.IN_TABLE; - return; - } - case TAG_ID.BODY: { - this.insertionMode = InsertionMode.IN_BODY; - return; - } - case TAG_ID.FRAMESET: { - this.insertionMode = InsertionMode.IN_FRAMESET; - return; - } - case TAG_ID.SELECT: { - this._resetInsertionModeForSelect(i); - return; - } - case TAG_ID.TEMPLATE: { - this.insertionMode = this.tmplInsertionModeStack[0]; - return; - } - case TAG_ID.HTML: { - this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; - return; - } - case TAG_ID.TD: - case TAG_ID.TH: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_CELL; - return; - } - break; - } - case TAG_ID.HEAD: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_HEAD; - return; - } - break; - } - } - } - this.insertionMode = InsertionMode.IN_BODY; - } - /** @protected */ - _resetInsertionModeForSelect(selectIdx) { - if (selectIdx > 0) { - for (let i = selectIdx - 1; i > 0; i--) { - const tn = this.openElements.tagIDs[i]; - if (tn === TAG_ID.TEMPLATE) { - break; - } else if (tn === TAG_ID.TABLE) { - this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; - return; - } - } - } - this.insertionMode = InsertionMode.IN_SELECT; - } - //Foster parenting - /** @protected */ - _isElementCausesFosterParenting(tn) { - return TABLE_STRUCTURE_TAGS.has(tn); - } - /** @protected */ - _shouldFosterParentOnInsertion() { - return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId); - } - /** @protected */ - _findFosterParentingLocation() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - const openElement = this.openElements.items[i]; - switch (this.openElements.tagIDs[i]) { - case TAG_ID.TEMPLATE: { - if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) { - return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null }; - } - break; - } - case TAG_ID.TABLE: { - const parent2 = this.treeAdapter.getParentNode(openElement); - if (parent2) { - return { parent: parent2, beforeElement: openElement }; - } - return { parent: this.openElements.items[i - 1], beforeElement: null }; - } - default: - } - } - return { parent: this.openElements.items[0], beforeElement: null }; - } - /** @protected */ - _fosterParentElement(element) { - const location = this._findFosterParentingLocation(); - if (location.beforeElement) { - this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); - } else { - this.treeAdapter.appendChild(location.parent, element); - } - } - //Special elements - /** @protected */ - _isSpecialElement(element, id) { - const ns = this.treeAdapter.getNamespaceURI(element); - return SPECIAL_ELEMENTS[ns].has(id); - } - /** @internal */ - onCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - characterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: { - characterInBody(this, token); - break; - } - case InsertionMode.TEXT: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - characterInTableText(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onNullCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - nullCharacterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.TEXT: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onComment(token) { - this.skipNextNewLine = false; - if (this.currentNotInHTML) { - appendComment(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: - case InsertionMode.BEFORE_HTML: - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - appendComment(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - appendCommentToRootHtmlElement(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - appendCommentToDocument(this, token); - break; - } - default: - } - } - /** @internal */ - onDoctype(token) { - this.skipNextNewLine = false; - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - doctypeInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: { - this._err(token, ERR.misplacedDoctype); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - default: - } - } - /** @internal */ - onStartTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - this._processStartTag(token); - if (token.selfClosing && !token.ackSelfClosing) { - this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); - } - } - /** - * Processes a given start tag. - * - * `onStartTag` checks if a self-closing tag was recognized. When a token - * is moved inbetween multiple insertion modes, this check for self-closing - * could lead to false positives. To avoid this, `_processStartTag` is used - * for nested calls. - * - * @param token The token to process. - * @protected - */ - _processStartTag(token) { - if (this.shouldProcessStartTagTokenInForeignContent(token)) { - startTagInForeignContent(this, token); - } else { - this._startTagOutsideForeignContent(token); - } - } - /** @protected */ - _startTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - startTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - startTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - startTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - startTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - startTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - startTagInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: { - startTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - startTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - startTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - startTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - startTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - startTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - startTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - startTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - startTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - startTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - startTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - startTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - startTagAfterAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_FRAMESET: { - startTagAfterAfterFrameset(this, token); - break; - } - default: - } - } - /** @internal */ - onEndTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - if (this.currentNotInHTML) { - endTagInForeignContent(this, token); - } else { - this._endTagOutsideForeignContent(token); - } - } - /** @protected */ - _endTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - endTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - endTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - endTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - endTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - endTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - endTagInBody(this, token); - break; - } - case InsertionMode.TEXT: { - endTagInText(this, token); - break; - } - case InsertionMode.IN_TABLE: { - endTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - endTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - endTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - endTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - endTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - endTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - endTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - endTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - endTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - endTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - endTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - endTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onEof(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - eofInBody(this, token); - break; - } - case InsertionMode.TEXT: { - eofInText(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - eofInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - stopParsing(this, token); - break; - } - default: - } - } - /** @internal */ - onWhitespaceCharacter(token) { - if (this.skipNextNewLine) { - this.skipNextNewLine = false; - if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) { - if (token.chars.length === 1) { - return; - } - token.chars = token.chars.substr(1); - } - } - if (this.tokenizer.inForeignNode) { - this._insertCharacters(token); - return; - } - switch (this.insertionMode) { - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.TEXT: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.AFTER_BODY: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - whitespaceCharacterInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - whitespaceCharacterInTableText(this, token); - break; - } - default: - } - } - }; - function aaObtainFormattingElementEntry(p, token) { - let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); - if (formattingElementEntry) { - if (!p.openElements.contains(formattingElementEntry.element)) { - p.activeFormattingElements.removeEntry(formattingElementEntry); - formattingElementEntry = null; - } else if (!p.openElements.hasInScope(token.tagID)) { - formattingElementEntry = null; - } - } else { - genericEndTagInBody(p, token); - } - return formattingElementEntry; - } - function aaObtainFurthestBlock(p, formattingElementEntry) { - let furthestBlock = null; - let idx = p.openElements.stackTop; - for (; idx >= 0; idx--) { - const element = p.openElements.items[idx]; - if (element === formattingElementEntry.element) { - break; - } - if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) { - furthestBlock = element; - } - } - if (!furthestBlock) { - p.openElements.shortenToLength(idx < 0 ? 0 : idx); - p.activeFormattingElements.removeEntry(formattingElementEntry); - } - return furthestBlock; - } - function aaInnerLoop(p, furthestBlock, formattingElement) { - let lastElement = furthestBlock; - let nextElement = p.openElements.getCommonAncestor(furthestBlock); - for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { - nextElement = p.openElements.getCommonAncestor(element); - const elementEntry = p.activeFormattingElements.getElementEntry(element); - const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; - const shouldRemoveFromOpenElements = !elementEntry || counterOverflow; - if (shouldRemoveFromOpenElements) { - if (counterOverflow) { - p.activeFormattingElements.removeEntry(elementEntry); - } - p.openElements.remove(element); - } else { - element = aaRecreateElementFromEntry(p, elementEntry); - if (lastElement === furthestBlock) { - p.activeFormattingElements.bookmark = elementEntry; - } - p.treeAdapter.detachNode(lastElement); - p.treeAdapter.appendChild(element, lastElement); - lastElement = element; - } - } - return lastElement; - } - function aaRecreateElementFromEntry(p, elementEntry) { - const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); - const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); - p.openElements.replace(elementEntry.element, newElement); - elementEntry.element = newElement; - return newElement; - } - function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { - const tn = p.treeAdapter.getTagName(commonAncestor); - const tid = getTagID(tn); - if (p._isElementCausesFosterParenting(tid)) { - p._fosterParentElement(lastElement); - } else { - const ns = p.treeAdapter.getNamespaceURI(commonAncestor); - if (tid === TAG_ID.TEMPLATE && ns === NS.HTML) { - commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); - } - p.treeAdapter.appendChild(commonAncestor, lastElement); - } - } - function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { - const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); - const { token } = formattingElementEntry; - const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); - p._adoptNodes(furthestBlock, newElement); - p.treeAdapter.appendChild(furthestBlock, newElement); - p.activeFormattingElements.insertElementAfterBookmark(newElement, token); - p.activeFormattingElements.removeEntry(formattingElementEntry); - p.openElements.remove(formattingElementEntry.element); - p.openElements.insertAfter(furthestBlock, newElement, token.tagID); - } - function callAdoptionAgency(p, token) { - for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { - const formattingElementEntry = aaObtainFormattingElementEntry(p, token); - if (!formattingElementEntry) { - break; - } - const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); - if (!furthestBlock) { - break; - } - p.activeFormattingElements.bookmark = formattingElementEntry; - const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); - const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); - p.treeAdapter.detachNode(lastElement); - if (commonAncestor) - aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); - aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); - } - } - function appendComment(p, token) { - p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); - } - function appendCommentToRootHtmlElement(p, token) { - p._appendCommentNode(token, p.openElements.items[0]); - } - function appendCommentToDocument(p, token) { - p._appendCommentNode(token, p.document); - } - function stopParsing(p, token) { - p.stopped = true; - if (token.location) { - const target = p.fragmentContext ? 0 : 2; - for (let i = p.openElements.stackTop; i >= target; i--) { - p._setEndLocation(p.openElements.items[i], token); - } - if (!p.fragmentContext && p.openElements.stackTop >= 0) { - const htmlElement = p.openElements.items[0]; - const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); - if (htmlLocation && !htmlLocation.endTag) { - p._setEndLocation(htmlElement, token); - if (p.openElements.stackTop >= 1) { - const bodyElement = p.openElements.items[1]; - const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); - if (bodyLocation && !bodyLocation.endTag) { - p._setEndLocation(bodyElement, token); - } - } - } - } - } - } - function doctypeInInitialMode(p, token) { - p._setDocumentType(token); - const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token); - if (!isConforming(token)) { - p._err(token, ERR.nonConformingDoctype); - } - p.treeAdapter.setDocumentMode(p.document, mode); - p.insertionMode = InsertionMode.BEFORE_HTML; - } - function tokenInInitialMode(p, token) { - p._err(token, ERR.missingDoctype, true); - p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS); - p.insertionMode = InsertionMode.BEFORE_HTML; - p._processToken(token); - } - function startTagBeforeHtml(p, token) { - if (token.tagID === TAG_ID.HTML) { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.BEFORE_HEAD; - } else { - tokenBeforeHtml(p, token); - } - } - function endTagBeforeHtml(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) { - tokenBeforeHtml(p, token); - } - } - function tokenBeforeHtml(p, token) { - p._insertFakeRootElement(); - p.insertionMode = InsertionMode.BEFORE_HEAD; - p._processToken(token); - } - function startTagBeforeHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.HEAD: { - p._insertElement(token, NS.HTML); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - default: { - tokenBeforeHead(p, token); - } - } - } - function endTagBeforeHead(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) { - tokenBeforeHead(p, token); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } - function tokenBeforeHead(p, token) { - p._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); - } - function startTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TITLE: { - p._switchToTextParsing(token, TokenizerMode.RCDATA); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } else { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; - } - break; - } - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - break; - } - case TAG_ID.SCRIPT: { - p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA); - break; - } - case TAG_ID.TEMPLATE: { - p._insertTemplate(token); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TEMPLATE; - p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenInHead(p, token); - } - } - } - function endTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HEAD: { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - break; - } - case TAG_ID.BODY: - case TAG_ID.BR: - case TAG_ID.HTML: { - tokenInHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } - } - function templateEndTagInHead(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.generateImpliedEndTagsThoroughly(); - if (p.openElements.currentTagId !== TAG_ID.TEMPLATE) { - p._err(token, ERR.closingOfElementWithOpenChildElements); - } - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } - function tokenInHead(p, token) { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - p._processToken(token); - } - function startTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.HEAD: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - startTagInHead(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - p._err(token, ERR.nestedNoscriptInHead); - break; - } - default: { - tokenInHeadNoScript(p, token); - } - } - } - function endTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.NOSCRIPT: { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - case TAG_ID.BR: { - tokenInHeadNoScript(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } - } - function tokenInHeadNoScript(p, token) { - const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead; - p._err(token, errCode); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); - } - function startTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BODY: { - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_BODY; - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - p._err(token, ERR.abandonedHeadElementChild); - p.openElements.push(p.headElement, TAG_ID.HEAD); - startTagInHead(p, token); - p.openElements.remove(p.headElement); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenAfterHead(p, token); - } - } - } - function endTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.BODY: - case TAG_ID.HTML: - case TAG_ID.BR: { - tokenAfterHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } - } - function tokenAfterHead(p, token) { - p._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY); - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); - } - function modeInBody(p, token) { - switch (token.type) { - case TokenType.CHARACTER: { - characterInBody(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInBody(p, token); - break; - } - case TokenType.COMMENT: { - appendComment(p, token); - break; - } - case TokenType.START_TAG: { - startTagInBody(p, token); - break; - } - case TokenType.END_TAG: { - endTagInBody(p, token); - break; - } - case TokenType.EOF: { - eofInBody(p, token); - break; - } - default: - } - } - function whitespaceCharacterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); - } - function characterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); - p.framesetOk = false; - } - function htmlStartTagInBody(p, token) { - if (p.openElements.tmplCount === 0) { - p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); - } - } - function bodyStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement && p.openElements.tmplCount === 0) { - p.framesetOk = false; - p.treeAdapter.adoptAttributes(bodyElement, token.attrs); - } - } - function framesetStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (p.framesetOk && bodyElement) { - p.treeAdapter.detachNode(bodyElement); - p.openElements.popAllUpToHtmlElement(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - } - } - function addressStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - } - function numberedHeaderStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - if (NUMBERED_HEADERS.has(p.openElements.currentTagId)) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - } - function preStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.framesetOk = false; - } - function formStartTagInBody(p, token) { - const inTemplate = p.openElements.tmplCount > 0; - if (!p.formElement || inTemplate) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - if (!inTemplate) { - p.formElement = p.openElements.current; - } - } - } - function listItemStartTagInBody(p, token) { - p.framesetOk = false; - const tn = token.tagID; - for (let i = p.openElements.stackTop; i >= 0; i--) { - const elementId = p.openElements.tagIDs[i]; - if (tn === TAG_ID.LI && elementId === TAG_ID.LI || (tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT)) { - p.openElements.generateImpliedEndTagsWithExclusion(elementId); - p.openElements.popUntilTagNamePopped(elementId); - break; - } - if (elementId !== TAG_ID.ADDRESS && elementId !== TAG_ID.DIV && elementId !== TAG_ID.P && p._isSpecialElement(p.openElements.items[i], elementId)) { - break; - } - } - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - } - function plaintextStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.tokenizer.state = TokenizerMode.PLAINTEXT; - } - function buttonStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BUTTON)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.BUTTON); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; - } - function aStartTagInBody(p, token) { - const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A); - if (activeElementEntry) { - callAdoptionAgency(p, token); - p.openElements.remove(activeElementEntry.element); - p.activeFormattingElements.removeEntry(activeElementEntry); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); - } - function bStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); - } - function nobrStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - if (p.openElements.hasInScope(TAG_ID.NOBR)) { - callAdoptionAgency(p, token); - p._reconstructActiveFormattingElements(); - } - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); - } - function appletStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; - } - function tableStartTagInBody(p, token) { - if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TABLE; - } - function areaStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; - } - function isHiddenInput(token) { - const inputType = getTokenAttr(token, ATTRS.TYPE); - return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; - } - function inputStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - if (!isHiddenInput(token)) { - p.framesetOk = false; - } - token.ackSelfClosing = true; - } - function paramStartTagInBody(p, token) { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - } - function hrStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; - } - function imageStartTagInBody(p, token) { - token.tagName = TAG_NAMES.IMG; - token.tagID = TAG_ID.IMG; - areaStartTagInBody(p, token); - } - function textareaStartTagInBody(p, token) { - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.tokenizer.state = TokenizerMode.RCDATA; - p.originalInsertionMode = p.insertionMode; - p.framesetOk = false; - p.insertionMode = InsertionMode.TEXT; - } - function xmpStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._reconstructActiveFormattingElements(); - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } - function iframeStartTagInBody(p, token) { - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } - function rawTextStartTagInBody(p, token) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } - function selectStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = p.insertionMode === InsertionMode.IN_TABLE || p.insertionMode === InsertionMode.IN_CAPTION || p.insertionMode === InsertionMode.IN_TABLE_BODY || p.insertionMode === InsertionMode.IN_ROW || p.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT; - } - function optgroupStartTagInBody(p, token) { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - } - function rbStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTags(); - } - p._insertElement(token, NS.HTML); - } - function rtStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC); - } - p._insertElement(token, NS.HTML); - } - function mathStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenMathMLAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.MATHML); - } else { - p._insertElement(token, NS.MATHML); - } - token.ackSelfClosing = true; - } - function svgStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenSVGAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.SVG); - } else { - p._insertElement(token, NS.SVG); - } - token.ackSelfClosing = true; - } - function genericStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - } - function startTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.B: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - bStartTagInBody(p, token); - break; - } - case TAG_ID.A: { - aStartTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderStartTagInBody(p, token); - break; - } - case TAG_ID.P: - case TAG_ID.DL: - case TAG_ID.OL: - case TAG_ID.UL: - case TAG_ID.DIV: - case TAG_ID.DIR: - case TAG_ID.NAV: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.DETAILS: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.SEARCH: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressStartTagInBody(p, token); - break; - } - case TAG_ID.LI: - case TAG_ID.DD: - case TAG_ID.DT: { - listItemStartTagInBody(p, token); - break; - } - case TAG_ID.BR: - case TAG_ID.IMG: - case TAG_ID.WBR: - case TAG_ID.AREA: - case TAG_ID.EMBED: - case TAG_ID.KEYGEN: { - areaStartTagInBody(p, token); - break; - } - case TAG_ID.HR: { - hrStartTagInBody(p, token); - break; - } - case TAG_ID.RB: - case TAG_ID.RTC: { - rbStartTagInBody(p, token); - break; - } - case TAG_ID.RT: - case TAG_ID.RP: { - rtStartTagInBody(p, token); - break; - } - case TAG_ID.PRE: - case TAG_ID.LISTING: { - preStartTagInBody(p, token); - break; - } - case TAG_ID.XMP: { - xmpStartTagInBody(p, token); - break; - } - case TAG_ID.SVG: { - svgStartTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlStartTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.STYLE: - case TAG_ID.TITLE: - case TAG_ID.SCRIPT: - case TAG_ID.BGSOUND: - case TAG_ID.BASEFONT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.BODY: { - bodyStartTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInBody(p, token); - break; - } - case TAG_ID.NOBR: { - nobrStartTagInBody(p, token); - break; - } - case TAG_ID.MATH: { - mathStartTagInBody(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInBody(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInBody(p, token); - break; - } - case TAG_ID.PARAM: - case TAG_ID.TRACK: - case TAG_ID.SOURCE: { - paramStartTagInBody(p, token); - break; - } - case TAG_ID.IMAGE: { - imageStartTagInBody(p, token); - break; - } - case TAG_ID.BUTTON: { - buttonStartTagInBody(p, token); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletStartTagInBody(p, token); - break; - } - case TAG_ID.IFRAME: { - iframeStartTagInBody(p, token); - break; - } - case TAG_ID.SELECT: { - selectStartTagInBody(p, token); - break; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - optgroupStartTagInBody(p, token); - break; - } - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: { - rawTextStartTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - framesetStartTagInBody(p, token); - break; - } - case TAG_ID.TEXTAREA: { - textareaStartTagInBody(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - rawTextStartTagInBody(p, token); - } else { - genericStartTagInBody(p, token); - } - break; - } - case TAG_ID.PLAINTEXT: { - plaintextStartTagInBody(p, token); - break; - } - case TAG_ID.COL: - case TAG_ID.TH: - case TAG_ID.TD: - case TAG_ID.TR: - case TAG_ID.HEAD: - case TAG_ID.FRAME: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: { - break; - } - default: { - genericStartTagInBody(p, token); - } - } - } - function bodyEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - if (p.options.sourceCodeLocationInfo) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement) { - p._setEndLocation(bodyElement, token); - } - } - } - } - function htmlEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - endTagAfterBody(p, token); - } - } - function addressEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - } - } - function formEndTagInBody(p) { - const inTemplate = p.openElements.tmplCount > 0; - const { formElement } = p; - if (!inTemplate) { - p.formElement = null; - } - if ((formElement || inTemplate) && p.openElements.hasInScope(TAG_ID.FORM)) { - p.openElements.generateImpliedEndTags(); - if (inTemplate) { - p.openElements.popUntilTagNamePopped(TAG_ID.FORM); - } else if (formElement) { - p.openElements.remove(formElement); - } - } - } - function pEndTagInBody(p) { - if (!p.openElements.hasInButtonScope(TAG_ID.P)) { - p._insertFakeElement(TAG_NAMES.P, TAG_ID.P); - } - p._closePElement(); - } - function liEndTagInBody(p) { - if (p.openElements.hasInListItemScope(TAG_ID.LI)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI); - p.openElements.popUntilTagNamePopped(TAG_ID.LI); - } - } - function ddEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tn); - p.openElements.popUntilTagNamePopped(tn); - } - } - function numberedHeaderEndTagInBody(p) { - if (p.openElements.hasNumberedHeaderInScope()) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilNumberedHeaderPopped(); - } - } - function appletEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - } - } - function brEndTagInBody(p) { - p._reconstructActiveFormattingElements(); - p._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR); - p.openElements.pop(); - p.framesetOk = false; - } - function genericEndTagInBody(p, token) { - const tn = token.tagName; - const tid = token.tagID; - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - const elementId = p.openElements.tagIDs[i]; - if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tid); - if (p.openElements.stackTop >= i) - p.openElements.shortenToLength(i); - break; - } - if (p._isSpecialElement(element, elementId)) { - break; - } - } - } - function endTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.A: - case TAG_ID.B: - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.NOBR: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - callAdoptionAgency(p, token); - break; - } - case TAG_ID.P: { - pEndTagInBody(p); - break; - } - case TAG_ID.DL: - case TAG_ID.UL: - case TAG_ID.OL: - case TAG_ID.DIR: - case TAG_ID.DIV: - case TAG_ID.NAV: - case TAG_ID.PRE: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.BUTTON: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.DETAILS: - case TAG_ID.SEARCH: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.LISTING: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressEndTagInBody(p, token); - break; - } - case TAG_ID.LI: { - liEndTagInBody(p); - break; - } - case TAG_ID.DD: - case TAG_ID.DT: { - ddEndTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderEndTagInBody(p); - break; - } - case TAG_ID.BR: { - brEndTagInBody(p); - break; - } - case TAG_ID.BODY: { - bodyEndTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlEndTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formEndTagInBody(p); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletEndTagInBody(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - genericEndTagInBody(p, token); - } - } - } - function eofInBody(p, token) { - if (p.tmplInsertionModeStack.length > 0) { - eofInTemplate(p, token); - } else { - stopParsing(p, token); - } - } - function endTagInText(p, token) { - var _a2; - if (token.tagID === TAG_ID.SCRIPT) { - (_a2 = p.scriptHandler) === null || _a2 === void 0 ? void 0 : _a2.call(p, p.openElements.current); - } - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; - } - function eofInText(p, token) { - p._err(token, ERR.eofInElementThatCanContainOnlyText); - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; - p.onEof(token); - } - function characterInTable(p, token) { - if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { - p.pendingCharacterTokens.length = 0; - p.hasNonWhitespacePendingCharacterToken = false; - p.originalInsertionMode = p.insertionMode; - p.insertionMode = InsertionMode.IN_TABLE_TEXT; - switch (token.type) { - case TokenType.CHARACTER: { - characterInTableText(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInTableText(p, token); - break; - } - } - } else { - tokenInTable(p, token); - } - } - function captionStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p.activeFormattingElements.insertMarker(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CAPTION; - } - function colgroupStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - } - function colStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); - } - function tbodyStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - } - function tdStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - } - function tableStartTagInTable(p, token) { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - p._processStartTag(token); - } - } - function inputStartTagInTable(p, token) { - if (isHiddenInput(token)) { - p._appendElement(token, NS.HTML); - } else { - tokenInTable(p, token); - } - token.ackSelfClosing = true; - } - function formStartTagInTable(p, token) { - if (!p.formElement && p.openElements.tmplCount === 0) { - p._insertElement(token, NS.HTML); - p.formElement = p.openElements.current; - p.openElements.pop(); - } - } - function startTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - tdStartTagInTable(p, token); - break; - } - case TAG_ID.STYLE: - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.COL: { - colStartTagInTable(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInTable(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInTable(p, token); - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - tbodyStartTagInTable(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInTable(p, token); - break; - } - case TAG_ID.CAPTION: { - captionStartTagInTable(p, token); - break; - } - case TAG_ID.COLGROUP: { - colgroupStartTagInTable(p, token); - break; - } - default: { - tokenInTable(p, token); - } - } - } - function endTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - tokenInTable(p, token); - } - } - } - function tokenInTable(p, token) { - const savedFosterParentingState = p.fosterParentingEnabled; - p.fosterParentingEnabled = true; - modeInBody(p, token); - p.fosterParentingEnabled = savedFosterParentingState; - } - function whitespaceCharacterInTableText(p, token) { - p.pendingCharacterTokens.push(token); - } - function characterInTableText(p, token) { - p.pendingCharacterTokens.push(token); - p.hasNonWhitespacePendingCharacterToken = true; - } - function tokenInTableText(p, token) { - let i = 0; - if (p.hasNonWhitespacePendingCharacterToken) { - for (; i < p.pendingCharacterTokens.length; i++) { - tokenInTable(p, p.pendingCharacterTokens[i]); - } - } else { - for (; i < p.pendingCharacterTokens.length; i++) { - p._insertCharacters(p.pendingCharacterTokens[i]); - } - } - p.insertionMode = p.originalInsertionMode; - p._processToken(token); - } - var TABLE_VOID_ELEMENTS = /* @__PURE__ */ new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]); - function startTagInCaption(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - } else { - startTagInBody(p, token); - } - } - function endTagInCaption(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.CAPTION: - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - if (tn === TAG_ID.TABLE) { - endTagInTable(p, token); - } - } - break; - } - case TAG_ID.BODY: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - endTagInBody(p, token); - } - } - } - function startTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.COL: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: { - tokenInColumnGroup(p, token); - } - } - } - function endTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.COLGROUP: { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.COL: { - break; - } - default: { - tokenInColumnGroup(p, token); - } - } - } - function tokenInColumnGroup(p, token) { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - p._processToken(token); - } - } - function startTagInTableBody(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - p.openElements.clearBackToTableBodyContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_ROW; - break; - } - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableBodyContext(); - p._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR); - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } - } - function endTagInTableBody(p, token) { - const tn = token.tagID; - switch (token.tagID) { - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - endTagInTable(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - break; - } - default: { - endTagInTable(p, token); - } - } - } - function startTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableRowContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CELL; - p.activeFormattingElements.insertMarker(); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } - } - function endTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: { - break; - } - default: { - endTagInTable(p, token); - } - } - } - function startTagInCell(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.TD) || p.openElements.hasInTableScope(TAG_ID.TH)) { - p._closeTableCell(); - startTagInRow(p, token); - } - } else { - startTagInBody(p, token); - } - } - function endTagInCell(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.TD: - case TAG_ID.TH: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_ROW; - } - break; - } - case TAG_ID.TABLE: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(tn)) { - p._closeTableCell(); - endTagInRow(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: { - break; - } - default: { - endTagInBody(p, token); - } - } - } - function startTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.OPTGROUP: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.HR: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.INPUT: - case TAG_ID.KEYGEN: - case TAG_ID.TEXTAREA: - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - if (token.tagID !== TAG_ID.SELECT) { - p._processStartTag(token); - } - } - break; - } - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: - } - } - function endTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.OPTGROUP: { - if (p.openElements.stackTop > 0 && p.openElements.currentTagId === TAG_ID.OPTION && p.openElements.tagIDs[p.openElements.stackTop - 1] === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - break; - } - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: - } - } - function startTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p._processStartTag(token); - } else { - startTagInSelect(p, token); - } - } - function endTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p.onEndTag(token); - } - } else { - endTagInSelect(p, token); - } - } - function startTagInTemplate(p, token) { - switch (token.tagID) { - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - startTagInHead(p, token); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - break; - } - case TAG_ID.COL: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); - break; - } - case TAG_ID.TR: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - break; - } - case TAG_ID.TD: - case TAG_ID.TH: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - default: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; - p.insertionMode = InsertionMode.IN_BODY; - startTagInBody(p, token); - } - } - } - function endTagInTemplate(p, token) { - if (token.tagID === TAG_ID.TEMPLATE) { - templateEndTagInHead(p, token); - } - } - function eofInTemplate(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - p.onEof(token); - } else { - stopParsing(p, token); - } - } - function startTagAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterBody(p, token); - } - } - function endTagAfterBody(p, token) { - var _a2; - if (token.tagID === TAG_ID.HTML) { - if (!p.fragmentContext) { - p.insertionMode = InsertionMode.AFTER_AFTER_BODY; - } - if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === TAG_ID.HTML) { - p._setEndLocation(p.openElements.items[0], token); - const bodyElement = p.openElements.items[1]; - if (bodyElement && !((_a2 = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a2 === void 0 ? void 0 : _a2.endTag)) { - p._setEndLocation(bodyElement, token); - } - } - } else { - tokenAfterBody(p, token); - } - } - function tokenAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); - } - function startTagInFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.FRAME: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } - } - function endTagInFrameset(p, token) { - if (token.tagID === TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { - p.openElements.pop(); - if (!p.fragmentContext && p.openElements.currentTagId !== TAG_ID.FRAMESET) { - p.insertionMode = InsertionMode.AFTER_FRAMESET; - } - } - } - function startTagAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } - } - function endTagAfterFrameset(p, token) { - if (token.tagID === TAG_ID.HTML) { - p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; - } - } - function startTagAfterAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterAfterBody(p, token); - } - } - function tokenAfterAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); - } - function startTagAfterAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } - } - function nullCharacterInForeignContent(p, token) { - token.chars = REPLACEMENT_CHARACTER; - p._insertCharacters(token); - } - function characterInForeignContent(p, token) { - p._insertCharacters(token); - p.framesetOk = false; - } - function popUntilHtmlOrIntegrationPoint(p) { - while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML && !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) { - p.openElements.pop(); - } - } - function startTagInForeignContent(p, token) { - if (causesExit(token)) { - popUntilHtmlOrIntegrationPoint(p); - p._startTagOutsideForeignContent(token); - } else { - const current = p._getAdjustedCurrentElement(); - const currentNs = p.treeAdapter.getNamespaceURI(current); - if (currentNs === NS.MATHML) { - adjustTokenMathMLAttrs(token); - } else if (currentNs === NS.SVG) { - adjustTokenSVGTagName(token); - adjustTokenSVGAttrs(token); - } - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, currentNs); - } else { - p._insertElement(token, currentNs); - } - token.ackSelfClosing = true; - } - } - function endTagInForeignContent(p, token) { - if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) { - popUntilHtmlOrIntegrationPoint(p); - p._endTagOutsideForeignContent(token); - return; - } - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) { - p._endTagOutsideForeignContent(token); - break; - } - const tagName = p.treeAdapter.getTagName(element); - if (tagName.toLowerCase() === token.tagName) { - token.tagName = tagName; - p.openElements.shortenToLength(i); - break; - } - } - } - - // node_modules/parse5/dist/serializer/index.js - var VOID_ELEMENTS = /* @__PURE__ */ new Set([ - TAG_NAMES.AREA, - TAG_NAMES.BASE, - TAG_NAMES.BASEFONT, - TAG_NAMES.BGSOUND, - TAG_NAMES.BR, - TAG_NAMES.COL, - TAG_NAMES.EMBED, - TAG_NAMES.FRAME, - TAG_NAMES.HR, - TAG_NAMES.IMG, - TAG_NAMES.INPUT, - TAG_NAMES.KEYGEN, - TAG_NAMES.LINK, - TAG_NAMES.META, - TAG_NAMES.PARAM, - TAG_NAMES.SOURCE, - TAG_NAMES.TRACK, - TAG_NAMES.WBR - ]); - function isVoidElement(node, options) { - return options.treeAdapter.isElementNode(node) && options.treeAdapter.getNamespaceURI(node) === NS.HTML && VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)); - } - var defaultOpts3 = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true }; - function serializeOuter(node, options) { - const opts = { ...defaultOpts3, ...options }; - return serializeNode(node, opts); - } - function serializeChildNodes(parentNode, options) { - let html3 = ""; - const container = options.treeAdapter.isElementNode(parentNode) && options.treeAdapter.getTagName(parentNode) === TAG_NAMES.TEMPLATE && options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML ? options.treeAdapter.getTemplateContent(parentNode) : parentNode; - const childNodes = options.treeAdapter.getChildNodes(container); - if (childNodes) { - for (const currentNode of childNodes) { - html3 += serializeNode(currentNode, options); - } - } - return html3; - } - function serializeNode(node, options) { - if (options.treeAdapter.isElementNode(node)) { - return serializeElement(node, options); - } - if (options.treeAdapter.isTextNode(node)) { - return serializeTextNode(node, options); - } - if (options.treeAdapter.isCommentNode(node)) { - return serializeCommentNode(node, options); - } - if (options.treeAdapter.isDocumentTypeNode(node)) { - return serializeDocumentTypeNode(node, options); - } - return ""; - } - function serializeElement(node, options) { - const tn = options.treeAdapter.getTagName(node); - return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? "" : `${serializeChildNodes(node, options)}</${tn}>`}`; - } - function serializeAttributes(node, { treeAdapter }) { - let html3 = ""; - for (const attr2 of treeAdapter.getAttrList(node)) { - html3 += " "; - if (attr2.namespace) { - switch (attr2.namespace) { - case NS.XML: { - html3 += `xml:${attr2.name}`; - break; - } - case NS.XMLNS: { - if (attr2.name !== "xmlns") { - html3 += "xmlns:"; - } - html3 += attr2.name; - break; - } - case NS.XLINK: { - html3 += `xlink:${attr2.name}`; - break; - } - default: { - html3 += `${attr2.prefix}:${attr2.name}`; - } - } - } else { - html3 += attr2.name; - } - html3 += `="${escapeAttribute(attr2.value)}"`; - } - return html3; - } - function serializeTextNode(node, options) { - const { treeAdapter } = options; - const content = treeAdapter.getTextNodeContent(node); - const parent2 = treeAdapter.getParentNode(node); - const parentTn = parent2 && treeAdapter.isElementNode(parent2) && treeAdapter.getTagName(parent2); - return parentTn && treeAdapter.getNamespaceURI(parent2) === NS.HTML && hasUnescapedText(parentTn, options.scriptingEnabled) ? content : escapeText(content); - } - function serializeCommentNode(node, { treeAdapter }) { - return `<!--${treeAdapter.getCommentNodeContent(node)}-->`; - } - function serializeDocumentTypeNode(node, { treeAdapter }) { - return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`; - } - - // node_modules/parse5/dist/index.js - function parse4(html3, options) { - return Parser.parse(html3, options); - } - function parseFragment(fragmentContext, html3, options) { - if (typeof fragmentContext === "string") { - options = html3; - html3 = fragmentContext; - fragmentContext = null; - } - const parser = Parser.getFragmentParser(fragmentContext, options); - parser.tokenizer.write(html3, true); - return parser.getFragment(); - } - - // node_modules/parse5-htmlparser2-tree-adapter/dist/index.js - function enquoteDoctypeId(id) { - const quote = id.includes('"') ? "'" : '"'; - return quote + id + quote; - } - function serializeDoctypeContent(name, publicId, systemId) { - let str = "!DOCTYPE "; - if (name) { - str += name; - } - if (publicId) { - str += ` PUBLIC ${enquoteDoctypeId(publicId)}`; - } else if (systemId) { - str += " SYSTEM"; - } - if (systemId) { - str += ` ${enquoteDoctypeId(systemId)}`; - } - return str; - } - var adapter = { - // Re-exports from domhandler - isCommentNode: isComment, - isElementNode: isTag2, - isTextNode: isText, - //Node construction - createDocument() { - const node = new Document([]); - node["x-mode"] = html_exports.DOCUMENT_MODE.NO_QUIRKS; - return node; - }, - createDocumentFragment() { - return new Document([]); - }, - createElement(tagName, namespaceURI, attrs) { - const attribs = /* @__PURE__ */ Object.create(null); - const attribsNamespace = /* @__PURE__ */ Object.create(null); - const attribsPrefix = /* @__PURE__ */ Object.create(null); - for (let i = 0; i < attrs.length; i++) { - const attrName = attrs[i].name; - attribs[attrName] = attrs[i].value; - attribsNamespace[attrName] = attrs[i].namespace; - attribsPrefix[attrName] = attrs[i].prefix; - } - const node = new Element(tagName, attribs, []); - node.namespace = namespaceURI; - node["x-attribsNamespace"] = attribsNamespace; - node["x-attribsPrefix"] = attribsPrefix; - return node; - }, - createCommentNode(data2) { - return new Comment2(data2); - }, - createTextNode(value) { - return new Text2(value); - }, - //Tree mutation - appendChild(parentNode, newNode) { - const prev2 = parentNode.children[parentNode.children.length - 1]; - if (prev2) { - prev2.next = newNode; - newNode.prev = prev2; - } - parentNode.children.push(newNode); - newNode.parent = parentNode; - }, - insertBefore(parentNode, newNode, referenceNode) { - const insertionIdx = parentNode.children.indexOf(referenceNode); - const { prev: prev2 } = referenceNode; - if (prev2) { - prev2.next = newNode; - newNode.prev = prev2; - } - referenceNode.prev = newNode; - newNode.next = referenceNode; - parentNode.children.splice(insertionIdx, 0, newNode); - newNode.parent = parentNode; - }, - setTemplateContent(templateElement, contentElement) { - adapter.appendChild(templateElement, contentElement); - }, - getTemplateContent(templateElement) { - return templateElement.children[0]; - }, - setDocumentType(document, name, publicId, systemId) { - const data2 = serializeDoctypeContent(name, publicId, systemId); - let doctypeNode = document.children.find((node) => isDirective(node) && node.name === "!doctype"); - if (doctypeNode) { - doctypeNode.data = data2 !== null && data2 !== void 0 ? data2 : null; - } else { - doctypeNode = new ProcessingInstruction("!doctype", data2); - adapter.appendChild(document, doctypeNode); - } - doctypeNode["x-name"] = name; - doctypeNode["x-publicId"] = publicId; - doctypeNode["x-systemId"] = systemId; - }, - setDocumentMode(document, mode) { - document["x-mode"] = mode; - }, - getDocumentMode(document) { - return document["x-mode"]; - }, - detachNode(node) { - if (node.parent) { - const idx = node.parent.children.indexOf(node); - const { prev: prev2, next: next2 } = node; - node.prev = null; - node.next = null; - if (prev2) { - prev2.next = next2; - } - if (next2) { - next2.prev = prev2; - } - node.parent.children.splice(idx, 1); - node.parent = null; - } - }, - insertText(parentNode, text3) { - const lastChild = parentNode.children[parentNode.children.length - 1]; - if (lastChild && isText(lastChild)) { - lastChild.data += text3; - } else { - adapter.appendChild(parentNode, adapter.createTextNode(text3)); - } - }, - insertTextBefore(parentNode, text3, referenceNode) { - const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1]; - if (prevNode && isText(prevNode)) { - prevNode.data += text3; - } else { - adapter.insertBefore(parentNode, adapter.createTextNode(text3), referenceNode); - } - }, - adoptAttributes(recipient, attrs) { - for (let i = 0; i < attrs.length; i++) { - const attrName = attrs[i].name; - if (recipient.attribs[attrName] === void 0) { - recipient.attribs[attrName] = attrs[i].value; - recipient["x-attribsNamespace"][attrName] = attrs[i].namespace; - recipient["x-attribsPrefix"][attrName] = attrs[i].prefix; - } - } - }, - //Tree traversing - getFirstChild(node) { - return node.children[0]; - }, - getChildNodes(node) { - return node.children; - }, - getParentNode(node) { - return node.parent; - }, - getAttrList(element) { - return element.attributes; - }, - //Node data - getTagName(element) { - return element.name; - }, - getNamespaceURI(element) { - return element.namespace; - }, - getTextNodeContent(textNode) { - return textNode.data; - }, - getCommentNodeContent(commentNode) { - return commentNode.data; - }, - getDocumentTypeNodeName(doctypeNode) { - var _a2; - return (_a2 = doctypeNode["x-name"]) !== null && _a2 !== void 0 ? _a2 : ""; - }, - getDocumentTypeNodePublicId(doctypeNode) { - var _a2; - return (_a2 = doctypeNode["x-publicId"]) !== null && _a2 !== void 0 ? _a2 : ""; - }, - getDocumentTypeNodeSystemId(doctypeNode) { - var _a2; - return (_a2 = doctypeNode["x-systemId"]) !== null && _a2 !== void 0 ? _a2 : ""; - }, - //Node types - isDocumentTypeNode(node) { - return isDirective(node) && node.name === "!doctype"; - }, - // Source code location - setNodeSourceCodeLocation(node, location) { - if (location) { - node.startIndex = location.startOffset; - node.endIndex = location.endOffset; - } - node.sourceCodeLocation = location; - }, - getNodeSourceCodeLocation(node) { - return node.sourceCodeLocation; - }, - updateNodeSourceCodeLocation(node, endLocation) { - if (endLocation.endOffset != null) - node.endIndex = endLocation.endOffset; - node.sourceCodeLocation = { - ...node.sourceCodeLocation, - ...endLocation - }; - } - }; - - // node_modules/cheerio/dist/browser/parsers/parse5-adapter.js - function parseWithParse5(content, options, isDocument2, context) { - var _a2; - (_a2 = options.treeAdapter) !== null && _a2 !== void 0 ? _a2 : options.treeAdapter = adapter; - if (options.scriptingEnabled !== false) { - options.scriptingEnabled = true; - } - return isDocument2 ? parse4(content, options) : parseFragment(context, content, options); - } - var renderOpts = { treeAdapter: adapter }; - function renderWithParse5(dom) { - const nodes = "length" in dom ? dom : [dom]; - for (let index2 = 0; index2 < nodes.length; index2 += 1) { - const node = nodes[index2]; - if (isDocument(node)) { - Array.prototype.splice.call(nodes, index2, 1, ...node.children); - } - } - let result = ""; - for (let index2 = 0; index2 < nodes.length; index2 += 1) { - const node = nodes[index2]; - result += serializeOuter(node, renderOpts); - } - return result; - } - - // node_modules/htmlparser2/lib/esm/Tokenizer.js - var CharCodes2; - (function(CharCodes3) { - CharCodes3[CharCodes3["Tab"] = 9] = "Tab"; - CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine"; - CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed"; - CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn"; - CharCodes3[CharCodes3["Space"] = 32] = "Space"; - CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark"; - CharCodes3[CharCodes3["Number"] = 35] = "Number"; - CharCodes3[CharCodes3["Amp"] = 38] = "Amp"; - CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote"; - CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote"; - CharCodes3[CharCodes3["Dash"] = 45] = "Dash"; - CharCodes3[CharCodes3["Slash"] = 47] = "Slash"; - CharCodes3[CharCodes3["Zero"] = 48] = "Zero"; - CharCodes3[CharCodes3["Nine"] = 57] = "Nine"; - CharCodes3[CharCodes3["Semi"] = 59] = "Semi"; - CharCodes3[CharCodes3["Lt"] = 60] = "Lt"; - CharCodes3[CharCodes3["Eq"] = 61] = "Eq"; - CharCodes3[CharCodes3["Gt"] = 62] = "Gt"; - CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark"; - CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA"; - CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA"; - CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF"; - CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF"; - CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ"; - CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ"; - CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX"; - CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket"; - })(CharCodes2 || (CharCodes2 = {})); - var State2; - (function(State3) { - State3[State3["Text"] = 1] = "Text"; - State3[State3["BeforeTagName"] = 2] = "BeforeTagName"; - State3[State3["InTagName"] = 3] = "InTagName"; - State3[State3["InSelfClosingTag"] = 4] = "InSelfClosingTag"; - State3[State3["BeforeClosingTagName"] = 5] = "BeforeClosingTagName"; - State3[State3["InClosingTagName"] = 6] = "InClosingTagName"; - State3[State3["AfterClosingTagName"] = 7] = "AfterClosingTagName"; - State3[State3["BeforeAttributeName"] = 8] = "BeforeAttributeName"; - State3[State3["InAttributeName"] = 9] = "InAttributeName"; - State3[State3["AfterAttributeName"] = 10] = "AfterAttributeName"; - State3[State3["BeforeAttributeValue"] = 11] = "BeforeAttributeValue"; - State3[State3["InAttributeValueDq"] = 12] = "InAttributeValueDq"; - State3[State3["InAttributeValueSq"] = 13] = "InAttributeValueSq"; - State3[State3["InAttributeValueNq"] = 14] = "InAttributeValueNq"; - State3[State3["BeforeDeclaration"] = 15] = "BeforeDeclaration"; - State3[State3["InDeclaration"] = 16] = "InDeclaration"; - State3[State3["InProcessingInstruction"] = 17] = "InProcessingInstruction"; - State3[State3["BeforeComment"] = 18] = "BeforeComment"; - State3[State3["CDATASequence"] = 19] = "CDATASequence"; - State3[State3["InSpecialComment"] = 20] = "InSpecialComment"; - State3[State3["InCommentLike"] = 21] = "InCommentLike"; - State3[State3["BeforeSpecialS"] = 22] = "BeforeSpecialS"; - State3[State3["BeforeSpecialT"] = 23] = "BeforeSpecialT"; - State3[State3["SpecialStartSequence"] = 24] = "SpecialStartSequence"; - State3[State3["InSpecialTag"] = 25] = "InSpecialTag"; - State3[State3["InEntity"] = 26] = "InEntity"; - })(State2 || (State2 = {})); - function isWhitespace3(c) { - return c === CharCodes2.Space || c === CharCodes2.NewLine || c === CharCodes2.Tab || c === CharCodes2.FormFeed || c === CharCodes2.CarriageReturn; - } - function isEndOfTagSection(c) { - return c === CharCodes2.Slash || c === CharCodes2.Gt || isWhitespace3(c); - } - function isASCIIAlpha(c) { - return c >= CharCodes2.LowerA && c <= CharCodes2.LowerZ || c >= CharCodes2.UpperA && c <= CharCodes2.UpperZ; - } - var QuoteType; - (function(QuoteType2) { - QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue"; - QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted"; - QuoteType2[QuoteType2["Single"] = 2] = "Single"; - QuoteType2[QuoteType2["Double"] = 3] = "Double"; - })(QuoteType || (QuoteType = {})); - var Sequences = { - Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), - // CDATA[ - CdataEnd: new Uint8Array([93, 93, 62]), - // ]]> - CommentEnd: new Uint8Array([45, 45, 62]), - // `-->` - ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), - // `<\/script` - StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), - // `</style` - TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), - // `</title` - TextareaEnd: new Uint8Array([ - 60, - 47, - 116, - 101, - 120, - 116, - 97, - 114, - 101, - 97 - ]) - // `</textarea` - }; - var Tokenizer2 = class { - constructor({ xmlMode = false, decodeEntities = true }, cbs) { - this.cbs = cbs; - this.state = State2.Text; - this.buffer = ""; - this.sectionStart = 0; - this.index = 0; - this.entityStart = 0; - this.baseState = State2.Text; - this.isSpecial = false; - this.running = true; - this.offset = 0; - this.currentSequence = void 0; - this.sequenceIndex = 0; - this.xmlMode = xmlMode; - this.decodeEntities = decodeEntities; - this.entityDecoder = new EntityDecoder(xmlMode ? decode_data_xml_default : decode_data_html_default, (cp, consumed) => this.emitCodePoint(cp, consumed)); - } - reset() { - this.state = State2.Text; - this.buffer = ""; - this.sectionStart = 0; - this.index = 0; - this.baseState = State2.Text; - this.currentSequence = void 0; - this.running = true; - this.offset = 0; - } - write(chunk) { - this.offset += this.buffer.length; - this.buffer = chunk; - this.parse(); - } - end() { - if (this.running) - this.finish(); - } - pause() { - this.running = false; - } - resume() { - this.running = true; - if (this.index < this.buffer.length + this.offset) { - this.parse(); - } - } - stateText(c) { - if (c === CharCodes2.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes2.Lt)) { - if (this.index > this.sectionStart) { - this.cbs.ontext(this.sectionStart, this.index); - } - this.state = State2.BeforeTagName; - this.sectionStart = this.index; - } else if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } - stateSpecialStartSequence(c) { - const isEnd = this.sequenceIndex === this.currentSequence.length; - const isMatch = isEnd ? ( - // If we are at the end of the sequence, make sure the tag name has ended - isEndOfTagSection(c) - ) : ( - // Otherwise, do a case-insensitive comparison - (c | 32) === this.currentSequence[this.sequenceIndex] - ); - if (!isMatch) { - this.isSpecial = false; - } else if (!isEnd) { - this.sequenceIndex++; - return; - } - this.sequenceIndex = 0; - this.state = State2.InTagName; - this.stateInTagName(c); - } - /** Look for an end tag. For <title> tags, also decode entities. */ - stateInSpecialTag(c) { - if (this.sequenceIndex === this.currentSequence.length) { - if (c === CharCodes2.Gt || isWhitespace3(c)) { - const endOfText = this.index - this.currentSequence.length; - if (this.sectionStart < endOfText) { - const actualIndex = this.index; - this.index = endOfText; - this.cbs.ontext(this.sectionStart, endOfText); - this.index = actualIndex; - } - this.isSpecial = false; - this.sectionStart = endOfText + 2; - this.stateInClosingTagName(c); - return; - } - this.sequenceIndex = 0; - } - if ((c | 32) === this.currentSequence[this.sequenceIndex]) { - this.sequenceIndex += 1; - } else if (this.sequenceIndex === 0) { - if (this.currentSequence === Sequences.TitleEnd) { - if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } else if (this.fastForwardTo(CharCodes2.Lt)) { - this.sequenceIndex = 1; - } - } else { - this.sequenceIndex = Number(c === CharCodes2.Lt); - } - } - stateCDATASequence(c) { - if (c === Sequences.Cdata[this.sequenceIndex]) { - if (++this.sequenceIndex === Sequences.Cdata.length) { - this.state = State2.InCommentLike; - this.currentSequence = Sequences.CdataEnd; - this.sequenceIndex = 0; - this.sectionStart = this.index + 1; - } - } else { - this.sequenceIndex = 0; - this.state = State2.InDeclaration; - this.stateInDeclaration(c); - } - } - /** - * When we wait for one specific character, we can speed things up - * by skipping through the buffer until we find it. - * - * @returns Whether the character was found. - */ - fastForwardTo(c) { - while (++this.index < this.buffer.length + this.offset) { - if (this.buffer.charCodeAt(this.index - this.offset) === c) { - return true; - } - } - this.index = this.buffer.length + this.offset - 1; - return false; - } - /** - * Comments and CDATA end with `-->` and `]]>`. - * - * Their common qualities are: - * - Their end sequences have a distinct character they start with. - * - That character is then repeated, so we have to check multiple repeats. - * - All characters but the start character of the sequence can be skipped. - */ - stateInCommentLike(c) { - if (c === this.currentSequence[this.sequenceIndex]) { - if (++this.sequenceIndex === this.currentSequence.length) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(this.sectionStart, this.index, 2); - } else { - this.cbs.oncomment(this.sectionStart, this.index, 2); - } - this.sequenceIndex = 0; - this.sectionStart = this.index + 1; - this.state = State2.Text; - } - } else if (this.sequenceIndex === 0) { - if (this.fastForwardTo(this.currentSequence[0])) { - this.sequenceIndex = 1; - } - } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { - this.sequenceIndex = 0; - } - } - /** - * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name. - * - * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar). - * We allow anything that wouldn't end the tag. - */ - isTagStartChar(c) { - return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c); - } - startSpecial(sequence, offset) { - this.isSpecial = true; - this.currentSequence = sequence; - this.sequenceIndex = offset; - this.state = State2.SpecialStartSequence; - } - stateBeforeTagName(c) { - if (c === CharCodes2.ExclamationMark) { - this.state = State2.BeforeDeclaration; - this.sectionStart = this.index + 1; - } else if (c === CharCodes2.Questionmark) { - this.state = State2.InProcessingInstruction; - this.sectionStart = this.index + 1; - } else if (this.isTagStartChar(c)) { - const lower = c | 32; - this.sectionStart = this.index; - if (this.xmlMode) { - this.state = State2.InTagName; - } else if (lower === Sequences.ScriptEnd[2]) { - this.state = State2.BeforeSpecialS; - } else if (lower === Sequences.TitleEnd[2]) { - this.state = State2.BeforeSpecialT; - } else { - this.state = State2.InTagName; - } - } else if (c === CharCodes2.Slash) { - this.state = State2.BeforeClosingTagName; - } else { - this.state = State2.Text; - this.stateText(c); - } - } - stateInTagName(c) { - if (isEndOfTagSection(c)) { - this.cbs.onopentagname(this.sectionStart, this.index); - this.sectionStart = -1; - this.state = State2.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } - } - stateBeforeClosingTagName(c) { - if (isWhitespace3(c)) { - } else if (c === CharCodes2.Gt) { - this.state = State2.Text; - } else { - this.state = this.isTagStartChar(c) ? State2.InClosingTagName : State2.InSpecialComment; - this.sectionStart = this.index; - } - } - stateInClosingTagName(c) { - if (c === CharCodes2.Gt || isWhitespace3(c)) { - this.cbs.onclosetag(this.sectionStart, this.index); - this.sectionStart = -1; - this.state = State2.AfterClosingTagName; - this.stateAfterClosingTagName(c); - } - } - stateAfterClosingTagName(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.state = State2.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeAttributeName(c) { - if (c === CharCodes2.Gt) { - this.cbs.onopentagend(this.index); - if (this.isSpecial) { - this.state = State2.InSpecialTag; - this.sequenceIndex = 0; - } else { - this.state = State2.Text; - } - this.sectionStart = this.index + 1; - } else if (c === CharCodes2.Slash) { - this.state = State2.InSelfClosingTag; - } else if (!isWhitespace3(c)) { - this.state = State2.InAttributeName; - this.sectionStart = this.index; - } - } - stateInSelfClosingTag(c) { - if (c === CharCodes2.Gt) { - this.cbs.onselfclosingtag(this.index); - this.state = State2.Text; - this.sectionStart = this.index + 1; - this.isSpecial = false; - } else if (!isWhitespace3(c)) { - this.state = State2.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } - } - stateInAttributeName(c) { - if (c === CharCodes2.Eq || isEndOfTagSection(c)) { - this.cbs.onattribname(this.sectionStart, this.index); - this.sectionStart = this.index; - this.state = State2.AfterAttributeName; - this.stateAfterAttributeName(c); - } - } - stateAfterAttributeName(c) { - if (c === CharCodes2.Eq) { - this.state = State2.BeforeAttributeValue; - } else if (c === CharCodes2.Slash || c === CharCodes2.Gt) { - this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); - this.sectionStart = -1; - this.state = State2.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } else if (!isWhitespace3(c)) { - this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); - this.state = State2.InAttributeName; - this.sectionStart = this.index; - } - } - stateBeforeAttributeValue(c) { - if (c === CharCodes2.DoubleQuote) { - this.state = State2.InAttributeValueDq; - this.sectionStart = this.index + 1; - } else if (c === CharCodes2.SingleQuote) { - this.state = State2.InAttributeValueSq; - this.sectionStart = this.index + 1; - } else if (!isWhitespace3(c)) { - this.sectionStart = this.index; - this.state = State2.InAttributeValueNq; - this.stateInAttributeValueNoQuotes(c); - } - } - handleInAttributeValue(c, quote) { - if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = -1; - this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1); - this.state = State2.BeforeAttributeName; - } else if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } - stateInAttributeValueDoubleQuotes(c) { - this.handleInAttributeValue(c, CharCodes2.DoubleQuote); - } - stateInAttributeValueSingleQuotes(c) { - this.handleInAttributeValue(c, CharCodes2.SingleQuote); - } - stateInAttributeValueNoQuotes(c) { - if (isWhitespace3(c) || c === CharCodes2.Gt) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = -1; - this.cbs.onattribend(QuoteType.Unquoted, this.index); - this.state = State2.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } else if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } - stateBeforeDeclaration(c) { - if (c === CharCodes2.OpeningSquareBracket) { - this.state = State2.CDATASequence; - this.sequenceIndex = 0; - } else { - this.state = c === CharCodes2.Dash ? State2.BeforeComment : State2.InDeclaration; - } - } - stateInDeclaration(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.cbs.ondeclaration(this.sectionStart, this.index); - this.state = State2.Text; - this.sectionStart = this.index + 1; - } - } - stateInProcessingInstruction(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.cbs.onprocessinginstruction(this.sectionStart, this.index); - this.state = State2.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeComment(c) { - if (c === CharCodes2.Dash) { - this.state = State2.InCommentLike; - this.currentSequence = Sequences.CommentEnd; - this.sequenceIndex = 2; - this.sectionStart = this.index + 1; - } else { - this.state = State2.InDeclaration; - } - } - stateInSpecialComment(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.cbs.oncomment(this.sectionStart, this.index, 0); - this.state = State2.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeSpecialS(c) { - const lower = c | 32; - if (lower === Sequences.ScriptEnd[3]) { - this.startSpecial(Sequences.ScriptEnd, 4); - } else if (lower === Sequences.StyleEnd[3]) { - this.startSpecial(Sequences.StyleEnd, 4); - } else { - this.state = State2.InTagName; - this.stateInTagName(c); - } - } - stateBeforeSpecialT(c) { - const lower = c | 32; - if (lower === Sequences.TitleEnd[3]) { - this.startSpecial(Sequences.TitleEnd, 4); - } else if (lower === Sequences.TextareaEnd[3]) { - this.startSpecial(Sequences.TextareaEnd, 4); - } else { - this.state = State2.InTagName; - this.stateInTagName(c); - } - } - startEntity() { - this.baseState = this.state; - this.state = State2.InEntity; - this.entityStart = this.index; - this.entityDecoder.startEntity(this.xmlMode ? DecodingMode.Strict : this.baseState === State2.Text || this.baseState === State2.InSpecialTag ? DecodingMode.Legacy : DecodingMode.Attribute); - } - stateInEntity() { - const length = this.entityDecoder.write(this.buffer, this.index - this.offset); - if (length >= 0) { - this.state = this.baseState; - if (length === 0) { - this.index = this.entityStart; - } - } else { - this.index = this.offset + this.buffer.length - 1; - } - } - /** - * Remove data that has already been consumed from the buffer. - */ - cleanup() { - if (this.running && this.sectionStart !== this.index) { - if (this.state === State2.Text || this.state === State2.InSpecialTag && this.sequenceIndex === 0) { - this.cbs.ontext(this.sectionStart, this.index); - this.sectionStart = this.index; - } else if (this.state === State2.InAttributeValueDq || this.state === State2.InAttributeValueSq || this.state === State2.InAttributeValueNq) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = this.index; - } - } - } - shouldContinue() { - return this.index < this.buffer.length + this.offset && this.running; - } - /** - * Iterates through the buffer, calling the function corresponding to the current state. - * - * States that are more likely to be hit are higher up, as a performance improvement. - */ - parse() { - while (this.shouldContinue()) { - const c = this.buffer.charCodeAt(this.index - this.offset); - switch (this.state) { - case State2.Text: { - this.stateText(c); - break; - } - case State2.SpecialStartSequence: { - this.stateSpecialStartSequence(c); - break; - } - case State2.InSpecialTag: { - this.stateInSpecialTag(c); - break; - } - case State2.CDATASequence: { - this.stateCDATASequence(c); - break; - } - case State2.InAttributeValueDq: { - this.stateInAttributeValueDoubleQuotes(c); - break; - } - case State2.InAttributeName: { - this.stateInAttributeName(c); - break; - } - case State2.InCommentLike: { - this.stateInCommentLike(c); - break; - } - case State2.InSpecialComment: { - this.stateInSpecialComment(c); - break; - } - case State2.BeforeAttributeName: { - this.stateBeforeAttributeName(c); - break; - } - case State2.InTagName: { - this.stateInTagName(c); - break; - } - case State2.InClosingTagName: { - this.stateInClosingTagName(c); - break; - } - case State2.BeforeTagName: { - this.stateBeforeTagName(c); - break; - } - case State2.AfterAttributeName: { - this.stateAfterAttributeName(c); - break; - } - case State2.InAttributeValueSq: { - this.stateInAttributeValueSingleQuotes(c); - break; - } - case State2.BeforeAttributeValue: { - this.stateBeforeAttributeValue(c); - break; - } - case State2.BeforeClosingTagName: { - this.stateBeforeClosingTagName(c); - break; - } - case State2.AfterClosingTagName: { - this.stateAfterClosingTagName(c); - break; - } - case State2.BeforeSpecialS: { - this.stateBeforeSpecialS(c); - break; - } - case State2.BeforeSpecialT: { - this.stateBeforeSpecialT(c); - break; - } - case State2.InAttributeValueNq: { - this.stateInAttributeValueNoQuotes(c); - break; - } - case State2.InSelfClosingTag: { - this.stateInSelfClosingTag(c); - break; - } - case State2.InDeclaration: { - this.stateInDeclaration(c); - break; - } - case State2.BeforeDeclaration: { - this.stateBeforeDeclaration(c); - break; - } - case State2.BeforeComment: { - this.stateBeforeComment(c); - break; - } - case State2.InProcessingInstruction: { - this.stateInProcessingInstruction(c); - break; - } - case State2.InEntity: { - this.stateInEntity(); - break; - } - } - this.index++; - } - this.cleanup(); - } - finish() { - if (this.state === State2.InEntity) { - this.entityDecoder.end(); - this.state = this.baseState; - } - this.handleTrailingData(); - this.cbs.onend(); - } - /** Handle any trailing data. */ - handleTrailingData() { - const endIndex = this.buffer.length + this.offset; - if (this.sectionStart >= endIndex) { - return; - } - if (this.state === State2.InCommentLike) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(this.sectionStart, endIndex, 0); - } else { - this.cbs.oncomment(this.sectionStart, endIndex, 0); - } - } else if (this.state === State2.InTagName || this.state === State2.BeforeAttributeName || this.state === State2.BeforeAttributeValue || this.state === State2.AfterAttributeName || this.state === State2.InAttributeName || this.state === State2.InAttributeValueSq || this.state === State2.InAttributeValueDq || this.state === State2.InAttributeValueNq || this.state === State2.InClosingTagName) { - } else { - this.cbs.ontext(this.sectionStart, endIndex); - } - } - emitCodePoint(cp, consumed) { - if (this.baseState !== State2.Text && this.baseState !== State2.InSpecialTag) { - if (this.sectionStart < this.entityStart) { - this.cbs.onattribdata(this.sectionStart, this.entityStart); - } - this.sectionStart = this.entityStart + consumed; - this.index = this.sectionStart - 1; - this.cbs.onattribentity(cp); - } else { - if (this.sectionStart < this.entityStart) { - this.cbs.ontext(this.sectionStart, this.entityStart); - } - this.sectionStart = this.entityStart + consumed; - this.index = this.sectionStart - 1; - this.cbs.ontextentity(cp, this.sectionStart); - } - } - }; - - // node_modules/htmlparser2/lib/esm/Parser.js - var formTags = /* @__PURE__ */ new Set([ - "input", - "option", - "optgroup", - "select", - "button", - "datalist", - "textarea" - ]); - var pTag = /* @__PURE__ */ new Set(["p"]); - var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]); - var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]); - var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]); - var openImpliesClose = /* @__PURE__ */ new Map([ - ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])], - ["th", /* @__PURE__ */ new Set(["th"])], - ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])], - ["body", /* @__PURE__ */ new Set(["head", "link", "script"])], - ["li", /* @__PURE__ */ new Set(["li"])], - ["p", pTag], - ["h1", pTag], - ["h2", pTag], - ["h3", pTag], - ["h4", pTag], - ["h5", pTag], - ["h6", pTag], - ["select", formTags], - ["input", formTags], - ["output", formTags], - ["button", formTags], - ["datalist", formTags], - ["textarea", formTags], - ["option", /* @__PURE__ */ new Set(["option"])], - ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])], - ["dd", ddtTags], - ["dt", ddtTags], - ["address", pTag], - ["article", pTag], - ["aside", pTag], - ["blockquote", pTag], - ["details", pTag], - ["div", pTag], - ["dl", pTag], - ["fieldset", pTag], - ["figcaption", pTag], - ["figure", pTag], - ["footer", pTag], - ["form", pTag], - ["header", pTag], - ["hr", pTag], - ["main", pTag], - ["nav", pTag], - ["ol", pTag], - ["pre", pTag], - ["section", pTag], - ["table", pTag], - ["ul", pTag], - ["rt", rtpTags], - ["rp", rtpTags], - ["tbody", tableSectionTags], - ["tfoot", tableSectionTags] - ]); - var voidElements = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" - ]); - var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); - var htmlIntegrationElements = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignobject", - "desc", - "title" - ]); - var reNameEnd = /\s|\//; - var Parser2 = class { - constructor(cbs, options = {}) { - var _a2, _b, _c, _d, _e, _f; - this.options = options; - this.startIndex = 0; - this.endIndex = 0; - this.openTagStart = 0; - this.tagname = ""; - this.attribname = ""; - this.attribvalue = ""; - this.attribs = null; - this.stack = []; - this.buffers = []; - this.bufferOffset = 0; - this.writeIndex = 0; - this.ended = false; - this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; - this.htmlMode = !this.options.xmlMode; - this.lowerCaseTagNames = (_a2 = options.lowerCaseTags) !== null && _a2 !== void 0 ? _a2 : this.htmlMode; - this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode; - this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode; - this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer2)(this.options, this); - this.foreignContext = [!this.htmlMode]; - (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this); - } - // Tokenizer event handlers - /** @internal */ - ontext(start, endIndex) { - var _a2, _b; - const data2 = this.getSlice(start, endIndex); - this.endIndex = endIndex - 1; - (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, data2); - this.startIndex = endIndex; - } - /** @internal */ - ontextentity(cp, endIndex) { - var _a2, _b; - this.endIndex = endIndex - 1; - (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, fromCodePoint(cp)); - this.startIndex = endIndex; - } - /** - * Checks if the current tag is a void element. Override this if you want - * to specify your own additional void elements. - */ - isVoidElement(name) { - return this.htmlMode && voidElements.has(name); - } - /** @internal */ - onopentagname(start, endIndex) { - this.endIndex = endIndex; - let name = this.getSlice(start, endIndex); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - this.emitOpenTag(name); - } - emitOpenTag(name) { - var _a2, _b, _c, _d; - this.openTagStart = this.startIndex; - this.tagname = name; - const impliesClose = this.htmlMode && openImpliesClose.get(name); - if (impliesClose) { - while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { - const element = this.stack.shift(); - (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, element, true); - } - } - if (!this.isVoidElement(name)) { - this.stack.unshift(name); - if (this.htmlMode) { - if (foreignContextElements.has(name)) { - this.foreignContext.unshift(true); - } else if (htmlIntegrationElements.has(name)) { - this.foreignContext.unshift(false); - } - } - } - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); - if (this.cbs.onopentag) - this.attribs = {}; - } - endOpenTag(isImplied) { - var _a2, _b; - this.startIndex = this.openTagStart; - if (this.attribs) { - (_b = (_a2 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a2, this.tagname, this.attribs, isImplied); - this.attribs = null; - } - if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { - this.cbs.onclosetag(this.tagname, true); - } - this.tagname = ""; - } - /** @internal */ - onopentagend(endIndex) { - this.endIndex = endIndex; - this.endOpenTag(false); - this.startIndex = endIndex + 1; - } - /** @internal */ - onclosetag(start, endIndex) { - var _a2, _b, _c, _d, _e, _f, _g, _h; - this.endIndex = endIndex; - let name = this.getSlice(start, endIndex); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) { - this.foreignContext.shift(); - } - if (!this.isVoidElement(name)) { - const pos = this.stack.indexOf(name); - if (pos !== -1) { - for (let index2 = 0; index2 <= pos; index2++) { - const element = this.stack.shift(); - (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, element, index2 !== pos); - } - } else if (this.htmlMode && name === "p") { - this.emitOpenTag("p"); - this.closeCurrentTag(true); - } - } else if (this.htmlMode && name === "br") { - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br"); - (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true); - (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onselfclosingtag(endIndex) { - this.endIndex = endIndex; - if (this.recognizeSelfClosing || this.foreignContext[0]) { - this.closeCurrentTag(false); - this.startIndex = endIndex + 1; - } else { - this.onopentagend(endIndex); - } - } - closeCurrentTag(isOpenImplied) { - var _a2, _b; - const name = this.tagname; - this.endOpenTag(isOpenImplied); - if (this.stack[0] === name) { - (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, name, !isOpenImplied); - this.stack.shift(); - } - } - /** @internal */ - onattribname(start, endIndex) { - this.startIndex = start; - const name = this.getSlice(start, endIndex); - this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name; - } - /** @internal */ - onattribdata(start, endIndex) { - this.attribvalue += this.getSlice(start, endIndex); - } - /** @internal */ - onattribentity(cp) { - this.attribvalue += fromCodePoint(cp); - } - /** @internal */ - onattribend(quote, endIndex) { - var _a2, _b; - this.endIndex = endIndex; - (_b = (_a2 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a2, this.attribname, this.attribvalue, quote === QuoteType.Double ? '"' : quote === QuoteType.Single ? "'" : quote === QuoteType.NoValue ? void 0 : null); - if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { - this.attribs[this.attribname] = this.attribvalue; - } - this.attribvalue = ""; - } - getInstructionName(value) { - const index2 = value.search(reNameEnd); - let name = index2 < 0 ? value : value.substr(0, index2); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - return name; - } - /** @internal */ - ondeclaration(start, endIndex) { - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex); - if (this.cbs.onprocessinginstruction) { - const name = this.getInstructionName(value); - this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onprocessinginstruction(start, endIndex) { - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex); - if (this.cbs.onprocessinginstruction) { - const name = this.getInstructionName(value); - this.cbs.onprocessinginstruction(`?${name}`, `?${value}`); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - oncomment(start, endIndex, offset) { - var _a2, _b, _c, _d; - this.endIndex = endIndex; - (_b = (_a2 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a2, this.getSlice(start, endIndex - offset)); - (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); - this.startIndex = endIndex + 1; - } - /** @internal */ - oncdata(start, endIndex, offset) { - var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k; - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex - offset); - if (!this.htmlMode || this.options.recognizeCDATA) { - (_b = (_a2 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a2); - (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); - (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); - } else { - (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`); - (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onend() { - var _a2, _b; - if (this.cbs.onclosetag) { - this.endIndex = this.startIndex; - for (let index2 = 0; index2 < this.stack.length; index2++) { - this.cbs.onclosetag(this.stack[index2], true); - } - } - (_b = (_a2 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a2); - } - /** - * Resets the parser to a blank state, ready to parse a new HTML document - */ - reset() { - var _a2, _b, _c, _d; - (_b = (_a2 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a2); - this.tokenizer.reset(); - this.tagname = ""; - this.attribname = ""; - this.attribs = null; - this.stack.length = 0; - this.startIndex = 0; - this.endIndex = 0; - (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); - this.buffers.length = 0; - this.foreignContext.length = 0; - this.foreignContext.unshift(!this.htmlMode); - this.bufferOffset = 0; - this.writeIndex = 0; - this.ended = false; - } - /** - * Resets the parser, then parses a complete document and - * pushes it to the handler. - * - * @param data Document to parse. - */ - parseComplete(data2) { - this.reset(); - this.end(data2); - } - getSlice(start, end2) { - while (start - this.bufferOffset >= this.buffers[0].length) { - this.shiftBuffer(); - } - let slice2 = this.buffers[0].slice(start - this.bufferOffset, end2 - this.bufferOffset); - while (end2 - this.bufferOffset > this.buffers[0].length) { - this.shiftBuffer(); - slice2 += this.buffers[0].slice(0, end2 - this.bufferOffset); - } - return slice2; - } - shiftBuffer() { - this.bufferOffset += this.buffers[0].length; - this.writeIndex--; - this.buffers.shift(); - } - /** - * Parses a chunk of data and calls the corresponding callbacks. - * - * @param chunk Chunk to parse. - */ - write(chunk) { - var _a2, _b; - if (this.ended) { - (_b = (_a2 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a2, new Error(".write() after done!")); - return; - } - this.buffers.push(chunk); - if (this.tokenizer.running) { - this.tokenizer.write(chunk); - this.writeIndex++; - } - } - /** - * Parses the end of the buffer and clears the stack, calls onend. - * - * @param chunk Optional final chunk to parse. - */ - end(chunk) { - var _a2, _b; - if (this.ended) { - (_b = (_a2 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a2, new Error(".end() after done!")); - return; - } - if (chunk) - this.write(chunk); - this.ended = true; - this.tokenizer.end(); - } - /** - * Pauses parsing. The parser won't emit events until `resume` is called. - */ - pause() { - this.tokenizer.pause(); - } - /** - * Resumes parsing after `pause` was called. - */ - resume() { - this.tokenizer.resume(); - while (this.tokenizer.running && this.writeIndex < this.buffers.length) { - this.tokenizer.write(this.buffers[this.writeIndex++]); - } - if (this.ended) - this.tokenizer.end(); - } - /** - * Alias of `write`, for backwards compatibility. - * - * @param chunk Chunk to parse. - * @deprecated - */ - parseChunk(chunk) { - this.write(chunk); - } - /** - * Alias of `end`, for backwards compatibility. - * - * @param chunk Optional final chunk to parse. - * @deprecated - */ - done(chunk) { - this.end(chunk); - } - }; - - // node_modules/htmlparser2/lib/esm/index.js - function parseDocument(data2, options) { - const handler = new DomHandler(void 0, options); - new Parser2(handler, options).end(data2); - return handler.root; - } - - // node_modules/cheerio/dist/browser/load-parse.js - var parse5 = getParse((content, options, isDocument2, context) => options._useHtmlParser2 ? parseDocument(content, options) : parseWithParse5(content, options, isDocument2, context)); - var load = getLoad(parse5, (dom, options) => options._useHtmlParser2 ? esm_default(dom, options) : renderWithParse5(dom)); - - // src/MadaraParser.ts - var import_html_entities = __toESM(require_lib2()); - - // src/MadaraDecrypter.ts - var CryptoJS = __toESM(require_crypto_js_min()); - var CryptoJSFormatter = { - stringify: function(cipherParams) { - const jsonObj = { - ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64), - iv: "", - s: "" - }; - if (cipherParams.iv) { - jsonObj.iv = cipherParams.iv.toString(); - } - if (cipherParams.salt) { - jsonObj.s = cipherParams.salt.toString(); - } - return JSON.stringify(jsonObj); - }, - parse: function(jsonStr) { - const jsonObj = JSON.parse(jsonStr); - const cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct) }); - if (jsonObj.iv) { - cipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv); - } - if (jsonObj.s) { - cipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s); - } - return cipherParams; - } - }; - function decryptData(cipherText, key) { - return JSON.parse(JSON.parse(CryptoJS.AES.decrypt(cipherText, key, { format: CryptoJSFormatter }).toString(CryptoJS.enc.Utf8))); - } - function extractVariableValues(chapterData) { - const variableRegex = /var\s+(\w+)\s*=\s*'([^']*)';/g; - const variables = {}; - let match; - while ((match = variableRegex.exec(chapterData)) !== null) { - const [, variableName, variableValue] = match; - variables[variableName] = variableValue; - } - return variables; - } - - // src/MadaraParser.ts - var Parser3 = class { - constructor() { - this.parseDate = (date) => { - date = date.toUpperCase(); - let time; - const number = Number((/\d*/.exec(date) ?? [])[0]); - if (date.includes("LESS THAN AN HOUR") || date.includes("JUST NOW")) { - time = new Date(Date.now()); - } else if (date.includes("YEAR") || date.includes("YEARS")) { - time = new Date(Date.now() - number * 31556952e3); - } else if (date.includes("MONTH") || date.includes("MONTHS")) { - time = new Date(Date.now() - number * 2592e6); - } else if (date.includes("WEEK") || date.includes("WEEKS")) { - time = new Date(Date.now() - number * 6048e5); - } else if (date.includes("YESTERDAY")) { - time = new Date(Date.now() - 864e5); - } else if (date.includes("DAY") || date.includes("DAYS")) { - time = new Date(Date.now() - number * 864e5); - } else if (date.includes("HOUR") || date.includes("HOURS")) { - time = new Date(Date.now() - number * 36e5); - } else if (date.includes("MINUTE") || date.includes("MINUTES")) { - time = new Date(Date.now() - number * 6e4); - } else if (date.includes("SECOND") || date.includes("SECONDS")) { - time = new Date(Date.now() - number * 1e3); - } else { - time = new Date(date); - } - return time; - }; - } - async parseMangaDetails($2, mangaId, source) { - const title = (0, import_html_entities.decode)($2("div.post-title h1, div#manga-title h1").children().remove().end().text().trim()); - const author = (0, import_html_entities.decode)($2("div.author-content").first().text().replace("\\n", "").trim()).replace("Updating", ""); - const artist = (0, import_html_entities.decode)($2("div.artist-content").first().text().replace("\\n", "").trim()).replace("Updating", ""); - const description = (0, import_html_entities.decode)($2("div.description-summary, div.summary-container, div.manga-excerpt").first().text()).replace("Show more", "").trim(); - const image = encodeURI(await this.getImageSrc($2("div.summary_image img").first(), source)); - const parsedStatus = $2("div.summary-content", $2("div.post-content_item").last()).text().trim(); - let status; - switch (parsedStatus.toUpperCase()) { - case "COMPLETED": - status = "Completed"; - break; - default: - status = "Ongoing"; - break; - } - const genres = []; - for (const obj of $2("div.genres-content a").toArray()) { - const label = $2(obj).text(); - const id = $2(obj).attr("href")?.split("/")[4] ?? label; - if (!label || !id) continue; - genres.push(App.createTag({ label, id })); - } - const tagSections = [App.createTagSection({ id: "0", label: "genres", tags: genres })]; - return App.createSourceManga({ - id: mangaId, - mangaInfo: App.createMangaInfo({ - titles: [title], - image, - author, - artist, - tags: tagSections, - desc: description, - status - }) - }); - } - parseChapterList($2, mangaId, source) { - const chapters = []; - let sortingIndex = 0; - for (const obj of $2("li.wp-manga-chapter ").toArray()) { - const id = this.idCleaner($2("a", obj).first().attr("href") ?? ""); - const chapName = $2("a", obj).first().text().trim() ?? ""; - const chapNumRegex = id.match(/(?:chapter|ch.*?)(\d+\.?\d?(?:[-_]\d+)?)|(\d+\.?\d?(?:[-_]\d+)?)$/); - let chapNum = chapNumRegex && chapNumRegex[1] ? chapNumRegex[1].replace(/[-_]/gm, ".") : chapNumRegex?.[2] ?? "0"; - chapNum = parseFloat(chapNum) ?? 0; - let mangaTime; - const timeSelector = $2("span.chapter-release-date > a, span.chapter-release-date > span.c-new-tag > a", obj).attr("title"); - if (typeof timeSelector !== "undefined") { - mangaTime = this.parseDate(timeSelector ?? ""); - } else { - mangaTime = this.parseDate($2("span.chapter-release-date > i", obj).text().trim()); - } - if (!mangaTime.getTime()) mangaTime = /* @__PURE__ */ new Date(); - if (!id || typeof id === "undefined" || id === "#") { - console.log(`Could not parse out ID when getting chapters for postId:${mangaId} parsedId: ${id}`); - continue; - } - chapters.push({ - id, - langCode: source.language, - chapNum, - name: chapName ? (0, import_html_entities.decode)(chapName) : "", - time: mangaTime, - sortingIndex, - volume: 0, - group: "" - }); - sortingIndex--; - } - if (chapters.length == 0) { - throw new Error(`Couldn't find any chapters for mangaId: ${mangaId}!`); - } - return chapters.map((chapter) => { - chapter.sortingIndex += chapters.length; - return App.createChapter(chapter); - }); - } - async parseChapterDetails($2, mangaId, chapterId, selector, source) { - const pages = []; - for (const obj of $2(selector).get()) { - const page = await this.getImageSrc($2(obj), source); - if (!page) { - console.log(`Could not parse pages for postId:${mangaId} chapterId:${chapterId}`); - continue; - } - pages.push(encodeURI(page)); - } - return App.createChapterDetails({ - id: chapterId, - mangaId, - pages - }); - } - async parseProtectedChapterDetails($2, mangaId, chapterId, selector, source) { - if (!$2(selector).length) { - return this.parseChapterDetails($2, mangaId, chapterId, selector, source); - } - const variables = extractVariableValues($2(selector).get()[0].children[0].data); - if (!("chapter_data" in variables) || !("wpmangaprotectornonce" in variables)) { - throw new Error(`Could not parse page for postId:${mangaId} chapterId:${chapterId}. Reason: Lacks sufficient data`); - } - const chapterList = decryptData(variables["chapter_data"], variables["wpmangaprotectornonce"]); - const pages = []; - chapterList.forEach((page) => { - pages.push(encodeURI(page)); - }); - return App.createChapterDetails({ - id: chapterId, - mangaId, - pages - }); - } - parseTags($2, advancedSearch) { - const genres = []; - if (advancedSearch) { - for (const obj of $2(".checkbox-group div label").toArray()) { - const label = $2(obj).text().trim(); - const id = $2(obj).attr("for") ?? label; - genres.push(App.createTag({ label, id })); - } - } else { - for (const obj of $2(".menu-item-object-wp-manga-genre a", $2(".second-menu")).toArray()) { - const label = $2(obj).text().trim(); - const id = $2(obj).attr("href")?.split("/")[4] ?? label; - genres.push(App.createTag({ label, id })); - } - } - return [App.createTagSection({ id: "0", label: "genres", tags: genres })]; - } - async parseSearchResults($2, source) { - const results = []; - for (const obj of $2(source.searchMangaSelector).toArray()) { - const slug = ($2("a", obj).attr("href") ?? "").replace(/\/$/, "").split("/").pop() ?? ""; - const path = ($2("a", obj).attr("href") ?? "").replace(/\/$/, "").split("/").slice(-2).shift() ?? ""; - if (!slug || !path) { - throw new Error(`Unable to parse slug (${slug}) or path (${path})!`); - } - const title = $2("a", obj).attr("title") ?? ""; - const image = encodeURI(await this.getImageSrc($2("img", obj), source)); - const subtitle = $2("span.font-meta.chapter", obj).text().trim(); - results.push({ - slug, - path, - image, - title: (0, import_html_entities.decode)(title), - subtitle: (0, import_html_entities.decode)(subtitle) - }); - } - return results; - } - async parseHomeSection($2, source) { - const items = []; - for (const obj of $2("div.page-item-detail").toArray()) { - const image = encodeURI(await this.getImageSrc($2("img", obj), source) ?? ""); - const title = $2("a", $2("h3.h5", obj)).last().text(); - const slug = this.idCleaner($2("a", $2("h3.h5", obj)).attr("href") ?? ""); - const postId = $2("div", obj).attr("data-post-id"); - const subtitle = $2("span.font-meta.chapter", obj).first().text().trim(); - if (isNaN(Number(postId)) || !title) { - console.log(`Failed to parse homepage sections for ${source.baseUrl}`); - continue; - } - items.push(App.createPartialSourceManga({ - mangaId: String(source.usePostIds ? postId : slug), - image, - title: (0, import_html_entities.decode)(title), - subtitle: (0, import_html_entities.decode)(subtitle) - })); - } - return items; - } - async getImageSrc(imageObj, source) { - let image; - if (typeof imageObj?.attr("data-src") != "undefined" && imageObj?.attr("data-src") != "") { - image = imageObj?.attr("data-src"); - } else if (typeof imageObj?.attr("data-lazy-src") != "undefined" && imageObj?.attr("data-lazy-src") != "") { - image = imageObj?.attr("data-lazy-src"); - } else if (typeof imageObj?.attr("srcset") != "undefined" && imageObj?.attr("srcset") != "") { - image = imageObj?.attr("srcset")?.split(" ")[0] ?? ""; - } else if (typeof imageObj?.attr("src") != "undefined" && imageObj?.attr("src") != "") { - image = imageObj?.attr("src"); - } else if (typeof imageObj?.attr("data-cfsrc") != "undefined" && imageObj?.attr("data-cfsrc") != "") { - image = imageObj?.attr("data-cfsrc"); - } else { - image = ""; - } - if (source?.stateManager) { - const HQthumb = await source.stateManager.retrieve("HQthumb") ?? false; - if (HQthumb) { - image = image?.replace("-110x150", "").replace("-175x238", "").replace("-193x278", "").replace("-350x476", ""); - } - } - if (image?.startsWith("/")) { - image = source.baseUrl + image; - } - image = image?.trim().replace(/(\s{2,})/gi, ""); - image = image?.replace(/http:\/\/\//g, "http://"); - image = image?.replace(/http:\/\//g, "https://"); - image = image?.replace(/https:\/\/\//g, "https://"); - return decodeURI((0, import_html_entities.decode)(image ?? "")); - } - idCleaner(str) { - let cleanId = str; - cleanId = cleanId.replace(/\/$/, ""); - cleanId = cleanId.split("/").pop() ?? null; - if (!cleanId) throw new Error(`Unable to parse id for ${str}`); - return cleanId; - } - }; - - // src/MadaraHelper.ts - var URLBuilder = class { - constructor(baseUrl) { - this.parameters = {}; - this.pathComponents = []; - this.baseUrl = baseUrl.replace(/(^\/)?(?=.*)(\/$)?/gim, ""); - } - addPathComponent(component) { - this.pathComponents.push(component.replace(/(^\/)?(?=.*)(\/$)?/gim, "")); - return this; - } - addQueryParameter(key, value) { - this.parameters[key] = value; - return this; - } - buildUrl({ addTrailingSlash, includeUndefinedParameters } = { addTrailingSlash: false, includeUndefinedParameters: false }) { - let finalUrl = this.baseUrl + "/"; - finalUrl += this.pathComponents.join("/"); - finalUrl += addTrailingSlash ? "/" : ""; - finalUrl += Object.values(this.parameters).length > 0 ? "?" : ""; - finalUrl += Object.entries(this.parameters).map((entry) => { - if (entry[1] == null && !includeUndefinedParameters) { - return void 0; - } - if (Array.isArray(entry[1])) { - return entry[1].map((value) => value || includeUndefinedParameters ? `${entry[0]}[]=${value}` : void 0).filter((x) => x !== void 0).join("&"); - } - if (typeof entry[1] === "object") { - return Object.keys(entry[1]).map((key) => `${entry[0]}[${key}]=${entry[1][key]}`).join("&"); - } - return `${entry[0]}=${entry[1]}`; - }).filter((x) => x !== void 0).join("&"); - return finalUrl; - } - }; - - // src/Madara.ts - var BASE_VERSION = "3.2.1"; - var getExportVersion = (EXTENSION_VERSION) => { - return BASE_VERSION.split(".").map((x, index2) => Number(x) + Number(EXTENSION_VERSION.split(".")[index2])).join("."); - }; - var Madara = class { - constructor() { - /** - * Request manager override - */ - this.requestsPerSecond = 5; - this.requestTimeout = 2e4; - this.requestManager = App.createRequestManager({ - requestsPerSecond: this.requestsPerSecond, - requestTimeout: this.requestTimeout, - interceptor: { - interceptRequest: async (request) => { - request.headers = { - ...request.headers ?? {}, - ...{ - "user-agent": await this.requestManager.getDefaultUserAgent(), - "referer": `${this.baseUrl}/`, - "origin": `${this.baseUrl}/`, - ...request.url.includes("wordpress.com") && { "Accept": "image/avif,image/webp,*/*" } - // Used for images hosted on Wordpress blogs - } - }; - request.cookies = [ - App.createCookie({ name: "wpmanga-adault", value: "1", domain: this.baseUrl }), - App.createCookie({ name: "toonily-mature", value: "1", domain: this.baseUrl }) - ]; - return request; - }, - interceptResponse: async (response) => { - return response; - } - } - }); - this.stateManager = App.createSourceStateManager(); - this.sourceSettings = (stateManager) => { - return App.createDUINavigationButton({ - id: "madara_settings", - label: "Source Settings", - form: App.createDUIForm({ - sections: async () => [ - App.createDUISection({ - id: "hq_thumb", - isHidden: false, - footer: "Enabling HQ thumbnails will use more bandwidth and will load thumbnails slightly slower.", - rows: async () => [ - App.createDUISwitch({ - id: "HQthumb", - label: "HQ Thumbnails", - value: App.createDUIBinding({ - get: async () => await stateManager.retrieve("HQthumb") ?? false, - set: async (newValue) => await stateManager.store("HQthumb", newValue) - }) - }) - ] - }) - ] - }) - }); - }; - /** - * The language code the source's content is served in in string form. - */ - this.language = "\u{1F1EC}\u{1F1E7}"; - /** - * Different Madara sources might have a slightly different selector which is required to parse out - * each manga object while on a search result page. This is the selector - * which is looped over. This may be overridden if required. - */ - this.searchMangaSelector = "div.c-tabs-item__content"; - /** - * Set to true if your source has advanced search functionality built in. - * If this is not true, no genre tags will be shown on the homepage! - * See https://www.webtoon.xyz/?s=&post_type=wp-manga if they have a "advanced" option, if NOT, set this to false. - */ - this.hasAdvancedSearchPage = true; - /** - * The path used for search pagination. Used in search function. - * Eg. for https://mangabob.com/page/2/?s&post_type=wp-manga it would be 'page' - */ - this.searchPagePathName = "page"; - /** - * Set to true if the source makes use of the manga chapter protector plugin. - * (https://mangabooth.com/product/wp-manga-chapter-protector/) - */ - this.hasProtectedChapters = false; - /** - * Some sources may in the future change how to get the chapter protector data, - * making it configurable, will make it way more flexible and open to customized installations of the protector plugin. - */ - this.protectedChapterDataSelector = "#chapter-protector-data"; - /** - * Some sites use the alternate URL for getting chapters through ajax - * 0: (POST) Form data https://domain.com/wp-admin/admin-ajax.php - * 1: (POST) Alternative Ajax page (https://domain.com/manga/manga-slug/ajax/chapters) - * 2: (POST) Manga page (https://domain.com/manga/manga-slug) - * 3: (GET) Manga page (https://domain.com/manga/manga-slug) - */ - this.chapterEndpoint = 0; - /** - * Different Madara sources might have a slightly different selector which is required to parse out - * each page while on a chapter page. This is the selector - * which is looped over. This may be overridden if required. - */ - this.chapterDetailsSelector = "div.page-break > img"; - /** - * Some websites have the Cloudflare defense check enabled on specific parts of the website, these need to be loaded when using the Cloudflare bypass within the app - */ - this.bypassPage = ""; - /** - * If it's not possible to use postIds for certain reasons, you can disable this here. - */ - this.usePostIds = true; - /** - * When not using postIds, you need to set the directory path - */ - this.directoryPath = "manga"; - /** - * Some sources may redirect to the manga page instead of the chapter page if adding the parameter '?style=list' - */ - this.useListParameter = true; - this.parser = new Parser3(); - } - async getSourceMenu() { - return App.createDUISection({ - id: "sourceMenu", - header: "Source Menu", - isHidden: false, - rows: async () => [ - this.sourceSettings(this.stateManager) - ] - }); - } - getMangaShareUrl(mangaId) { - return this.usePostIds ? `${this.baseUrl}/?p=${mangaId}/` : `${this.baseUrl}/${this.directoryPath}/${mangaId}/`; - } - async getMangaDetails(mangaId) { - const request = App.createRequest({ - url: this.usePostIds ? `${this.baseUrl}/?p=${mangaId}/` : `${this.baseUrl}/${this.directoryPath}/${mangaId}/`, - method: "GET" - }); - const response = await this.requestManager.schedule(request, 1); - this.checkResponseError(response); - const $2 = load(response.data); - return this.parser.parseMangaDetails($2, mangaId, this); - } - async getChapters(mangaId) { - let requestConfig; - let path = this.directoryPath; - let slug = mangaId; - if (this.usePostIds) { - const postData = await this.convertPostIdToSlug(Number(mangaId)); - path = postData.path; - slug = postData.slug; - } - switch (this.chapterEndpoint) { - case 0: - requestConfig = { - url: `${this.baseUrl}/wp-admin/admin-ajax.php`, - method: "POST", - headers: { - "content-type": "application/x-www-form-urlencoded" - }, - data: { - "action": "manga_get_chapters", - "manga": this.usePostIds ? mangaId : await this.convertSlugToPostId(mangaId, this.directoryPath) - } - }; - break; - case 1: - requestConfig = { - url: `${this.baseUrl}/${path}/${slug}/ajax/chapters`, - method: "POST", - headers: { - "content-type": "application/x-www-form-urlencoded" - } - }; - break; - case 2: - requestConfig = { - url: `${this.baseUrl}/${path}/${slug}`, - method: "POST", - headers: { - "content-type": "application/x-www-form-urlencoded" - } - }; - break; - case 3: - requestConfig = { - url: `${this.baseUrl}/${path}/${slug}`, - method: "GET", - headers: { - "content-type": "application/x-www-form-urlencoded" - } - }; - break; - default: - throw new Error("Invalid chapter endpoint!"); - } - const request = App.createRequest(requestConfig); - const response = await this.requestManager.schedule(request, 1); - this.checkResponseError(response); - const $2 = load(response.data); - return this.parser.parseChapterList($2, mangaId, this); - } - async getChapterDetails(mangaId, chapterId) { - let url; - if (this.usePostIds) { - const slugData = await this.convertPostIdToSlug(Number(mangaId)); - url = `${this.baseUrl}/${slugData.path}/${slugData.slug}/${chapterId}/${this.useListParameter ? "?style=list" : ""}`; - } else { - url = `${this.baseUrl}/${this.directoryPath}/${mangaId}/${chapterId}/${this.useListParameter ? "?style=list" : ""}`; - } - const request = App.createRequest({ - url, - method: "GET" - }); - const response = await this.requestManager.schedule(request, 1); - this.checkResponseError(response); - const $2 = load(response.data); - if (this.hasProtectedChapters) { - return this.parser.parseProtectedChapterDetails($2, mangaId, chapterId, this.protectedChapterDataSelector, this); - } - return this.parser.parseChapterDetails($2, mangaId, chapterId, this.chapterDetailsSelector, this); - } - async getSearchTags() { - let request; - if (this.hasAdvancedSearchPage) { - request = App.createRequest({ - url: `${this.baseUrl}/?s=the&post_type=wp-manga`, - method: "GET" - }); - } else { - request = App.createRequest({ - url: `${this.baseUrl}/`, - method: "GET" - }); - } - const response = await this.requestManager.schedule(request, 1); - this.checkResponseError(response); - const $2 = load(response.data); - return this.parser.parseTags($2, this.hasAdvancedSearchPage); - } - async getSearchResults(query, metadata) { - const page = metadata?.page ?? 1; - const request = this.constructSearchRequest(page, query); - const response = await this.requestManager.schedule(request, 1); - this.checkResponseError(response); - const $2 = load(response.data); - const results = await this.parser.parseSearchResults($2, this); - const manga = []; - for (const result of results) { - if (this.usePostIds) { - const postId = await this.slugToPostId(result.slug, result.path); - manga.push(App.createPartialSourceManga({ - mangaId: String(postId), - image: result.image, - title: result.title, - subtitle: result.subtitle - })); - } else { - manga.push(App.createPartialSourceManga({ - mangaId: result.slug, - image: result.image, - title: result.title, - subtitle: result.subtitle - })); - } - } - return App.createPagedResults({ - results: manga, - metadata: { page: page + 1 } - }); - } - async getHomePageSections(sectionCallback) { - const sections = [ - { - request: this.constructAjaxHomepageRequest(0, 10, "_latest_update"), - section: App.createHomeSection({ - id: "0", - title: "Recently Updated", - type: import_types2.HomeSectionType.singleRowNormal, - containsMoreItems: true - }) - }, - { - request: this.constructAjaxHomepageRequest(0, 10, "_wp_manga_week_views_value"), - section: App.createHomeSection({ - id: "1", - title: "Currently Trending", - type: import_types2.HomeSectionType.singleRowNormal, - containsMoreItems: true - }) - }, - { - request: this.constructAjaxHomepageRequest(0, 10, "_wp_manga_views"), - section: App.createHomeSection({ - id: "2", - title: "Most Popular", - type: import_types2.HomeSectionType.singleRowNormal, - containsMoreItems: true - }) - }, - { - request: this.constructAjaxHomepageRequest(0, 10, "_wp_manga_status", "end"), - section: App.createHomeSection({ - id: "3", - title: "Completed", - type: import_types2.HomeSectionType.singleRowNormal, - containsMoreItems: true - }) - } - ]; - const promises = []; - for (const section of sections) { - sectionCallback(section.section); - promises.push( - this.requestManager.schedule(section.request, 1).then(async (response) => { - this.checkResponseError(response); - const $2 = load(response.data); - section.section.items = await this.parser.parseHomeSection($2, this); - sectionCallback(section.section); - }) - ); - } - await Promise.all(promises); - } - async getViewMoreItems(homepageSectionId, metadata) { - const page = metadata?.page ?? 0; - let sortBy = []; - switch (homepageSectionId) { - case "0": { - sortBy = ["_latest_update"]; - break; - } - case "1": { - sortBy = ["_wp_manga_week_views_value"]; - break; - } - case "2": { - sortBy = ["_wp_manga_views"]; - break; - } - case "3": { - sortBy = ["_wp_manga_status", "end"]; - break; - } - } - const request = this.constructAjaxHomepageRequest(page, 50, sortBy[0], sortBy[1]); - const response = await this.requestManager.schedule(request, 1); - this.checkResponseError(response); - const $2 = load(response.data); - const items = await this.parser.parseHomeSection($2, this); - let mData = { page: page + 1 }; - if (items.length < 50) { - mData = void 0; - } - return App.createPagedResults({ - results: items, - metadata: mData - }); - } - // Utility - constructSearchRequest(page, query) { - return App.createRequest({ - url: new URLBuilder(this.baseUrl).addPathComponent(this.searchPagePathName).addPathComponent(page.toString()).addQueryParameter("s", encodeURIComponent(query?.title ?? "")).addQueryParameter("post_type", "wp-manga").addQueryParameter("genre", query?.includedTags?.map((x) => x.id)).buildUrl({ addTrailingSlash: true, includeUndefinedParameters: false }), - method: "GET" - }); - } - constructAjaxHomepageRequest(page, postsPerPage, meta_key, meta_value) { - return App.createRequest({ - url: `${this.baseUrl}/wp-admin/admin-ajax.php`, - method: "POST", - headers: { - "content-type": "application/x-www-form-urlencoded" - }, - data: { - "action": "madara_load_more", - "template": "madara-core/content/content-archive", - "page": page, - "vars[paged]": "1", - "vars[posts_per_page]": postsPerPage, - "vars[orderby]": "meta_value_num", - "vars[sidebar]": "right", - "vars[post_type]": "wp-manga", - "vars[order]": "desc", - "vars[meta_key]": meta_key, - "vars[meta_value]": meta_value - } - }); - } - async slugToPostId(slug, path) { - if (await this.stateManager.retrieve(slug) == null) { - const postId2 = await this.convertSlugToPostId(slug, path); - const existingMappedSlug = await this.stateManager.retrieve(postId2); - if (existingMappedSlug != null) { - await this.stateManager.store(slug, void 0); - } - await this.stateManager.store(postId2, slug); - await this.stateManager.store(slug, postId2); - } - const postId = await this.stateManager.retrieve(slug); - if (!postId) throw new Error(`Unable to fetch postId for slug:${slug}`); - return postId; - } - async convertPostIdToSlug(postId) { - const request = App.createRequest({ - url: `${this.baseUrl}/?p=${postId}`, - method: "GET" - }); - const response = await this.requestManager.schedule(request, 1); - const $2 = load(response.data); - let parseSlug; - parseSlug = String($2('meta[property="og:url"]').attr("content")); - if (!parseSlug.includes(this.baseUrl)) { - parseSlug = String($2('link[rel="canonical"]').attr("href")); - } - if (!parseSlug || !parseSlug.includes(this.baseUrl)) { - throw new Error("Unable to parse slug!"); - } - parseSlug = parseSlug.replace(/\/$/, "").split("/"); - const slug = parseSlug.slice(-1).pop(); - const path = parseSlug.slice(-2).shift(); - return { path, slug }; - } - async convertSlugToPostId(slug, path) { - const headRequest = App.createRequest({ - url: `${this.baseUrl}/${path}/${slug}`, - method: "HEAD" - }); - const headResponse = await this.requestManager.schedule(headRequest, 1); - let postId; - const postIdRegex = headResponse?.headers["Link"]?.match(/\?p=(\d+)/); - if (postIdRegex && postIdRegex[1]) postId = postIdRegex[1]; - if (postId || !isNaN(Number(postId))) { - return postId?.toString(); - } else { - postId = ""; - } - const request = App.createRequest({ - url: `${this.baseUrl}/${path}/${slug}`, - method: "GET" - }); - const response = await this.requestManager.schedule(request, 1); - const $2 = load(response.data); - postId = Number($2('link[rel="shortlink"]')?.attr("href")?.split("/?p=")[1]); - if (isNaN(postId)) { - postId = Number($2("a.wp-manga-action-button").attr("data-post")); - } - if (isNaN(postId)) { - const page = $2.root().html(); - const match = page?.match(/manga_id.*\D(\d+)/); - if (match && match[1]) { - postId = Number(match[1]?.trim()); - } - } - if (!postId || isNaN(postId)) { - throw new Error(`Unable to fetch numeric postId for this item! (path:${path} slug:${slug})`); - } - return postId.toString(); - } - async getCloudflareBypassRequestAsync() { - return App.createRequest({ - url: this.bypassPage || this.baseUrl, - method: "GET", - headers: { - "referer": `${this.baseUrl}/`, - "origin": `${this.baseUrl}/`, - "user-agent": await this.requestManager.getDefaultUserAgent() - } - }); - } - checkResponseError(response) { - const status = response.status; - switch (status) { - case 403: - case 503: - throw new Error(`CLOUDFLARE BYPASS ERROR: -Please go to the homepage of <${this.baseUrl}> and press the cloud icon.`); - case 404: - throw new Error(`The requested page ${response.request.url} was not found!`); - } - } - }; - - // src/ReaperScansFR/ReaperScansFRParser.ts - var import_html_entities2 = __toESM(require_lib2()); - var ReaperScansFRParser = class extends Parser3 { - parseChapterList($2, mangaId, source) { - const chapters = []; - let sortingIndex = 0; - for (const obj of $2("li.wp-manga-chapter ").toArray()) { - const id = this.idCleaner($2("a", obj).first().attr("href") ?? ""); - const chapName = $2("a > p", obj).first().text().trim() ?? ""; - const chapNumRegex = id.match(/(?:chapter|ch.*?)(\d+\.?\d?(?:[-_]\d+)?)|(\d+\.?\d?(?:[-_]\d+)?)$/); - let chapNum = chapNumRegex && chapNumRegex[1] ? chapNumRegex[1].replace(/[-_]/gm, ".") : chapNumRegex?.[2] ?? "0"; - chapNum = parseFloat(chapNum) ?? 0; - let mangaTime; - const timeSelector = $2("span.chapter-release-date > a, span.chapter-release-date > span.c-new-tag > a", obj).attr("title"); - if (typeof timeSelector !== "undefined") { - mangaTime = this.parseDate(timeSelector ?? ""); - } else { - mangaTime = this.parseDate($2("span.chapter-release-date > i", obj).text().trim()); - } - if (!mangaTime.getTime()) mangaTime = /* @__PURE__ */ new Date(); - if (!id || typeof id === "undefined" || id === "#") { - console.log(`Could not parse out ID when getting chapters for postId:${mangaId} parsedId: ${id}`); - continue; - } - chapters.push({ - id, - langCode: source.language, - chapNum, - name: chapName ? (0, import_html_entities2.decode)(chapName) : "", - time: mangaTime, - sortingIndex, - volume: 0, - group: "" - }); - sortingIndex--; - } - if (chapters.length == 0) { - throw new Error(`Couldn't find any chapters for mangaId: ${mangaId}!`); - } - return chapters.map((chapter) => { - chapter.sortingIndex += chapters.length; - return App.createChapter(chapter); - }); - } - }; - - // src/ReaperScansFR/ReaperScansFR.ts - var DOMAIN = "https://reaperscans.fr"; - var ReaperScansFRInfo = { - version: getExportVersion("0.0.0"), - name: "ReaperScansFR", - description: `Extension that pulls manga from ${DOMAIN}`, - author: "Netsky", - authorWebsite: "http://github.com/TheNetsky", - icon: "icon.png", - contentRating: import_types3.ContentRating.EVERYONE, - websiteBaseURL: DOMAIN, - sourceTags: [ - { - text: "French", - type: import_types3.BadgeColor.GREY - } - ], - intents: import_types3.SourceIntents.MANGA_CHAPTERS | import_types3.SourceIntents.HOMEPAGE_SECTIONS | import_types3.SourceIntents.CLOUDFLARE_BYPASS_REQUIRED | import_types3.SourceIntents.SETTINGS_UI - }; - var ReaperScansFR = class extends Madara { - constructor() { - super(...arguments); - this.baseUrl = DOMAIN; - this.language = "\u{1F1EB}\u{1F1F7}"; - this.chapterEndpoint = 1; - this.parser = new ReaperScansFRParser(); - } - }; - return __toCommonJS(ReaperScansFR_exports); -})(); -this.Sources = _Sources; if (typeof exports === 'object' && typeof module !== 'undefined') {module.exports.Sources = this.Sources;} diff --git a/madara/index.html b/madara/index.html index c4e0822c..3dc8d762 100644 --- a/madara/index.html +++ b/madara/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta name="robots" content="noindex"><meta charset="utf-8"><link rel="icon" href="https://paperback.moe/icons/logo-alt.svg"><title>Madara Generic (0.8)</title></head><body><header><img class="icon" src="https://paperback.moe/icons/logo-alt.svg" alt="Repository logo"><h1>Madara Generic (0.8)</h1><p class="pageDescription">A Paperback extensions repository</p><a class="addToPaperbackButton" href="paperback://addRepo?displayName=Madara%20Generic%20(0.8)&url=https%3A%2F%2Fthenetsky.github.io%2Fextensions-generic-0.8%2Fmadara">Add to Paperback</a></header><div class="content"><p id="repositoryDescription">Madara Generic for 0.8!</p><blockquote><p>A guide is available to learn everything about extensions repositories.</p><p>Check it <a href="https://paperback.moe/help/guides/adding-repos/">here</a> to learn how to add and use this repository in Paperback.</p></blockquote><blockquote><p> <span>On a Paperback installed device, press </span><a href="paperback://addRepo?displayName=Madara%20Generic%20(0.8)&url=https%3A%2F%2Fthenetsky.github.io%2Fextensions-generic-0.8%2Fmadara">Add to Paperback</a><span> or use the base URL to add this repository to the app.</span></p></blockquote><div class="baseUrl"><p class="title">Base URL:</p><p>https://thenetsky.github.io/extensions-generic-0.8/madara</p></div><dev class="availableSources"><p class="title">Available Sources:</p><div id="listDiv"><ul><li>AllPornComic<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>ArthurScan<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Portuguese</span></li><li>AstralLibrary</li><li>AzoraWorld<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Arabic</span></li><li>CoffeeManga</li><li>DarkScans</li><li>DragonTea</li><li>GourmetScans</li><li>HariManga</li><li>HiperDex<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>HuntManga</li><li>ImmortalUpdates</li><li>KissManga</li><li>KnightNoScanlation<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Spanish</span></li><li>KunManga</li><li>LHTranslation</li><li>LSComic</li><li>LilyManga</li><li>MadaraDex<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>Manga3asq<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Arabic</span></li><li>MangaClash</li><li>MangaOrigines<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span><span class="el-tag el-tag--dark el-tag--mini el-tag--info">French</span><span class="el-tag el-tag--dark el-tag--mini el-tag--danger">Region Locked</span></li><li>MangaLek<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Arabic</span></li><li>MangaReadOrg</li><li>MangaScantrad<span class="el-tag el-tag--dark el-tag--mini el-tag--info">French</span></li><li>ManhuaFast</li><li>ManhuaPlus</li><li>ManhuaSY</li><li>Manhuaga</li><li>ManhwaFull</li><li>ManhwaRaw<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span><span class="el-tag el-tag--dark el-tag--mini el-tag--info">Korean</span></li><li>Manhuaus</li><li>ManhwaTop</li><li>NovelMic</li><li>PlatinumScans</li><li>ReaperScansFR<span class="el-tag el-tag--dark el-tag--mini el-tag--info">French</span></li><li>ResetScans</li><li>SamuraiScan<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Spanish</span></li><li>TheBlank<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>SetsuScans</li><li>ToonGod<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>Toonily<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>UToon</li><li>WebtoonXYZ<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>ZinManga</li></ul></div></dev></div></body></html><style>body +<!DOCTYPE html><html lang="en"><head><meta name="robots" content="noindex"><meta charset="utf-8"><link rel="icon" href="https://paperback.moe/icons/logo-alt.svg"><title>Madara Generic (0.8)</title></head><body><header><img class="icon" src="https://paperback.moe/icons/logo-alt.svg" alt="Repository logo"><h1>Madara Generic (0.8)</h1><p class="pageDescription">A Paperback extensions repository</p><a class="addToPaperbackButton" href="paperback://addRepo?displayName=Madara%20Generic%20(0.8)&url=https%3A%2F%2Fthenetsky.github.io%2Fextensions-generic-0.8%2Fmadara">Add to Paperback</a></header><div class="content"><p id="repositoryDescription">Madara Generic for 0.8!</p><blockquote><p>A guide is available to learn everything about extensions repositories.</p><p>Check it <a href="https://paperback.moe/help/guides/adding-repos/">here</a> to learn how to add and use this repository in Paperback.</p></blockquote><blockquote><p> <span>On a Paperback installed device, press </span><a href="paperback://addRepo?displayName=Madara%20Generic%20(0.8)&url=https%3A%2F%2Fthenetsky.github.io%2Fextensions-generic-0.8%2Fmadara">Add to Paperback</a><span> or use the base URL to add this repository to the app.</span></p></blockquote><div class="baseUrl"><p class="title">Base URL:</p><p>https://thenetsky.github.io/extensions-generic-0.8/madara</p></div><dev class="availableSources"><p class="title">Available Sources:</p><div id="listDiv"><ul><li>AllPornComic<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>ArthurScan<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Portuguese</span></li><li>AstralLibrary</li><li>AzoraWorld<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Arabic</span></li><li>CoffeeManga</li><li>DarkScans</li><li>DragonTea</li><li>GourmetScans</li><li>HariManga</li><li>HiperDex<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>HuntManga</li><li>ImmortalUpdates</li><li>KissManga</li><li>KnightNoScanlation<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Spanish</span></li><li>KunManga</li><li>LHTranslation</li><li>LSComic</li><li>LilyManga</li><li>MadaraDex<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>Manga3asq<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Arabic</span></li><li>MangaClash</li><li>MangaLek<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Arabic</span></li><li>MangaOrigines<span class="el-tag el-tag--dark el-tag--mini el-tag--info">French</span><span class="el-tag el-tag--dark el-tag--mini el-tag--danger">Region Locked</span></li><li>MangaReadOrg</li><li>MangaScantrad<span class="el-tag el-tag--dark el-tag--mini el-tag--info">French</span></li><li>ManhuaFast</li><li>ManhuaPlus</li><li>ManhuaSY</li><li>Manhuaga</li><li>Manhuaus</li><li>ManhwaFull</li><li>ManhwaRaw<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span><span class="el-tag el-tag--dark el-tag--mini el-tag--info">Korean</span></li><li>NovelMic</li><li>ManhwaTop</li><li>PlatinumScans</li><li>ResetScans</li><li>SamuraiScan<span class="el-tag el-tag--dark el-tag--mini el-tag--info">Spanish</span></li><li>SetsuScans</li><li>TheBlank<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>ToonGod<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>Toonily<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>UToon</li><li>WebtoonXYZ<span class="el-tag el-tag--dark el-tag--mini el-tag--warning">18+</span></li><li>ZinManga</li></ul></div></dev></div></body></html><style>body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; -moz-osx-font-smoothing: grayscale; diff --git a/madara/versioning.json b/madara/versioning.json index 97c49f3c..19c8c0c4 100644 --- a/madara/versioning.json +++ b/madara/versioning.json @@ -1 +1 @@ -{"buildTime":"2024-12-13T09:04:03.875Z","sources":[{"id":"AllPornComic","name":"AllPornComic","author":"Netsky","desc":"Extension that pulls manga from https://allporncomic.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://allporncomic.com","intents":53},{"id":"ArthurScan","name":"ArthurScan","author":"Netsky","desc":"Extension that pulls manga from https://arthurscan.xyz","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[{"text":"Portuguese","type":"info"}],"websiteBaseURL":"https://arthurscan.xyz","intents":53},{"id":"AstralLibrary","name":"AstralLibrary","author":"Netsky","desc":"Extension that pulls manga from https://astrallibrary.net","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://astrallibrary.net","intents":53},{"id":"AzoraWorld","name":"AzoraWorld","author":"Netsky","desc":"Extension that pulls manga from https://azoramoon.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.3","icon":"icon.png","tags":[{"text":"Arabic","type":"info"}],"websiteBaseURL":"https://azoramoon.com","intents":53},{"id":"CoffeeManga","name":"CoffeeManga","author":"Netsky","desc":"Extension that pulls manga from https://coffeemanga.io","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://coffeemanga.io","intents":53},{"id":"DarkScans","name":"DarkScans","author":"Netsky","desc":"Extension that pulls manga from https://darkscans.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://darkscans.net","intents":53},{"id":"DragonTea","name":"DragonTea","author":"Netsky","desc":"Extension that pulls manga from https://dragontea.ink","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://dragontea.ink","intents":53},{"id":"GourmetScans","name":"GourmetScans","author":"Netsky","desc":"Extension that pulls manga from https://gourmetsupremacy.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://gourmetsupremacy.com","intents":53},{"id":"HariManga","name":"HariManga","author":"Netsky","desc":"Extension that pulls manga from https://harimanga.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://harimanga.com","intents":53},{"id":"HiperDex","name":"HiperDex","author":"Netsky","desc":"Extension that pulls manga from https://hiperdex.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.11","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://hiperdex.com","intents":53},{"id":"HuntManga","name":"HuntManga","author":"Netsky","desc":"Extension that pulls manga from https://huntmanga.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://huntmanga.com","intents":53},{"id":"ImmortalUpdates","name":"ImmortalUpdates","author":"Netsky","desc":"Extension that pulls manga from https://mortalsgroove.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://mortalsgroove.com","intents":53},{"id":"KissManga","name":"KissManga","author":"Netsky","desc":"Extension that pulls manga from https://1st-kissmanga.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://1st-kissmanga.net","intents":53},{"id":"KnightNoScanlation","name":"KnightNoScanlation","author":"Netsky & Seitenca","desc":"Extension that pulls manga from https://lectorkns.eyudud.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.5","icon":"icon.png","tags":[{"text":"Spanish","type":"info"}],"websiteBaseURL":"https://lectorkns.eyudud.net","intents":53},{"id":"KunManga","name":"KunManga","author":"Netsky","desc":"Extension that pulls manga from https://kunmanga.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://kunmanga.com","intents":53},{"id":"LHTranslation","name":"LHTranslation","author":"Netsky","desc":"Extension that pulls manga from https://lhtranslation.net","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://lhtranslation.net","intents":53},{"id":"LSComic","name":"LSComic","author":"Netsky","desc":"Extension that pulls manga from https://lscomic.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://lscomic.com","intents":53},{"id":"LilyManga","name":"LilyManga","author":"Netsky","desc":"Extension that pulls manga from https://lilymanga.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://lilymanga.net","intents":53},{"id":"MadaraDex","name":"MadaraDex","author":"Netsky","desc":"Extension that pulls manga from https://madaradex.org","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.3","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://madaradex.org","intents":53},{"id":"Manga3asq","name":"Manga3asq","author":"Netsky","desc":"Extension that pulls manga from https://3asq.org","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[{"text":"Arabic","type":"info"}],"websiteBaseURL":"https://3asq.org","intents":53},{"id":"MangaClash","name":"MangaClash","author":"Netsky","desc":"Extension that pulls manga from https://toonclash.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://toonclash.com","intents":53},{"id":"MangaOrigines","name":"MangaOrigines","author":"Netsky","desc":"Extension that pulls manga from https://mangas-origines.fr","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"},{"text":"French","type":"info"},{"text":"Region Locked","type":"danger"}],"websiteBaseURL":"https://mangas-origines.fr","intents":53},{"id":"MangaLek","name":"MangaLek","author":"Netsky","desc":"Extension that pulls manga from https://lekmanga.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.6","icon":"icon.png","tags":[{"text":"Arabic","type":"info"}],"websiteBaseURL":"https://lekmanga.net","intents":53},{"id":"MangaReadOrg","name":"MangaReadOrg","author":"Netsky","desc":"Extension that pulls manga from https://www.mangaread.org","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://www.mangaread.org","intents":53},{"id":"MangaScantrad","name":"MangaScantrad","author":"Netsky","desc":"Extension that pulls manga from https://manga-scantrad.io","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[{"text":"French","type":"info"}],"websiteBaseURL":"https://manga-scantrad.io","intents":53},{"id":"ManhuaFast","name":"ManhuaFast","author":"Netsky","desc":"Extension that pulls manga from https://manhuafast.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuafast.com","intents":53},{"id":"ManhuaPlus","name":"ManhuaPlus","author":"Netsky","desc":"Extension that pulls manga from https://manhuaplus.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuaplus.com","intents":53},{"id":"ManhuaSY","name":"ManhuaSY","author":"Netsky","desc":"Extension that pulls manga from https://manhuasy.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuasy.com","intents":53},{"id":"Manhuaga","name":"Manhuaga","author":"Netsky","desc":"Extension that pulls manga from https://manhuaga.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuaga.com","intents":53},{"id":"ManhwaFull","name":"ManhwaFull","author":"Netsky","desc":"Extension that pulls manga from https://manhwafull.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhwafull.com","intents":53},{"id":"ManhwaRaw","name":"ManhwaRaw","author":"Netsky","desc":"Extension that pulls manga from https://manhwa-raw.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"},{"text":"Korean","type":"info"}],"websiteBaseURL":"https://manhwa-raw.com","intents":53},{"id":"Manhuaus","name":"Manhuaus","author":"Netsky","desc":"Extension that pulls manga from https://manhuaus.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuaus.com","intents":53},{"id":"ManhwaTop","name":"ManhwaTop","author":"Netsky","desc":"Extension that pulls manga from https://manhwatop.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhwatop.com","intents":53},{"id":"NovelMic","name":"NovelMic","author":"Netsky","desc":"Extension that pulls manga from https://novelmic.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://novelmic.com","intents":53},{"id":"PlatinumScans","name":"PlatinumScans","author":"Netsky","desc":"Extension that pulls manga from https://platinumscans.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://platinumscans.com","intents":53},{"id":"ReaperScansFR","name":"ReaperScansFR","author":"Netsky","desc":"Extension that pulls manga from https://reaperscans.fr","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[{"text":"French","type":"info"}],"websiteBaseURL":"https://reaperscans.fr","intents":53},{"id":"ResetScans","name":"ResetScans","author":"Netsky","desc":"Extension that pulls manga from https://reset-scans.co","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.9","icon":"icon.png","tags":[],"websiteBaseURL":"https://reset-scans.co","intents":53},{"id":"SamuraiScan","name":"SamuraiScan","author":"Netsky & Seitenca","desc":"Extension that pulls manga from https://latan.visorsmr.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.4","icon":"icon.png","tags":[{"text":"Spanish","type":"info"}],"websiteBaseURL":"https://latan.visorsmr.com","intents":53},{"id":"TheBlank","name":"TheBlank","author":"Netsky","desc":"Extension that pulls manga from https://theblank.net","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://theblank.net","intents":53},{"id":"SetsuScans","name":"SetsuScans","author":"Netsky","desc":"Extension that pulls manga from https://setsuscans.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://setsuscans.com","intents":53},{"id":"ToonGod","name":"ToonGod","author":"Netsky","desc":"Extension that pulls manga from https://www.toongod.org","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.3","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://www.toongod.org","intents":53},{"id":"Toonily","name":"Toonily","author":"Netsky","desc":"Extension that pulls manga from https://toonily.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://toonily.com","intents":53},{"id":"UToon","name":"UToon","author":"Netsky","desc":"Extension that pulls manga from https://utoon.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://utoon.net","intents":53},{"id":"WebtoonXYZ","name":"WebtoonXYZ","author":"Netsky","desc":"Extension that pulls manga from https://www.webtoon.xyz","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://www.webtoon.xyz","intents":53},{"id":"ZinManga","name":"ZinManga","author":"Netsky","desc":"Extension that pulls manga from https://mangazin.org","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://mangazin.org","intents":53}],"builtWith":{"toolchain":"0.8.7","types":"0.8.7"}} \ No newline at end of file +{"buildTime":"2024-12-19T13:09:57.235Z","sources":[{"id":"AllPornComic","name":"AllPornComic","author":"Netsky","desc":"Extension that pulls manga from https://allporncomic.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://allporncomic.com","intents":53},{"id":"ArthurScan","name":"ArthurScan","author":"Netsky","desc":"Extension that pulls manga from https://arthurscan.xyz","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[{"text":"Portuguese","type":"info"}],"websiteBaseURL":"https://arthurscan.xyz","intents":53},{"id":"AstralLibrary","name":"AstralLibrary","author":"Netsky","desc":"Extension that pulls manga from https://astrallibrary.net","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://astrallibrary.net","intents":53},{"id":"AzoraWorld","name":"AzoraWorld","author":"Netsky","desc":"Extension that pulls manga from https://azoramoon.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.3","icon":"icon.png","tags":[{"text":"Arabic","type":"info"}],"websiteBaseURL":"https://azoramoon.com","intents":53},{"id":"CoffeeManga","name":"CoffeeManga","author":"Netsky","desc":"Extension that pulls manga from https://coffeemanga.io","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://coffeemanga.io","intents":53},{"id":"DarkScans","name":"DarkScans","author":"Netsky","desc":"Extension that pulls manga from https://darkscans.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://darkscans.net","intents":53},{"id":"DragonTea","name":"DragonTea","author":"Netsky","desc":"Extension that pulls manga from https://dragontea.ink","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://dragontea.ink","intents":53},{"id":"GourmetScans","name":"GourmetScans","author":"Netsky","desc":"Extension that pulls manga from https://gourmetsupremacy.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://gourmetsupremacy.com","intents":53},{"id":"HariManga","name":"HariManga","author":"Netsky","desc":"Extension that pulls manga from https://harimanga.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://harimanga.com","intents":53},{"id":"HiperDex","name":"HiperDex","author":"Netsky","desc":"Extension that pulls manga from https://hiperdex.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.11","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://hiperdex.com","intents":53},{"id":"HuntManga","name":"HuntManga","author":"Netsky","desc":"Extension that pulls manga from https://huntmanga.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://huntmanga.com","intents":53},{"id":"ImmortalUpdates","name":"ImmortalUpdates","author":"Netsky","desc":"Extension that pulls manga from https://mortalsgroove.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://mortalsgroove.com","intents":53},{"id":"KissManga","name":"KissManga","author":"Netsky","desc":"Extension that pulls manga from https://1st-kissmanga.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://1st-kissmanga.net","intents":53},{"id":"KnightNoScanlation","name":"KnightNoScanlation","author":"Netsky & Seitenca","desc":"Extension that pulls manga from https://lectorkns.eyudud.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.5","icon":"icon.png","tags":[{"text":"Spanish","type":"info"}],"websiteBaseURL":"https://lectorkns.eyudud.net","intents":53},{"id":"KunManga","name":"KunManga","author":"Netsky","desc":"Extension that pulls manga from https://kunmanga.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://kunmanga.com","intents":53},{"id":"LHTranslation","name":"LHTranslation","author":"Netsky","desc":"Extension that pulls manga from https://lhtranslation.net","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://lhtranslation.net","intents":53},{"id":"LSComic","name":"LSComic","author":"Netsky","desc":"Extension that pulls manga from https://lscomic.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://lscomic.com","intents":53},{"id":"LilyManga","name":"LilyManga","author":"Netsky","desc":"Extension that pulls manga from https://lilymanga.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://lilymanga.net","intents":53},{"id":"MadaraDex","name":"MadaraDex","author":"Netsky","desc":"Extension that pulls manga from https://madaradex.org","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.3","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://madaradex.org","intents":53},{"id":"Manga3asq","name":"Manga3asq","author":"Netsky","desc":"Extension that pulls manga from https://3asq.org","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[{"text":"Arabic","type":"info"}],"websiteBaseURL":"https://3asq.org","intents":53},{"id":"MangaClash","name":"MangaClash","author":"Netsky","desc":"Extension that pulls manga from https://toonclash.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://toonclash.com","intents":53},{"id":"MangaLek","name":"MangaLek","author":"Netsky","desc":"Extension that pulls manga from https://lekmanga.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.6","icon":"icon.png","tags":[{"text":"Arabic","type":"info"}],"websiteBaseURL":"https://lekmanga.net","intents":53},{"id":"MangaOrigines","name":"MangaOrigines","author":"Netsky","desc":"Extension that pulls manga from https://mangas-origines.fr","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.2","icon":"icon.png","tags":[{"text":"French","type":"info"},{"text":"Region Locked","type":"danger"}],"websiteBaseURL":"https://mangas-origines.fr","intents":53},{"id":"MangaReadOrg","name":"MangaReadOrg","author":"Netsky","desc":"Extension that pulls manga from https://www.mangaread.org","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://www.mangaread.org","intents":53},{"id":"MangaScantrad","name":"MangaScantrad","author":"Netsky","desc":"Extension that pulls manga from https://manga-scantrad.io","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[{"text":"French","type":"info"}],"websiteBaseURL":"https://manga-scantrad.io","intents":53},{"id":"ManhuaFast","name":"ManhuaFast","author":"Netsky","desc":"Extension that pulls manga from https://manhuafast.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuafast.com","intents":53},{"id":"ManhuaPlus","name":"ManhuaPlus","author":"Netsky","desc":"Extension that pulls manga from https://manhuaplus.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuaplus.com","intents":53},{"id":"ManhuaSY","name":"ManhuaSY","author":"Netsky","desc":"Extension that pulls manga from https://manhuasy.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuasy.com","intents":53},{"id":"Manhuaga","name":"Manhuaga","author":"Netsky","desc":"Extension that pulls manga from https://manhuaga.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuaga.com","intents":53},{"id":"Manhuaus","name":"Manhuaus","author":"Netsky","desc":"Extension that pulls manga from https://manhuaus.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhuaus.com","intents":53},{"id":"ManhwaFull","name":"ManhwaFull","author":"Netsky","desc":"Extension that pulls manga from https://manhwafull.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhwafull.com","intents":53},{"id":"ManhwaRaw","name":"ManhwaRaw","author":"Netsky","desc":"Extension that pulls manga from https://manhwa-raw.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"},{"text":"Korean","type":"info"}],"websiteBaseURL":"https://manhwa-raw.com","intents":53},{"id":"NovelMic","name":"NovelMic","author":"Netsky","desc":"Extension that pulls manga from https://novelmic.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://novelmic.com","intents":53},{"id":"ManhwaTop","name":"ManhwaTop","author":"Netsky","desc":"Extension that pulls manga from https://manhwatop.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://manhwatop.com","intents":53},{"id":"PlatinumScans","name":"PlatinumScans","author":"Netsky","desc":"Extension that pulls manga from https://platinumscans.com","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://platinumscans.com","intents":53},{"id":"ResetScans","name":"ResetScans","author":"Netsky","desc":"Extension that pulls manga from https://reset-scans.co","website":"http://github.com/TheNetsky","contentRating":"EVERYONE","version":"3.2.9","icon":"icon.png","tags":[],"websiteBaseURL":"https://reset-scans.co","intents":53},{"id":"SamuraiScan","name":"SamuraiScan","author":"Netsky & Seitenca","desc":"Extension that pulls manga from https://latan.visorsmr.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.4","icon":"icon.png","tags":[{"text":"Spanish","type":"info"}],"websiteBaseURL":"https://latan.visorsmr.com","intents":53},{"id":"SetsuScans","name":"SetsuScans","author":"Netsky","desc":"Extension that pulls manga from https://setsuscans.com","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://setsuscans.com","intents":53},{"id":"TheBlank","name":"TheBlank","author":"Netsky","desc":"Extension that pulls manga from https://theblank.net","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://theblank.net","intents":53},{"id":"ToonGod","name":"ToonGod","author":"Netsky","desc":"Extension that pulls manga from https://www.toongod.org","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.3","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://www.toongod.org","intents":53},{"id":"Toonily","name":"Toonily","author":"Netsky","desc":"Extension that pulls manga from https://toonily.com","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://toonily.com","intents":53},{"id":"UToon","name":"UToon","author":"Netsky","desc":"Extension that pulls manga from https://utoon.net","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://utoon.net","intents":53},{"id":"WebtoonXYZ","name":"WebtoonXYZ","author":"Netsky","desc":"Extension that pulls manga from https://www.webtoon.xyz","website":"http://github.com/TheNetsky","contentRating":"ADULT","version":"3.2.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://www.webtoon.xyz","intents":53},{"id":"ZinManga","name":"ZinManga","author":"Netsky","desc":"Extension that pulls manga from https://mangazin.org","website":"http://github.com/TheNetsky","contentRating":"MATURE","version":"3.2.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://mangazin.org","intents":53}],"builtWith":{"toolchain":"0.8.7","types":"0.8.7"}} \ No newline at end of file