@ostendis/grapesjs-preset-ostendis-adv 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grapesjs-preset-ostendis-adv.min.js","mappings":"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","sources":["webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/universalModuleDefinition","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/blocks.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/commands.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/components.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/consts.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/openExportCommand.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/openImportCommand.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/ostTranslations.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/panels.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/rte.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/traits.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/bootstrap","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/define property getters","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/hasOwnProperty shorthand","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/make namespace object","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@ostendis/grapesjs-preset-ostendis-adv\"] = factory();\n\telse\n\t\troot[\"@ostendis/grapesjs-preset-ostendis-adv\"] = factory();\n})(typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : this), () => {\nreturn ","import type { Editor, BlockProperties } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default function (editor: Editor, opts: Required<PluginOptions>) {\r\n const { Blocks } = editor;\r\n\r\n const addBlock = (id: string, blockDef: BlockProperties) => {\r\n opts.blocks.indexOf(id)! >= 0 &&\r\n editor.Blocks.add(id, {\r\n select: true,\r\n ...blockDef,\r\n ...opts.block(id),\r\n });\r\n };\r\n\r\n Blocks.getAll().reset();\r\n\r\n Blocks.add(\"applyQrCode\", {\r\n label: opts.t9n.applyQrCodeBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\">\r\n <path fill=\"currentColor\" d=\"m2.7781 1.1906v2.2964h2.2964v-2.2964zm3.1469 0v0.76565h0.76507v-0.76565zm1.7005 0v2.2964h2.2964v-2.2964zm-4.0817 0.76565h0.76507v0.76507h-0.76507zm4.8474 0h0.76507v0.76507h-0.76507zm-2.4661 0.82902v0.76507h0.76507v-0.76507zm-3.1469 1.5947v0.76507h0.76565v-0.76507zm1.5307 0v0.76507h0.76565v-0.76507zm1.6162 0v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-3.2312 1.5947v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-6.3781 0.063368v2.2964h2.2964v-2.2964zm0.76565 0.76565h0.76507v0.76507h-0.76507zm2.3813 0.76507v0.76565h0.76507v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565z\" stroke-width=\".51027\"/>\r\n </svg>`,\r\n content: {\r\n type: \"image\",\r\n editable: false,\r\n droppable: true,\r\n attributes: {\r\n src: \"$$$ApplyQrCode$$$\",\r\n alt: \"Apply link QR code\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"viewQrCode\", {\r\n label: opts.t9n.viewQrCodeBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\">\r\n <path fill=\"currentColor\" d=\"m2.7781 1.1906v2.2964h2.2964v-2.2964zm3.1469 0v0.76565h0.76507v-0.76565zm1.7005 0v2.2964h2.2964v-2.2964zm-4.0817 0.76565h0.76507v0.76507h-0.76507zm4.8474 0h0.76507v0.76507h-0.76507zm-2.4661 0.82902v0.76507h0.76507v-0.76507zm-3.1469 1.5947v0.76507h0.76565v-0.76507zm1.5307 0v0.76507h0.76565v-0.76507zm1.6162 0v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-3.2312 1.5947v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-6.3781 0.063368v2.2964h2.2964v-2.2964zm0.76565 0.76565h0.76507v0.76507h-0.76507zm2.3813 0.76507v0.76565h0.76507v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565z\" stroke-width=\".51027\"/>\r\n </svg>`,\r\n content: {\r\n type: \"image\",\r\n editable: false,\r\n droppable: true,\r\n attributes: {\r\n src: \"$$$ViewQrCode$$$\",\r\n alt: \"View link QR code\",\r\n },\r\n },\r\n });\r\n\r\n var btnStyle = `display: block; padding: 10px 30px; margin: 10px auto; text-decoration: none; border: none; color: #fff; text-align: center; background-color: #4b75cd; border-radius: 0.25rem 0.25rem 0.25em 0.25rem;`;\r\n\r\n Blocks.add(\"applyButton\", {\r\n label: opts.t9n.buttonApplyBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content:\r\n `<a data-gjs-type=\"link\" href=\"$$$ApplyLink$$$\" target=\"_blank\" role=\"button\" style=\"` +\r\n btnStyle +\r\n `\">${opts.t9n.buttonApplyBlkText}</a>`,\r\n media: `<svg style=\"width:54px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m0.87695 1.1856c-0.46379 0-0.87695 0.3355-0.87695 0.7891v3.2851c0 0.4536 0.41316 0.7891 0.87695 0.7891h5.3676v1.7446c0 0.12334 0.099882 0.22273 0.22221 0.22273 0.063691 0 0.12549-0.027437 0.16795-0.075964l0.83509-0.9555 0.58704 1.1762c0.079866 0.15973 0.27435 0.22404 0.43408 0.14418 0.15973-0.079866 0.22404-0.27383 0.14418-0.43357l-0.57309-1.1493h1.1942c0.12334 0 0.22324-0.10042 0.22324-0.22376 0-0.063691-0.027421-0.12394-0.074931-0.1664l-0.31884-0.28319h2.7363c0.46379 0 0.87695-0.3355 0.87695-0.7891v-3.2851c0-0.4536-0.41316-0.7891-0.87695-0.7891zm0 0.48214h10.945c0.2413 0 0.39688 0.15381 0.39688 0.30696v3.2851c0 0.15315-0.15557 0.30644-0.39688 0.30644h-3.2789l-1.9084-1.696c-0.043471-0.038418-0.09792-0.059945-0.15555-0.059945-0.1294 0-0.23461 0.10521-0.23461 0.23461v1.5214h-5.3676c-0.2413 0-0.39429-0.15329-0.39429-0.30644v-3.2851c0-0.15315 0.15299-0.30696 0.39429-0.30696z\"/>\r\n </svg>`,\r\n });\r\n\r\n Blocks.add(\"button\", {\r\n label: opts.t9n.buttonBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content:\r\n `<a data-gjs-type=\"link\" role=\"button\" style=\"` +\r\n btnStyle +\r\n `\">Button</a>`,\r\n media: `<svg style=\"width:54px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m0.87695 1.1856c-0.46379 0-0.87695 0.3355-0.87695 0.7891v3.2851c0 0.4536 0.41316 0.7891 0.87695 0.7891h5.3676v1.7446c0 0.12334 0.099882 0.22273 0.22221 0.22273 0.063691 0 0.12549-0.027437 0.16795-0.075964l0.83509-0.9555 0.58704 1.1762c0.079866 0.15973 0.27435 0.22404 0.43408 0.14418 0.15973-0.079866 0.22404-0.27383 0.14418-0.43357l-0.57309-1.1493h1.1942c0.12334 0 0.22324-0.10042 0.22324-0.22376 0-0.063691-0.027421-0.12394-0.074931-0.1664l-0.31884-0.28319h2.7363c0.46379 0 0.87695-0.3355 0.87695-0.7891v-3.2851c0-0.4536-0.41316-0.7891-0.87695-0.7891zm0 0.48214h10.945c0.2413 0 0.39688 0.15381 0.39688 0.30696v3.2851c0 0.15315-0.15557 0.30644-0.39688 0.30644h-3.2789l-1.9084-1.696c-0.043471-0.038418-0.09792-0.059945-0.15555-0.059945-0.1294 0-0.23461 0.10521-0.23461 0.23461v1.5214h-5.3676c-0.2413 0-0.39429-0.15329-0.39429-0.30644v-3.2851c0-0.15315 0.15299-0.30696 0.39429-0.30696z\"/>\r\n </svg>`,\r\n });\r\n\r\n Blocks.add(\"header\", {\r\n label: opts.t9n.headerBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m8.4664 2.3913 0.3777 1.3753-0.31258 0.082201c-0.14652-0.27506-0.2963-0.55011-0.46886-0.68922-0.17257-0.13595-0.37444-0.13595-0.57306-0.13595h-0.814v3.3196c0 0.15808 0 0.31616 0.10745 0.3952 0.1107 0.079039 0.3256 0.079039 0.54375 0.079039v0.31616h-1.9536v-0.31616c0.21815 0 0.43305 0 0.54375-0.07904 0.10745-0.079039 0.10745-0.23712 0.10745-0.3952v-3.3196h-0.814c-0.19862 0-0.40049 0-0.57306 0.13595-0.17257 0.13911-0.32234 0.41417-0.46886 0.68922l-0.31258-0.082201 0.3777-1.3753z\" stroke-width=\".32084\"/>\r\n </svg>`,\r\n content: {\r\n type: \"header\",\r\n content: \"Title\",\r\n },\r\n });\r\n\r\n Blocks.add(\"text\", {\r\n label: opts.t9n.textBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 1.9461v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0211v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: {\r\n type: \"text\",\r\n content: \"Text\",\r\n },\r\n });\r\n\r\n Blocks.add(\"text2\", {\r\n label: opts.t9n.textBlkLabelWithSpace,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 1.9461v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0211v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: {\r\n type: \"text\",\r\n content: \"Text\",\r\n style: { \"margin-top\": \"15px\", \"margin-bottom\": \"15px\" },\r\n },\r\n });\r\n\r\n Blocks.add(\"titleAndText\", {\r\n label: opts.t9n.titleAndTextBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 1.9461v1.0583h8.1695v-1.0583h-8.1695zm0 2.0412v0.52917h9.0403v-0.52917h-9.0403zm0 1.0211v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135z\" stroke-width=\".3322\"/>\r\n </svg>`,\r\n content: [\r\n {\r\n tagname: \"div\",\r\n components: [\r\n {\r\n type: \"header\",\r\n tagName: \"h3\",\r\n content: \"Title\",\r\n },\r\n { tagname: \"div\", components: [{ type: \"text\", content: \"Text\" }] },\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n Blocks.add(\"ulist\", {\r\n label: opts.t9n.ulistBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m2.3859 2.1921a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135zm-1.2707 1.7766a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135zm-1.2707 1.7766a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: { type: \"ulist\" },\r\n });\r\n\r\n Blocks.add(\"titleAndList\", {\r\n label: opts.t9n.titleAndListBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 2.1854v1.0583h8.1623v-1.0583h-8.1623zm0.55604 2.0479a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135zm-1.2707 1.7766a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: [\r\n {\r\n tagname: \"div\",\r\n components: [\r\n {\r\n type: \"header\",\r\n tagName: \"h3\",\r\n content: \"Title\",\r\n },\r\n { tagname: \"div\", components: [{ type: \"ulist\" }] },\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n Blocks.add(\"divider\", {\r\n label: opts.t9n.dividerBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content: `<hr style=\"border-top: 1px solid #2b303b;\">`,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m-1.4833e-5 4.5835h12.7v0.35797h-12.7z\"/>\r\n </svg>`,\r\n });\r\n\r\n Blocks.add(\"icon\", {\r\n label: opts.t9n.iconBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m6.1759 1.5875c-0.067716 0-0.13494 0.025902-0.18655 0.077515l-1.9275 1.9265-0.87023-0.8692c-0.10323-0.10323-0.27091-0.10323-0.37414 0-0.10323 0.10323-0.10323 0.27091 0 0.37414l1.0568 1.0568c0.10323 0.10323 0.27091 0.10323 0.37414 0l2.1141-2.1136c0.10322-0.10323 0.10322-0.27143 0-0.37465h0.0010336c-0.051608-0.051613-0.11987-0.077515-0.18759-0.077515zm2.3988 0a1.3854 1.3854 0 0 0-1.3854 1.3854 1.3854 1.3854 0 0 0 1.3854 1.386 1.3854 1.3854 0 0 0 1.3854-1.386 1.3854 1.3854 0 0 0-1.3854-1.3854zm0 0.49661a0.889 0.889 0 0 1 0.88935 0.88883 0.889 0.889 0 0 1-0.88935 0.88935 0.889 0.889 0 0 1-0.88883-0.88935 0.889 0.889 0 0 1 0.88883-0.88883zm-0.096118 2.8897c-0.063262 0-0.12645 0.024129-0.17467 0.072347-0.096436 0.096436-0.096436 0.2529 0 0.34933l0.8139 0.81339h-2.3668c-0.13655 0-0.24701 0.10994-0.24701 0.2465 0 0.13655 0.11046 0.24701 0.24701 0.24701h2.3657l-0.81235 0.81339c-0.096436 0.096436-0.096436 0.2529 0 0.34933 0.096436 0.096436 0.25341 0.096436 0.34985 0l1.234-1.2346-5.167e-4 -5.167e-4c0.096436-0.096436 0.096436-0.2529 0-0.34933l-1.2346-1.2346c-0.048218-0.048218-0.1114-0.072347-0.17467-0.072347zm-4.2344 0.045475c-0.0701 0-0.13304 0.039629-0.16381 0.10232l-0.3669 0.75396-0.81804 0.12092c-0.068389 0.010262-0.12567 0.057966-0.14676 0.12351-0.021088 0.06554-0.0040554 0.13811 0.044958 0.18655l0.59428 0.58756-0.14056 0.83044c-0.011402 0.068389 0.017477 0.13782 0.073897 0.17828 0.056422 0.040464 0.13069 0.045922 0.19224 0.013436l0.73122-0.39067 0.73122 0.39067c0.061552 0.032485 0.13633 0.027597 0.19275-0.013436 0.056423-0.041034 0.08478-0.10989 0.07338-0.17828l-0.14056-0.83044 0.59376-0.58756c0.049012-0.048444 0.066616-0.12101 0.044958-0.18655-0.021657-0.06554-0.077856-0.11325-0.14624-0.12351l-0.81907-0.12092-0.36639-0.75396c-0.030206-0.06269-0.094231-0.10232-0.16433-0.10232z\" stroke-width=\".34931\"/>\r\n </svg>`,\r\n content: { type: \"icon\" },\r\n });\r\n\r\n Blocks.add(\"image\", {\r\n label: opts.t9n.imageBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-regular fa-image\" },\r\n content: {\r\n type: \"image\",\r\n activeOnRender: 1,\r\n },\r\n });\r\n\r\n Blocks.add(\"video\", {\r\n label: opts.t9n.videoBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-brands fa-youtube\" },\r\n content: {\r\n type: \"video\",\r\n src: \"/video.mp4\",\r\n style: {\r\n width: \"100%\",\r\n height: \"350px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"box\", {\r\n label: opts.t9n.boxBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h20V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: {\r\n style: {\r\n padding: \"20px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"sect55\", {\r\n label: opts.t9n.sect55BlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 23 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h8V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1ZM13 20h8V4h-8v16Zm-1 0V4a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: `<div style=\"display:flex; flex-wrap: wrap; padding: 0.2rem 0\">\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 280px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 280px; padding:20px;\"></div>\r\n </div>`,\r\n });\r\n\r\n Blocks.add(\"sect37\", {\r\n label: opts.t9n.sect37BlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h5V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1ZM10 20h12V4H10v16Zm-1 0V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H10a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: `<div style=\"display:flex; flex-wrap: wrap; padding: 0.2rem 0\">\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 38.2%; min-width:200px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 61.8%; padding:20px;\"></div>\r\n </div>`,\r\n });\r\n\r\n Blocks.add(\"sect333\", {\r\n label: opts.t9n.sect333BlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 23 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h4V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1ZM17 20h4V4h-4v16Zm-1 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1ZM9.5 20h4V4h-4v16Zm-1 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: `<div style=\"display:flex; flex-wrap: wrap; padding: 0.2rem 0\">\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 200px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 200px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 200px; padding:20px;\"></div>\r\n </div>`,\r\n });\r\n\r\n Blocks.add(\"box\", {\r\n label: \"Box\",\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h20V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: {\r\n style: {\r\n padding: \"20px 20px 20px 20px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"map\", {\r\n label: opts.t9n.mapBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-solid fa-map-location-dot\" },\r\n content: {\r\n type: \"map\",\r\n style: {\r\n width: \"100%\",\r\n height: \"350px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"link\", {\r\n label: opts.t9n.linkBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-solid fa-link\" },\r\n content: {\r\n type: \"link\",\r\n content: \"Link\",\r\n },\r\n });\r\n\r\n Blocks.add(\"link-block\", {\r\n label: opts.t9n.linkBlockBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-solid fa-link\" },\r\n content: {\r\n type: \"link\",\r\n editable: false,\r\n droppable: true,\r\n style: {\r\n display: \"inline-block\",\r\n padding: \"5px\",\r\n \"min-height\": \"50px\",\r\n \"min-width\": \"50px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"scale\", {\r\n label: opts.t9n.inputRangeBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content: { type: \"scale\" },\r\n attributes: { class: \"fa-solid fa-bars-progress\" },\r\n });\r\n\r\n // Social media sites blocks\r\n Blocks.add(\"facebook\", {\r\n label: opts.t9n.facebookBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://facebook.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fa-brands fa-square-facebook\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-facebook\" },\r\n });\r\n\r\n Blocks.add(\"instagram\", {\r\n label: opts.t9n.instagramBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://instagram.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fab fa-instagram-square\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-instagram\" },\r\n });\r\n\r\n Blocks.add(\"youtube\", {\r\n label: opts.t9n.youtubeBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.youtube.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-brands fa-square-youtube\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-youtube\" },\r\n });\r\n\r\n Blocks.add(\"linkedin\", {\r\n label: opts.t9n.linkedinBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://linkedin.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fab fa-linkedin\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-linkedin\" },\r\n });\r\n\r\n Blocks.add(\"xing\", {\r\n label: opts.t9n.xingBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://xing.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fa-brands fa-square-xing\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-xing\" },\r\n });\r\n\r\n Blocks.add(\"twitter\", {\r\n label: opts.t9n.twitterBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://twitter.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-brands fa-square-x-twitter\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-x-twitter\" },\r\n });\r\n\r\n // Social Media Share blocks\r\n Blocks.add(\"facebookShare\", {\r\n label: opts.t9n.facebookBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.facebook.com/sharer/sharer.php?u=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-facebook-f\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-facebook\" },\r\n });\r\n\r\n Blocks.add(\"linkedinShare\", {\r\n label: opts.t9n.linkedinBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.linkedin.com/shareArticle?mini=true&url=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-linkedin-in\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-linkedin\" },\r\n });\r\n\r\n Blocks.add(\"xingShare\", {\r\n label: opts.t9n.xingBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.xing.com/spi/shares/new?url=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-xing\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-xing\" },\r\n });\r\n\r\n Blocks.add(\"twitterShare\", {\r\n label: opts.t9n.twitterBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://twitter.com/intent/tweet?url=$$$ViewLink$$$&text=\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-x-twitter\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-x-twitter\" },\r\n });\r\n\r\n Blocks.add(\"whatsAppShare\", {\r\n label: opts.t9n.whatsAppBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n \"data-ost-simple-hide\": \"1\",\r\n href: \"https://wa.me/?text=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-whatsapp\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-whatsapp\" },\r\n });\r\n\r\n // conventional Shares\r\n Blocks.add(\"mail\", {\r\n label: opts.t9n.mailBlkLabel,\r\n category: opts.t9n.sharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"mailto:example@mail.com?subject=Sieh%20dir%20dieses%20Inserat%20an&body=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"display:inline-block; text-align:center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-solid fa-envelope\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-solid fa-square-envelope\" },\r\n });\r\n\r\n Blocks.add(\"sms\", {\r\n label: opts.t9n.smsBlkLabel,\r\n category: opts.t9n.sharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"sms:?body=Sieh%20dir%20dieses%20Inserat%20an%20$$$ViewLink$$$\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"display:inline-block; text-align:center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-solid fa-comment-sms\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-solid fa-comment-sms\" },\r\n });\r\n\r\n Blocks.add(\"print\", {\r\n label: opts.t9n.printBlkLabel,\r\n category: opts.t9n.sharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"javascript:if(window.print)window.print()\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"display:inline-block; text-align:center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-solid fa-print\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-solid fa-print\" },\r\n });\r\n}\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport { cmdDeviceDesktop, cmdDeviceMobile, cmdDeviceTablet } from \"./consts\";\r\nimport openExportCommand from \"./openExportCommand\";\r\nimport openImportCommand from \"./openImportCommand\";\r\n\r\nexport default async (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { Commands } = editor;\r\n\r\n openImportCommand(editor, opts);\r\n openExportCommand(editor, opts);\r\n\r\n Commands.add(cmdDeviceDesktop, {\r\n run: (ed) => ed.setDevice(\"Desktop\"),\r\n stop: () => {},\r\n });\r\n\r\n Commands.add(cmdDeviceTablet, {\r\n run: (ed) => ed.setDevice(\"Tablet\"),\r\n stop: () => {},\r\n });\r\n\r\n Commands.add(cmdDeviceMobile, {\r\n run: (ed) => ed.setDevice(\"Mobile portrait\"),\r\n stop: () => {},\r\n });\r\n\r\n Commands.add(\"ost-blocks-visibility\", {\r\n run(editor) {\r\n const cList = editor.Canvas.getBody().classList;\r\n cList.add(\"show-ost-blocks\");\r\n },\r\n stop(editor) {\r\n const cList = editor.Canvas.getBody().classList;\r\n cList.remove(\"show-ost-blocks\");\r\n },\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport {\r\n uListItemContent,\r\n ulListItem,\r\n ostTypeTextTrait,\r\n ostTypeImageTrait,\r\n ostTypeHideInSimpleHtmlTrait,\r\n headerTrait,\r\n iconTrait,\r\n nameTrait,\r\n valueTrait,\r\n} from \"./consts\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { DomComponents } = editor;\r\n\r\n // Add ostendis block trait to video components\r\n var dType = DomComponents.getType(\"video\");\r\n var dModel = dType?.model;\r\n var dView = dType?.view;\r\n const yt = \"yt\";\r\n const vi = \"vi\";\r\n const ytnc = \"ytnc\";\r\n\r\n DomComponents.addType(\"video\", {\r\n model: dModel.extend({\r\n updateTraits() {\r\n const { em } = this;\r\n const prov = this.get(\"provider\");\r\n let tagName = \"iframe\";\r\n let traits;\r\n\r\n switch (prov) {\r\n case yt:\r\n case ytnc:\r\n traits = this.getYoutubeTraits();\r\n break;\r\n case vi:\r\n traits = this.getVimeoTraits();\r\n break;\r\n default:\r\n tagName = \"video\";\r\n traits = this.getSourceTraits();\r\n }\r\n\r\n traits.push({\r\n type: \"select\",\r\n label: \"Ostendis Blocks\",\r\n name: \"data-ost-type\",\r\n options: [\r\n { id: \"\", name: opts.t9n.traitOstNone },\r\n { id: \"videoURL\", name: opts.t9n.traitOstVideoURL },\r\n ],\r\n });\r\n\r\n this.set({ tagName }, { silent: true }); // avoid break in view\r\n this.set({ traits });\r\n em.get(\"ready\") && em.trigger(\"component:toggled\");\r\n },\r\n }),\r\n view: dView,\r\n });\r\n\r\n // Scale the new range\r\n DomComponents.addType(\"scale\", {\r\n isComponent: (el) => el.tagName === \"DIV\" && el.classList.contains(\"scale\"),\r\n model: {\r\n defaults: {\r\n tagName: \"div\",\r\n attributes: {\r\n class: \"scale\",\r\n \"data-percent\": \"66\",\r\n \"data-fcolor\": \"#3b5998\",\r\n \"data-bgcolor\": \"#CCCCCC\",\r\n },\r\n style: {\r\n \"box-sizing\": \"border-box\",\r\n padding: \"0\",\r\n height: \"20px\",\r\n \"max-width\": \"100%\",\r\n border: \"0px solid #666666\",\r\n background: \"linear-gradient(to right,#3b5998 66%, #CCCCCC 66%);\",\r\n },\r\n traits: [\r\n {\r\n name: \"percent\",\r\n type: \"number\",\r\n min: 0,\r\n max: 100,\r\n label: opts.t9n.labelScalePercent,\r\n changeProp: true,\r\n },\r\n {\r\n name: \"fcolor\",\r\n type: \"color\",\r\n label: opts.t9n.labelScaleBarColor,\r\n placeholder: \"#222222\",\r\n changeProp: true,\r\n },\r\n {\r\n name: \"bgcolor\",\r\n type: \"color\",\r\n label: opts.t9n.labelScaleBgColor,\r\n placeholder: \"#cccccc\",\r\n changeProp: true,\r\n },\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n init() {\r\n const scaleAttr = this.getAttributes();\r\n this.set(\"percent\", scaleAttr[\"data-percent\"]);\r\n this.set(\"bgcolor\", scaleAttr[\"data-bgcolor\"]);\r\n this.set(\"fcolor\", scaleAttr[\"data-fcolor\"]);\r\n\r\n this.on(\"change:percent\", this.updateScale);\r\n this.on(\"change:bgcolor\", this.updateScale);\r\n this.on(\"change:fcolor\", this.updateScale);\r\n },\r\n updateScale() {\r\n var p = this.get(\"percent\");\r\n var b = this.get(\"bgcolor\");\r\n var f = this.get(\"fcolor\");\r\n this.set(\"attributes\", {\r\n \"data-percent\": p,\r\n \"data-bgcolor\": b,\r\n \"data-fcolor\": f,\r\n });\r\n this.addStyle({\r\n background: `linear-gradient(to right, ${f} ${p}%, ${b} ${p}%)`,\r\n });\r\n },\r\n },\r\n });\r\n\r\n // INPUT\r\n DomComponents.addType(\"range\", {\r\n isComponent: (el) => el.tagName == \"INPUT\",\r\n model: {\r\n defaults: {\r\n tagName: \"input\",\r\n droppable: true,\r\n highlightable: true,\r\n traits: [nameTrait, valueTrait],\r\n attributes: { type: \"range\", disabled: true },\r\n },\r\n },\r\n extendFnView: [\"updateAttributes\"],\r\n view: {\r\n updateAttributes() {\r\n this.el.setAttribute(\"autocomplete\", \"on\");\r\n },\r\n },\r\n });\r\n\r\n // Unsorted list item component\r\n DomComponents.addType(\"ulistitem\", {\r\n isComponent: (el) => {\r\n if (el.tagName === \"LI\" && el.classList.contains(\"ulistitem\")) {\r\n return { type: \"ulistitem\" };\r\n }\r\n },\r\n model: {\r\n defaults: {\r\n tagName: \"li\",\r\n draggable: \"ul\",\r\n attributes: { class: \"ulistitem\" },\r\n style: { \"text-align\": \"left\" },\r\n components: uListItemContent,\r\n traits: [\"id\", \"title\", ostTypeTextTrait(opts)],\r\n },\r\n },\r\n });\r\n\r\n // Unsorted list component with fontawesome\r\n DomComponents.addType(\"ulist\", {\r\n isComponent: (el) => {\r\n if (el.tagName === \"UL\" && el.classList.contains(\"ulist\")) {\r\n return { type: \"ulist\" };\r\n }\r\n },\r\n model: {\r\n defaults: {\r\n tagName: \"ul\",\r\n attributes: { class: \"ulist fa-ul\" },\r\n style: {\r\n padding: \"0.2em 0\",\r\n \"margin-left\": \"2em\",\r\n \"line-height\": \"1.4em\",\r\n },\r\n components: [ulListItem, ulListItem, ulListItem],\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Header component\r\n DomComponents.addType(\"header\", {\r\n isComponent: (el) => {\r\n const headings = [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"];\r\n if (el.tagName && headings.includes(el.tagName.toLowerCase())) {\r\n return { type: \"header\" };\r\n }\r\n },\r\n extend: \"text\",\r\n model: {\r\n defaults: {\r\n tagName: \"h1\", //Default\r\n traits: [\r\n \"id\",\r\n headerTrait(opts),\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Icon component\r\n DomComponents.addType(\"icon\", {\r\n isComponent: (el) => {\r\n var classNames = [\r\n \"fa\",\r\n \"fas\",\r\n \"far\",\r\n \"fab\",\r\n \"fa-solid\",\r\n \"fa-regular\",\r\n \"fa-brands\",\r\n ];\r\n if (\r\n el.tagName === \"I\" &&\r\n classNames.some((className) => el.classList.contains(className))\r\n ) {\r\n return { type: \"icon\" };\r\n }\r\n },\r\n model: {\r\n defaults: {\r\n tagName: \"i\",\r\n attributes: { class: \"fas fa-star\" },\r\n traits: [\"id\", iconTrait(opts), ostTypeHideInSimpleHtmlTrait(opts)],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to table components\r\n DomComponents.addType(\"table\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to link components\r\n DomComponents.addType(\"link\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n \"href\",\r\n \"target\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to image components\r\n DomComponents.addType(\"image\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n \"alt\",\r\n ostTypeImageTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to text components\r\n DomComponents.addType(\"textnode\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to text components\r\n DomComponents.addType(\"text\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to default components\r\n DomComponents.addType(\"default\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n};\r\n","import PluginOptions from \"./pluginOptions\";\nimport { ostTrans } from \"./ostTranslations\";\n\nexport const cmdDeviceDesktop = \"set-device-desktop\";\nexport const cmdDeviceTablet = \"set-device-tablet\";\nexport const cmdDeviceMobile = \"set-device-mobile\";\n\nexport const nameTrait = {\n name: \"name\",\n};\n\nexport const valueTrait = {\n name: \"value\",\n label: ostTrans.traitBlkValue,\n};\n\nexport const uListItemContent = [\n {\n tagName: \"span\",\n attributes: { class: \"fa-li\" },\n style: { left: \"-2em\", width: \"2em\" },\n components: [\n {\n type: \"icon\",\n tagName: \"i\",\n attributes: { class: \"fas fa-circle\", \"data-gjs-type\": \"icon\" },\n style: {\n \"font-size\": \"0.4em\",\n \"line-height\": \"inherit\",\n display: \"block\",\n },\n },\n ],\n },\n {\n type: \"text\",\n tagName: \"p\",\n content: \"Text\",\n style: { margin: \"0\", padding: \"0\", \"text-align\": \"left\" },\n },\n];\n\nexport const ulListItem = {\n type: \"ulistitem\",\n tagName: \"li\",\n attributes: { class: \"ulistitem\" },\n style: { \"text-align\": \"left\" },\n components: uListItemContent,\n};\n\n// Define ostendis type trait for text and default components\nexport function ostTypeTextTrait(opts: Required<PluginOptions>) {\n return {\n type: \"ost-blocks-select\",\n label: \"Ostendis Blocks\",\n name: \"data-ost-type\",\n attributes: {\n \"data-tooltip\": opts.t9n.traitBlkOstendisTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n options: [\n { id: \"\", name: opts.t9n.traitOstNone },\n { id: \"organizationHeading\", name: opts.t9n.traitOstOrganizationHeading },\n { id: \"organization\", name: opts.t9n.traitOstOrganization },\n { id: \"introductionHeading\", name: opts.t9n.traitOstIntroductionHeading },\n { id: \"introduction\", name: opts.t9n.traitOstIntroduction },\n { id: \"descriptionHeading\", name: opts.t9n.traitOstDescriptionHeading },\n { id: \"description\", name: opts.t9n.traitOstDescription },\n { id: \"tasksHeading\", name: opts.t9n.traitOstTasksHeading },\n { id: \"tasks\", name: opts.t9n.traitOstTasks },\n { id: \"requirementsHeading\", name: opts.t9n.traitOstRequirementsHeading },\n { id: \"requirements\", name: opts.t9n.traitOstRequirements },\n { id: \"benefitsHeading\", name: opts.t9n.traitOstBenefitsHeading },\n { id: \"benefits\", name: opts.t9n.traitOstBenefits },\n { id: \"contactHeading\", name: opts.t9n.traitOstContactHeading },\n { id: \"contact\", name: opts.t9n.traitOstContact },\n { id: \"calltoaction\", name: opts.t9n.traitOstCallToAction },\n ],\n };\n}\n// Define ostendis type trait for images\nexport function ostTypeImageTrait(opts: Required<PluginOptions>) {\n return {\n type: \"ost-blocks-select\",\n label: \"Ostendis Blocks\",\n name: \"data-ost-type\",\n attributes: {\n \"data-tooltip\": opts.t9n.traitBlkOstendisTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n options: [\n { id: \"\", name: opts.t9n.traitOstNone },\n { id: \"logoPicURL\", name: opts.t9n.traitOstLogoPicURL },\n { id: \"headerPic1URL\", name: opts.t9n.traitOstHeaderPic1URL },\n { id: \"headerPic2URL\", name: opts.t9n.traitOstHeaderPic2URL },\n { id: \"headerPic3URL\", name: opts.t9n.traitOstHeaderPic3URL },\n { id: \"footerPic1URL\", name: opts.t9n.traitOstFooterPic1URL },\n { id: \"footerPic2URL\", name: opts.t9n.traitOstFooterPic2URL },\n { id: \"footerPic3URL\", name: opts.t9n.traitOstFooterPic3URL },\n { id: \"additionalPic1URL\", name: opts.t9n.traitOstAdditionalPic1URL },\n { id: \"additionalPic2URL\", name: opts.t9n.traitOstAdditionalPic2URL },\n { id: \"additionalPic3URL\", name: opts.t9n.traitOstAdditionalPic3URL },\n ],\n };\n}\n// Define ostendis type \"hide in simple html\"\nexport function ostTypeHideInSimpleHtmlTrait(opts: Required<PluginOptions>) {\n return {\n type: \"checkbox\",\n label: opts.t9n.hideInSimpleHtmlLabel,\n name: \"data-ost-simple-hide\",\n valueTrue: \"1\",\n valueFalse: \"\",\n attributes: {\n \"data-tooltip\": opts.t9n.hideInSimpleHtmlTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n };\n}\n// Define ostendis type header\nexport function headerTrait(opts: Required<PluginOptions>) {\n return {\n type: \"select\",\n name: \"tagName\",\n label: opts.t9n.traitHeaderLabel,\n options: [\n { id: \"h1\", value: \"h1\", name: opts.t9n.traitHeaderSelectH1 },\n { id: \"h2\", value: \"h2\", name: opts.t9n.traitHeaderSelectH2 },\n { id: \"h3\", value: \"h3\", name: opts.t9n.traitHeaderSelectH3 },\n { id: \"h4\", value: \"h4\", name: opts.t9n.traitHeaderSelectH4 },\n { id: \"h5\", value: \"h5\", name: opts.t9n.traitHeaderSelectH5 },\n { id: \"h6\", value: \"h6\", name: opts.t9n.traitHeaderSelectH6 },\n ],\n changeProp: true,\n };\n}\n// Define ostendis type trait for icons\nexport function iconTrait(opts: Required<PluginOptions>) {\n return {\n type: \"select\",\n label: \"Icon\",\n name: \"class\",\n attributes: {\n id: \"select-fontawesome\",\n \"data-tooltip\": opts.t9n.labelIconTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n options: [\n { id: \"fas fa-minus\", name: opts.t9n.labelIconSelectMinus },\n { id: \"fas fa-circle\", name: opts.t9n.labelIconSelectCircleSolid },\n { id: \"far fa-circle\", name: opts.t9n.labelIconSelectCircle },\n { id: \"fas fa-check\", name: opts.t9n.labelIconSelectCheck },\n { id: \"fas fa-square\", name: opts.t9n.labelIconSelectSquare },\n { id: \"fas fa-arrow-right\", name: opts.t9n.labelIconSelectArrowRight },\n { id: \"fas fa-check-circle\", name: opts.t9n.labelIconSelectCheckCircle },\n { id: \"far fa-clock\", name: opts.t9n.labelIconSelectClock },\n { id: \"fas fa-percent\", name: opts.t9n.labelIconSelectPercent },\n { id: \"far fa-building\", name: opts.t9n.labelIconSelectBuilding },\n { id: \"fas fa-home\", name: opts.t9n.labelIconSelectHome },\n { id: \"fas fa-globe\", name: opts.t9n.labelIconSelectGlobe },\n { id: \"far fa-file\", name: opts.t9n.labelIconSelectFile },\n { id: \"fas fa-utensils\", name: opts.t9n.labelIconSelectUtensils },\n { id: \"far fa-calendar-alt\", name: opts.t9n.labelIconSelectCalendar },\n { id: \"far fa-hourglass\", name: opts.t9n.labelIconSelectHourglass },\n { id: \"fas fa-map-marker-alt\", name: opts.t9n.labelIconSelectMapMarker },\n { id: \"fas fa-road\", name: opts.t9n.labelIconSelectRoad },\n { id: \"fas fa-coffee\", name: opts.t9n.labelIconSelectCoffee },\n { id: \"fas fa-phone\", name: opts.t9n.labelIconSelectPhone },\n { id: \"fas fa-envelope\", name: opts.t9n.labelIconSelectEnvelope },\n { id: \"fas fa-star\", name: opts.t9n.labelIconSelectStar },\n ],\n };\n}\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const cmdm = editor.Commands;\r\n const pfx = editor.getConfig().stylePrefix;\r\n\r\n cmdm.add(opts.cmdOpenExport, {\r\n containerEl: null as HTMLDivElement | null,\r\n codeEditorHtml: null as HTMLDivElement | null,\r\n\r\n createCodeViewer(): any {\r\n return editor.CodeManager.createViewer({\r\n codeName: \"htmlmixed\",\r\n theme: opts.codeViewerTheme,\r\n });\r\n },\r\n\r\n createCodeEditor() {\r\n const el = document.createElement(\"div\");\r\n const codeEditor = this.createCodeViewer();\r\n\r\n el.style.flex = \"1 0 auto\";\r\n el.style.boxSizing = \"border-box\";\r\n el.className = `${pfx}export-code`;\r\n el.appendChild(codeEditor.getElement());\r\n\r\n return { codeEditor, el };\r\n },\r\n\r\n getCodeContainer(): HTMLDivElement {\r\n let containerEl = this.containerEl;\r\n\r\n if (!containerEl) {\r\n containerEl = document.createElement(\"div\");\r\n containerEl.className = `${pfx}export-container`;\r\n containerEl.style.display = \"flex\";\r\n containerEl.style.gap = \"5px\";\r\n containerEl.style.flexDirection = \"column\";\r\n containerEl.style.justifyContent = \"space-between\";\r\n this.containerEl = containerEl;\r\n }\r\n\r\n return containerEl;\r\n },\r\n\r\n run(editor) {\r\n let { codeEditorHtml } = this as any;\r\n const container = this.getCodeContainer();\r\n\r\n // Init code viewer if not yet instantiated\r\n if (!codeEditorHtml) {\r\n const codeViewer = this.createCodeEditor();\r\n codeEditorHtml = codeViewer.codeEditor;\r\n this.codeEditorHtml = codeEditorHtml;\r\n\r\n if (opts.t9n.modalLabelExport) {\r\n let labelEl = document.createElement(\"div\");\r\n labelEl.className = `${pfx}export-label`;\r\n labelEl.innerHTML = opts.t9n.modalLabelExport;\r\n container.appendChild(labelEl);\r\n }\r\n\r\n container.appendChild(codeViewer.el);\r\n }\r\n\r\n editor.Modal.open({\r\n title: opts.t9n.modalTitleExport,\r\n content: container,\r\n });\r\n\r\n if (codeEditorHtml) {\r\n const tmpl = `${editor.getHtml()}<style>${editor.getCss()}</style>`;\r\n codeEditorHtml.setContent(tmpl);\r\n codeEditorHtml.editor.refresh();\r\n }\r\n },\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const cmdm = editor.Commands;\r\n const pfx = editor.getConfig().stylePrefix;\r\n\r\n cmdm.add(opts.cmdOpenImport, {\r\n containerEl: null as HTMLDivElement | null,\r\n codeEditorHtml: null as HTMLDivElement | null,\r\n\r\n createCodeViewer(): any {\r\n return editor.CodeManager.createViewer({\r\n codeName: \"htmlmixed\",\r\n theme: opts.codeViewerTheme,\r\n readOnly: false,\r\n });\r\n },\r\n\r\n createCodeEditor() {\r\n const el = document.createElement(\"div\");\r\n const codeEditor = this.createCodeViewer();\r\n\r\n el.style.flex = \"1 0 auto\";\r\n el.style.boxSizing = \"border-box\";\r\n el.className = `${pfx}import-code`;\r\n el.appendChild(codeEditor.getElement());\r\n\r\n return { codeEditor, el };\r\n },\r\n\r\n getCodeContainer(): HTMLDivElement {\r\n let containerEl = this.containerEl;\r\n\r\n if (!containerEl) {\r\n containerEl = document.createElement(\"div\");\r\n containerEl.className = `${pfx}import-container`;\r\n containerEl.style.display = \"flex\";\r\n containerEl.style.gap = \"5px\";\r\n containerEl.style.flexDirection = \"column\";\r\n containerEl.style.justifyContent = \"space-between\";\r\n this.containerEl = containerEl;\r\n }\r\n\r\n return containerEl;\r\n },\r\n\r\n run(editor) {\r\n const container = this.getCodeContainer();\r\n let { codeEditorHtml } = this as any;\r\n\r\n // Init code viewer if not yet instantiated\r\n if (!codeEditorHtml) {\r\n const codeViewer = this.createCodeEditor();\r\n const btnImp = document.createElement(\"button\");\r\n codeEditorHtml = codeViewer.codeEditor;\r\n this.codeEditorHtml = codeEditorHtml;\r\n\r\n if (opts.t9n.modalLabelImport) {\r\n let labelEl = document.createElement(\"div\");\r\n labelEl.className = `${pfx}import-label`;\r\n labelEl.innerHTML = opts.t9n.modalLabelImport;\r\n container.appendChild(labelEl);\r\n }\r\n\r\n // Init import button\r\n btnImp.innerHTML = opts.t9n.modalBtnImport;\r\n btnImp.type = \"button\";\r\n btnImp.className = `${pfx}btn-prim ${pfx}btn-import`;\r\n btnImp.style.alignSelf = \"flex-start\";\r\n btnImp.onclick = () => {\r\n const code = codeViewer.codeEditor.editor.getValue();\r\n editor.Components.clear();\r\n editor.Css.clear();\r\n editor.setComponents(code);\r\n editor.Modal.close();\r\n };\r\n\r\n container.appendChild(codeViewer.el);\r\n container.appendChild(btnImp);\r\n }\r\n\r\n editor.Modal.open({\r\n title: opts.t9n.modalTitleImport,\r\n content: container,\r\n });\r\n\r\n if (codeEditorHtml) {\r\n codeEditorHtml.setContent(opts.t9n.importPlaceholder || \"\");\r\n codeEditorHtml.editor.refresh();\r\n }\r\n },\r\n });\r\n};\r\n","import type { OstTranslations } from \"./pluginOptions\";\r\n\r\nexport const ostTrans: OstTranslations = {\r\n cmdBtnDesktopLabel: \"Desktop\",\r\n cmdBtnTabletLabel: \"Tablet\",\r\n cmdBtnMobileLabel: \"Mobile\",\r\n\r\n cmdBtnViewOstBlocks: \"View Ostendis Blocks\",\r\n cmdBtnViewCompLabel: \"View components\",\r\n cmdBtnImportLabel: \"Import template\",\r\n cmdBtnExportLabel: \"Export template\",\r\n cmdBtnUndoLabel: \"Undo\",\r\n cmdBtnRedoLabel: \"Redo\",\r\n openStyleManager: \"Open Style Manager\",\r\n openTraits: \"Open Parameter\",\r\n openLayers: \"Open Layer Manager\",\r\n openBlocks: \"Open Blocks\",\r\n\r\n modalTitleImport: \"Import template\",\r\n modalTitleExport: \"Export template\",\r\n modalLabelImport: \"\",\r\n modalLabelExport: \"\",\r\n modalBtnImport: \"Import\",\r\n importPlaceholder: \"\",\r\n\r\n categoryLabel: \"Basic\",\r\n smSitesCategoryLabel: \"Social media sites\",\r\n smSharesCategoryLabel: \"Social media shares\",\r\n sharesCategoryLabel: \"Shares\",\r\n\r\n applyQrCodeBlkLabel: \"Apply link QR code\",\r\n viewQrCodeBlkLabel: \"View link QR code\",\r\n buttonApplyBlkLabel: \"Apply button\",\r\n buttonApplyBlkText: \"Apply here\",\r\n buttonBlkLabel: \"Button\",\r\n headerBlkLabel: \"Header\",\r\n textBlkLabel: \"Text\",\r\n textBlkLabelWithSpace: \"Text with spacing\",\r\n titleAndTextBlkLabel: \"Title and text\",\r\n ulistBlkLabel: \"List\",\r\n titleAndListBlkLabel: \"Title and list\",\r\n dividerBlkLabel: \"Divider\",\r\n iconBlkLabel: \"Icons\",\r\n imageBlkLabel: \"Image\",\r\n videoBlkLabel: \"Video\",\r\n boxBlkLabel: \"Box\",\r\n sect333BlkLabel: \"1/1/1 Columns\",\r\n sect55BlkLabel: \"1/1 Columns\",\r\n sect37BlkLabel: \"3/7 Columns\",\r\n mapBlkLabel: \"Map\",\r\n linkBlkLabel: \"Link\",\r\n linkBlockBlkLabel: \"Link Block\",\r\n inputRangeBlkLabel: \"Range Input\",\r\n\r\n facebookBlkLabelSite: \"Facebook link\",\r\n instagramBlkLabelSite: \"Instagram link\",\r\n youtubeBlkLabelSite: \"YouTube link\",\r\n linkedinBlkLabelSite: \"LinkedIn link\",\r\n xingBlkLabelSite: \"Xing link\",\r\n twitterBlkLabelSite: \"Twitter link\",\r\n\r\n facebookBlkLabelShare: \"Facebook share\",\r\n linkedinBlkLabelShare: \"LinkedIn share\",\r\n xingBlkLabelShare: \"Xing share\",\r\n twitterBlkLabelShare: \"Twitter share\",\r\n whatsAppBlkLabelShare: \"WhatsApp share\",\r\n\r\n mailBlkLabel: \"Mail to\",\r\n smsBlkLabel: \"SMS to\",\r\n printBlkLabel: \"Print\",\r\n\r\n traitBlkValue: \"Value\",\r\n\r\n traitHeaderLabel: \"Header Level\",\r\n traitHeaderSelectH1: \"H1 (highest)\",\r\n traitHeaderSelectH2: \"H2\",\r\n traitHeaderSelectH3: \"H3\",\r\n traitHeaderSelectH4: \"H4\",\r\n traitHeaderSelectH5: \"H5\",\r\n traitHeaderSelectH6: \"H6 (lowest)\",\r\n\r\n traitBlkOstendisTooltip: \"Define Ostendis block.\",\r\n traitOstNone: \"None\",\r\n traitOstOrganizationHeading: \"Organization Heading\",\r\n traitOstOrganization: \"Organization\",\r\n traitOstIntroductionHeading: \"Introduction Heading\",\r\n traitOstIntroduction: \"Introduction\",\r\n traitOstDescriptionHeading: \"Description Heading\",\r\n traitOstDescription: \"Description\",\r\n traitOstTasksHeading: \"Tasks Heading\",\r\n traitOstTasks: \"Tasks\",\r\n traitOstRequirementsHeading: \"Requirements Heading\",\r\n traitOstRequirements: \"Requirements\",\r\n traitOstBenefitsHeading: \"Benefits Heading\",\r\n traitOstBenefits: \"Benefits\",\r\n traitOstContactHeading: \"Contact Heading\",\r\n traitOstContact: \"Contact\",\r\n traitOstCallToAction: \"Call to action\",\r\n\r\n traitOstLogoPicURL: \"Logo Image\",\r\n traitOstHeaderPic1URL: \"Header Image 1\",\r\n traitOstHeaderPic2URL: \"Header Image 2\",\r\n traitOstHeaderPic3URL: \"Header Image 3\",\r\n traitOstFooterPic1URL: \"Footer Image 1\",\r\n traitOstFooterPic2URL: \"Footer Image 2\",\r\n traitOstFooterPic3URL: \"Footer Image 3\",\r\n traitOstAdditionalPic1URL: \"Additional Image 1\",\r\n traitOstAdditionalPic2URL: \"Additional Image 2\",\r\n traitOstAdditionalPic3URL: \"Additional Image 3\",\r\n traitOstVideoURL: \"Video\",\r\n\r\n hideInSimpleHtmlLabel: \"Hide\",\r\n hideInSimpleHtmlTooltip: \"Hide element in simple HTML (jobs.ch)\",\r\n\r\n labelIconTooltip: \"For more icons: change class name in style manager.\",\r\n labelIconSelectMinus: \"minus\",\r\n labelIconSelectCircleSolid: \"circle solid\",\r\n labelIconSelectCircle: \"circle\",\r\n labelIconSelectCheck: \"check\",\r\n labelIconSelectSquare: \"square\",\r\n labelIconSelectArrowRight: \"arrow right\",\r\n labelIconSelectCheckCircle: \"check circle\",\r\n labelIconSelectClock: \"clock\",\r\n labelIconSelectPercent: \"percent\",\r\n labelIconSelectBuilding: \"building\",\r\n labelIconSelectHome: \"home\",\r\n labelIconSelectGlobe: \"globe\",\r\n labelIconSelectFile: \"file\",\r\n labelIconSelectUtensils: \"utensils\",\r\n labelIconSelectCalendar: \"calendar\",\r\n labelIconSelectHourglass: \"hourglass\",\r\n labelIconSelectMapMarker: \"map marker\",\r\n labelIconSelectRoad: \"road\",\r\n labelIconSelectCoffee: \"coffee\",\r\n labelIconSelectPhone: \"phone\",\r\n labelIconSelectEnvelope: \"envelope\",\r\n labelIconSelectStar: \"star\",\r\n\r\n labelScalePercent: \"Percent\",\r\n labelScaleBarColor: \"Color 1\",\r\n labelScaleBgColor: \"Color 2\",\r\n\r\n ostToolbarClone: \"Clone list element\",\r\n ostToolbarDelete: \"Delete list element\",\r\n ostToolbarUp: \"Move list element up\",\r\n ostToolbarDown: \"Move list element down\",\r\n cmdRteRemoveFormat: \"Remove format\",\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport { cmdDeviceDesktop, cmdDeviceMobile, cmdDeviceTablet } from \"./consts\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { Panels } = editor;\r\n const { cmdOpenImport, cmdOpenExport } = opts;\r\n const openStyleManager = \"open-sm\";\r\n const openTraits = \"open-tm\";\r\n const openLayers = \"open-layers\";\r\n const openBlocks = \"open-blocks\";\r\n const activateOutline = \"sw-visibility\";\r\n const iconStyle = 'style=\"display: block; max-width: 22px\"';\r\n\r\n // Turn off default devices select and create new one\r\n editor.getConfig().showDevices = false;\r\n\r\n Panels.getPanels().reset([\r\n {\r\n id: \"commands\",\r\n buttons: [{}],\r\n },\r\n {\r\n id: \"devices-c\",\r\n buttons: [\r\n {\r\n id: cmdDeviceDesktop,\r\n command: cmdDeviceDesktop,\r\n className: \"fa-solid fa-desktop\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnDesktopLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n active: true,\r\n },\r\n {\r\n id: cmdDeviceTablet,\r\n command: cmdDeviceTablet,\r\n className: \"fa-solid fa-tablet-screen-button\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnTabletLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: cmdDeviceMobile,\r\n command: cmdDeviceMobile,\r\n className: \"fa-solid fa-mobile-screen-button\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnMobileLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"options\",\r\n buttons: [\r\n {\r\n id: \"ost-blocks-visibility\",\r\n command: \"ost-blocks-visibility\",\r\n context: \"ost-blocks-visibility\",\r\n className: \"fa-solid fa-file-circle-check\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnViewOstBlocks,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: activateOutline,\r\n command: activateOutline,\r\n context: activateOutline,\r\n className: \"fa-solid fa-border-none\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnViewCompLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: cmdOpenExport,\r\n command: cmdOpenExport,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnExportLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: cmdOpenImport,\r\n command: cmdOpenImport,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnImportLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: \"undo\",\r\n command: \"core:undo\",\r\n className: \"fa-solid fa-rotate-left\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnUndoLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: \"redo\",\r\n command: \"core:redo\",\r\n className: \"fa-solid fa-rotate-right\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnRedoLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"views\",\r\n buttons: [\r\n {\r\n id: openStyleManager,\r\n command: openStyleManager,\r\n active: true,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openStyleManager,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: openTraits,\r\n command: openTraits,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openTraits,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"></path>\r\n </svg>`,\r\n },\r\n {\r\n id: openLayers,\r\n command: openLayers,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openLayers,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: openBlocks,\r\n command: openBlocks,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openBlocks,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" />\r\n </svg>`,\r\n },\r\n ],\r\n },\r\n ]);\r\n\r\n editor.onReady(() => {\r\n if (opts.showOutlineOnLoad) {\r\n const btn = Panels.getButton(\"options\", activateOutline);\r\n btn?.set(\"active\", true);\r\n }\r\n\r\n if (opts.showBlocksOnLoad) {\r\n const btn = Panels.getButton(\"views\", openBlocks);\r\n btn?.set(\"active\", true);\r\n }\r\n\r\n if (opts.showTraitsOnLoad) {\r\n const btn = Panels.getButton(\"views\", openTraits);\r\n btn?.set(\"active\", true);\r\n }\r\n //Beautify tooltips\r\n document.querySelectorAll(\"*[data-tooltip-pos]\").forEach((el) => {\r\n const title = el.getAttribute(\"title\")?.trim();\r\n if (title) {\r\n el.setAttribute(\"data-tooltip\", title);\r\n el.removeAttribute(\"title\");\r\n }\r\n });\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default async (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { RichTextEditor } = editor;\r\n\r\n RichTextEditor.add(\"removeFormat\", {\r\n icon: '<i class=\"fa-solid fa-text-slash\"></i>',\r\n attributes: { title: opts.t9n.cmdRteRemoveFormat },\r\n\r\n result: (rte) => rte.exec(\"removeFormat\"),\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { TraitManager } = editor;\r\n\r\n // Ostendis-Blocks trait\r\n TraitManager.addType(\"ost-blocks-select\", {\r\n createInput({ trait }) {\r\n const traitOpts = trait.get(\"options\") || [];\r\n const traitName = trait.get(\"name\") || \"ost-block-select\";\r\n const options = traitOpts.length\r\n ? traitOpts\r\n : [{ id: \"\", name: \"None\", disabled: \"disabled\" }];\r\n\r\n const el = document.createElement(\"div\");\r\n el.innerHTML = `\r\n <select class=\"ost-blocks-select\" id=\"${traitName}\">\r\n ${options\r\n .map(\r\n (opt) =>\r\n `<option value=\"${opt.id}\" ${opt.disabled}>${opt.name}</option>`\r\n )\r\n .join(\"\")}\r\n </select>\r\n <div class=\"gjs-sel-arrow\">\r\n <div class=\"gjs-d-s-arrow\"></div>\r\n </div>`;\r\n return el;\r\n },\r\n onEvent({ elInput, component, trait }) {\r\n const traitName = trait.get(\"name\") || \"ost-block-select-default\";\r\n let element = elInput.querySelector(\r\n \"#\" + [traitName]\r\n ) as HTMLSelectElement;\r\n const dataOstType = element.value;\r\n\r\n if (dataOstType == \"\") {\r\n component.removeAttributes(traitName);\r\n } else {\r\n component.addAttributes({ [traitName]: dataOstType });\r\n }\r\n updateTrait(element);\r\n },\r\n onUpdate({ elInput, component, trait }) {\r\n const traitName = trait.get(\"name\") || \"ost-block-select-default\";\r\n\r\n if (elInput !== null) {\r\n let element = elInput.querySelector(\r\n \"#\" + [traitName]\r\n ) as HTMLSelectElement;\r\n updateTrait(element);\r\n\r\n // Set select\r\n const dataOstType = component.getAttributes()[traitName] || \"\";\r\n element = elInput.querySelector(\"#\" + [traitName]) as HTMLSelectElement;\r\n element.value = dataOstType;\r\n }\r\n },\r\n });\r\n\r\n // Range trait\r\n TraitManager.addType(\"value\", {\r\n label: opts.t9n.traitBlkValue,\r\n min: 0, // Minimum number value\r\n max: 100, // Maximum number value\r\n events: {\r\n keyup: \"onChange\",\r\n },\r\n\r\n onValueChange() {\r\n const { model, target } = this;\r\n const optionsStr = model.get(\"value\").trim();\r\n const options = optionsStr.split(\"\\n\");\r\n const optComps = [];\r\n\r\n for (let i = 0; i < options.length; i++) {\r\n const optionStr = options[i];\r\n const option = optionStr.split(\"::\");\r\n optComps.push({\r\n type: \"range\",\r\n components: option[1] || option[0],\r\n attributes: { value: option[0] },\r\n });\r\n }\r\n\r\n target.components().reset(optComps);\r\n target?.view?.render();\r\n },\r\n });\r\n\r\n function updateTrait(element: HTMLSelectElement) {\r\n // Set Array to 0\r\n opts.usedOstBlocks.forEach((el) => {\r\n el.count = 0;\r\n });\r\n\r\n var wrapper = editor.DomComponents.getWrapper();\r\n var elements = wrapper?.view?.$el.find(\"[data-ost-type]\").get();\r\n\r\n // List all data-ost-type\r\n elements?.forEach((element) => {\r\n var type = element.getAttribute(\"data-ost-type\") || \"\";\r\n let index = opts.usedOstBlocks.findIndex((item) => item.name === type);\r\n if (index === -1) {\r\n opts.usedOstBlocks.push({ name: type, count: 1 });\r\n } else {\r\n opts.usedOstBlocks[index].count++;\r\n }\r\n });\r\n\r\n // Display update select input\r\n Array.from(element.options).forEach(function (optionElement, optionIndex) {\r\n if (optionElement.value != \"\") {\r\n const usedOstBlockIndex = opts.usedOstBlocks.findIndex(\r\n (e) => e.name === optionElement.value\r\n );\r\n\r\n // Reset\r\n var optionEl = element.options[optionIndex];\r\n optionEl.text = optionEl.text.replace(/^\\(.*\\)\\s*/g, \"\");\r\n optionEl.removeAttribute(\"class\");\r\n optionEl.removeAttribute(\"disabled\");\r\n\r\n if (usedOstBlockIndex > -1) {\r\n if (opts.usedOstBlocks[usedOstBlockIndex].count == 1) {\r\n optionEl.innerHTML = \"(✓) \" + optionEl.text;\r\n optionEl.classList.add(\"gjs-select-option-ok\");\r\n optionEl.disabled = true;\r\n } else if (opts.usedOstBlocks[usedOstBlockIndex].count > 1) {\r\n optionEl.innerHTML =\r\n \"(! \" +\r\n opts.usedOstBlocks[usedOstBlockIndex].count +\r\n \"×) \" +\r\n optionEl.text;\r\n optionEl.classList.add(\"gjs-select-option-nok\");\r\n optionEl.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n};\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { Component, Plugin } from \"grapesjs\";\r\nimport loadBlocks from \"./blocks\";\r\nimport loadCommands from \"./commands\";\r\nimport loadPanels from \"./panels\";\r\nimport loadTraits from \"./traits\";\r\nimport loadComponents from \"./components\";\r\nimport loadRte from \"./rte\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport { ostTrans } from \"./ostTranslations\";\r\nimport {\r\n headerTrait,\r\n ostTypeTextTrait,\r\n ostTypeHideInSimpleHtmlTrait,\r\n} from \"./consts\";\r\n\r\nexport type RequiredPluginOptions = Required<PluginOptions>;\r\n\r\nconst plugin: Plugin<PluginOptions> = async (\r\n editor,\r\n opts: Partial<PluginOptions> = {}\r\n) => {\r\n let config = editor.getConfig();\r\n\r\n const options: RequiredPluginOptions = {\r\n blocks: [],\r\n block: () => ({}),\r\n usedOstBlocks: [],\r\n cmdOpenExport: \"gjs-open-export-template\",\r\n cmdOpenImport: \"gjs-open-import-template\",\r\n codeViewerTheme: \"hopscotch\",\r\n inlineCss: false,\r\n updateStyleManager: true,\r\n showStylesOnChange: true,\r\n showBlocksOnLoad: false,\r\n showTraitsOnLoad: true,\r\n showOutlineOnLoad: true,\r\n t9n: ostTrans,\r\n ...opts,\r\n };\r\n\r\n // Change some config\r\n config.devicePreviewMode = true;\r\n\r\n loadComponents(editor, options);\r\n loadTraits(editor, options);\r\n await loadCommands(editor, options);\r\n loadBlocks(editor, options);\r\n loadPanels(editor, options);\r\n await loadRte(editor, options);\r\n\r\n // On load\r\n editor.on(\"load\", () => {\r\n // Create ostendis toolbar\r\n const tools = document.getElementById(\"gjs-tools\");\r\n const ostTools = document.createElement(\"div\");\r\n ostTools.classList.add(\"gjs-ost-toolbar\");\r\n tools?.append(ostTools);\r\n\r\n // Change all elements with header tags from type text to header\r\n const changeHeaderType = (component: Component): void => {\r\n const tagName = component.get(\"tagName\");\r\n\r\n const headings = [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"];\r\n if (\r\n tagName &&\r\n headings.includes(tagName.toLowerCase()) &&\r\n component.get(\"type\") === \"text\"\r\n ) {\r\n component.set({ type: \"header\" });\r\n component.setTraits([\r\n { name: \"id\" },\r\n headerTrait(options),\r\n ostTypeTextTrait(options),\r\n ostTypeHideInSimpleHtmlTrait(options),\r\n ]);\r\n }\r\n const children = component.components();\r\n children.each((child) => changeHeaderType(child));\r\n };\r\n const wrapper = editor.getWrapper();\r\n const components = wrapper?.components();\r\n components?.each((component) => changeHeaderType(component));\r\n });\r\n\r\n // On selected components\r\n editor.on(\"component:selected\", () => {\r\n let selected = editor.getSelected();\r\n\r\n if (selected != undefined) {\r\n if (selected.is(\"ulistitem\")) {\r\n showOstToolbar(selected);\r\n } else if (selected.isChildOf(\"ulistitem\")) {\r\n showOstToolbar(selected.closestType(\"ulistitem\"));\r\n } else if (selected.getEl()?.tagName === \"LI\") {\r\n // If list element is empty replace with placeholder text (M&E case:)\r\n if (selected.components().length === 0 && !selected.get(\"content\")) {\r\n var selectedPosition = selected.index();\r\n var newComponent = selected\r\n .parent()\r\n ?.append(\"<li>Text</li>\", { at: selectedPosition });\r\n selected.remove();\r\n editor.select(newComponent);\r\n selected = editor.getSelected();\r\n }\r\n showOstToolbar(selected);\r\n } else if (isChildOfElement(selected.getEl(), \"LI\")) {\r\n showOstToolbar(selected.closest(\"li\"));\r\n }\r\n }\r\n });\r\n\r\n // On deselected components\r\n editor.on(\"component:deselected\", () => {\r\n var ostToolbar = document.querySelector(\".gjs-ost-toolbar\");\r\n ostToolbar?.classList.remove(\"show\");\r\n });\r\n\r\n function isChildOfElement(element: HTMLElement | undefined, tag: string) {\r\n while (element?.parentNode) {\r\n element = element.parentNode as HTMLElement;\r\n if (element.tagName === tag) return element;\r\n }\r\n return false;\r\n }\r\n\r\n function showOstToolbar(listItem: Component | undefined) {\r\n var elPos = listItem?.index() || 0;\r\n var elLast = listItem?.parent()?.getLastChild().index();\r\n\r\n var ostToolbar = document.querySelector(\".gjs-ost-toolbar\");\r\n if (ostToolbar != undefined) {\r\n ostToolbar.innerHTML = \"\";\r\n\r\n // Add clone button\r\n const cBtn = document.createElement(\"div\");\r\n cBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12 3a9 9 0 0 0 0 18 9 9 0 0 0 0-18zm-1.3 3.88h2.6v3.82h3.82v2.6H13.3v3.82h-2.6V13.3H6.88v-2.6h3.82z\"/></svg>';\r\n cBtn.classList.add(\"gjs-ost-toolbar-item\", \"clone\");\r\n cBtn.title = options.t9n.ostToolbarClone;\r\n cBtn.addEventListener(\"click\", () => {\r\n if (!listItem || !editor) return;\r\n const clonedItem = listItem?.clone();\r\n listItem?.parent()?.append(clonedItem, { at: elPos + 1 });\r\n });\r\n ostToolbar.appendChild(cBtn);\r\n\r\n //Add delete button\r\n const dBtn = document.createElement(\"div\");\r\n dBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm5.12 7.7v2.6H6.88v-2.6z\"/></svg>';\r\n dBtn.title = options.t9n.ostToolbarDelete;\r\n dBtn.classList.add(\"gjs-ost-toolbar-item\", \"del\");\r\n if (elLast != 0) {\r\n dBtn.addEventListener(\"click\", () => {\r\n listItem?.remove();\r\n ostToolbar?.classList.remove(\"show\");\r\n });\r\n } else {\r\n dBtn.classList.add(\"disable\");\r\n }\r\n ostToolbar.appendChild(dBtn);\r\n\r\n // Add move up button\r\n const upBtn = document.createElement(\"div\");\r\n upBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M1.9 20.75 12 3.25l10.1 17.5Z\"/></svg>';\r\n upBtn.title = options.t9n.ostToolbarUp;\r\n upBtn.classList.add(\"gjs-ost-toolbar-item\", \"up\");\r\n if (elPos > 0) {\r\n upBtn.addEventListener(\"click\", () => {\r\n if (elPos && listItem?.parent() != undefined) {\r\n let parent = listItem.parent();\r\n if (parent) {\r\n listItem?.move(parent, { at: elPos - 1 });\r\n }\r\n editor.selectRemove(listItem);\r\n editor.select(listItem);\r\n }\r\n });\r\n } else {\r\n upBtn.classList.add(\"disable\");\r\n }\r\n ostToolbar.appendChild(upBtn);\r\n\r\n // Add move down button\r\n const dwnBtn = document.createElement(\"div\");\r\n dwnBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M22.4 3.25 12 20.75 1.6 3.25Z\"/></svg>';\r\n dwnBtn.title = options.t9n.ostToolbarDown;\r\n dwnBtn.classList.add(\"gjs-ost-toolbar-item\", \"down\");\r\n if (elPos != elLast) {\r\n var toPos = elPos + 2;\r\n if (elPos == elLast) {\r\n toPos = 0;\r\n }\r\n dwnBtn.addEventListener(\"click\", () => {\r\n if (toPos && listItem?.parent() != undefined) {\r\n let parent = listItem.parent();\r\n if (parent) {\r\n listItem.move(parent, { at: toPos });\r\n }\r\n editor.selectRemove(listItem);\r\n editor.select(listItem);\r\n }\r\n });\r\n } else {\r\n dwnBtn.classList.add(\"disable\");\r\n }\r\n ostToolbar.appendChild(dwnBtn);\r\n\r\n // Add show\r\n ostToolbar.classList.add(\"show\");\r\n }\r\n }\r\n\r\n // On storage start\r\n editor.on(\"storage:start\", () => {\r\n // Reset all Components\r\n const getAllComponents = (model: any, result: any[] = []) => {\r\n result.push(model);\r\n model.components().each((mod: any) => getAllComponents(mod, result));\r\n return result;\r\n };\r\n var allComponents = getAllComponents(editor.DomComponents.getWrapper());\r\n allComponents.forEach((compo) =>\r\n compo.set({\r\n draggable: true,\r\n removable: true,\r\n copyable: true,\r\n toolbar: [\r\n {\r\n attributes: { class: \"fa-solid fa-arrow-up\" },\r\n command: \"select-parent\",\r\n },\r\n {\r\n attributes: { class: \"fa-solid fa-arrows-up-down-left-right\" },\r\n command: \"tlb-move\",\r\n },\r\n { attributes: { class: \"fa-regular fa-copy\" }, command: \"tlb-clone\" },\r\n { attributes: { class: \"fa-solid fa-trash\" }, command: \"tlb-delete\" },\r\n ],\r\n })\r\n );\r\n });\r\n};\r\n\r\nexport default plugin;\r\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"grapesjs-preset-ostendis-adv.min.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,E;;;;;;;;;;;ACPa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,uBAAuB;AAChD,oBAAoB,mBAAO,CAAC,uEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,8CAA8C,yBAAyB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;;;;;;;;;;;ACxBT;AACb;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe;AACjH,iBAAiB,mBAAO,CAAC,yDAAU;AACnC,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,4BAA4B,mBAAO,CAAC,sDAAU;AAC9C,gBAAgB,mBAAO,CAAC,+DAAW;AACnC,oBAAoB,mBAAO,CAAC,uEAAe;AAC3C;AACA,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,2CAA0C,EAAE,qCAAqC,gCAAgC,EAAC;AAClH,2CAA0C,EAAE,qCAAqC,gCAAgC,EAAC;AAClH,2CAA0C,EAAE,qCAAqC,gCAAgC,EAAC;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,UAAU;AACV;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,uCAAuC,6DAA6D;AACpG;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,qBAAqB;AACvE;AACA,kDAAkD,qBAAqB;AACvE;AACA;AACA,+CAA+C,4BAA4B;AAC3E;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gHAAgH;AACpI;AACA;AACA,6CAA6C,4CAA4C;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,4DAA4D;AAC5H;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wCAAwC;AACtF;AACA;AACA;AACA,8BAA8B,cAAc,uBAAuB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,2CAA2C,6CAA6C;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxTa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB;AACzD,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;;;;;;;;;;;ACzCH;AACb;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY;AAC/J,eAAe,mBAAO,CAAC,uDAAW;AAClC,cAAc,mBAAO,CAAC,qDAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,uDAAuD,oCAAoC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;;;;;;;;;;;AC9kBN;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,WAAW;AACX,cAAc,mBAAO,CAAC,qDAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iEAAiE,IAAI;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;;;;;;;;;;;;AC9Fa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,iBAAiB;AAC1C,cAAc,mBAAO,CAAC,qDAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAA+C;AACzE,aAAa;AACb;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA,sBAAsB;;;;;;;;;;;;ACnFT;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,mBAAmB,GAAG,cAAc,GAAG,oBAAoB,GAAG,cAAc,GAAG,mBAAmB,GAAG,aAAa,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,GAAG,YAAY,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,qBAAqB;AAC3W,cAAc,mBAAO,CAAC,iDAAO;AAC7B,mBAAmB,mBAAO,CAAC,0DAAY;AACvC;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,mCAAmC,mBAAO,CAAC,qDAAU;AACrD,eAAe,mBAAO,CAAC,uDAAW;AAClC,cAAc,mBAAO,CAAC,qDAAU;AAChC,oBAAoB,mBAAO,CAAC,4DAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,yDAAyD;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,cAAc;AACd;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,eAAe;AACf;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,mBAAmB,eAAe;AACrF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;;;;;;;;;;;ACn1BA;AACb;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,mBAAmB,GAAG,cAAc,GAAG,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAAG,YAAY,GAAG,iBAAiB,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,GAAG,oBAAoB,GAAG,eAAe,GAAG,cAAc,GAAG,YAAY;AAClgB,cAAc,mBAAO,CAAC,iDAAO;AAC7B,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,kCAAkC,mBAAO,CAAC,kEAAgB;AAC1D,cAAc,mBAAO,CAAC,qDAAU;AAChC,eAAe,mBAAO,CAAC,uDAAW;AAClC,oBAAoB,mBAAO,CAAC,4DAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sCAAsC,uCAAuC,IAAI;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,cAAc;AACd;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,iCAAiC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA,CAAC,iCAAiC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,oCAAoC,yDAAyD;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iBAAiB,+BAA+B,uDAAuD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,oCAAoC,yDAAyD;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iBAAiB,+BAA+B,uDAAuD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gBAAgB;AAChB,2EAA2E,0CAA0C;AACrH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gBAAgB,8BAA8B,wEAAwE;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,wCAAwC,8BAA8B;AACtE;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B;AACzE;AACA;AACA;AACA,gDAAgD,4BAA4B;AAC5E;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAA6D;AAC1F;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI,GAAG,IAAI,GAAG,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACj2BF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,cAAc,mBAAO,CAAC,iDAAO;AAC7B,sCAAsC,mBAAO,CAAC,oDAAS;AACvD,wCAAwC,mBAAO,CAAC,wDAAW;AAC3D,cAAc,mBAAO,CAAC,oDAAS;AAC/B,sCAAsC,mBAAO,CAAC,sEAAkB;AAChE,sCAAsC,mBAAO,CAAC,sEAAkB;AAChE,wCAAwC,mBAAO,CAAC,0EAAoB;AACpE,+BAA+B,mBAAO,CAAC,wDAAW;AAClD,iCAAiC,mBAAO,CAAC,4DAAa;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClHa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,YAAY,GAAG,iBAAiB,GAAG,aAAa,GAAG,gBAAgB;AACnE,cAAc,mBAAO,CAAC,iDAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,oDAAS;AACtC,qBAAqB,mBAAO,CAAC,kDAAQ;AACrC,aAAa,mBAAO,CAAC,kDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf,yCAAyC,mBAAO,CAAC,sDAAU;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;;;;;;;;;;;AChFC;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,YAAY;AACZ,cAAc,mBAAO,CAAC,iDAAO;AAC7B,qCAAqC,mBAAO,CAAC,wDAAW;AACxD,yCAAyC,mBAAO,CAAC,sDAAU;AAC3D,gBAAgB,mBAAO,CAAC,wDAAW;AACnC,sCAAsC,mBAAO,CAAC,oDAAS;AACvD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sCAAsC;AAC/C;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,4BAA4B;AAC5B,2FAA2F;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY;;;;;;;;;;;;ACpDC;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,cAAc,mBAAO,CAAC,iDAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,eAAe;;;;;;;;;;;;ACrBF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc;AACd,oBAAoB,mBAAO,CAAC,4DAAa;AACzC,4BAA4B,mBAAO,CAAC,gGAA+B;AACnE,uBAAuB,mBAAO,CAAC,sFAA0B;AACzD,mBAAmB,mBAAO,CAAC,0DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;;;;;;;;;;;AClED;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,aAAa;AAC9B,oBAAoB,mBAAO,CAAC,4DAAa;AACzC,yCAAwC,EAAE,qCAAqC,uCAAuC,EAAC;AACvH,uBAAuB,mBAAO,CAAC,kEAAgB;AAC/C,0CAAyC,EAAE,qCAAqC,qDAAqD,EAAC;;;;;;;;;;;;ACTzH;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,aAAa;AAC9B,cAAc,mBAAO,CAAC,iDAAO;AAC7B,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,eAAe,mBAAO,CAAC,kDAAQ;AAC/B,gEAAgE,mBAAO,CAAC,oGAAiC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB,IAAI,wDAAwD;AAC7G;AACA,cAAc;;;;;;;;;;;;ACxCD;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,GAAG,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY;AAC/G,cAAc,mBAAO,CAAC,iDAAO;AAC7B,qCAAqC,mBAAO,CAAC,wDAAW;AACxD,uBAAuB,mBAAO,CAAC,kEAAgB;AAC/C,oBAAoB,mBAAO,CAAC,4DAAa;AACzC,uBAAuB,mBAAO,CAAC,sFAA0B;AACzD,4BAA4B,mBAAO,CAAC,gGAA+B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,gDAAgD,2EAA2E;AAC/L;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB,eAAe;AACzF;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9Ma;AACb,8CAA6C,EAAE,aAAa,EAAC;;;;;;;;;;;;ACDhD;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,aAAa;AAC7H,oBAAoB,mBAAO,CAAC,4DAAa;AACzC,mBAAmB,mBAAO,CAAC,0DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,yBAAyB;AAClF;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,0CAA0C;AAClG;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;;;;;;;;;;;AC9GD;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB;AACtB,iBAAiB,mBAAO,CAAC,kDAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;ACvOa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,oBAAoB,GAAG,qBAAqB,GAAG,eAAe;AAC9D,iBAAiB,mBAAO,CAAC,yDAAU;AACnC,iBAAiB,mBAAO,CAAC,kDAAU;AACnC,6BAA6B,mBAAO,CAAC,qDAAQ;AAC7C,kBAAkB,mBAAO,CAAC,+DAAa;AACvC,gBAAgB,mBAAO,CAAC,2DAAW;AACnC,mBAAmB,mBAAO,CAAC,mGAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,8CAA8C,wCAAwC;AACtF;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtHa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,8BAA8B;AAC9B,mBAAmB,mBAAO,CAAC,iEAAc;AACzC,yBAAyB,mBAAO,CAAC,mFAAoB;AACrD,iBAAiB,mBAAO,CAAC,yDAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,2CAA2C;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;;;;;;;;;;;AC3IjB;AACb;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,eAAe;AACpM,4BAA4B,mBAAO,CAAC,sDAAU;AAC9C,iBAAiB,mBAAO,CAAC,kDAAU;AACnC,gBAAgB,mBAAO,CAAC,2DAAW;AACnC,mBAAmB,mBAAO,CAAC,mGAA+B;AAC1D,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,sBAAsB;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA,yBAAyB,mBAAO,CAAC,mFAAoB;AACrD,2CAA0C,EAAE,qCAAqC,sCAAsC,EAAC;AACxH,2CAA0C,EAAE,qCAAqC,sCAAsC,EAAC;AACxH,2CAA0C,EAAE,qCAAqC,sCAAsC,EAAC;;;;;;;;;;;;ACpJ3G;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,iBAAiB;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;;;;;;;;;;;ACpBN;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,kCAAkC,mBAAO,CAAC,wDAAW;AACrD,iBAAiB,mBAAO,CAAC,kDAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3Ja;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,6BAA6B,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,kDAAU;AACnC,iBAAiB,mBAAO,CAAC,yDAAU;AACnC,gBAAgB,mBAAO,CAAC,4EAAW;AACnC,2CAA0C,EAAE,qCAAqC,6BAA6B,EAAC;AAC/G,gBAAgB,mBAAO,CAAC,4EAAW;AACnC,2CAA0C,EAAE,qCAAqC,6BAA6B,EAAC;AAC/G,gBAAgB,mBAAO,CAAC,4EAAW;AACnC,2CAA0C,EAAE,qCAAqC,6BAA6B,EAAC;AAC/G,mBAAmB,mBAAO,CAAC,kFAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,oCAAoC;AACpC;AACA;AACA;AACA,6BAA6B;;;;;;;;;;;;ACrDhB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,wBAAwB,GAAG,eAAe;AAC1C;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,oCAAoC,6BAA6B;AACjE;AACA,KAAK;AACL;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,wCAAwC,0DAA0D;AAClG,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;;;;;;;;;;;ACxFX;AACb;AACA,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,GAAG,uBAAuB,GAAG,mBAAmB,GAAG,2BAA2B;AAChG,iBAAiB,mBAAO,CAAC,kDAAU;AACnC,kBAAkB,mBAAO,CAAC,gEAAc;AACxC;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;AC7Ga;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,yDAAU;AACnC,kBAAkB,mBAAO,CAAC,+DAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACpFwB;AACqB;AACL;;;;;;;;;;;;;;;;;;ACFiB;AACzD,wCAAwC,IAAI;AAC5C,6BAA6B,IAAI;AACjC;AACA,sBAAsB,mDAAe;AACrC,0BAA0B,mDAAe;AACzC,sBAAsB,mDAAe;AACrC,wBAAwB,mDAAe;AACvC,+BAA+B,mDAAe;AAC9C,qBAAqB,mDAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa,gDAAY;AACzB,aAAa,gDAAY;AACzB,aAAa,gDAAY;AACzB,aAAa,gDAAY;AACzB,aAAa,gDAAY;AACzB,aAAa,gDAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kDAAkD,SAAS;AAC3D;AACA,+CAA+C,yBAAyB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8BAA8B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gDAAgD;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gDAAY;AAC3D;AACA;AACA;AACA;AACA,sBAAsB,MAAM;AAC5B;AACA;AACA;AACA,kBAAkB,gDAAY;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gDAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gDAAY;AACnD;AACA,kCAAkC,MAAM,gDAAY,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAY;AACzC;AACA;AACA;AACA;AACA,6BAA6B,gDAAY;AACzC;AACA;AACA;AACA;AACA,6BAA6B,gDAAY;AACzC;AACA;AACA;AACA;AACA,6BAA6B,gDAAY;AACzC;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAe;AAC5D;AACA;AACA;AACA,0CAA0C,mDAAe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gDAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gDAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,MAAM;AACrE;AACA;AACA;AACA;AACA;AACA,+EAA+E,MAAM,GAAG,SAAS;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,MAAM,gDAAY,qBAAqB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gDAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,MAAM,gDAAY;AAC1C,wBAAwB,MAAM,gDAAY,uBAAuB;AACjE;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnawD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB,8BAA8B;AACnD,aAAa,gDAAY;AACzB;AACA,aAAa,gDAAY;AACzB,wBAAwB,4CAA4C,EAAE;AACtE;AACA,sBAAsB,mDAAmD,GAAG;AAC5E,aAAa,gDAAY;AACzB,uBAAuB,4CAA4C,EAAE;AACrE;AACA,sBAAsB;AACtB;AACA,4CAA4C,GAAG;AAC/C,aAAa,gDAAY;AACzB;AACA,iCAAiC,mDAAe;AAChD;AACA;AACA,2BAA2B,6CAA6C;AACxE;AACA;AACA,iCAAiC,mDAAe;AAChD;AACA;AACA,2BAA2B,6CAA6C;AACxE;AACA;AACA,iCAAiC,mDAAe;AAChD,2BAA2B,KAAK;AAChC;AACA,uBAAuB,KAAK,EAAE,6BAA6B,IAAI,uDAAuD,GAAG,gEAAgE;AACzL;AACA;AACA;AACA;AACA;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA,aAAa,mDAAe;AAC5B;AACA;AACA;AACA;AACA,cAAc,8BAA8B,EAAE,4CAA4C;AAC1F;AACA;AACA;AACA,aAAa;AACb;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA,sBAAsB,sBAAsB,IAAI,cAAc;AAC9D;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7HO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;;;;;;;;;;;;ACtC9B;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,oBAAoB;AAC7C,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtGa;AACb;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA,+BAA+B,mBAAO,CAAC,kEAAgB;AACvD,iBAAiB,mBAAO,CAAC,sDAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,yEAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,WAAW,gBAAgB;AAClE;AACA;AACA;AACA,mCAAmC,WAAW,oBAAoB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClNa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,mBAAmB;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC,mBAAmB,KAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA,cAAc;AACd;AACA,aAAa;AACb;AACA,WAAW;AACX;AACA,aAAa;AACb;AACA,eAAe;;;;;;;;;;;;ACtDF;AACb;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB;AAClB,uBAAuB,mBAAO,CAAC,kEAAgB;AAC/C,aAAa,mBAAO,CAAC,qDAAQ;AAC7B,aAAa,mBAAO,CAAC,qDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAkB;AAClB,kBAAe;;;;;;;;;;;;AC/KF;AACb;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,6BAA6B,GAAG,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY;AAC5T,uBAAuB,mBAAO,CAAC,kEAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,CAAC;AACD,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,4CAA4C,kCAAkC;AAC9E;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kCAAkC;AAC9E;AACA;AACA;AACA;AACA;AACA,4CAA4C,kCAAkC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iDAAiD,gCAAgC;AACjF,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3ba;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,kBAAkB,mBAAO,CAAC,6DAAa;AACvC,eAAe,mBAAO,CAAC,uDAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,iCAAiC;AACnG;AACA;AACA;AACA;AACA;AACA,4DAA4D,8BAA8B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7La;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,GAAG,+BAA+B,GAAG,qBAAqB;AAC5E,mBAAmB,mBAAO,CAAC,0DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,oCAAoC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB;;;;;;;;;;;;AC5HL;AACb;AACA;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa;AAC/G,aAAa,mBAAO,CAAC,6DAAa;AAClC,aAAa,mBAAO,CAAC,6DAAa;AAClC,aAAa,mBAAO,CAAC,mEAAgB;AACrC,aAAa,mBAAO,CAAC,2DAAY;AACjC,aAAa,mBAAO,CAAC,uDAAU;AAC/B,aAAa,mBAAO,CAAC,yDAAW;AAChC,aAAa,mBAAO,CAAC,qDAAS;AAC9B;AACA,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,yCAAwC,EAAE,qCAAqC,8BAA8B,EAAC;AAC9G,2CAA0C,EAAE,qCAAqC,gCAAgC,EAAC;AAClH,0CAAyC,EAAE,qCAAqC,+BAA+B,EAAC;AAChH,6CAA4C,EAAE,qCAAqC,kCAAkC,EAAC;AACtH,8CAA6C,EAAE,qCAAqC,mCAAmC,EAAC;AACxH,+CAA8C,EAAE,qCAAqC,oCAAoC,EAAC;;;;;;;;;;;;AC3B7G;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,4BAA4B,GAAG,4BAA4B,GAAG,sBAAsB,GAAG,mBAAmB,GAAG,mBAAmB;AAChI,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,iBAAiB,mBAAO,CAAC,2DAAY;AACrC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA,qCAAqC;AACrC;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA,qCAAqC;AACrC;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;AACA;AACA,4BAA4B;;;;;;;;;;;;AC3Hf;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,oBAAoB,GAAG,cAAc,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,qBAAqB;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;AChIF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,iBAAiB,GAAG,eAAe,GAAG,oBAAoB,GAAG,YAAY,GAAG,cAAc;AAC5G,mBAAmB,mBAAO,CAAC,0DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;AC7HF;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,GAAG,mBAAmB,GAAG,eAAe,GAAG,oBAAoB,GAAG,oBAAoB;AACvG,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,uCAAuC,mBAAO,CAAC,kEAAgB;AAC/D,uBAAuB,mBAAO,CAAC,kEAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC;AACnF;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;ACrFJ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,0BAA0B,GAAG,0BAA0B,GAAG,eAAe,GAAG,iBAAiB,GAAG,yBAAyB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,mBAAmB;AACzL,mBAAmB,mBAAO,CAAC,0DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;;;;;;;;;;;ACpHb;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,GAAG,wBAAwB,GAAG,iBAAiB;AACjE,sCAAsC,mBAAO,CAAC,4EAAsB;AACpE,oCAAoC,mBAAO,CAAC,wEAAoB;AAChE,iCAAiC,mBAAO,CAAC,kEAAiB;AAC1D,yCAAyC,mBAAO,CAAC,2EAAoB;AACrE,8DAA8D;AAC9D,iBAAiB;AACjB,wBAAwB;AACxB;AACA;AACA,4BAA4B;AAC5B;AACA,+BAA+B;AAC/B,kBAAkB;AAClB;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,sEAAsE,QAAQ;AAC9E;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,4BAA4B;AAC5B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,oCAAoC,mBAAO,CAAC,wEAAoB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;;;;;;;AC7BF;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,GAAG,cAAc,GAAG,0BAA0B,GAAG,kBAAkB,GAAG,iBAAiB;AACzG,iCAAiC,mBAAO,CAAC,kEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,iBAAiB;AACjB,sCAAsC,mBAAO,CAAC,4EAAsB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,2CAA2C,uBAAuB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,0DAA0D,yCAAyC;AACnG;AACA;;;;;;;;;;;;ACvIa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uBAAuB,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,cAAc,GAAG,0BAA0B,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,GAAG,oBAAoB,GAAG,cAAc;AAChZ,eAAe,mBAAO,CAAC,uDAAU;AACjC,eAAe,mBAAO,CAAC,uDAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,eAAe,mBAAO,CAAC,uDAAU;AACjC,6CAA4C,EAAE,qCAAqC,8BAA8B,EAAC;AAClH,8CAA6C,EAAE,qCAAqC,+BAA+B,EAAC;AACpH,sDAAqD,EAAE,qCAAqC,uCAAuC,EAAC;AACpI,0CAAyC,EAAE,qCAAqC,2BAA2B,EAAC;AAC5G,8CAA6C,EAAE,qCAAqC,+BAA+B,EAAC;AACpH;AACA,+CAA8C,EAAE,qCAAqC,+BAA+B,EAAC;AACrH,+CAA8C,EAAE,qCAAqC,+BAA+B,EAAC;AACrH,eAAe,mBAAO,CAAC,uDAAU;AACjC,6CAA4C,EAAE,qCAAqC,8BAA8B,EAAC;AAClH,8CAA6C,EAAE,qCAAqC,+BAA+B,EAAC;AACpH,oDAAmD,EAAE,qCAAqC,qCAAqC,EAAC;AAChI;AACA,+CAA8C,EAAE,qCAAqC,+BAA+B,EAAC;AACrH,+CAA8C,EAAE,qCAAqC,+BAA+B,EAAC;AACrH,qDAAoD,EAAE,qCAAqC,qCAAqC,EAAC;AACjI,qDAAoD,EAAE,qCAAqC,qCAAqC,EAAC;AACjI,mDAAkD,EAAE,qCAAqC,8BAA8B,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxD3G;AACb;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,GAAG,mBAAmB;AACvC,mCAAmC,mBAAO,CAAC,0DAAY;AACvD,4BAA4B,mBAAO,CAAC,sDAAU;AAC9C,eAAe,mBAAO,CAAC,0DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;AC1OJ;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc;AACd,kCAAkC,mBAAO,CAAC,gEAAa;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;;;;;;;;;;;;AC5XD;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,yCAAyC,mBAAO,CAAC,sFAA+B;AAChF,sCAAsC,mBAAO,CAAC,uFAAiC;AAC/E,oCAAoC,mBAAO,CAAC,mFAA+B;AAC3E,iCAAiC,mBAAO,CAAC,6EAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;;;;;;;;;;;;AC54BF;AACb;AACA;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,GAAG,sBAAsB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,cAAc;AACnN,eAAe,mBAAO,CAAC,0DAAU;AACjC,0CAAyC,EAAE,qCAAqC,2BAA2B,EAAC;AAC5G,mBAAmB,mBAAO,CAAC,0DAAY;AACvC,8CAA6C,EAAE,qCAAqC,mCAAmC,EAAC;AACxH,kDAAiD,EAAE,qCAAqC,mCAAmC,EAAC;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,kBAAkB,mBAAO,CAAC,gEAAa;AACvC,6CAA4C,EAAE,qCAAqC,gDAAgD,EAAC;AACpI,+BAA+B,mBAAO,CAAC,kEAAgB;AACvD,mBAAmB;AACnB;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,oEAAe;AACpC,gBAAgB,gBAAgB,mBAAO,CAAC,sDAAU;AAClD,oBAAoB,mBAAO,CAAC,oEAAe;AAC3C,8CAA6C,EAAE,qCAAqC,qCAAqC,EAAC;;;;;;;;;;;;ACnF7G;;AAEb,cAAc,mBAAO,CAAC,0DAAe;AACrC,sBAAsB,mBAAO,CAAC,wDAAc;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oCAAoC;AAC7D,CAAC;;AAED;AACA;AACA;;AAEA;AACA,yBAAyB,oCAAoC;AAC7D;;AAEA;;;;;;;;;;;;AC1Ba;;AAEb;AACA;AACA;AACA,cAAc,mBAAO,CAAC,oDAAS;AAC/B,YAAY,mBAAO,CAAC,kDAAS;;AAE7B;AACA,2BAA2B,4CAA4C;AACvE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB,SAAS,wBAAwB;AACjC,SAAS,UAAU,WAAW;AAC9B;;;;;;;;;;;;ACvEa;;AAEb,YAAY,mBAAO,CAAC,kDAAS;AAC7B,cAAc,mBAAO,CAAC,sDAAW;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,iCAAiC;AACjC,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA6B,yCAAyC;AACtE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB,mBAAmB;AAC3C;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,uEAAuE;AACvE,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;AACA,kBAAkB,mBAAmB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;ACjgBa;;AAEb;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;ACvCa;;AAEb;;AAEA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAS;;AAE7B;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE;AACjE;;;;;;;;;;;;AChEa;;AAEb,aAAa,mBAAO,CAAC,oDAAc;;AAEnC;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,wBAAwB;AAC5C;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA,mCAAmC;AACnC,kCAAkC;;AAElC;AACA,sDAAsD;;AAEtD;AACA;AACA;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;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C,uBAAuB;AACrE;AACA;;AAEA,qCAAqC;;AAErC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;ACnrBA,mBAAmB;AACnB,mBAAmB;;AAEnB,YAAY,mBAAO,CAAC,mDAAS;AAC7B,UAAU,mBAAO,CAAC,mDAAS;;AAE3B;;AAEA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;;AAEjB;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA,aAAa;;AAEb,0BAA0B;AAC1B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,QAAQ;AACrB;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,cAAc,iBAAiB;AAC/B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA,yBAAyB,iBAAiB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4CAA4C;;AAE5C;AACA;;AAEA,mCAAmC,8BAA8B;;AAEjE;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,wCAAwC,gBAAgB;AACxD;;;;;;;;;;;AClSA,mBAAmB;AACnB,mBAAmB;;AAEnB,YAAY,mBAAO,CAAC,mDAAS;;AAE7B,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;;AAEpB;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA,aAAa;;AAEb,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,eAAe,OAAO;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,WAAW,4BAA4B;AACvC;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa;AACb;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;;AAEA,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;;AAEA,0CAA0C;AAC1C;;;;;;;;;;;;ACjQa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,eAAe;AAClC,iCAAiC,mBAAO,CAAC,kDAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC;AAClC;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,yBAAyB;AACzB;AACA,gBAAgB;AAChB,mC;;;;;;;;;;;ACxHa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa;AACrE,iBAAiB,mBAAO,CAAC,yDAAY;AACrC,yCAAwC,EAAE,qCAAqC,4BAA4B,EAAC;AAC5G,mBAAmB,mBAAO,CAAC,6DAAc;AACzC,2CAA0C,EAAE,qCAAqC,gCAAgC,EAAC;AAClH,4CAA2C,EAAE,qCAAqC,iCAAiC,EAAC;AACpH;AACA;AACA,mBAAmB,aAAa,KAAK,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA,mBAAmB,aAAa,KAAK,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iC;;;;;;;;;;;ACrEa;AACb;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iC;;;;;;;;;;;AC5Ea;;AAEb,gBAAgB,mBAAO,CAAC,8EAA2B;AACnD,QAAQ,gBAAgB,EAAE,mBAAO,CAAC,wEAAwB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;;AAEA,oBAAoB,kBAAkB;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,qBAAqB,mBAAmB;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,sBAAsB,oBAAoB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,0BAA0B;AAC1B;AACA;;AAEA,0BAA0B;AAC1B;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,uBAAuB;AACvB,oBAAoB,kBAAkB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,0BAA0B;AAC1B;AACA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA,+BAA+B;AAC/B;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA,0BAA0B;AAC1B;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,oCAAoC;AACpC;AACA;;;;;;;;;;;;AC3Va;;AAEb,QAAQ,gBAAgB,EAAE,mBAAO,CAAC,wDAAQ;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACjKa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChEa;;AAEb,kBAAkB,mBAAO,CAAC,kEAAc;AACxC,aAAa,mBAAO,CAAC,wDAAQ;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,uDAAuD;AAC9E,uBAAuB,uDAAuD;AAC9E,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,qBAAqB,qDAAqD;AAC1E,oBAAoB,oDAAoD;AACxE,kBAAkB,gDAAgD;AAClE,kBAAkB,gDAAgD;AAClE,mBAAmB,iDAAiD;AACpE,aAAa,gDAAgD;AAC7D,qBAAqB;AACrB;;AAEA;AACA,sCAAsC,oCAAoC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B;AAC9B,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B,oBAAoB,wBAAwB;AAC5C;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B,oBAAoB,wBAAwB;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACxQa;;AAEb,YAAY,kBAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,CAAC;;AAED,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/Qa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;;AAE7B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;;;;;;;;;;;;AC5Ga;;AAEb,cAAc,mBAAO,CAAC,mEAAmB;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1Ca;;AAEb,gCAAgC,mBAAO,CAAC,wFAAc;AACtD,qCAAqC,mBAAO,CAAC,kGAAmB;AAChE,mCAAmC,mBAAO,CAAC,+GAAkC;AAC7E,cAAc,mBAAO,CAAC,mEAAmB;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnDa;;AAEb,gCAAgC,mBAAO,CAAC,wFAAc;AACtD,0CAA0C,mBAAO,CAAC,6HAAyC;AAC3F,cAAc,mBAAO,CAAC,mEAAmB;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBa;;AAEb,gCAAgC,mBAAO,CAAC,wFAAc;AACtD,wCAAwC,mBAAO,CAAC,wGAAsB;AACtE,cAAc,mBAAO,CAAC,mEAAmB;;AAEzC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBa;;AAEb,cAAc,mBAAO,CAAC,mEAAmB;;AAEzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA,4CAA4C,OAAO;AACnD;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCa;;AAEb,cAAc,mBAAO,CAAC,mEAAmB;AACzC,kBAAkB,mBAAO,CAAC,qEAAiB;AAC3C,mCAAmC,mBAAO,CAAC,gGAAmB;AAC9D,0CAA0C,mBAAO,CAAC,kHAA4B;AAC9E,aAAa,mBAAO,CAAC,mEAAmB;;AAExC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;;AAEb;AACA;;AAEA;AACA;AACA,yDAAyD,QAAQ;AACjE;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D,QAAQ;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;;AAEA,gCAAgC,cAAc;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,4BAA4B,6BAA6B;AACzD,8EAA8E,4BAA4B;AAC1G,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9Na;;AAEb,cAAc,mBAAO,CAAC,mEAAmB;AACzC,kBAAkB,mBAAO,CAAC,qEAAiB;AAC3C,0CAA0C,mBAAO,CAAC,6HAAyC;;AAE3F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;;;;;;;;;;;;ACjJa;;AAEb,cAAc,mBAAO,CAAC,mEAAmB;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/Da;;AAEb,eAAe,mBAAO,CAAC,2DAAU;AACjC,mBAAmB,mBAAO,CAAC,mEAAc;;AAEzC;AACA,aAAa;AACb;;AAEA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB;AACjB;;AAEA;AACA;;;;;;;;;;;;AC5Ba;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,mBAAmB;AAC/C;;AAEA;AACA;;AAEA,4BAA4B,mBAAmB;AAC/C,gCAAgC,aAAa;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,4BAA4B;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,0CAA0C;AACtE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpLa;;AAEb,kBAAkB,mBAAO,CAAC,kEAAc;AACxC,yBAAyB,mBAAO,CAAC,oFAAsB;AACvD,8BAA8B,mBAAO,CAAC,8FAA2B;AACjE,gCAAgC,mBAAO,CAAC,oHAA0C;AAClF,kCAAkC,mBAAO,CAAC,wHAA4C;AACtF,cAAc,mBAAO,CAAC,gEAAgB;AACtC,2BAA2B,mBAAO,CAAC,oFAA0B;AAC7D,qBAAqB,mBAAO,CAAC,gFAAwB;AACrD,gBAAgB,mBAAO,CAAC,sEAAmB;AAC3C,uBAAuB,mBAAO,CAAC,sFAA2B;AAC1D,YAAY,mBAAO,CAAC,8EAAuB;AAC3C,gBAAgB,mBAAO,CAAC,sEAAmB;AAC3C,aAAa,mBAAO,CAAC,gEAAgB;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA6D,yCAAyC;AACtG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA,gEAAgE,OAAO;AACvE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd,oCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,QAAQ;AACvE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,QAAQ;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2CAA2C,+BAA+B;AAC1E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,wBAAwB;AAC5C;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0CAA0C,OAAO;AACjD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,qCAAqC;AACpD;AACA;AACA,MAAM;AACN,eAAe,qCAAqC;AACpD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,OAAO;AACjD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC34Fa;;AAEb,aAAa,mBAAO,CAAC,gEAAgB;;AAErC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjea;;AAEb,2BAA2B,mBAAO,CAAC,oFAA0B;AAC7D,qBAAqB,mBAAO,CAAC,gFAAwB;AACrD,gBAAgB,mBAAO,CAAC,sEAAmB;AAC3C,aAAa,mBAAO,CAAC,gEAAgB;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0DAA0D,cAAc;AACxE;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oDAAoD,iBAAiB;AACrE;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,8BAA8B;;AAErE;AACA,qDAAqD;AACrD,MAAM;AACN,yCAAyC,0BAA0B;AACnE;;AAEA;AACA;;AAEA;;;;;;;;;;;;AC/Ka;;AAEb,qBAAqB,mBAAO,CAAC,2EAAgB;AAC7C,gBAAgB,mBAAO,CAAC,sEAAmB;AAC3C,eAAe,mBAAO,CAAC,qFAAqB;AAC5C,YAAY,mBAAO,CAAC,8EAAuB;;AAE3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gCAAgC;AACnD;AACA;;AAEA;AACA,mCAAmC,mCAAmC;;AAEtE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACnpEa;;AAEb;AACA;AACA,kwvE;;;;;;;;;;;ACJa;;AAEb,gBAAgB,mBAAO,CAAC,sEAAmB;AAC3C,YAAY,mBAAO,CAAC,8EAAuB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9Ja;;AAEb,QAAQ,gBAAgB,EAAE,mBAAO,CAAC,gEAAgB;;AAElD;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,CAAC;;AAED,sBAAsB,oBAAoB;AAC1C;;AAEA;AACA;AACA,CAAC;;AAED,0BAA0B;AAC1B;AACA;;AAEA,0BAA0B;AAC1B;AACA;;AAEA,uBAAuB;AACvB;;AAEA,oBAAoB,gCAAgC;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,uBAAuB;AACvB;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;;AAEA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA,mBAAmB;AACnB;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA,uBAAuB;AACvB;AACA;;AAEA,0BAA0B;AAC1B;AACA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA,+BAA+B;AAC/B;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA,0BAA0B;AAC1B;AACA;;AAEA,qBAAqB;AACrB;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,oCAAoC;AACpC;AACA;;;;;;;;;;;;AC5Na;;AAEb;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;AACL;;;;;;;;;;;;ACZa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACtCA;AACA;AACA;AACA,EAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,GAAG;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,4BAA4B;AACrE;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzPA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAgB,sCAAsC,kBAAkB;AACjF,wBAAwB;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEO;AACP;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP,kCAAkC;AAClC;;AAEO;AACP,uBAAuB,uFAAuF;AAC9G;AACA;AACA,yGAAyG;AACzG;AACA,sCAAsC,QAAQ;AAC9C;AACA,gEAAgE;AAChE;AACA,8CAA8C,yFAAyF;AACvI,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA,4CAA4C,yEAAyE;AACrH;;AAEO;AACP;AACA;;AAEO;AACP,0BAA0B,+DAA+D,iBAAiB;AAC1G;AACA,kCAAkC,MAAM,+BAA+B,YAAY;AACnF,iCAAiC,MAAM,mCAAmC,YAAY;AACtF,8BAA8B;AAC9B;AACA,GAAG;AACH;;AAEO;AACP,YAAY,6BAA6B,0BAA0B,cAAc,qBAAqB;AACtG,2IAA2I,cAAc;AACzJ,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iCAAiC,SAAS;AAC1C,iCAAiC,WAAW,UAAU;AACtD,wCAAwC,cAAc;AACtD;AACA,4GAA4G,OAAO;AACnH,+EAA+E,iBAAiB;AAChG,uDAAuD,gBAAgB,QAAQ;AAC/E,6CAA6C,gBAAgB,gBAAgB;AAC7E;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ,YAAY,aAAa,SAAS,UAAU;AACpD,kCAAkC,SAAS;AAC3C;AACA;;AAEO;AACP;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACO;AACP,2BAA2B,sBAAsB;AACjD;AACA;AACA;;AAEA;AACO;AACP,gDAAgD,QAAQ;AACxD,uCAAuC,QAAQ;AAC/C,uDAAuD,QAAQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,wMAAwM,cAAc;AACtN,4BAA4B,sBAAsB;AAClD,wBAAwB,YAAY,sBAAsB,qCAAqC,2CAA2C,MAAM;AAChJ,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,qDAAqD,cAAc;AACnE;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM,oBAAoB,YAAY;AAC5E,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,SAAS,gBAAgB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7YF,6BAAe,oCAAU,MAAc,EAAE,IAA6B;IAC5D,UAAM,GAAK,MAAM,OAAX,CAAY;IAE1B,IAAM,QAAQ,GAAG,UAAC,EAAU,EAAE,QAAyB;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAE,IAAI,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,sBAClB,MAAM,EAAE,IAAI,IACT,QAAQ,GACR,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EACjB,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACnC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,40BAEA;QACP,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,UAAU,EAAE;gBACV,GAAG,EAAE,mBAAmB;gBACxB,GAAG,EAAE,oBAAoB;aAC1B;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;QAClC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,40BAEA;QACP,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB;gBACvB,GAAG,EAAE,mBAAmB;aACzB;SACF;KACF,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,wMAAwM,CAAC;IAExN,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACnC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,OAAO,EACL,+FAAsF;YACtF,QAAQ;YACR,aAAK,IAAI,CAAC,GAAG,CAAC,kBAAkB,SAAM;QACxC,KAAK,EAAE,ghCAEI;KACZ,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;QAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,OAAO,EACL,oDAA+C;YAC/C,QAAQ;YACR,eAAc;QAChB,KAAK,EAAE,ghCAEI;KACZ,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;QAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,gpBAEA;QACP,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;SACjB;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,wZAEA;QACP,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;SAChB;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,wZAEA;QACP,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;SACzD;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,sYAEI;QACX,OAAO,EAAE;YACP;gBACE,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,OAAO;qBACjB;oBACD,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;iBACpE;aACF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,+xBAEE;QACT,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KAC3B,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,qnBAEE;QACT,OAAO,EAAE;YACP;gBACE,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,OAAO;qBACjB;oBACD,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;iBACpD;aACF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;QAC/B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,OAAO,EAAE,+CAA6C;QACtD,KAAK,EAAE,8LAEE;KACV,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,y7DAEE;QACT,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KAC1B,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;QAC5C,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,CAAC;SAClB;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;QAC7C,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE;gBACL,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,OAAO;aAChB;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;QAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,4MAEE;QACT,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;aAChB;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;QAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,mSAEE;QACT,OAAO,EAAE,2QAGD;KACT,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;QAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,qSAEE;QACT,OAAO,EAAE,4RAGD;KACT,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;QAC/B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,6XAEE;QACT,OAAO,EAAE,yWAID;KACT,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;QAChB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,4MAEE;QACT,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,qBAAqB;aAC/B;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;QAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE;QACrD,OAAO,EAAE;YACP,IAAI,EAAE,KAAK;YACX,KAAK,EAAE;gBACL,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,OAAO;aAChB;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;QACzC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;SAChB;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;QACjC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;QACzC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,MAAM;aACpB;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;QAClC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAChC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC1B,UAAU,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE;KACnD,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;QACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,wPAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE;KACtD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;QACtB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,mPAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE;KACvD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACnC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,0BAA0B;gBAChC,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,mOAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE;KACrD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;QACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,2OAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;QAChC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,oPAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE;KAClD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACnC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,sBAAsB;gBAC5B,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,oOAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE;KACvD,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;QAC1B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACxC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,6DAA6D;gBACnE,MAAM,EAAE,QAAQ;gBAChB,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,+VAGO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE;KACtD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;QAC1B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACxC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,oEAAoE;gBAC1E,MAAM,EAAE,QAAQ;gBAChB,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,gWAGO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;QACtB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;QACjC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACxC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,wDAAwD;gBAC9D,MAAM,EAAE,QAAQ;gBAChB,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,yVAGO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE;KAClD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;QACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACxC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,2DAA2D;gBACjE,MAAM,EAAE,QAAQ;gBAChB,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,8VAGO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE;KACvD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;QAC1B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACxC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,sBAAsB,EAAE,GAAG;gBAC3B,IAAI,EAAE,oCAAoC;gBAC1C,MAAM,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE,6VAGO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE;KACtD,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACtC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,wFAAwF;gBAC9F,MAAM,EAAE,QAAQ;gBAChB,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,wMAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE;KACrD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;QAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACtC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,+DAA+D;gBACrE,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,2MAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE;KACjD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;QACtC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,MAAM;aAC1B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,2CAA2C;gBACjD,sBAAsB,EAAE,GAAG;aAC5B;YACD,UAAU,EAAE,qMAEO;SACpB;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;KAC3C,CAAC,CAAC;AACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9mB6E;AAC1B;AACA;AAEpD,iEAAe,UAAO,MAAc,EAAE,IAA6B;;;QACzD,QAAQ,GAAK,MAAM,SAAX,CAAY;QAE5B,8DAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,8DAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEhC,QAAQ,CAAC,GAAG,CAAC,qDAAgB,EAAE;YAC7B,GAAG,EAAE,UAAC,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAvB,CAAuB;YACpC,IAAI,EAAE,cAAO,CAAC;SACf,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,oDAAe,EAAE;YAC5B,GAAG,EAAE,UAAC,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAtB,CAAsB;YACnC,IAAI,EAAE,cAAO,CAAC;SACf,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,oDAAe,EAAE;YAC5B,GAAG,EAAE,UAAC,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAA/B,CAA+B;YAC5C,IAAI,EAAE,cAAO,CAAC;SACf,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACpC,GAAG,YAAC,MAAM;gBACR,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;gBAChD,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,YAAC,MAAM;gBACT,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;gBAChD,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAClC,CAAC;SACF,CAAC,CAAC;;;KACJ,EAAC;;;;;;;;;;;;;;;;;ACzBgB;AAElB,iEAAe,UAAC,MAAc,EAAE,IAA6B;IACnD,iBAAa,GAAK,MAAM,cAAX,CAAY;IAEjC,+CAA+C;IAC/C,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;IAC1B,IAAI,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC;IACxB,IAAM,EAAE,GAAG,IAAI,CAAC;IAChB,IAAM,EAAE,GAAG,IAAI,CAAC;IAChB,IAAM,IAAI,GAAG,MAAM,CAAC;IAEpB,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,YAAY;gBACF,MAAE,GAAK,IAAI,GAAT,CAAU;gBACpB,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClC,IAAI,OAAO,GAAG,QAAQ,CAAC;gBACvB,IAAI,MAAM,CAAC;gBAEX,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,EAAE,CAAC;oBACR,KAAK,IAAI;wBACP,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACjC,MAAM;oBACR,KAAK,EAAE;wBACL,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC/B,MAAM;oBACR;wBACE,OAAO,GAAG,OAAO,CAAC;wBAClB,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACpC,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE;wBACP,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;wBACvC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;qBACpD;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,WAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB;gBAC/D,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,UAAE,CAAC,CAAC;gBACrB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACrD,CAAC;SACF,CAAC;QACF,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,sBAAsB;IACtB,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC7B,WAAW,EAAE,UAAC,EAAE,IAAK,SAAE,CAAC,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAtD,CAAsD;QAC3E,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,OAAO;oBACd,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,SAAS;oBACxB,cAAc,EAAE,SAAS;iBAC1B;gBACD,KAAK,EAAE;oBACL,YAAY,EAAE,YAAY;oBAC1B,OAAO,EAAE,GAAG;oBACZ,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,MAAM;oBACnB,MAAM,EAAE,mBAAmB;oBAC3B,UAAU,EAAE,qDAAqD;iBAClE;gBACD,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,CAAC;wBACN,GAAG,EAAE,GAAG;wBACR,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;wBACjC,UAAU,EAAE,IAAI;qBACjB;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;wBAClC,WAAW,EAAE,SAAS;wBACtB,UAAU,EAAE,IAAI;qBACjB;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;wBACjC,WAAW,EAAE,SAAS;wBACtB,UAAU,EAAE,IAAI;qBACjB;oBACD,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;YACD,IAAI;gBACF,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAE7C,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;YACD,WAAW;gBACT,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACrB,cAAc,EAAE,CAAC;oBACjB,cAAc,EAAE,CAAC;oBACjB,aAAa,EAAE,CAAC;iBACjB,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC;oBACZ,UAAU,EAAE,oCAA6B,CAAC,cAAI,CAAC,gBAAM,CAAC,cAAI,CAAC,OAAI;iBAChE,CAAC,CAAC;YACL,CAAC;SACF;KACF,CAAC,CAAC;IAEH,QAAQ;IACR,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC7B,WAAW,EAAE,UAAC,EAAE,IAAK,SAAE,CAAC,OAAO,IAAI,OAAO,EAArB,CAAqB;QAC1C,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,CAAC,8CAAS,EAAE,+CAAU,CAAC;gBAC/B,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC9C;SACF;QACD,YAAY,EAAE,CAAC,kBAAkB,CAAC;QAClC,IAAI,EAAE;YACJ,gBAAgB;gBACd,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;SACF;KACF,CAAC,CAAC;IAEH,+BAA+B;IAC/B,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE;QACjC,WAAW,EAAE,UAAC,EAAE;YACd,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;gBAClC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;gBAC/B,UAAU,EAAE,qDAAgB;gBAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,yDAAgB,CAAC,IAAI,CAAC,CAAC;aAChD;SACF;KACF,CAAC,CAAC;IAEH,2CAA2C;IAC3C,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC7B,WAAW,EAAE,UAAC,EAAE;YACd,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;gBACpC,KAAK,EAAE;oBACL,OAAO,EAAE,SAAS;oBAClB,aAAa,EAAE,KAAK;oBACpB,aAAa,EAAE,OAAO;iBACvB;gBACD,UAAU,EAAE,CAAC,+CAAU,EAAE,+CAAU,EAAE,+CAAU,CAAC;gBAChD,MAAM,EAAE;oBACN,IAAI;oBACJ,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC9B,WAAW,EAAE,UAAC,EAAE;YACd,IAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI,EAAE,SAAS;gBACxB,MAAM,EAAE;oBACN,IAAI;oBACJ,oDAAW,CAAC,IAAI,CAAC;oBACjB,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,iBAAiB;IACjB,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,UAAC,EAAE;YACd,IAAI,UAAU,GAAG;gBACf,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,UAAU;gBACV,YAAY;gBACZ,WAAW;aACZ,CAAC;YACF,IACE,EAAE,CAAC,OAAO,KAAK,GAAG;gBAClB,UAAU,CAAC,IAAI,CAAC,UAAC,SAAS,IAAK,SAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAhC,CAAgC,CAAC,EAChE,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,GAAG;gBACZ,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;gBACpC,MAAM,EAAE,CAAC,IAAI,EAAE,kDAAS,CAAC,IAAI,CAAC,EAAE,qEAA4B,CAAC,IAAI,CAAC,CAAC;aACpE;SACF;KACF,CAAC,CAAC;IAEH,8CAA8C;IAC9C,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC7B,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI;oBACJ,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,6CAA6C;IAC7C,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;QAC5B,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI;oBACJ,MAAM;oBACN,QAAQ;oBACR,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,8CAA8C;IAC9C,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC7B,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI;oBACJ,KAAK;oBACL,0DAAiB,CAAC,IAAI,CAAC;oBACvB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,6CAA6C;IAC7C,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE;QAChC,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI;oBACJ,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,6CAA6C;IAC7C,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;QAC5B,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI;oBACJ,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;IAEH,gDAAgD;IAChD,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE;QAC/B,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI;oBACJ,yDAAgB,CAAC,IAAI,CAAC;oBACtB,qEAA4B,CAAC,IAAI,CAAC;iBACnC;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1U2C;AAEtC,IAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAC9C,IAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,IAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,IAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM;CACb,CAAC;AAEK,IAAM,UAAU,GAAG;IACxB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,sDAAQ,CAAC,aAAa;CAC9B,CAAC;AAEK,IAAM,gBAAgB,GAAG;IAC9B;QACE,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QACrC,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,GAAG;gBACZ,UAAU,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE;gBAC/D,KAAK,EAAE;oBACL,WAAW,EAAE,OAAO;oBACpB,aAAa,EAAE,SAAS;oBACxB,OAAO,EAAE,OAAO;iBACjB;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE;KAC3D;CACF,CAAC;AAEK,IAAM,UAAU,GAAG;IACxB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;IAClC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;IAC/B,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAEF,6DAA6D;AACtD,SAAS,gBAAgB,CAAC,IAA6B;IAC5D,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE;YACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB;YAChD,kBAAkB,EAAE,QAAQ;SAC7B;QACD,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvC,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE;YACzE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE;YACzE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE;YACvE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACzD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC7C,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE;YACzE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACjE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YACnD,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE;YAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YACjD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;SAC5D;KACF,CAAC;AACJ,CAAC;AACD,wCAAwC;AACjC,SAAS,iBAAiB,CAAC,IAA6B;IAC7D,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE;YACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB;YAChD,kBAAkB,EAAE,QAAQ;SAC7B;QACD,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE;YACvD,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE;YACrE,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE;YACrE,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE;SACtE;KACF,CAAC;AACJ,CAAC;AACD,6CAA6C;AACtC,SAAS,4BAA4B,CAAC,IAA6B;IACxE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB;QACrC,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,EAAE;QACd,UAAU,EAAE;YACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB;YAChD,kBAAkB,EAAE,QAAQ;SAC7B;KACF,CAAC;AACJ,CAAC;AACD,8BAA8B;AACvB,SAAS,WAAW,CAAC,IAA6B;IACvD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;QAChC,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;SAC9D;QACD,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AACD,uCAAuC;AAChC,SAAS,SAAS,CAAC,IAA6B;IACrD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,OAAO;QACb,UAAU,EAAE;YACV,EAAE,EAAE,oBAAoB;YACxB,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;YACzC,kBAAkB,EAAE,QAAQ;SAC7B;QACD,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE;YAClE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE;YACtE,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE;YACxE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE;YAC/D,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACjE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACzD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACzD,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACjE,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACrE,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACnE,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACxE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACzD,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC7D,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC3D,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACjE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE;SAC1D;KACF,CAAC;AACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3KyB;AAG1B,iEAAe,UAAC,MAAc,EAAE,IAA6B;IAC3D,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC7B,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC;IAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC3B,GAAG,YAAC,MAAM,EAAE,CAAC,EAAE,IAAS;YAAT,gCAAS;YACtB,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,iBAAU,MAAM,CAAC,MAAM,EAAE,aAAU,CAAC;YACpE,OAAO,4CAAK,CAAC,IAAI,wBAAO,IAAI,CAAC,SAAS,GAAK,IAAI,EAAG,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC3B,WAAW,EAAE,IAA6B;QAC1C,cAAc,EAAE,IAA6B;QAE7C,gBAAgB;YACd,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;gBACrC,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,IAAI,CAAC,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;YACd,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE3C,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;YAC3B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;YAClC,EAAE,CAAC,SAAS,GAAG,UAAG,GAAG,gBAAa,CAAC;YACnC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YAExC,OAAO,EAAE,UAAU,cAAE,EAAE,MAAE,CAAC;QAC5B,CAAC;QAED,gBAAgB;YACd,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,WAAW,CAAC,SAAS,GAAG,UAAG,GAAG,qBAAkB,CAAC;gBACjD,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACnC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;gBAC9B,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;gBAC3C,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC;gBACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,GAAG,YAAC,MAAM;YACF,kBAAc,GAAK,IAAW,eAAhB,CAAiB;YACrC,IAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE1C,2CAA2C;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC;gBACvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;gBAErC,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC5C,OAAO,CAAC,SAAS,GAAG,UAAG,GAAG,iBAAc,CAAC;oBACzC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;oBAC9C,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;gBAED,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAChC,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAM,IAAI,GAAG,UAAG,MAAM,CAAC,OAAO,EAAE,oBAAU,MAAM,CAAC,MAAM,EAAE,aAAU,CAAC;gBACpE,cAAc,CAAC,UAAU,CACvB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,4CAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CACpD,CAAC;gBACF,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC,EAAC;;;;;;;;;;;;;;;;ACrFF,iEAAe,UAAC,MAAc,EAAE,IAA6B;IAC3D,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC7B,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC;IAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC3B,WAAW,EAAE,IAA6B;QAC1C,cAAc,EAAE,IAA6B;QAE7C,gBAAgB;YACd,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;gBACrC,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,IAAI,CAAC,eAAe;gBAC3B,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;YACd,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE3C,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;YAC3B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;YAClC,EAAE,CAAC,SAAS,GAAG,UAAG,GAAG,gBAAa,CAAC;YACnC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YAExC,OAAO,EAAE,UAAU,cAAE,EAAE,MAAE,CAAC;QAC5B,CAAC;QAED,gBAAgB;YACd,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,WAAW,CAAC,SAAS,GAAG,UAAG,GAAG,qBAAkB,CAAC;gBACjD,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACnC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;gBAC9B,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;gBAC3C,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC;gBACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,GAAG,YAAC,MAAM;YACR,IAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpC,kBAAc,GAAK,IAAW,eAAhB,CAAiB;YAErC,2CAA2C;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAM,YAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,cAAc,GAAG,YAAU,CAAC,UAAU,CAAC;gBACvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;gBAErC,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC5C,OAAO,CAAC,SAAS,GAAG,UAAG,GAAG,iBAAc,CAAC;oBACzC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;oBAC9C,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;gBAED,qBAAqB;gBACrB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC3C,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACvB,MAAM,CAAC,SAAS,GAAG,UAAG,GAAG,sBAAY,GAAG,eAAY,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;gBACtC,MAAM,CAAC,OAAO,GAAG;oBACf,IAAM,IAAI,GAAG,YAAU,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACrD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC,CAAC;gBAEF,SAAS,CAAC,WAAW,CAAC,YAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAChC,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC5D,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC,EAAC;;;;;;;;;;;;;;;;AC3FK,IAAM,QAAQ,GAAoB;IACvC,kBAAkB,EAAE,SAAS;IAC7B,iBAAiB,EAAE,QAAQ;IAC3B,iBAAiB,EAAE,QAAQ;IAE3B,mBAAmB,EAAE,sBAAsB;IAC3C,mBAAmB,EAAE,iBAAiB;IACtC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,iBAAiB;IACpC,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,oBAAoB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,oBAAoB;IAChC,UAAU,EAAE,aAAa;IAEzB,gBAAgB,EAAE,iBAAiB;IACnC,gBAAgB,EAAE,iBAAiB;IACnC,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,QAAQ;IACxB,iBAAiB,EAAE,EAAE;IAErB,aAAa,EAAE,OAAO;IACtB,oBAAoB,EAAE,oBAAoB;IAC1C,qBAAqB,EAAE,qBAAqB;IAC5C,mBAAmB,EAAE,QAAQ;IAE7B,mBAAmB,EAAE,oBAAoB;IACzC,kBAAkB,EAAE,mBAAmB;IACvC,mBAAmB,EAAE,cAAc;IACnC,kBAAkB,EAAE,YAAY;IAChC,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,YAAY,EAAE,MAAM;IACpB,qBAAqB,EAAE,mBAAmB;IAC1C,oBAAoB,EAAE,gBAAgB;IACtC,aAAa,EAAE,MAAM;IACrB,oBAAoB,EAAE,gBAAgB;IACtC,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,OAAO;IACrB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,aAAa;IAC7B,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,iBAAiB,EAAE,YAAY;IAC/B,kBAAkB,EAAE,aAAa;IAEjC,oBAAoB,EAAE,eAAe;IACrC,qBAAqB,EAAE,gBAAgB;IACvC,mBAAmB,EAAE,cAAc;IACnC,oBAAoB,EAAE,eAAe;IACrC,gBAAgB,EAAE,WAAW;IAC7B,mBAAmB,EAAE,cAAc;IAEnC,qBAAqB,EAAE,gBAAgB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,iBAAiB,EAAE,YAAY;IAC/B,oBAAoB,EAAE,eAAe;IACrC,qBAAqB,EAAE,gBAAgB;IAEvC,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,QAAQ;IACrB,aAAa,EAAE,OAAO;IAEtB,aAAa,EAAE,OAAO;IAEtB,gBAAgB,EAAE,cAAc;IAChC,mBAAmB,EAAE,cAAc;IACnC,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,aAAa;IAElC,uBAAuB,EAAE,wBAAwB;IACjD,YAAY,EAAE,MAAM;IACpB,2BAA2B,EAAE,sBAAsB;IACnD,oBAAoB,EAAE,cAAc;IACpC,2BAA2B,EAAE,sBAAsB;IACnD,oBAAoB,EAAE,cAAc;IACpC,0BAA0B,EAAE,qBAAqB;IACjD,mBAAmB,EAAE,aAAa;IAClC,oBAAoB,EAAE,eAAe;IACrC,aAAa,EAAE,OAAO;IACtB,2BAA2B,EAAE,sBAAsB;IACnD,oBAAoB,EAAE,cAAc;IACpC,uBAAuB,EAAE,kBAAkB;IAC3C,gBAAgB,EAAE,UAAU;IAC5B,sBAAsB,EAAE,iBAAiB;IACzC,eAAe,EAAE,SAAS;IAC1B,oBAAoB,EAAE,gBAAgB;IAEtC,kBAAkB,EAAE,YAAY;IAChC,qBAAqB,EAAE,gBAAgB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,yBAAyB,EAAE,oBAAoB;IAC/C,yBAAyB,EAAE,oBAAoB;IAC/C,yBAAyB,EAAE,oBAAoB;IAC/C,gBAAgB,EAAE,OAAO;IAEzB,qBAAqB,EAAE,MAAM;IAC7B,uBAAuB,EAAE,uCAAuC;IAEhE,gBAAgB,EAAE,qDAAqD;IACvE,oBAAoB,EAAE,OAAO;IAC7B,0BAA0B,EAAE,cAAc;IAC1C,qBAAqB,EAAE,QAAQ;IAC/B,oBAAoB,EAAE,OAAO;IAC7B,qBAAqB,EAAE,QAAQ;IAC/B,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,cAAc;IAC1C,oBAAoB,EAAE,OAAO;IAC7B,sBAAsB,EAAE,SAAS;IACjC,uBAAuB,EAAE,UAAU;IACnC,mBAAmB,EAAE,MAAM;IAC3B,oBAAoB,EAAE,OAAO;IAC7B,mBAAmB,EAAE,MAAM;IAC3B,uBAAuB,EAAE,UAAU;IACnC,uBAAuB,EAAE,UAAU;IACnC,wBAAwB,EAAE,WAAW;IACrC,wBAAwB,EAAE,YAAY;IACtC,mBAAmB,EAAE,MAAM;IAC3B,qBAAqB,EAAE,QAAQ;IAC/B,oBAAoB,EAAE,OAAO;IAC7B,uBAAuB,EAAE,UAAU;IACnC,mBAAmB,EAAE,MAAM;IAE3B,iBAAiB,EAAE,SAAS;IAC5B,kBAAkB,EAAE,SAAS;IAC7B,iBAAiB,EAAE,SAAS;IAE5B,eAAe,EAAE,oBAAoB;IACrC,gBAAgB,EAAE,qBAAqB;IACvC,YAAY,EAAE,sBAAsB;IACpC,cAAc,EAAE,wBAAwB;IACxC,kBAAkB,EAAE,eAAe;CACpC,CAAC;;;;;;;;;;;;;;;;;ACjJ4E;AAE9E,iEAAe,UAAC,MAAc,EAAE,IAA6B;IACnD,UAAM,GAAK,MAAM,OAAX,CAAY;IAClB,iBAAa,GAAoB,IAAI,cAAxB,EAAE,aAAa,GAAK,IAAI,cAAT,CAAU;IAC9C,IAAM,gBAAgB,GAAG,SAAS,CAAC;IACnC,IAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAM,UAAU,GAAG,aAAa,CAAC;IACjC,IAAM,UAAU,GAAG,aAAa,CAAC;IACjC,IAAM,eAAe,GAAG,eAAe,CAAC;IACxC,IAAM,SAAS,GAAG,yCAAyC,CAAC;IAE5D,qDAAqD;IACrD,MAAM,CAAC,SAAS,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC;IAEvC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;QACvB;YACE,EAAE,EAAE,UAAU;YACd,OAAO,EAAE,CAAC,EAAE,CAAC;SACd;QACD;YACE,EAAE,EAAE,WAAW;YACf,OAAO,EAAE;gBACP;oBACE,EAAE,EAAE,qDAAgB;oBACpB,OAAO,EAAE,qDAAgB;oBACzB,SAAS,EAAE,qBAAqB;oBAChC,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;wBAC3C,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,MAAM,EAAE,IAAI;iBACb;gBACD;oBACE,EAAE,EAAE,oDAAe;oBACnB,OAAO,EAAE,oDAAe;oBACxB,SAAS,EAAE,kCAAkC;oBAC7C,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;wBAC1C,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF;gBACD;oBACE,EAAE,EAAE,oDAAe;oBACnB,OAAO,EAAE,oDAAe;oBACxB,SAAS,EAAE,kCAAkC;oBAC7C,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;wBAC1C,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF;aACF;SACF;QACD;YACE,EAAE,EAAE,SAAS;YACb,OAAO,EAAE;gBACP;oBACE,EAAE,EAAE,uBAAuB;oBAC3B,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,uBAAuB;oBAChC,SAAS,EAAE,+BAA+B;oBAC1C,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;wBAC5C,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF;gBACD;oBACE,EAAE,EAAE,eAAe;oBACnB,OAAO,EAAE,eAAe;oBACxB,OAAO,EAAE,eAAe;oBACxB,SAAS,EAAE,yBAAyB;oBACpC,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;wBAC5C,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;wBAC1C,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,KAAK,EAAE,eAAQ,SAAS,0PAEjB;iBACR;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;wBAC1C,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,KAAK,EAAE,eAAQ,SAAS,4IAEjB;iBACR;gBACD;oBACE,EAAE,EAAE,MAAM;oBACV,OAAO,EAAE,WAAW;oBACpB,SAAS,EAAE,yBAAyB;oBACpC,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;wBACxC,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF;gBACD;oBACE,EAAE,EAAE,MAAM;oBACV,OAAO,EAAE,WAAW;oBACpB,SAAS,EAAE,0BAA0B;oBACrC,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;wBACxC,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF;aACF;SACF;QACD;YACE,EAAE,EAAE,OAAO;YACX,OAAO,EAAE;gBACP;oBACE,EAAE,EAAE,gBAAgB;oBACpB,OAAO,EAAE,gBAAgB;oBACzB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;wBACzC,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,KAAK,EAAE,eAAQ,SAAS,6SAEjB;iBACR;gBACD;oBACE,EAAE,EAAE,UAAU;oBACd,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;wBACnC,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,KAAK,EAAE,eAAQ,SAAS,i/BAEjB;iBACR;gBACD;oBACE,EAAE,EAAE,UAAU;oBACd,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;wBACnC,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,KAAK,EAAE,eAAQ,SAAS,6MAEnB;iBACN;gBACD;oBACE,EAAE,EAAE,UAAU;oBACd,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE;wBACV,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;wBACnC,kBAAkB,EAAE,QAAQ;qBAC7B;oBACD,KAAK,EAAE,eAAQ,SAAS,yNAEnB;iBACN;aACF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACzD,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,mBAAmB;QACnB,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,UAAC,EAAE;;YAC1D,IAAM,KAAK,GAAG,QAAE,CAAC,YAAY,CAAC,OAAO,CAAC,0CAAE,IAAI,EAAE,CAAC;YAC/C,IAAI,KAAK,EAAE,CAAC;gBACV,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBACvC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrMF,iEAAe,UAAO,MAAc,EAAE,IAA6B;;;QACzD,cAAc,GAAK,MAAM,eAAX,CAAY;QAElC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE;YACjC,IAAI,EAAE,wCAAwC;YAC9C,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE;YAElD,MAAM,EAAE,UAAC,GAAG,IAAK,UAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAxB,CAAwB;SAC1C,CAAC,CAAC;;;KACJ,EAAC;;;;;;;;;;;;;;;;ACTF,iEAAe,UAAC,MAAc,EAAE,IAA6B;IACnD,gBAAY,GAAK,MAAM,aAAX,CAAY;IAEhC,wBAAwB;IACxB,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE;QACxC,WAAW,YAAC,EAAS;gBAAP,KAAK;YACjB,IAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC;YAC1D,IAAM,OAAO,GAAG,SAAS,CAAC,MAAM;gBAC9B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;YAErD,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,EAAE,CAAC,SAAS,GAAG,6DAC2B,SAAS,4BAC7C,OAAO;iBACN,GAAG,CACF,UAAC,GAAG;gBACF,iCAAkB,GAAG,CAAC,EAAE,gBAAK,GAAG,CAAC,QAAQ,cAAI,GAAG,CAAC,IAAI,cAAW;YAAhE,CAAgE,CACnE;iBACA,IAAI,CAAC,EAAE,CAAC,8HAIN,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,YAAC,EAA6B;;gBAA3B,OAAO,eAAE,SAAS,iBAAE,KAAK;YACjC,IAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC;YAClE,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CACjC,GAAG,GAAG,CAAC,SAAS,CAAC,CACG,CAAC;YACvB,IAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;YAElC,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;gBACtB,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,aAAa,WAAG,GAAC,SAAS,IAAG,WAAW,MAAG,CAAC;YACxD,CAAC;YACD,WAAW,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,QAAQ,YAAC,EAA6B;gBAA3B,OAAO,eAAE,SAAS,iBAAE,KAAK;YAClC,IAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC;YAElE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CACjC,GAAG,GAAG,CAAC,SAAS,CAAC,CACG,CAAC;gBACvB,WAAW,CAAC,OAAO,CAAC,CAAC;gBAErB,aAAa;gBACb,IAAM,WAAW,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC/D,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAsB,CAAC;gBACxE,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;YAC9B,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,cAAc;IACd,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE;QAC5B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;QAC7B,GAAG,EAAE,CAAC,EAAE,uBAAuB;QAC/B,GAAG,EAAE,GAAG,EAAE,uBAAuB;QACjC,MAAM,EAAE;YACN,KAAK,EAAE,UAAU;SAClB;QAED,aAAa;;YACL,SAAoB,IAAI,EAAtB,KAAK,aAAE,MAAM,YAAS,CAAC;YAC/B,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAM,QAAQ,GAAG,EAAE,CAAC;YAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;oBAClC,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;iBACjC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,YAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,MAAM,EAAE,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;IAEH,SAAS,WAAW,CAAC,OAA0B;;QAC7C,iBAAiB;QACjB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAC,EAAE;YAC5B,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,QAAQ,GAAG,aAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC;QAEhE,yBAAyB;QACzB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,UAAC,OAAO;YACxB,IAAI,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,KAAK,IAAI,EAAlB,CAAkB,CAAC,CAAC;YACvE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,aAAa,EAAE,WAAW;YACtE,IAAI,aAAa,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBAC9B,IAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACpD,UAAC,CAAC,IAAK,QAAC,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,EAA9B,CAA8B,CACtC,CAAC;gBAEF,QAAQ;gBACR,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC5C,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBACzD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAClC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAErC,IAAI,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;wBACrD,QAAQ,CAAC,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC;wBACnD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBAC/C,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3B,CAAC;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;wBAC3D,QAAQ,CAAC,SAAS;4BAChB,KAAK;gCACL,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK;gCAC3C,WAAW;gCACX,QAAQ,CAAC,IAAI,CAAC;wBAChB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;wBAChD,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,EAAC;;;;;;;UC9IF;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,wF;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLkC;AACI;AACJ;AACA;AACQ;AACd;AAEiB;AAK3B;AAIlB,IAAM,MAAM,GAA0B;;;;;wFACpC,MAAM,EACN,IAAiC;QAoGjC,SAAS,gBAAgB,CAAC,OAAgC,EAAE,GAAW;YACrE,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,CAAC;gBAC3B,OAAO,GAAG,OAAO,CAAC,UAAyB,CAAC;gBAC5C,IAAI,OAAO,CAAC,OAAO,KAAK,GAAG;oBAAE,OAAO,OAAO,CAAC;YAC9C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,cAAc,CAAC,QAA+B;;YACrD,IAAI,KAAK,GAAG,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,KAAI,CAAC,CAAC;YACnC,IAAI,MAAM,GAAG,cAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,0CAAE,YAAY,GAAG,KAAK,EAAE,CAAC;YAExD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAC5D,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC5B,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;gBAE1B,mBAAmB;gBACnB,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS;oBACZ,qKAAqK,CAAC;gBACxK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBACzC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;;oBAC7B,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;wBAAE,OAAO;oBACjC,IAAM,UAAU,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAC;oBACrC,cAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,0CAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAE7B,mBAAmB;gBACnB,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS;oBACZ,6HAA6H,CAAC;gBAChI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;wBAC7B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,CAAC;wBACnB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAChC,CAAC;gBACD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAE7B,qBAAqB;gBACrB,IAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,KAAK,CAAC,SAAS;oBACb,8FAA8F,CAAC;gBACjG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;gBACvC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;gBAClD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE;wBAC9B,IAAI,KAAK,IAAI,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,KAAI,SAAS,EAAE,CAAC;4BAC7C,IAAI,QAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;4BAC/B,IAAI,QAAM,EAAE,CAAC;gCACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,QAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC5C,CAAC;4BACD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;4BAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjC,CAAC;gBACD,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAE9B,uBAAuB;gBACvB,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,CAAC,SAAS;oBACd,8FAA8F,CAAC;gBACjG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;gBACrD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACpB,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;oBACtB,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;wBACpB,KAAK,GAAG,CAAC,CAAC;oBACZ,CAAC;oBACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;wBAC/B,IAAI,KAAK,IAAI,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,KAAI,SAAS,EAAE,CAAC;4BAC7C,IAAI,QAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;4BAC/B,IAAI,QAAM,EAAE,CAAC;gCACX,QAAQ,CAAC,IAAI,CAAC,QAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;4BACvC,CAAC;4BACD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;4BAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAE/B,WAAW;gBACX,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;;QApMD,gCAAiC;;;;oBAE7B,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;oBAE1B,OAAO,cACX,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,cAAM,QAAC,EAAE,CAAC,EAAJ,CAAI,EACjB,aAAa,EAAE,EAAE,EACjB,aAAa,EAAE,0BAA0B,EACzC,aAAa,EAAE,0BAA0B,EACzC,aAAa,EAAE,sBAAsB,EACrC,eAAe,EAAE,WAAW,EAC5B,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,EAAE,EACb,kBAAkB,EAAE,IAAI,EACxB,kBAAkB,EAAE,IAAI,EACxB,gBAAgB,EAAE,KAAK,EACvB,gBAAgB,EAAE,IAAI,EACtB,iBAAiB,EAAE,IAAI,EACvB,GAAG,EAAE,sDAAQ,IACV,IAAI,CACR,CAAC;oBAEF,qBAAqB;oBACrB,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAEhC,uDAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAChC,mDAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC5B,qBAAM,qDAAY,CAAC,MAAM,EAAE,OAAO,CAAC;;oBAAnC,SAAmC,CAAC;oBACpC,mDAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC5B,mDAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC5B,qBAAM,gDAAO,CAAC,MAAM,EAAE,OAAO,CAAC;;oBAA9B,SAA8B,CAAC;oBAE/B,UAAU;oBACV,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;wBAChB,0BAA0B;wBAC1B,IAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;wBACnD,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;wBAC1C,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAExB,gEAAgE;wBAChE,IAAM,gBAAgB,GAAG,UAAC,SAAoB;4BAC5C,IAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;4BAEzC,IAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;4BACtD,IACE,OAAO;gCACP,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gCACxC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,EAChC,CAAC;gCACD,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gCAClC,SAAS,CAAC,SAAS,CAAC;oCAClB,EAAE,IAAI,EAAE,IAAI,EAAE;oCACd,oDAAW,CAAC,OAAO,CAAC;oCACpB,yDAAgB,CAAC,OAAO,CAAC;oCACzB,qEAA4B,CAAC,OAAO,CAAC;iCACtC,CAAC,CAAC;4BACL,CAAC;4BACD,IAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;4BACxC,QAAQ,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,uBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAAC;wBACpD,CAAC,CAAC;wBACF,IAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;wBACpC,IAAM,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,CAAC;wBACzC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,UAAC,SAAS,IAAK,uBAAgB,CAAC,SAAS,CAAC,EAA3B,CAA2B,CAAC,CAAC;oBAC/D,CAAC,CAAC,CAAC;oBAEH,yBAAyB;oBACzB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE;;wBAC9B,IAAI,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;wBAEpC,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;4BAC1B,IAAI,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;gCAC7B,cAAc,CAAC,QAAQ,CAAC,CAAC;4BAC3B,CAAC;iCAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gCAC3C,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;4BACpD,CAAC;iCAAM,IAAI,eAAQ,CAAC,KAAK,EAAE,0CAAE,OAAO,MAAK,IAAI,EAAE,CAAC;gCAC9C,qEAAqE;gCACrE,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oCACnE,IAAI,gBAAgB,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;oCACxC,IAAI,YAAY,GAAG,cAAQ;yCACxB,MAAM,EAAE,0CACP,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;oCACtD,QAAQ,CAAC,MAAM,EAAE,CAAC;oCAClB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oCAC5B,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gCAClC,CAAC;gCACD,cAAc,CAAC,QAAQ,CAAC,CAAC;4BAC3B,CAAC;iCAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;gCACpD,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;4BACzC,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,2BAA2B;oBAC3B,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE;wBAChC,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;wBAC5D,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;oBAoGH,mBAAmB;oBACnB,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;wBACzB,uBAAuB;wBACvB,IAAM,gBAAgB,GAAG,UAAC,KAAU,EAAE,MAAkB;4BAAlB,oCAAkB;4BACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAC,GAAQ,IAAK,uBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,EAA7B,CAA6B,CAAC,CAAC;4BACrE,OAAO,MAAM,CAAC;wBAChB,CAAC,CAAC;wBACF,IAAI,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;wBACxE,aAAa,CAAC,OAAO,CAAC,UAAC,KAAK;4BAC1B,YAAK,CAAC,GAAG,CAAC;gCACR,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,QAAQ,EAAE,IAAI;gCACd,OAAO,EAAE;oCACP;wCACE,UAAU,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;wCAC7C,OAAO,EAAE,eAAe;qCACzB;oCACD;wCACE,UAAU,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE;wCAC9D,OAAO,EAAE,UAAU;qCACpB;oCACD,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;oCACrE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;iCACtE;6BACF,CAAC;wBAhBF,CAgBE,CACH,CAAC;oBACJ,CAAC,CAAC,CAAC;;;;;CACJ,CAAC;AAEF,iEAAe,MAAM,EAAC","sources":["webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/universalModuleDefinition","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/boolbase/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio-select/lib/helpers.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio-select/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio-select/lib/positionals.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/api/attributes.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/api/css.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/api/forms.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/api/manipulation.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/api/traversing.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/cheerio.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/load.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/options.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/parse.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/parsers/htmlparser2-adapter.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/parsers/parse5-adapter.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/static.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/types.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/cheerio/lib/utils.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/attributes.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/compile.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/general.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/procedure.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/pseudo-selectors/aliases.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/pseudo-selectors/filters.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/pseudo-selectors/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/pseudo-selectors/pseudos.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/pseudo-selectors/subselects.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-select/lib/sort.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-what/lib/es/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-what/lib/es/parse.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-what/lib/es/stringify.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/css-what/lib/es/types.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/dom-serializer/lib/foreignNames.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/dom-serializer/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domelementtype/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domhandler/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domhandler/lib/node.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/feeds.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/helpers.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/legacy.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/manipulation.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/querying.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/stringify.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/domutils/lib/traversal.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/entities/lib/decode.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/entities/lib/decode_codepoint.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/entities/lib/encode.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/entities/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/htmlparser2/lib/FeedHandler.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/htmlparser2/lib/Parser.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/htmlparser2/lib/Tokenizer.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/htmlparser2/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/client.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/lib/cheerio.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/lib/inline.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/lib/numbers.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/lib/property.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/lib/selector.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/juice/lib/utils.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/mensch/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/mensch/lib/debug.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/mensch/lib/lexer.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/mensch/lib/parser.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/mensch/lib/stringify.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/nth-check/lib/compile.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/nth-check/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/nth-check/lib/parse.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5-htmlparser2-tree-adapter/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/common/doctype.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/common/error-codes.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/common/foreign-content.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/common/html.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/common/unicode.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/location-info/parser-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/parser/formatting-element-list.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/parser/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/parser/open-element-stack.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/serializer/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/tokenizer/index.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/tokenizer/named-entity-data.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/tokenizer/preprocessor.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/tree-adapters/default.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/utils/merge-options.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/parse5/lib/utils/mixin.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/slick/parser.js","webpack://@ostendis/grapesjs-preset-ostendis-adv/./node_modules/tslib/tslib.es6.mjs","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/blocks.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/commands.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/components.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/consts.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/openExportCommand.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/openImportCommand.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/ostTranslations.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/panels.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/rte.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/traits.ts","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/bootstrap","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/compat get default export","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/define property getters","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/hasOwnProperty shorthand","webpack://@ostendis/grapesjs-preset-ostendis-adv/webpack/runtime/make namespace object","webpack://@ostendis/grapesjs-preset-ostendis-adv/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@ostendis/grapesjs-preset-ostendis-adv\"] = factory();\n\telse\n\t\troot[\"@ostendis/grapesjs-preset-ostendis-adv\"] = factory();\n})(typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : this), () => {\nreturn ","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupSelectors = exports.getDocumentRoot = void 0;\nvar positionals_1 = require(\"./positionals\");\nfunction getDocumentRoot(node) {\n while (node.parent)\n node = node.parent;\n return node;\n}\nexports.getDocumentRoot = getDocumentRoot;\nfunction groupSelectors(selectors) {\n var filteredSelectors = [];\n var plainSelectors = [];\n for (var _i = 0, selectors_1 = selectors; _i < selectors_1.length; _i++) {\n var selector = selectors_1[_i];\n if (selector.some(positionals_1.isFilter)) {\n filteredSelectors.push(selector);\n }\n else {\n plainSelectors.push(selector);\n }\n }\n return [plainSelectors, filteredSelectors];\n}\nexports.groupSelectors = groupSelectors;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.select = exports.filter = exports.some = exports.is = exports.aliases = exports.pseudos = exports.filters = void 0;\nvar css_what_1 = require(\"css-what\");\nvar css_select_1 = require(\"css-select\");\nvar DomUtils = __importStar(require(\"domutils\"));\nvar helpers_1 = require(\"./helpers\");\nvar positionals_1 = require(\"./positionals\");\n// Re-export pseudo extension points\nvar css_select_2 = require(\"css-select\");\nObject.defineProperty(exports, \"filters\", { enumerable: true, get: function () { return css_select_2.filters; } });\nObject.defineProperty(exports, \"pseudos\", { enumerable: true, get: function () { return css_select_2.pseudos; } });\nObject.defineProperty(exports, \"aliases\", { enumerable: true, get: function () { return css_select_2.aliases; } });\n/** Used to indicate a scope should be filtered. Might be ignored when filtering. */\nvar SCOPE_PSEUDO = {\n type: css_what_1.SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/** Used for actually filtering for scope. */\nvar CUSTOM_SCOPE_PSEUDO = __assign({}, SCOPE_PSEUDO);\nvar UNIVERSAL_SELECTOR = {\n type: css_what_1.SelectorType.Universal,\n namespace: null,\n};\nfunction is(element, selector, options) {\n if (options === void 0) { options = {}; }\n return some([element], selector, options);\n}\nexports.is = is;\nfunction some(elements, selector, options) {\n if (options === void 0) { options = {}; }\n if (typeof selector === \"function\")\n return elements.some(selector);\n var _a = (0, helpers_1.groupSelectors)((0, css_what_1.parse)(selector)), plain = _a[0], filtered = _a[1];\n return ((plain.length > 0 && elements.some((0, css_select_1._compileToken)(plain, options))) ||\n filtered.some(function (sel) { return filterBySelector(sel, elements, options).length > 0; }));\n}\nexports.some = some;\nfunction filterByPosition(filter, elems, data, options) {\n var num = typeof data === \"string\" ? parseInt(data, 10) : NaN;\n switch (filter) {\n case \"first\":\n case \"lt\":\n // Already done in `getLimit`\n return elems;\n case \"last\":\n return elems.length > 0 ? [elems[elems.length - 1]] : elems;\n case \"nth\":\n case \"eq\":\n return isFinite(num) && Math.abs(num) < elems.length\n ? [num < 0 ? elems[elems.length + num] : elems[num]]\n : [];\n case \"gt\":\n return isFinite(num) ? elems.slice(num + 1) : [];\n case \"even\":\n return elems.filter(function (_, i) { return i % 2 === 0; });\n case \"odd\":\n return elems.filter(function (_, i) { return i % 2 === 1; });\n case \"not\": {\n var filtered_1 = new Set(filterParsed(data, elems, options));\n return elems.filter(function (e) { return !filtered_1.has(e); });\n }\n }\n}\nfunction filter(selector, elements, options) {\n if (options === void 0) { options = {}; }\n return filterParsed((0, css_what_1.parse)(selector), elements, options);\n}\nexports.filter = filter;\n/**\n * Filter a set of elements by a selector.\n *\n * Will return elements in the original order.\n *\n * @param selector Selector to filter by.\n * @param elements Elements to filter.\n * @param options Options for selector.\n */\nfunction filterParsed(selector, elements, options) {\n if (elements.length === 0)\n return [];\n var _a = (0, helpers_1.groupSelectors)(selector), plainSelectors = _a[0], filteredSelectors = _a[1];\n var found;\n if (plainSelectors.length) {\n var filtered = filterElements(elements, plainSelectors, options);\n // If there are no filters, just return\n if (filteredSelectors.length === 0) {\n return filtered;\n }\n // Otherwise, we have to do some filtering\n if (filtered.length) {\n found = new Set(filtered);\n }\n }\n for (var i = 0; i < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i++) {\n var filteredSelector = filteredSelectors[i];\n var missing = found\n ? elements.filter(function (e) { return DomUtils.isTag(e) && !found.has(e); })\n : elements;\n if (missing.length === 0)\n break;\n var filtered = filterBySelector(filteredSelector, elements, options);\n if (filtered.length) {\n if (!found) {\n /*\n * If we haven't found anything before the last selector,\n * just return what we found now.\n */\n if (i === filteredSelectors.length - 1) {\n return filtered;\n }\n found = new Set(filtered);\n }\n else {\n filtered.forEach(function (el) { return found.add(el); });\n }\n }\n }\n return typeof found !== \"undefined\"\n ? (found.size === elements.length\n ? elements\n : // Filter elements to preserve order\n elements.filter(function (el) {\n return found.has(el);\n }))\n : [];\n}\nfunction filterBySelector(selector, elements, options) {\n var _a;\n if (selector.some(css_what_1.isTraversal)) {\n /*\n * Get root node, run selector with the scope\n * set to all of our nodes.\n */\n var root = (_a = options.root) !== null && _a !== void 0 ? _a : (0, helpers_1.getDocumentRoot)(elements[0]);\n var sel = __spreadArray(__spreadArray([], selector, true), [CUSTOM_SCOPE_PSEUDO], false);\n return findFilterElements(root, sel, options, true, elements);\n }\n // Performance optimization: If we don't have to traverse, just filter set.\n return findFilterElements(elements, selector, options, false);\n}\nfunction select(selector, root, options) {\n if (options === void 0) { options = {}; }\n if (typeof selector === \"function\") {\n return find(root, selector);\n }\n var _a = (0, helpers_1.groupSelectors)((0, css_what_1.parse)(selector)), plain = _a[0], filtered = _a[1];\n var results = filtered.map(function (sel) {\n return findFilterElements(root, sel, options, true);\n });\n // Plain selectors can be queried in a single go\n if (plain.length) {\n results.push(findElements(root, plain, options, Infinity));\n }\n if (results.length === 0) {\n return [];\n }\n // If there was only a single selector, just return the result\n if (results.length === 1) {\n return results[0];\n }\n // Sort results, filtering for duplicates\n return DomUtils.uniqueSort(results.reduce(function (a, b) { return __spreadArray(__spreadArray([], a, true), b, true); }));\n}\nexports.select = select;\n// Traversals that are treated differently in css-select.\nvar specialTraversal = new Set([\n css_what_1.SelectorType.Descendant,\n css_what_1.SelectorType.Adjacent,\n]);\nfunction includesScopePseudo(t) {\n return (t !== SCOPE_PSEUDO &&\n t.type === \"pseudo\" &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some(function (data) { return data.some(includesScopePseudo); }))));\n}\nfunction addContextIfScope(selector, options, scopeContext) {\n return scopeContext && selector.some(includesScopePseudo)\n ? __assign(__assign({}, options), { context: scopeContext }) : options;\n}\n/**\n *\n * @param root Element(s) to search from.\n * @param selector Selector to look for.\n * @param options Options for querying.\n * @param queryForSelector Query multiple levels deep for the initial selector, even if it doesn't contain a traversal.\n * @param scopeContext Optional context for a :scope.\n */\nfunction findFilterElements(root, selector, options, queryForSelector, scopeContext) {\n var filterIndex = selector.findIndex(positionals_1.isFilter);\n var sub = selector.slice(0, filterIndex);\n var filter = selector[filterIndex];\n /*\n * Set the number of elements to retrieve.\n * Eg. for :first, we only have to get a single element.\n */\n var limit = (0, positionals_1.getLimit)(filter.name, filter.data);\n if (limit === 0)\n return [];\n var subOpts = addContextIfScope(sub, options, scopeContext);\n /*\n * Skip `findElements` call if our selector starts with a positional\n * pseudo.\n */\n var elemsNoLimit = sub.length === 0 && !Array.isArray(root)\n ? DomUtils.getChildren(root).filter(DomUtils.isTag)\n : sub.length === 0 || (sub.length === 1 && sub[0] === SCOPE_PSEUDO)\n ? (Array.isArray(root) ? root : [root]).filter(DomUtils.isTag)\n : queryForSelector || sub.some(css_what_1.isTraversal)\n ? findElements(root, [sub], subOpts, limit)\n : filterElements(root, [sub], subOpts);\n var elems = elemsNoLimit.slice(0, limit);\n var result = filterByPosition(filter.name, elems, filter.data, options);\n if (result.length === 0 || selector.length === filterIndex + 1) {\n return result;\n }\n var remainingSelector = selector.slice(filterIndex + 1);\n var remainingHasTraversal = remainingSelector.some(css_what_1.isTraversal);\n var remainingOpts = addContextIfScope(remainingSelector, options, scopeContext);\n if (remainingHasTraversal) {\n /*\n * Some types of traversals have special logic when they start a selector\n * in css-select. If this is the case, add a universal selector in front of\n * the selector to avoid this behavior.\n */\n if (specialTraversal.has(remainingSelector[0].type)) {\n remainingSelector.unshift(UNIVERSAL_SELECTOR);\n }\n /*\n * Add a scope token in front of the remaining selector,\n * to make sure traversals don't match elements that aren't a\n * part of the considered tree.\n */\n remainingSelector.unshift(SCOPE_PSEUDO);\n }\n /*\n * If we have another filter, recursively call `findFilterElements`,\n * with the `recursive` flag disabled. We only have to look for more\n * elements when we see a traversal.\n *\n * Otherwise,\n */\n return remainingSelector.some(positionals_1.isFilter)\n ? findFilterElements(result, remainingSelector, options, false, scopeContext)\n : remainingHasTraversal\n ? // Query existing elements to resolve traversal.\n findElements(result, [remainingSelector], remainingOpts, Infinity)\n : // If we don't have any more traversals, simply filter elements.\n filterElements(result, [remainingSelector], remainingOpts);\n}\nfunction findElements(root, sel, options, limit) {\n if (limit === 0)\n return [];\n var query = (0, css_select_1._compileToken)(sel, options, root);\n return find(root, query, limit);\n}\nfunction find(root, query, limit) {\n if (limit === void 0) { limit = Infinity; }\n var elems = (0, css_select_1.prepareContext)(root, DomUtils, query.shouldTestNextSiblings);\n return DomUtils.find(function (node) { return DomUtils.isTag(node) && query(node); }, elems, true, limit);\n}\nfunction filterElements(elements, sel, options) {\n var els = (Array.isArray(elements) ? elements : [elements]).filter(DomUtils.isTag);\n if (els.length === 0)\n return els;\n var query = (0, css_select_1._compileToken)(sel, options);\n return els.filter(query);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLimit = exports.isFilter = exports.filterNames = void 0;\nexports.filterNames = new Set([\n \"first\",\n \"last\",\n \"eq\",\n \"gt\",\n \"nth\",\n \"lt\",\n \"even\",\n \"odd\",\n]);\nfunction isFilter(s) {\n if (s.type !== \"pseudo\")\n return false;\n if (exports.filterNames.has(s.name))\n return true;\n if (s.name === \"not\" && Array.isArray(s.data)) {\n // Only consider `:not` with embedded filters\n return s.data.some(function (s) { return s.some(isFilter); });\n }\n return false;\n}\nexports.isFilter = isFilter;\nfunction getLimit(filter, data) {\n var num = data != null ? parseInt(data, 10) : NaN;\n switch (filter) {\n case \"first\":\n return 1;\n case \"nth\":\n case \"eq\":\n return isFinite(num) ? (num >= 0 ? num + 1 : Infinity) : 0;\n case \"lt\":\n return isFinite(num) ? (num >= 0 ? num : Infinity) : 0;\n case \"gt\":\n return isFinite(num) ? Infinity : 0;\n default:\n return Infinity;\n }\n}\nexports.getLimit = getLimit;\n","\"use strict\";\n/**\n * Methods for getting and modifying attributes.\n *\n * @module cheerio/attributes\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toggleClass = exports.removeClass = exports.addClass = exports.hasClass = exports.removeAttr = exports.val = exports.data = exports.prop = exports.attr = void 0;\nvar static_1 = require(\"../static\");\nvar utils_1 = require(\"../utils\");\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar rspace = /\\s+/;\nvar dataAttrPrefix = 'data-';\n/*\n * Lookup table for coercing string data-* attributes to their corresponding\n * JavaScript primitives\n */\nvar primitives = {\n null: null,\n true: true,\n false: false,\n};\n// Attributes that are booleans\nvar rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;\n// Matches strings that look like JSON objects or arrays\nvar rbrace = /^{[^]*}$|^\\[[^]*]$/;\nfunction getAttr(elem, name, xmlMode) {\n var _a;\n if (!elem || !utils_1.isTag(elem))\n return undefined;\n (_a = elem.attribs) !== null && _a !== void 0 ? _a : (elem.attribs = {});\n // Return the entire attribs object if no attribute specified\n if (!name) {\n return elem.attribs;\n }\n if (hasOwn.call(elem.attribs, name)) {\n // Get the (decoded) attribute\n return !xmlMode && rboolean.test(name) ? name : elem.attribs[name];\n }\n // Mimic the DOM and return text content as value for `option's`\n if (elem.name === 'option' && name === 'value') {\n return static_1.text(elem.children);\n }\n // Mimic DOM with default value for radios/checkboxes\n if (elem.name === 'input' &&\n (elem.attribs.type === 'radio' || elem.attribs.type === 'checkbox') &&\n name === 'value') {\n return 'on';\n }\n return undefined;\n}\n/**\n * Sets the value of an attribute. The attribute will be deleted if the value is `null`.\n *\n * @private\n * @param el - The element to set the attribute on.\n * @param name - The attribute's name.\n * @param value - The attribute's value.\n */\nfunction setAttr(el, name, value) {\n if (value === null) {\n removeAttribute(el, name);\n }\n else {\n el.attribs[name] = \"\" + value;\n }\n}\nfunction attr(name, value) {\n // Set the value (with attr map support)\n if (typeof name === 'object' || value !== undefined) {\n if (typeof value === 'function') {\n if (typeof name !== 'string') {\n {\n throw new Error('Bad combination of arguments.');\n }\n }\n return utils_1.domEach(this, function (el, i) {\n if (utils_1.isTag(el))\n setAttr(el, name, value.call(el, i, el.attribs[name]));\n });\n }\n return utils_1.domEach(this, function (el) {\n if (!utils_1.isTag(el))\n return;\n if (typeof name === 'object') {\n Object.keys(name).forEach(function (objName) {\n var objValue = name[objName];\n setAttr(el, objName, objValue);\n });\n }\n else {\n setAttr(el, name, value);\n }\n });\n }\n return arguments.length > 1\n ? this\n : getAttr(this[0], name, this.options.xmlMode);\n}\nexports.attr = attr;\n/**\n * Gets a node's prop.\n *\n * @private\n * @category Attributes\n * @param el - Elenent to get the prop of.\n * @param name - Name of the prop.\n * @returns The prop's value.\n */\nfunction getProp(el, name, xmlMode) {\n if (!el || !utils_1.isTag(el))\n return;\n return name in el\n ? // @ts-expect-error TS doesn't like us accessing the value directly here.\n el[name]\n : !xmlMode && rboolean.test(name)\n ? getAttr(el, name, false) !== undefined\n : getAttr(el, name, xmlMode);\n}\n/**\n * Sets the value of a prop.\n *\n * @private\n * @param el - The element to set the prop on.\n * @param name - The prop's name.\n * @param value - The prop's value.\n */\nfunction setProp(el, name, value, xmlMode) {\n if (name in el) {\n // @ts-expect-error Overriding value\n el[name] = value;\n }\n else {\n setAttr(el, name, !xmlMode && rboolean.test(name) ? (value ? '' : null) : \"\" + value);\n }\n}\nfunction prop(name, value) {\n var _this = this;\n if (typeof name === 'string' && value === undefined) {\n switch (name) {\n case 'style': {\n var property_1 = this.css();\n var keys = Object.keys(property_1);\n keys.forEach(function (p, i) {\n property_1[i] = p;\n });\n property_1.length = keys.length;\n return property_1;\n }\n case 'tagName':\n case 'nodeName': {\n var el = this[0];\n return utils_1.isTag(el) ? el.name.toUpperCase() : undefined;\n }\n case 'outerHTML':\n return this.clone().wrap('<container />').parent().html();\n case 'innerHTML':\n return this.html();\n default:\n return getProp(this[0], name, this.options.xmlMode);\n }\n }\n if (typeof name === 'object' || value !== undefined) {\n if (typeof value === 'function') {\n if (typeof name === 'object') {\n throw new Error('Bad combination of arguments.');\n }\n return utils_1.domEach(this, function (el, i) {\n if (utils_1.isTag(el))\n setProp(el, name, value.call(el, i, getProp(el, name, _this.options.xmlMode)), _this.options.xmlMode);\n });\n }\n return utils_1.domEach(this, function (el) {\n if (!utils_1.isTag(el))\n return;\n if (typeof name === 'object') {\n Object.keys(name).forEach(function (key) {\n var val = name[key];\n setProp(el, key, val, _this.options.xmlMode);\n });\n }\n else {\n setProp(el, name, value, _this.options.xmlMode);\n }\n });\n }\n return undefined;\n}\nexports.prop = prop;\n/**\n * Sets the value of a data attribute.\n *\n * @private\n * @param el - The element to set the data attribute on.\n * @param name - The data attribute's name.\n * @param value - The data attribute's value.\n */\nfunction setData(el, name, value) {\n var _a;\n var elem = el;\n (_a = elem.data) !== null && _a !== void 0 ? _a : (elem.data = {});\n if (typeof name === 'object')\n Object.assign(elem.data, name);\n else if (typeof name === 'string' && value !== undefined) {\n elem.data[name] = value;\n }\n}\n/**\n * Read the specified attribute from the equivalent HTML5 `data-*` attribute,\n * and (if present) cache the value in the node's internal data store. If no\n * attribute name is specified, read *all* HTML5 `data-*` attributes in this manner.\n *\n * @private\n * @category Attributes\n * @param el - Elenent to get the data attribute of.\n * @param name - Name of the data attribute.\n * @returns The data attribute's value, or a map with all of the data attribute.\n */\nfunction readData(el, name) {\n var domNames;\n var jsNames;\n var value;\n if (name == null) {\n domNames = Object.keys(el.attribs).filter(function (attrName) {\n return attrName.startsWith(dataAttrPrefix);\n });\n jsNames = domNames.map(function (domName) {\n return utils_1.camelCase(domName.slice(dataAttrPrefix.length));\n });\n }\n else {\n domNames = [dataAttrPrefix + utils_1.cssCase(name)];\n jsNames = [name];\n }\n for (var idx = 0; idx < domNames.length; ++idx) {\n var domName = domNames[idx];\n var jsName = jsNames[idx];\n if (hasOwn.call(el.attribs, domName) &&\n !hasOwn.call(el.data, jsName)) {\n value = el.attribs[domName];\n if (hasOwn.call(primitives, value)) {\n value = primitives[value];\n }\n else if (value === String(Number(value))) {\n value = Number(value);\n }\n else if (rbrace.test(value)) {\n try {\n value = JSON.parse(value);\n }\n catch (e) {\n /* Ignore */\n }\n }\n el.data[jsName] = value;\n }\n }\n return name == null ? el.data : value;\n}\nfunction data(name, value) {\n var _a;\n var elem = this[0];\n if (!elem || !utils_1.isTag(elem))\n return;\n var dataEl = elem;\n (_a = dataEl.data) !== null && _a !== void 0 ? _a : (dataEl.data = {});\n // Return the entire data object if no data specified\n if (!name) {\n return readData(dataEl);\n }\n // Set the value (with attr map support)\n if (typeof name === 'object' || value !== undefined) {\n utils_1.domEach(this, function (el) {\n if (utils_1.isTag(el))\n if (typeof name === 'object')\n setData(el, name);\n else\n setData(el, name, value);\n });\n return this;\n }\n if (hasOwn.call(dataEl.data, name)) {\n return dataEl.data[name];\n }\n return readData(dataEl, name);\n}\nexports.data = data;\nfunction val(value) {\n var querying = arguments.length === 0;\n var element = this[0];\n if (!element || !utils_1.isTag(element))\n return querying ? undefined : this;\n switch (element.name) {\n case 'textarea':\n return this.text(value);\n case 'select': {\n var option = this.find('option:selected');\n if (!querying) {\n if (this.attr('multiple') == null && typeof value === 'object') {\n return this;\n }\n this.find('option').removeAttr('selected');\n var values = typeof value !== 'object' ? [value] : value;\n for (var i = 0; i < values.length; i++) {\n this.find(\"option[value=\\\"\" + values[i] + \"\\\"]\").attr('selected', '');\n }\n return this;\n }\n return this.attr('multiple')\n ? option.toArray().map(function (el) { return static_1.text(el.children); })\n : option.attr('value');\n }\n case 'input':\n case 'option':\n return querying\n ? this.attr('value')\n : this.attr('value', value);\n }\n return undefined;\n}\nexports.val = val;\n/**\n * Remove an attribute.\n *\n * @private\n * @param elem - Node to remove attribute from.\n * @param name - Name of the attribute to remove.\n */\nfunction removeAttribute(elem, name) {\n if (!elem.attribs || !hasOwn.call(elem.attribs, name))\n return;\n delete elem.attribs[name];\n}\n/**\n * Splits a space-separated list of names to individual names.\n *\n * @category Attributes\n * @param names - Names to split.\n * @returns - Split names.\n */\nfunction splitNames(names) {\n return names ? names.trim().split(rspace) : [];\n}\n/**\n * Method for removing attributes by `name`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').removeAttr('class').html();\n * //=> <li>Pear</li>\n *\n * $('.apple').attr('id', 'favorite');\n * $('.apple').removeAttr('id class').html();\n * //=> <li>Apple</li>\n * ```\n *\n * @param name - Name of the attribute.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/removeAttr/}\n */\nfunction removeAttr(name) {\n var attrNames = splitNames(name);\n var _loop_1 = function (i) {\n utils_1.domEach(this_1, function (elem) {\n if (utils_1.isTag(elem))\n removeAttribute(elem, attrNames[i]);\n });\n };\n var this_1 = this;\n for (var i = 0; i < attrNames.length; i++) {\n _loop_1(i);\n }\n return this;\n}\nexports.removeAttr = removeAttr;\n/**\n * Check to see if *any* of the matched elements have the given `className`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').hasClass('pear');\n * //=> true\n *\n * $('apple').hasClass('fruit');\n * //=> false\n *\n * $('li').hasClass('pear');\n * //=> true\n * ```\n *\n * @param className - Name of the class.\n * @returns Indicates if an element has the given `className`.\n * @see {@link https://api.jquery.com/hasClass/}\n */\nfunction hasClass(className) {\n return this.toArray().some(function (elem) {\n var clazz = utils_1.isTag(elem) && elem.attribs.class;\n var idx = -1;\n if (clazz && className.length) {\n while ((idx = clazz.indexOf(className, idx + 1)) > -1) {\n var end = idx + className.length;\n if ((idx === 0 || rspace.test(clazz[idx - 1])) &&\n (end === clazz.length || rspace.test(clazz[end]))) {\n return true;\n }\n }\n }\n return false;\n });\n}\nexports.hasClass = hasClass;\n/**\n * Adds class(es) to all of the matched elements. Also accepts a `function`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').addClass('fruit').html();\n * //=> <li class=\"pear fruit\">Pear</li>\n *\n * $('.apple').addClass('fruit red').html();\n * //=> <li class=\"apple fruit red\">Apple</li>\n * ```\n *\n * @param value - Name of new class.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/addClass/}\n */\nfunction addClass(value) {\n // Support functions\n if (typeof value === 'function') {\n return utils_1.domEach(this, function (el, i) {\n if (utils_1.isTag(el)) {\n var className = el.attribs.class || '';\n addClass.call([el], value.call(el, i, className));\n }\n });\n }\n // Return if no value or not a string or function\n if (!value || typeof value !== 'string')\n return this;\n var classNames = value.split(rspace);\n var numElements = this.length;\n for (var i = 0; i < numElements; i++) {\n var el = this[i];\n // If selected element isn't a tag, move on\n if (!utils_1.isTag(el))\n continue;\n // If we don't already have classes — always set xmlMode to false here, as it doesn't matter for classes\n var className = getAttr(el, 'class', false);\n if (!className) {\n setAttr(el, 'class', classNames.join(' ').trim());\n }\n else {\n var setClass = \" \" + className + \" \";\n // Check if class already exists\n for (var j = 0; j < classNames.length; j++) {\n var appendClass = classNames[j] + \" \";\n if (!setClass.includes(\" \" + appendClass))\n setClass += appendClass;\n }\n setAttr(el, 'class', setClass.trim());\n }\n }\n return this;\n}\nexports.addClass = addClass;\n/**\n * Removes one or more space-separated classes from the selected elements. If no\n * `className` is defined, all classes will be removed. Also accepts a `function`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').removeClass('pear').html();\n * //=> <li class=\"\">Pear</li>\n *\n * $('.apple').addClass('red').removeClass().html();\n * //=> <li class=\"\">Apple</li>\n * ```\n *\n * @param name - Name of the class. If not specified, removes all elements.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/removeClass/}\n */\nfunction removeClass(name) {\n // Handle if value is a function\n if (typeof name === 'function') {\n return utils_1.domEach(this, function (el, i) {\n if (utils_1.isTag(el))\n removeClass.call([el], name.call(el, i, el.attribs.class || ''));\n });\n }\n var classes = splitNames(name);\n var numClasses = classes.length;\n var removeAll = arguments.length === 0;\n return utils_1.domEach(this, function (el) {\n if (!utils_1.isTag(el))\n return;\n if (removeAll) {\n // Short circuit the remove all case as this is the nice one\n el.attribs.class = '';\n }\n else {\n var elClasses = splitNames(el.attribs.class);\n var changed = false;\n for (var j = 0; j < numClasses; j++) {\n var index = elClasses.indexOf(classes[j]);\n if (index >= 0) {\n elClasses.splice(index, 1);\n changed = true;\n /*\n * We have to do another pass to ensure that there are not duplicate\n * classes listed\n */\n j--;\n }\n }\n if (changed) {\n el.attribs.class = elClasses.join(' ');\n }\n }\n });\n}\nexports.removeClass = removeClass;\n/**\n * Add or remove class(es) from the matched elements, depending on either the\n * class's presence or the value of the switch argument. Also accepts a `function`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.apple.green').toggleClass('fruit green red').html();\n * //=> <li class=\"apple fruit red\">Apple</li>\n *\n * $('.apple.green').toggleClass('fruit green red', true).html();\n * //=> <li class=\"apple green fruit red\">Apple</li>\n * ```\n *\n * @param value - Name of the class. Can also be a function.\n * @param stateVal - If specified the state of the class.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/toggleClass/}\n */\nfunction toggleClass(value, stateVal) {\n // Support functions\n if (typeof value === 'function') {\n return utils_1.domEach(this, function (el, i) {\n if (utils_1.isTag(el)) {\n toggleClass.call([el], value.call(el, i, el.attribs.class || '', stateVal), stateVal);\n }\n });\n }\n // Return if no value or not a string or function\n if (!value || typeof value !== 'string')\n return this;\n var classNames = value.split(rspace);\n var numClasses = classNames.length;\n var state = typeof stateVal === 'boolean' ? (stateVal ? 1 : -1) : 0;\n var numElements = this.length;\n for (var i = 0; i < numElements; i++) {\n var el = this[i];\n // If selected element isn't a tag, move on\n if (!utils_1.isTag(el))\n continue;\n var elementClasses = splitNames(el.attribs.class);\n // Check if class already exists\n for (var j = 0; j < numClasses; j++) {\n // Check if the class name is currently defined\n var index = elementClasses.indexOf(classNames[j]);\n // Add if stateValue === true or we are toggling and there is no value\n if (state >= 0 && index < 0) {\n elementClasses.push(classNames[j]);\n }\n else if (state <= 0 && index >= 0) {\n // Otherwise remove but only if the item exists\n elementClasses.splice(index, 1);\n }\n }\n el.attribs.class = elementClasses.join(' ');\n }\n return this;\n}\nexports.toggleClass = toggleClass;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.css = void 0;\nvar utils_1 = require(\"../utils\");\nfunction css(prop, val) {\n if ((prop != null && val != null) ||\n // When `prop` is a \"plain\" object\n (typeof prop === 'object' && !Array.isArray(prop))) {\n return utils_1.domEach(this, function (el, i) {\n if (utils_1.isTag(el)) {\n // `prop` can't be an array here anymore.\n setCss(el, prop, val, i);\n }\n });\n }\n return getCss(this[0], prop);\n}\nexports.css = css;\n/**\n * Set styles of all elements.\n *\n * @private\n * @param el - Element to set style of.\n * @param prop - Name of property.\n * @param value - Value to set property to.\n * @param idx - Optional index within the selection.\n */\nfunction setCss(el, prop, value, idx) {\n if (typeof prop === 'string') {\n var styles = getCss(el);\n var val = typeof value === 'function' ? value.call(el, idx, styles[prop]) : value;\n if (val === '') {\n delete styles[prop];\n }\n else if (val != null) {\n styles[prop] = val;\n }\n el.attribs.style = stringify(styles);\n }\n else if (typeof prop === 'object') {\n Object.keys(prop).forEach(function (k, i) {\n setCss(el, k, prop[k], i);\n });\n }\n}\nfunction getCss(el, prop) {\n if (!el || !utils_1.isTag(el))\n return;\n var styles = parse(el.attribs.style);\n if (typeof prop === 'string') {\n return styles[prop];\n }\n if (Array.isArray(prop)) {\n var newStyles_1 = {};\n prop.forEach(function (item) {\n if (styles[item] != null) {\n newStyles_1[item] = styles[item];\n }\n });\n return newStyles_1;\n }\n return styles;\n}\n/**\n * Stringify `obj` to styles.\n *\n * @private\n * @category CSS\n * @param obj - Object to stringify.\n * @returns The serialized styles.\n */\nfunction stringify(obj) {\n return Object.keys(obj).reduce(function (str, prop) { return \"\" + str + (str ? ' ' : '') + prop + \": \" + obj[prop] + \";\"; }, '');\n}\n/**\n * Parse `styles`.\n *\n * @private\n * @category CSS\n * @param styles - Styles to be parsed.\n * @returns The parsed styles.\n */\nfunction parse(styles) {\n styles = (styles || '').trim();\n if (!styles)\n return {};\n return styles.split(';').reduce(function (obj, str) {\n var n = str.indexOf(':');\n // Skip if there is no :, or if it is the first/last character\n if (n < 1 || n === str.length - 1)\n return obj;\n obj[str.slice(0, n).trim()] = str.slice(n + 1).trim();\n return obj;\n }, {});\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeArray = exports.serialize = void 0;\nvar utils_1 = require(\"../utils\");\n/*\n * https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js\n * https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js\n */\nvar submittableSelector = 'input,select,textarea,keygen';\nvar r20 = /%20/g;\nvar rCRLF = /\\r?\\n/g;\n/**\n * Encode a set of form elements as a string for submission.\n *\n * @category Forms\n * @returns The serialized form.\n * @see {@link https://api.jquery.com/serialize/}\n */\nfunction serialize() {\n // Convert form elements into name/value objects\n var arr = this.serializeArray();\n // Serialize each element into a key/value string\n var retArr = arr.map(function (data) {\n return encodeURIComponent(data.name) + \"=\" + encodeURIComponent(data.value);\n });\n // Return the resulting serialization\n return retArr.join('&').replace(r20, '+');\n}\nexports.serialize = serialize;\n/**\n * Encode a set of form elements as an array of names and values.\n *\n * @category Forms\n * @example\n *\n * ```js\n * $('<form><input name=\"foo\" value=\"bar\" /></form>').serializeArray();\n * //=> [ { name: 'foo', value: 'bar' } ]\n * ```\n *\n * @returns The serialized form.\n * @see {@link https://api.jquery.com/serializeArray/}\n */\nfunction serializeArray() {\n var _this = this;\n // Resolve all form elements from either forms or collections of form elements\n return this.map(function (_, elem) {\n var $elem = _this._make(elem);\n if (utils_1.isTag(elem) && elem.name === 'form') {\n return $elem.find(submittableSelector).toArray();\n }\n return $elem.filter(submittableSelector).toArray();\n })\n .filter(\n // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`)\n '[name!=\"\"]:enabled' +\n // And cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`)\n ':not(:submit, :button, :image, :reset, :file)' +\n // And are either checked/don't have a checkable state\n ':matches([checked], :not(:checkbox, :radio))'\n // Convert each of the elements to its value(s)\n )\n .map(function (_, elem) {\n var _a;\n var $elem = _this._make(elem);\n var name = $elem.attr('name'); // We have filtered for elements with a name before.\n // If there is no value set (e.g. `undefined`, `null`), then default value to empty\n var value = (_a = $elem.val()) !== null && _a !== void 0 ? _a : '';\n // If we have an array of values (e.g. `<select multiple>`), return an array of key/value pairs\n if (Array.isArray(value)) {\n return value.map(function (val) {\n /*\n * We trim replace any line endings (e.g. `\\r` or `\\r\\n` with `\\r\\n`) to guarantee consistency across platforms\n * These can occur inside of `<textarea>'s`\n */\n return ({ name: name, value: val.replace(rCRLF, '\\r\\n') });\n });\n }\n // Otherwise (e.g. `<input type=\"text\">`, return only one key/value pair\n return { name: name, value: value.replace(rCRLF, '\\r\\n') };\n })\n .toArray();\n}\nexports.serializeArray = serializeArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = exports.text = exports.toString = exports.html = exports.empty = exports.replaceWith = exports.remove = exports.insertBefore = exports.before = exports.insertAfter = exports.after = exports.wrapAll = exports.unwrap = exports.wrapInner = exports.wrap = exports.prepend = exports.append = exports.prependTo = exports.appendTo = exports._makeDomArray = void 0;\nvar tslib_1 = require(\"tslib\");\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Methods for modifying the DOM structure.\n *\n * @module cheerio/manipulation\n */\nvar domhandler_2 = require(\"domhandler\");\nvar parse_1 = tslib_1.__importStar(require(\"../parse\"));\nvar static_1 = require(\"../static\");\nvar utils_1 = require(\"../utils\");\nvar htmlparser2_1 = require(\"htmlparser2\");\n/**\n * Create an array of nodes, recursing into arrays and parsing strings if necessary.\n *\n * @private\n * @category Manipulation\n * @param elem - Elements to make an array of.\n * @param clone - Optionally clone nodes.\n * @returns The array of nodes.\n */\nfunction _makeDomArray(elem, clone) {\n var _this = this;\n if (elem == null) {\n return [];\n }\n if (utils_1.isCheerio(elem)) {\n return clone ? utils_1.cloneDom(elem.get()) : elem.get();\n }\n if (Array.isArray(elem)) {\n return elem.reduce(function (newElems, el) { return newElems.concat(_this._makeDomArray(el, clone)); }, []);\n }\n if (typeof elem === 'string') {\n return parse_1.default(elem, this.options, false).children;\n }\n return clone ? utils_1.cloneDom([elem]) : [elem];\n}\nexports._makeDomArray = _makeDomArray;\nfunction _insert(concatenator) {\n return function () {\n var _this = this;\n var elems = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elems[_i] = arguments[_i];\n }\n var lastIdx = this.length - 1;\n return utils_1.domEach(this, function (el, i) {\n if (!domhandler_1.hasChildren(el))\n return;\n var domSrc = typeof elems[0] === 'function'\n ? elems[0].call(el, i, static_1.html(el.children))\n : elems;\n var dom = _this._makeDomArray(domSrc, i < lastIdx);\n concatenator(dom, el.children, el);\n });\n };\n}\n/**\n * Modify an array in-place, removing some number of elements and adding new\n * elements directly following them.\n *\n * @private\n * @category Manipulation\n * @param array - Target array to splice.\n * @param spliceIdx - Index at which to begin changing the array.\n * @param spliceCount - Number of elements to remove from the array.\n * @param newElems - Elements to insert into the array.\n * @param parent - The parent of the node.\n * @returns The spliced array.\n */\nfunction uniqueSplice(array, spliceIdx, spliceCount, newElems, parent) {\n var _a, _b;\n var spliceArgs = tslib_1.__spreadArray([\n spliceIdx,\n spliceCount\n ], newElems);\n var prev = array[spliceIdx - 1] || null;\n var next = array[spliceIdx + spliceCount] || null;\n /*\n * Before splicing in new elements, ensure they do not already appear in the\n * current array.\n */\n for (var idx = 0; idx < newElems.length; ++idx) {\n var node = newElems[idx];\n var oldParent = node.parent;\n if (oldParent) {\n var prevIdx = oldParent.children.indexOf(newElems[idx]);\n if (prevIdx > -1) {\n oldParent.children.splice(prevIdx, 1);\n if (parent === oldParent && spliceIdx > prevIdx) {\n spliceArgs[0]--;\n }\n }\n }\n node.parent = parent;\n if (node.prev) {\n node.prev.next = (_a = node.next) !== null && _a !== void 0 ? _a : null;\n }\n if (node.next) {\n node.next.prev = (_b = node.prev) !== null && _b !== void 0 ? _b : null;\n }\n node.prev = newElems[idx - 1] || prev;\n node.next = newElems[idx + 1] || next;\n }\n if (prev) {\n prev.next = newElems[0];\n }\n if (next) {\n next.prev = newElems[newElems.length - 1];\n }\n return array.splice.apply(array, spliceArgs);\n}\n/**\n * Insert every element in the set of matched elements to the end of the target.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('<li class=\"plum\">Plum</li>').appendTo('#fruits');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // <li class=\"plum\">Plum</li>\n * // </ul>\n * ```\n *\n * @param target - Element to append elements to.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/appendTo/}\n */\nfunction appendTo(target) {\n var appendTarget = utils_1.isCheerio(target) ? target : this._make(target);\n appendTarget.append(this);\n return this;\n}\nexports.appendTo = appendTo;\n/**\n * Insert every element in the set of matched elements to the beginning of the target.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('<li class=\"plum\">Plum</li>').prependTo('#fruits');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"plum\">Plum</li>\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n * ```\n *\n * @param target - Element to prepend elements to.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/prependTo/}\n */\nfunction prependTo(target) {\n var prependTarget = utils_1.isCheerio(target) ? target : this._make(target);\n prependTarget.prepend(this);\n return this;\n}\nexports.prependTo = prependTo;\n/**\n * Inserts content as the *last* child of each of the selected elements.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('ul').append('<li class=\"plum\">Plum</li>');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // <li class=\"plum\">Plum</li>\n * // </ul>\n * ```\n *\n * @see {@link https://api.jquery.com/append/}\n */\nexports.append = _insert(function (dom, children, parent) {\n uniqueSplice(children, children.length, 0, dom, parent);\n});\n/**\n * Inserts content as the *first* child of each of the selected elements.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('ul').prepend('<li class=\"plum\">Plum</li>');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"plum\">Plum</li>\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n * ```\n *\n * @see {@link https://api.jquery.com/prepend/}\n */\nexports.prepend = _insert(function (dom, children, parent) {\n uniqueSplice(children, 0, 0, dom, parent);\n});\nfunction _wrap(insert) {\n return function (wrapper) {\n var lastIdx = this.length - 1;\n var lastParent = this.parents().last();\n for (var i = 0; i < this.length; i++) {\n var el = this[i];\n var wrap_1 = typeof wrapper === 'function'\n ? wrapper.call(el, i, el)\n : typeof wrapper === 'string' && !utils_1.isHtml(wrapper)\n ? lastParent.find(wrapper).clone()\n : wrapper;\n var wrapperDom = this._makeDomArray(wrap_1, i < lastIdx)[0];\n if (!wrapperDom || !htmlparser2_1.DomUtils.hasChildren(wrapperDom))\n continue;\n var elInsertLocation = wrapperDom;\n /*\n * Find the deepest child. Only consider the first tag child of each node\n * (ignore text); stop if no children are found.\n */\n var j = 0;\n while (j < elInsertLocation.children.length) {\n var child = elInsertLocation.children[j];\n if (utils_1.isTag(child)) {\n elInsertLocation = child;\n j = 0;\n }\n else {\n j++;\n }\n }\n insert(el, elInsertLocation, [wrapperDom]);\n }\n return this;\n };\n}\n/**\n * The .wrap() function can take any string or object that could be passed to\n * the $() factory function to specify a DOM structure. This structure may be\n * nested several levels deep, but should contain only one inmost element. A\n * copy of this structure will be wrapped around each of the elements in the set\n * of matched elements. This method returns the original set of elements for\n * chaining purposes.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * const redFruit = $('<div class=\"red-fruit\"></div>');\n * $('.apple').wrap(redFruit);\n *\n * //=> <ul id=\"fruits\">\n * // <div class=\"red-fruit\">\n * // <li class=\"apple\">Apple</li>\n * // </div>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"plum\">Plum</li>\n * // </ul>\n *\n * const healthy = $('<div class=\"healthy\"></div>');\n * $('li').wrap(healthy);\n *\n * //=> <ul id=\"fruits\">\n * // <div class=\"healthy\">\n * // <li class=\"apple\">Apple</li>\n * // </div>\n * // <div class=\"healthy\">\n * // <li class=\"orange\">Orange</li>\n * // </div>\n * // <div class=\"healthy\">\n * // <li class=\"plum\">Plum</li>\n * // </div>\n * // </ul>\n * ```\n *\n * @param wrapper - The DOM structure to wrap around each element in the selection.\n * @see {@link https://api.jquery.com/wrap/}\n */\nexports.wrap = _wrap(function (el, elInsertLocation, wrapperDom) {\n var parent = el.parent;\n if (!parent)\n return;\n var siblings = parent.children;\n var index = siblings.indexOf(el);\n parse_1.update([el], elInsertLocation);\n /*\n * The previous operation removed the current element from the `siblings`\n * array, so the `dom` array can be inserted without removing any\n * additional elements.\n */\n uniqueSplice(siblings, index, 0, wrapperDom, parent);\n});\n/**\n * The .wrapInner() function can take any string or object that could be passed\n * to the $() factory function to specify a DOM structure. This structure may be\n * nested several levels deep, but should contain only one inmost element. The\n * structure will be wrapped around the content of each of the elements in the\n * set of matched elements.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * const redFruit = $('<div class=\"red-fruit\"></div>');\n * $('.apple').wrapInner(redFruit);\n *\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">\n * // <div class=\"red-fruit\">Apple</div>\n * // </li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n *\n * const healthy = $('<div class=\"healthy\"></div>');\n * $('li').wrapInner(healthy);\n *\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">\n * // <div class=\"healthy\">Apple</div>\n * // </li>\n * // <li class=\"orange\">\n * // <div class=\"healthy\">Orange</div>\n * // </li>\n * // <li class=\"pear\">\n * // <div class=\"healthy\">Pear</div>\n * // </li>\n * // </ul>\n * ```\n *\n * @param wrapper - The DOM structure to wrap around the content of each element\n * in the selection.\n * @returns The instance itself, for chaining.\n * @see {@link https://api.jquery.com/wrapInner/}\n */\nexports.wrapInner = _wrap(function (el, elInsertLocation, wrapperDom) {\n if (!domhandler_1.hasChildren(el))\n return;\n parse_1.update(el.children, elInsertLocation);\n parse_1.update(wrapperDom, el);\n});\n/**\n * The .unwrap() function, removes the parents of the set of matched elements\n * from the DOM, leaving the matched elements in their place.\n *\n * @category Manipulation\n * @example <caption>without selector</caption>\n *\n * ```js\n * const $ = cheerio.load(\n * '<div id=test>\\n <div><p>Hello</p></div>\\n <div><p>World</p></div>\\n</div>'\n * );\n * $('#test p').unwrap();\n *\n * //=> <div id=test>\n * // <p>Hello</p>\n * // <p>World</p>\n * // </div>\n * ```\n *\n * @example <caption>with selector</caption>\n *\n * ```js\n * const $ = cheerio.load(\n * '<div id=test>\\n <p>Hello</p>\\n <b><p>World</p></b>\\n</div>'\n * );\n * $('#test p').unwrap('b');\n *\n * //=> <div id=test>\n * // <p>Hello</p>\n * // <p>World</p>\n * // </div>\n * ```\n *\n * @param selector - A selector to check the parent element against. If an\n * element's parent does not match the selector, the element won't be unwrapped.\n * @returns The instance itself, for chaining.\n * @see {@link https://api.jquery.com/unwrap/}\n */\nfunction unwrap(selector) {\n var _this = this;\n this.parent(selector)\n .not('body')\n .each(function (_, el) {\n _this._make(el).replaceWith(el.children);\n });\n return this;\n}\nexports.unwrap = unwrap;\n/**\n * The .wrapAll() function can take any string or object that could be passed to\n * the $() function to specify a DOM structure. This structure may be nested\n * several levels deep, but should contain only one inmost element. The\n * structure will be wrapped around all of the elements in the set of matched\n * elements, as a single group.\n *\n * @category Manipulation\n * @example <caption>With markup passed to `wrapAll`</caption>\n *\n * ```js\n * const $ = cheerio.load(\n * '<div class=\"container\"><div class=\"inner\">First</div><div class=\"inner\">Second</div></div>'\n * );\n * $('.inner').wrapAll(\"<div class='new'></div>\");\n *\n * //=> <div class=\"container\">\n * // <div class='new'>\n * // <div class=\"inner\">First</div>\n * // <div class=\"inner\">Second</div>\n * // </div>\n * // </div>\n * ```\n *\n * @example <caption>With an existing cheerio instance</caption>\n *\n * ```js\n * const $ = cheerio.load(\n * '<span>Span 1</span><strong>Strong</strong><span>Span 2</span>'\n * );\n * const wrap = $('<div><p><em><b></b></em></p></div>');\n * $('span').wrapAll(wrap);\n *\n * //=> <div>\n * // <p>\n * // <em>\n * // <b>\n * // <span>Span 1</span>\n * // <span>Span 2</span>\n * // </b>\n * // </em>\n * // </p>\n * // </div>\n * // <strong>Strong</strong>\n * ```\n *\n * @param wrapper - The DOM structure to wrap around all matched elements in the\n * selection.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/wrapAll/}\n */\nfunction wrapAll(wrapper) {\n var el = this[0];\n if (el) {\n var wrap_2 = this._make(typeof wrapper === 'function' ? wrapper.call(el, 0, el) : wrapper).insertBefore(el);\n // If html is given as wrapper, wrap may contain text elements\n var elInsertLocation = void 0;\n for (var i = 0; i < wrap_2.length; i++) {\n if (wrap_2[i].type === 'tag')\n elInsertLocation = wrap_2[i];\n }\n var j = 0;\n /*\n * Find the deepest child. Only consider the first tag child of each node\n * (ignore text); stop if no children are found.\n */\n while (elInsertLocation && j < elInsertLocation.children.length) {\n var child = elInsertLocation.children[j];\n if (child.type === 'tag') {\n elInsertLocation = child;\n j = 0;\n }\n else {\n j++;\n }\n }\n if (elInsertLocation)\n this._make(elInsertLocation).append(this);\n }\n return this;\n}\nexports.wrapAll = wrapAll;\n/* eslint-disable jsdoc/check-param-names*/\n/**\n * Insert content next to each element in the set of matched elements.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('.apple').after('<li class=\"plum\">Plum</li>');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"plum\">Plum</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n * ```\n *\n * @param content - HTML string, DOM element, array of DOM elements or Cheerio\n * to insert after each element in the set of matched elements.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/after/}\n */\nfunction after() {\n var _this = this;\n var elems = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elems[_i] = arguments[_i];\n }\n var lastIdx = this.length - 1;\n return utils_1.domEach(this, function (el, i) {\n var parent = el.parent;\n if (!htmlparser2_1.DomUtils.hasChildren(el) || !parent) {\n return;\n }\n var siblings = parent.children;\n var index = siblings.indexOf(el);\n // If not found, move on\n /* istanbul ignore next */\n if (index < 0)\n return;\n var domSrc = typeof elems[0] === 'function'\n ? elems[0].call(el, i, static_1.html(el.children))\n : elems;\n var dom = _this._makeDomArray(domSrc, i < lastIdx);\n // Add element after `this` element\n uniqueSplice(siblings, index + 1, 0, dom, parent);\n });\n}\nexports.after = after;\n/* eslint-enable jsdoc/check-param-names*/\n/**\n * Insert every element in the set of matched elements after the target.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('<li class=\"plum\">Plum</li>').insertAfter('.apple');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"plum\">Plum</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n * ```\n *\n * @param target - Element to insert elements after.\n * @returns The set of newly inserted elements.\n * @see {@link https://api.jquery.com/insertAfter/}\n */\nfunction insertAfter(target) {\n var _this = this;\n if (typeof target === 'string') {\n target = this._make(target);\n }\n this.remove();\n var clones = [];\n this._makeDomArray(target).forEach(function (el) {\n var clonedSelf = _this.clone().toArray();\n var parent = el.parent;\n if (!parent) {\n return;\n }\n var siblings = parent.children;\n var index = siblings.indexOf(el);\n // If not found, move on\n /* istanbul ignore next */\n if (index < 0)\n return;\n // Add cloned `this` element(s) after target element\n uniqueSplice(siblings, index + 1, 0, clonedSelf, parent);\n clones.push.apply(clones, clonedSelf);\n });\n return this._make(clones);\n}\nexports.insertAfter = insertAfter;\n/* eslint-disable jsdoc/check-param-names*/\n/**\n * Insert content previous to each element in the set of matched elements.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('.apple').before('<li class=\"plum\">Plum</li>');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"plum\">Plum</li>\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n * ```\n *\n * @param content - HTML string, DOM element, array of DOM elements or Cheerio\n * to insert before each element in the set of matched elements.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/before/}\n */\nfunction before() {\n var _this = this;\n var elems = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elems[_i] = arguments[_i];\n }\n var lastIdx = this.length - 1;\n return utils_1.domEach(this, function (el, i) {\n var parent = el.parent;\n if (!htmlparser2_1.DomUtils.hasChildren(el) || !parent) {\n return;\n }\n var siblings = parent.children;\n var index = siblings.indexOf(el);\n // If not found, move on\n /* istanbul ignore next */\n if (index < 0)\n return;\n var domSrc = typeof elems[0] === 'function'\n ? elems[0].call(el, i, static_1.html(el.children))\n : elems;\n var dom = _this._makeDomArray(domSrc, i < lastIdx);\n // Add element before `el` element\n uniqueSplice(siblings, index, 0, dom, parent);\n });\n}\nexports.before = before;\n/* eslint-enable jsdoc/check-param-names*/\n/**\n * Insert every element in the set of matched elements before the target.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('<li class=\"plum\">Plum</li>').insertBefore('.apple');\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"plum\">Plum</li>\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"pear\">Pear</li>\n * // </ul>\n * ```\n *\n * @param target - Element to insert elements before.\n * @returns The set of newly inserted elements.\n * @see {@link https://api.jquery.com/insertBefore/}\n */\nfunction insertBefore(target) {\n var _this = this;\n var targetArr = this._make(target);\n this.remove();\n var clones = [];\n utils_1.domEach(targetArr, function (el) {\n var clonedSelf = _this.clone().toArray();\n var parent = el.parent;\n if (!parent) {\n return;\n }\n var siblings = parent.children;\n var index = siblings.indexOf(el);\n // If not found, move on\n /* istanbul ignore next */\n if (index < 0)\n return;\n // Add cloned `this` element(s) after target element\n uniqueSplice(siblings, index, 0, clonedSelf, parent);\n clones.push.apply(clones, clonedSelf);\n });\n return this._make(clones);\n}\nexports.insertBefore = insertBefore;\n/**\n * Removes the set of matched elements from the DOM and all their children.\n * `selector` filters the set of matched elements to be removed.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('.pear').remove();\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // </ul>\n * ```\n *\n * @param selector - Optional selector for elements to remove.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/remove/}\n */\nfunction remove(selector) {\n // Filter if we have selector\n var elems = selector ? this.filter(selector) : this;\n utils_1.domEach(elems, function (el) {\n htmlparser2_1.DomUtils.removeElement(el);\n el.prev = el.next = el.parent = null;\n });\n return this;\n}\nexports.remove = remove;\n/**\n * Replaces matched elements with `content`.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * const plum = $('<li class=\"plum\">Plum</li>');\n * $('.pear').replaceWith(plum);\n * $.html();\n * //=> <ul id=\"fruits\">\n * // <li class=\"apple\">Apple</li>\n * // <li class=\"orange\">Orange</li>\n * // <li class=\"plum\">Plum</li>\n * // </ul>\n * ```\n *\n * @param content - Replacement for matched elements.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/replaceWith/}\n */\nfunction replaceWith(content) {\n var _this = this;\n return utils_1.domEach(this, function (el, i) {\n var parent = el.parent;\n if (!parent) {\n return;\n }\n var siblings = parent.children;\n var cont = typeof content === 'function' ? content.call(el, i, el) : content;\n var dom = _this._makeDomArray(cont);\n /*\n * In the case that `dom` contains nodes that already exist in other\n * structures, ensure those nodes are properly removed.\n */\n parse_1.update(dom, null);\n var index = siblings.indexOf(el);\n // Completely remove old element\n uniqueSplice(siblings, index, 1, dom, parent);\n if (!dom.includes(el)) {\n el.parent = el.prev = el.next = null;\n }\n });\n}\nexports.replaceWith = replaceWith;\n/**\n * Empties an element, removing all its children.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * $('ul').empty();\n * $.html();\n * //=> <ul id=\"fruits\"></ul>\n * ```\n *\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/empty/}\n */\nfunction empty() {\n return utils_1.domEach(this, function (el) {\n if (!htmlparser2_1.DomUtils.hasChildren(el))\n return;\n el.children.forEach(function (child) {\n child.next = child.prev = child.parent = null;\n });\n el.children.length = 0;\n });\n}\nexports.empty = empty;\nfunction html(str) {\n if (str === undefined) {\n var el = this[0];\n if (!el || !htmlparser2_1.DomUtils.hasChildren(el))\n return null;\n return static_1.html(el.children, this.options);\n }\n // Keep main options unchanged\n var opts = tslib_1.__assign(tslib_1.__assign({}, this.options), { context: null });\n return utils_1.domEach(this, function (el) {\n if (!htmlparser2_1.DomUtils.hasChildren(el))\n return;\n el.children.forEach(function (child) {\n child.next = child.prev = child.parent = null;\n });\n opts.context = el;\n var content = utils_1.isCheerio(str)\n ? str.toArray()\n : parse_1.default(\"\" + str, opts, false).children;\n parse_1.update(content, el);\n });\n}\nexports.html = html;\n/**\n * Turns the collection to a string. Alias for `.html()`.\n *\n * @category Manipulation\n * @returns The rendered document.\n */\nfunction toString() {\n return static_1.html(this, this.options);\n}\nexports.toString = toString;\nfunction text(str) {\n var _this = this;\n // If `str` is undefined, act as a \"getter\"\n if (str === undefined) {\n return static_1.text(this);\n }\n if (typeof str === 'function') {\n // Function support\n return utils_1.domEach(this, function (el, i) {\n text.call(_this._make(el), str.call(el, i, static_1.text([el])));\n });\n }\n // Append text node to each selected elements\n return utils_1.domEach(this, function (el) {\n if (!htmlparser2_1.DomUtils.hasChildren(el))\n return;\n el.children.forEach(function (child) {\n child.next = child.prev = child.parent = null;\n });\n var textNode = new domhandler_2.Text(str);\n parse_1.update(textNode, el);\n });\n}\nexports.text = text;\n/**\n * Clone the cheerio object.\n *\n * @category Manipulation\n * @example\n *\n * ```js\n * const moreFruit = $('#fruits').clone();\n * ```\n *\n * @returns The cloned object.\n * @see {@link https://api.jquery.com/clone/}\n */\nfunction clone() {\n return this._make(utils_1.cloneDom(this.get()));\n}\nexports.clone = clone;\n","\"use strict\";\n/**\n * Methods for traversing the DOM structure.\n *\n * @module cheerio/traversing\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addBack = exports.add = exports.end = exports.slice = exports.index = exports.toArray = exports.get = exports.eq = exports.last = exports.first = exports.has = exports.not = exports.is = exports.filterArray = exports.filter = exports.map = exports.each = exports.contents = exports.children = exports.siblings = exports.prevUntil = exports.prevAll = exports.prev = exports.nextUntil = exports.nextAll = exports.next = exports.closest = exports.parentsUntil = exports.parents = exports.parent = exports.find = void 0;\nvar tslib_1 = require(\"tslib\");\nvar domhandler_1 = require(\"domhandler\");\nvar select = tslib_1.__importStar(require(\"cheerio-select\"));\nvar utils_1 = require(\"../utils\");\nvar static_1 = require(\"../static\");\nvar htmlparser2_1 = require(\"htmlparser2\");\nvar uniqueSort = htmlparser2_1.DomUtils.uniqueSort;\nvar reSiblingSelector = /^\\s*[~+]/;\n/**\n * Get the descendants of each element in the current set of matched elements,\n * filtered by a selector, jQuery object, or element.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('#fruits').find('li').length;\n * //=> 3\n * $('#fruits').find($('.apple')).length;\n * //=> 1\n * ```\n *\n * @param selectorOrHaystack - Element to look for.\n * @returns The found elements.\n * @see {@link https://api.jquery.com/find/}\n */\nfunction find(selectorOrHaystack) {\n var _a;\n if (!selectorOrHaystack) {\n return this._make([]);\n }\n var context = this.toArray();\n if (typeof selectorOrHaystack !== 'string') {\n var haystack = utils_1.isCheerio(selectorOrHaystack)\n ? selectorOrHaystack.toArray()\n : [selectorOrHaystack];\n return this._make(haystack.filter(function (elem) { return context.some(function (node) { return static_1.contains(node, elem); }); }));\n }\n var elems = reSiblingSelector.test(selectorOrHaystack)\n ? context\n : this.children().toArray();\n var options = {\n context: context,\n root: (_a = this._root) === null || _a === void 0 ? void 0 : _a[0],\n xmlMode: this.options.xmlMode,\n };\n return this._make(select.select(selectorOrHaystack, elems, options));\n}\nexports.find = find;\n/**\n * Creates a matcher, using a particular mapping function. Matchers provide a\n * function that finds elements using a generating function, supporting filtering.\n *\n * @private\n * @param matchMap - Mapping function.\n * @returns - Function for wrapping generating functions.\n */\nfunction _getMatcher(matchMap) {\n return function (fn) {\n var postFns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n postFns[_i - 1] = arguments[_i];\n }\n return function (selector) {\n var _a;\n var matched = matchMap(fn, this);\n if (selector) {\n matched = filterArray(matched, selector, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]);\n }\n return this._make(\n // Post processing is only necessary if there is more than one element.\n this.length > 1 && matched.length > 1\n ? postFns.reduce(function (elems, fn) { return fn(elems); }, matched)\n : matched);\n };\n };\n}\n/** Matcher that adds multiple elements for each entry in the input. */\nvar _matcher = _getMatcher(function (fn, elems) {\n var _a;\n var ret = [];\n for (var i = 0; i < elems.length; i++) {\n var value = fn(elems[i]);\n ret.push(value);\n }\n return (_a = new Array()).concat.apply(_a, ret);\n});\n/** Matcher that adds at most one element for each entry in the input. */\nvar _singleMatcher = _getMatcher(function (fn, elems) {\n var ret = [];\n for (var i = 0; i < elems.length; i++) {\n var value = fn(elems[i]);\n if (value !== null) {\n ret.push(value);\n }\n }\n return ret;\n});\n/**\n * Matcher that supports traversing until a condition is met.\n *\n * @returns A function usable for `*Until` methods.\n */\nfunction _matchUntil(nextElem) {\n var postFns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n postFns[_i - 1] = arguments[_i];\n }\n // We use a variable here that is used from within the matcher.\n var matches = null;\n var innerMatcher = _getMatcher(function (nextElem, elems) {\n var matched = [];\n utils_1.domEach(elems, function (elem) {\n for (var next_1; (next_1 = nextElem(elem)); elem = next_1) {\n // FIXME: `matched` might contain duplicates here and the index is too large.\n if (matches === null || matches === void 0 ? void 0 : matches(next_1, matched.length))\n break;\n matched.push(next_1);\n }\n });\n return matched;\n }).apply(void 0, tslib_1.__spreadArray([nextElem], postFns));\n return function (selector, filterSelector) {\n var _this = this;\n // Override `matches` variable with the new target.\n matches =\n typeof selector === 'string'\n ? function (elem) { return select.is(elem, selector, _this.options); }\n : selector\n ? getFilterFn(selector)\n : null;\n var ret = innerMatcher.call(this, filterSelector);\n // Set `matches` to `null`, so we don't waste memory.\n matches = null;\n return ret;\n };\n}\nfunction _removeDuplicates(elems) {\n return Array.from(new Set(elems));\n}\n/**\n * Get the parent of each element in the current set of matched elements,\n * optionally filtered by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.pear').parent().attr('id');\n * //=> fruits\n * ```\n *\n * @param selector - If specified filter for parent.\n * @returns The parents.\n * @see {@link https://api.jquery.com/parent/}\n */\nexports.parent = _singleMatcher(function (_a) {\n var parent = _a.parent;\n return (parent && !domhandler_1.isDocument(parent) ? parent : null);\n}, _removeDuplicates);\n/**\n * Get a set of parents filtered by `selector` of each element in the current\n * set of match elements.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.orange').parents().length;\n * //=> 2\n * $('.orange').parents('#fruits').length;\n * //=> 1\n * ```\n *\n * @param selector - If specified filter for parents.\n * @returns The parents.\n * @see {@link https://api.jquery.com/parents/}\n */\nexports.parents = _matcher(function (elem) {\n var matched = [];\n while (elem.parent && !domhandler_1.isDocument(elem.parent)) {\n matched.push(elem.parent);\n elem = elem.parent;\n }\n return matched;\n}, uniqueSort, function (elems) { return elems.reverse(); });\n/**\n * Get the ancestors of each element in the current set of matched elements, up\n * to but not including the element matched by the selector, DOM node, or cheerio object.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.orange').parentsUntil('#food').length;\n * //=> 1\n * ```\n *\n * @param selector - Selector for element to stop at.\n * @param filterSelector - Optional filter for parents.\n * @returns The parents.\n * @see {@link https://api.jquery.com/parentsUntil/}\n */\nexports.parentsUntil = _matchUntil(function (_a) {\n var parent = _a.parent;\n return (parent && !domhandler_1.isDocument(parent) ? parent : null);\n}, uniqueSort, function (elems) { return elems.reverse(); });\n/**\n * For each element in the set, get the first element that matches the selector\n * by testing the element itself and traversing up through its ancestors in the DOM tree.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.orange').closest();\n * //=> []\n *\n * $('.orange').closest('.apple');\n * // => []\n *\n * $('.orange').closest('li');\n * //=> [<li class=\"orange\">Orange</li>]\n *\n * $('.orange').closest('#fruits');\n * //=> [<ul id=\"fruits\"> ... </ul>]\n * ```\n *\n * @param selector - Selector for the element to find.\n * @returns The closest nodes.\n * @see {@link https://api.jquery.com/closest/}\n */\nfunction closest(selector) {\n var _this = this;\n var set = [];\n if (!selector) {\n return this._make(set);\n }\n utils_1.domEach(this, function (elem) {\n var _a;\n while (elem && elem.type !== 'root') {\n if (!selector ||\n filterArray([elem], selector, _this.options.xmlMode, (_a = _this._root) === null || _a === void 0 ? void 0 : _a[0])\n .length) {\n // Do not add duplicate elements to the set\n if (elem && !set.includes(elem)) {\n set.push(elem);\n }\n break;\n }\n elem = elem.parent;\n }\n });\n return this._make(set);\n}\nexports.closest = closest;\n/**\n * Gets the next sibling of the first selected element, optionally filtered by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.apple').next().hasClass('orange');\n * //=> true\n * ```\n *\n * @param selector - If specified filter for sibling.\n * @returns The next nodes.\n * @see {@link https://api.jquery.com/next/}\n */\nexports.next = _singleMatcher(function (elem) { return htmlparser2_1.DomUtils.nextElementSibling(elem); });\n/**\n * Gets all the following siblings of the first selected element, optionally\n * filtered by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.apple').nextAll();\n * //=> [<li class=\"orange\">Orange</li>, <li class=\"pear\">Pear</li>]\n * $('.apple').nextAll('.orange');\n * //=> [<li class=\"orange\">Orange</li>]\n * ```\n *\n * @param selector - If specified filter for siblings.\n * @returns The next nodes.\n * @see {@link https://api.jquery.com/nextAll/}\n */\nexports.nextAll = _matcher(function (elem) {\n var matched = [];\n while (elem.next) {\n elem = elem.next;\n if (utils_1.isTag(elem))\n matched.push(elem);\n }\n return matched;\n}, _removeDuplicates);\n/**\n * Gets all the following siblings up to but not including the element matched\n * by the selector, optionally filtered by another selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.apple').nextUntil('.pear');\n * //=> [<li class=\"orange\">Orange</li>]\n * ```\n *\n * @param selector - Selector for element to stop at.\n * @param filterSelector - If specified filter for siblings.\n * @returns The next nodes.\n * @see {@link https://api.jquery.com/nextUntil/}\n */\nexports.nextUntil = _matchUntil(function (el) { return htmlparser2_1.DomUtils.nextElementSibling(el); }, _removeDuplicates);\n/**\n * Gets the previous sibling of the first selected element optionally filtered\n * by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.orange').prev().hasClass('apple');\n * //=> true\n * ```\n *\n * @param selector - If specified filter for siblings.\n * @returns The previous nodes.\n * @see {@link https://api.jquery.com/prev/}\n */\nexports.prev = _singleMatcher(function (elem) { return htmlparser2_1.DomUtils.prevElementSibling(elem); });\n/**\n * Gets all the preceding siblings of the first selected element, optionally\n * filtered by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.pear').prevAll();\n * //=> [<li class=\"orange\">Orange</li>, <li class=\"apple\">Apple</li>]\n *\n * $('.pear').prevAll('.orange');\n * //=> [<li class=\"orange\">Orange</li>]\n * ```\n *\n * @param selector - If specified filter for siblings.\n * @returns The previous nodes.\n * @see {@link https://api.jquery.com/prevAll/}\n */\nexports.prevAll = _matcher(function (elem) {\n var matched = [];\n while (elem.prev) {\n elem = elem.prev;\n if (utils_1.isTag(elem))\n matched.push(elem);\n }\n return matched;\n}, _removeDuplicates);\n/**\n * Gets all the preceding siblings up to but not including the element matched\n * by the selector, optionally filtered by another selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.pear').prevUntil('.apple');\n * //=> [<li class=\"orange\">Orange</li>]\n * ```\n *\n * @param selector - Selector for element to stop at.\n * @param filterSelector - If specified filter for siblings.\n * @returns The previous nodes.\n * @see {@link https://api.jquery.com/prevUntil/}\n */\nexports.prevUntil = _matchUntil(function (el) { return htmlparser2_1.DomUtils.prevElementSibling(el); }, _removeDuplicates);\n/**\n * Get the siblings of each element (excluding the element) in the set of\n * matched elements, optionally filtered by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.pear').siblings().length;\n * //=> 2\n *\n * $('.pear').siblings('.orange').length;\n * //=> 1\n * ```\n *\n * @param selector - If specified filter for siblings.\n * @returns The siblings.\n * @see {@link https://api.jquery.com/siblings/}\n */\nexports.siblings = _matcher(function (elem) {\n return htmlparser2_1.DomUtils.getSiblings(elem).filter(function (el) { return utils_1.isTag(el) && el !== elem; });\n}, uniqueSort);\n/**\n * Gets the children of the first selected element.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('#fruits').children().length;\n * //=> 3\n *\n * $('#fruits').children('.pear').text();\n * //=> Pear\n * ```\n *\n * @param selector - If specified filter for children.\n * @returns The children.\n * @see {@link https://api.jquery.com/children/}\n */\nexports.children = _matcher(function (elem) { return htmlparser2_1.DomUtils.getChildren(elem).filter(utils_1.isTag); }, _removeDuplicates);\n/**\n * Gets the children of each element in the set of matched elements, including\n * text and comment nodes.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('#fruits').contents().length;\n * //=> 3\n * ```\n *\n * @returns The children.\n * @see {@link https://api.jquery.com/contents/}\n */\nfunction contents() {\n var elems = this.toArray().reduce(function (newElems, elem) {\n return domhandler_1.hasChildren(elem) ? newElems.concat(elem.children) : newElems;\n }, []);\n return this._make(elems);\n}\nexports.contents = contents;\n/**\n * Iterates over a cheerio object, executing a function for each matched\n * element. When the callback is fired, the function is fired in the context of\n * the DOM element, so `this` refers to the current element, which is equivalent\n * to the function parameter `element`. To break out of the `each` loop early,\n * return with `false`.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * const fruits = [];\n *\n * $('li').each(function (i, elem) {\n * fruits[i] = $(this).text();\n * });\n *\n * fruits.join(', ');\n * //=> Apple, Orange, Pear\n * ```\n *\n * @param fn - Function to execute.\n * @returns The instance itself, useful for chaining.\n * @see {@link https://api.jquery.com/each/}\n */\nfunction each(fn) {\n var i = 0;\n var len = this.length;\n while (i < len && fn.call(this[i], i, this[i]) !== false)\n ++i;\n return this;\n}\nexports.each = each;\n/**\n * Pass each element in the current matched set through a function, producing a\n * new Cheerio object containing the return values. The function can return an\n * individual data item or an array of data items to be inserted into the\n * resulting set. If an array is returned, the elements inside the array are\n * inserted into the set. If the function returns null or undefined, no element\n * will be inserted.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('li')\n * .map(function (i, el) {\n * // this === el\n * return $(this).text();\n * })\n * .toArray()\n * .join(' ');\n * //=> \"apple orange pear\"\n * ```\n *\n * @param fn - Function to execute.\n * @returns The mapped elements, wrapped in a Cheerio collection.\n * @see {@link https://api.jquery.com/map/}\n */\nfunction map(fn) {\n var elems = [];\n for (var i = 0; i < this.length; i++) {\n var el = this[i];\n var val = fn.call(el, i, el);\n if (val != null) {\n elems = elems.concat(val);\n }\n }\n return this._make(elems);\n}\nexports.map = map;\n/**\n * Creates a function to test if a filter is matched.\n *\n * @param match - A filter.\n * @returns A function that determines if a filter has been matched.\n */\nfunction getFilterFn(match) {\n if (typeof match === 'function') {\n return function (el, i) { return match.call(el, i, el); };\n }\n if (utils_1.isCheerio(match)) {\n return function (el) { return Array.prototype.includes.call(match, el); };\n }\n return function (el) {\n return match === el;\n };\n}\nfunction filter(match) {\n var _a;\n return this._make(filterArray(this.toArray(), match, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]));\n}\nexports.filter = filter;\nfunction filterArray(nodes, match, xmlMode, root) {\n return typeof match === 'string'\n ? select.filter(match, nodes, { xmlMode: xmlMode, root: root })\n : nodes.filter(getFilterFn(match));\n}\nexports.filterArray = filterArray;\n/**\n * Checks the current list of elements and returns `true` if *any* of the\n * elements match the selector. If using an element or Cheerio selection,\n * returns `true` if *any* of the elements match. If using a predicate function,\n * the function is executed in the context of the selected element, so `this`\n * refers to the current element.\n *\n * @category Attributes\n * @param selector - Selector for the selection.\n * @returns Whether or not the selector matches an element of the instance.\n * @see {@link https://api.jquery.com/is/}\n */\nfunction is(selector) {\n var nodes = this.toArray();\n return typeof selector === 'string'\n ? select.some(nodes.filter(utils_1.isTag), selector, this.options)\n : selector\n ? nodes.some(getFilterFn(selector))\n : false;\n}\nexports.is = is;\n/**\n * Remove elements from the set of matched elements. Given a Cheerio object that\n * represents a set of DOM elements, the `.not()` method constructs a new\n * Cheerio object from a subset of the matching elements. The supplied selector\n * is tested against each element; the elements that don't match the selector\n * will be included in the result.\n *\n * The `.not()` method can take a function as its argument in the same way that\n * `.filter()` does. Elements for which the function returns `true` are excluded\n * from the filtered set; all other elements are included.\n *\n * @category Traversing\n * @example <caption>Selector</caption>\n *\n * ```js\n * $('li').not('.apple').length;\n * //=> 2\n * ```\n *\n * @example <caption>Function</caption>\n *\n * ```js\n * $('li').not(function (i, el) {\n * // this === el\n * return $(this).attr('class') === 'orange';\n * }).length; //=> 2\n * ```\n *\n * @param match - Value to look for, following the rules above.\n * @param container - Optional node to filter instead.\n * @returns The filtered collection.\n * @see {@link https://api.jquery.com/not/}\n */\nfunction not(match) {\n var nodes = this.toArray();\n if (typeof match === 'string') {\n var matches_1 = new Set(select.filter(match, nodes, this.options));\n nodes = nodes.filter(function (el) { return !matches_1.has(el); });\n }\n else {\n var filterFn_1 = getFilterFn(match);\n nodes = nodes.filter(function (el, i) { return !filterFn_1(el, i); });\n }\n return this._make(nodes);\n}\nexports.not = not;\n/**\n * Filters the set of matched elements to only those which have the given DOM\n * element as a descendant or which have a descendant that matches the given\n * selector. Equivalent to `.filter(':has(selector)')`.\n *\n * @category Traversing\n * @example <caption>Selector</caption>\n *\n * ```js\n * $('ul').has('.pear').attr('id');\n * //=> fruits\n * ```\n *\n * @example <caption>Element</caption>\n *\n * ```js\n * $('ul').has($('.pear')[0]).attr('id');\n * //=> fruits\n * ```\n *\n * @param selectorOrHaystack - Element to look for.\n * @returns The filtered collection.\n * @see {@link https://api.jquery.com/has/}\n */\nfunction has(selectorOrHaystack) {\n var _this = this;\n return this.filter(typeof selectorOrHaystack === 'string'\n ? // Using the `:has` selector here short-circuits searches.\n \":has(\" + selectorOrHaystack + \")\"\n : function (_, el) { return _this._make(el).find(selectorOrHaystack).length > 0; });\n}\nexports.has = has;\n/**\n * Will select the first element of a cheerio object.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('#fruits').children().first().text();\n * //=> Apple\n * ```\n *\n * @returns The first element.\n * @see {@link https://api.jquery.com/first/}\n */\nfunction first() {\n return this.length > 1 ? this._make(this[0]) : this;\n}\nexports.first = first;\n/**\n * Will select the last element of a cheerio object.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('#fruits').children().last().text();\n * //=> Pear\n * ```\n *\n * @returns The last element.\n * @see {@link https://api.jquery.com/last/}\n */\nfunction last() {\n return this.length > 0 ? this._make(this[this.length - 1]) : this;\n}\nexports.last = last;\n/**\n * Reduce the set of matched elements to the one at the specified index. Use\n * `.eq(-i)` to count backwards from the last selected element.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('li').eq(0).text();\n * //=> Apple\n *\n * $('li').eq(-1).text();\n * //=> Pear\n * ```\n *\n * @param i - Index of the element to select.\n * @returns The element at the `i`th position.\n * @see {@link https://api.jquery.com/eq/}\n */\nfunction eq(i) {\n var _a;\n i = +i;\n // Use the first identity optimization if possible\n if (i === 0 && this.length <= 1)\n return this;\n if (i < 0)\n i = this.length + i;\n return this._make((_a = this[i]) !== null && _a !== void 0 ? _a : []);\n}\nexports.eq = eq;\nfunction get(i) {\n if (i == null) {\n return this.toArray();\n }\n return this[i < 0 ? this.length + i : i];\n}\nexports.get = get;\n/**\n * Retrieve all the DOM elements contained in the jQuery set as an array.\n *\n * @example\n *\n * ```js\n * $('li').toArray();\n * //=> [ {...}, {...}, {...} ]\n * ```\n *\n * @returns The contained items.\n */\nfunction toArray() {\n return Array.prototype.slice.call(this);\n}\nexports.toArray = toArray;\n/**\n * Search for a given element from among the matched elements.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.pear').index();\n * //=> 2 $('.orange').index('li');\n * //=> 1\n * $('.apple').index($('#fruit, li'));\n * //=> 1\n * ```\n *\n * @param selectorOrNeedle - Element to look for.\n * @returns The index of the element.\n * @see {@link https://api.jquery.com/index/}\n */\nfunction index(selectorOrNeedle) {\n var $haystack;\n var needle;\n if (selectorOrNeedle == null) {\n $haystack = this.parent().children();\n needle = this[0];\n }\n else if (typeof selectorOrNeedle === 'string') {\n $haystack = this._make(selectorOrNeedle);\n needle = this[0];\n }\n else {\n $haystack = this;\n needle = utils_1.isCheerio(selectorOrNeedle)\n ? selectorOrNeedle[0]\n : selectorOrNeedle;\n }\n return Array.prototype.indexOf.call($haystack, needle);\n}\nexports.index = index;\n/**\n * Gets the elements matching the specified range (0-based position).\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('li').slice(1).eq(0).text();\n * //=> 'Orange'\n *\n * $('li').slice(1, 2).length;\n * //=> 1\n * ```\n *\n * @param start - An position at which the elements begin to be selected. If\n * negative, it indicates an offset from the end of the set.\n * @param end - An position at which the elements stop being selected. If\n * negative, it indicates an offset from the end of the set. If omitted, the\n * range continues until the end of the set.\n * @returns The elements matching the specified range.\n * @see {@link https://api.jquery.com/slice/}\n */\nfunction slice(start, end) {\n return this._make(Array.prototype.slice.call(this, start, end));\n}\nexports.slice = slice;\n/**\n * End the most recent filtering operation in the current chain and return the\n * set of matched elements to its previous state.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('li').eq(0).end().length;\n * //=> 3\n * ```\n *\n * @returns The previous state of the set of matched elements.\n * @see {@link https://api.jquery.com/end/}\n */\nfunction end() {\n var _a;\n return (_a = this.prevObject) !== null && _a !== void 0 ? _a : this._make([]);\n}\nexports.end = end;\n/**\n * Add elements to the set of matched elements.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('.apple').add('.orange').length;\n * //=> 2\n * ```\n *\n * @param other - Elements to add.\n * @param context - Optionally the context of the new selection.\n * @returns The combined set.\n * @see {@link https://api.jquery.com/add/}\n */\nfunction add(other, context) {\n var selection = this._make(other, context);\n var contents = uniqueSort(tslib_1.__spreadArray(tslib_1.__spreadArray([], this.get()), selection.get()));\n return this._make(contents);\n}\nexports.add = add;\n/**\n * Add the previous set of elements on the stack to the current set, optionally\n * filtered by a selector.\n *\n * @category Traversing\n * @example\n *\n * ```js\n * $('li').eq(0).addBack('.orange').length;\n * //=> 2\n * ```\n *\n * @param selector - Selector for the elements to add.\n * @returns The combined set.\n * @see {@link https://api.jquery.com/addBack/}\n */\nfunction addBack(selector) {\n return this.prevObject\n ? this.add(selector ? this.prevObject.filter(selector) : this.prevObject)\n : this;\n}\nexports.addBack = addBack;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Cheerio = void 0;\nvar tslib_1 = require(\"tslib\");\nvar parse_1 = tslib_1.__importDefault(require(\"./parse\"));\nvar options_1 = tslib_1.__importDefault(require(\"./options\"));\nvar utils_1 = require(\"./utils\");\nvar Attributes = tslib_1.__importStar(require(\"./api/attributes\"));\nvar Traversing = tslib_1.__importStar(require(\"./api/traversing\"));\nvar Manipulation = tslib_1.__importStar(require(\"./api/manipulation\"));\nvar Css = tslib_1.__importStar(require(\"./api/css\"));\nvar Forms = tslib_1.__importStar(require(\"./api/forms\"));\nvar Cheerio = /** @class */ (function () {\n /**\n * Instance of cheerio. Methods are specified in the modules. Usage of this\n * constructor is not recommended. Please use $.load instead.\n *\n * @private\n * @param selector - The new selection.\n * @param context - Context of the selection.\n * @param root - Sets the root node.\n * @param options - Options for the instance.\n */\n function Cheerio(selector, context, root, options) {\n var _this = this;\n if (options === void 0) { options = options_1.default; }\n this.length = 0;\n this.options = options;\n // $(), $(null), $(undefined), $(false)\n if (!selector)\n return this;\n if (root) {\n if (typeof root === 'string')\n root = parse_1.default(root, this.options, false);\n this._root = new this.constructor(root, null, null, this.options);\n // Add a cyclic reference, so that calling methods on `_root` never fails.\n this._root._root = this._root;\n }\n // $($)\n if (utils_1.isCheerio(selector))\n return selector;\n var elements = typeof selector === 'string' && utils_1.isHtml(selector)\n ? // $(<html>)\n parse_1.default(selector, this.options, false).children\n : isNode(selector)\n ? // $(dom)\n [selector]\n : Array.isArray(selector)\n ? // $([dom])\n selector\n : null;\n if (elements) {\n elements.forEach(function (elem, idx) {\n _this[idx] = elem;\n });\n this.length = elements.length;\n return this;\n }\n // We know that our selector is a string now.\n var search = selector;\n var searchContext = !context\n ? // If we don't have a context, maybe we have a root, from loading\n this._root\n : typeof context === 'string'\n ? utils_1.isHtml(context)\n ? // $('li', '<ul>...</ul>')\n this._make(parse_1.default(context, this.options, false))\n : // $('li', 'ul')\n ((search = context + \" \" + search), this._root)\n : utils_1.isCheerio(context)\n ? // $('li', $)\n context\n : // $('li', node), $('li', [nodes])\n this._make(context);\n // If we still don't have a context, return\n if (!searchContext)\n return this;\n /*\n * #id, .class, tag\n */\n // @ts-expect-error No good way to type this — we will always return `Cheerio<Element>` here.\n return searchContext.find(search);\n }\n /**\n * Make a cheerio object.\n *\n * @private\n * @param dom - The contents of the new object.\n * @param context - The context of the new object.\n * @returns The new cheerio object.\n */\n Cheerio.prototype._make = function (dom, context) {\n var cheerio = new this.constructor(dom, context, this._root, this.options);\n cheerio.prevObject = this;\n return cheerio;\n };\n return Cheerio;\n}());\nexports.Cheerio = Cheerio;\n/** Set a signature of the object. */\nCheerio.prototype.cheerio = '[cheerio object]';\n/*\n * Make cheerio an array-like object\n */\nCheerio.prototype.splice = Array.prototype.splice;\n// Support for (const element of $(...)) iteration:\nCheerio.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];\n// Plug in the API\nObject.assign(Cheerio.prototype, Attributes, Traversing, Manipulation, Css, Forms);\nfunction isNode(obj) {\n return (!!obj.name ||\n obj.type === 'root' ||\n obj.type === 'text' ||\n obj.type === 'comment');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.root = exports.parseHTML = exports.merge = exports.contains = void 0;\nvar tslib_1 = require(\"tslib\");\n/**\n * Types used in signatures of Cheerio methods.\n *\n * @category Cheerio\n */\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./load\"), exports);\nvar load_1 = require(\"./load\");\n/**\n * The default cheerio instance.\n *\n * @deprecated Use the function returned by `load` instead.\n */\nexports.default = load_1.load([]);\nvar staticMethods = tslib_1.__importStar(require(\"./static\"));\n/**\n * In order to promote consistency with the jQuery library, users are encouraged\n * to instead use the static method of the same name.\n *\n * @deprecated\n * @example\n *\n * ```js\n * const $ = cheerio.load('<div><p></p></div>');\n *\n * $.contains($('div').get(0), $('p').get(0));\n * //=> true\n *\n * $.contains($('p').get(0), $('div').get(0));\n * //=> false\n * ```\n *\n * @returns {boolean}\n */\nexports.contains = staticMethods.contains;\n/**\n * In order to promote consistency with the jQuery library, users are encouraged\n * to instead use the static method of the same name.\n *\n * @deprecated\n * @example\n *\n * ```js\n * const $ = cheerio.load('');\n *\n * $.merge([1, 2], [3, 4]);\n * //=> [1, 2, 3, 4]\n * ```\n */\nexports.merge = staticMethods.merge;\n/**\n * In order to promote consistency with the jQuery library, users are encouraged\n * to instead use the static method of the same name as it is defined on the\n * \"loaded\" Cheerio factory function.\n *\n * @deprecated See {@link static/parseHTML}.\n * @example\n *\n * ```js\n * const $ = cheerio.load('');\n * $.parseHTML('<b>markup</b>');\n * ```\n */\nexports.parseHTML = staticMethods.parseHTML;\n/**\n * Users seeking to access the top-level element of a parsed document should\n * instead use the `root` static method of a \"loaded\" Cheerio function.\n *\n * @deprecated\n * @example\n *\n * ```js\n * const $ = cheerio.load('');\n * $.root();\n * ```\n */\nexports.root = staticMethods.root;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.load = void 0;\nvar tslib_1 = require(\"tslib\");\nvar options_1 = tslib_1.__importStar(require(\"./options\"));\nvar staticMethods = tslib_1.__importStar(require(\"./static\"));\nvar cheerio_1 = require(\"./cheerio\");\nvar parse_1 = tslib_1.__importDefault(require(\"./parse\"));\n/**\n * Create a querying function, bound to a document created from the provided\n * markup. Note that similar to web browser contexts, this operation may\n * introduce `<html>`, `<head>`, and `<body>` elements; set `isDocument` to\n * `false` to switch to fragment mode and disable this.\n *\n * @param content - Markup to be loaded.\n * @param options - Options for the created instance.\n * @param isDocument - Allows parser to be switched to fragment mode.\n * @returns The loaded document.\n * @see {@link https://cheerio.js.org#loading} for additional usage information.\n */\nfunction load(content, options, isDocument) {\n if (isDocument === void 0) { isDocument = true; }\n if (content == null) {\n throw new Error('cheerio.load() expects a string');\n }\n var internalOpts = tslib_1.__assign(tslib_1.__assign({}, options_1.default), options_1.flatten(options));\n var root = parse_1.default(content, internalOpts, isDocument);\n /** Create an extended class here, so that extensions only live on one instance. */\n var LoadedCheerio = /** @class */ (function (_super) {\n tslib_1.__extends(LoadedCheerio, _super);\n function LoadedCheerio() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return LoadedCheerio;\n }(cheerio_1.Cheerio));\n function initialize(selector, context, r, opts) {\n if (r === void 0) { r = root; }\n return new LoadedCheerio(selector, context, r, tslib_1.__assign(tslib_1.__assign({}, internalOpts), options_1.flatten(opts)));\n }\n // Add in static methods & properties\n Object.assign(initialize, staticMethods, {\n load: load,\n // `_root` and `_options` are used in static methods.\n _root: root,\n _options: internalOpts,\n // Add `fn` for plugins\n fn: LoadedCheerio.prototype,\n // Add the prototype here to maintain `instanceof` behavior.\n prototype: LoadedCheerio.prototype,\n });\n return initialize;\n}\nexports.load = load;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatten = void 0;\nvar tslib_1 = require(\"tslib\");\nvar defaultOpts = {\n xml: false,\n decodeEntities: true,\n};\n/** Cheerio default options. */\nexports.default = defaultOpts;\nvar xmlModeDefault = {\n _useHtmlParser2: true,\n xmlMode: true,\n};\nfunction flatten(options) {\n return (options === null || options === void 0 ? void 0 : options.xml)\n ? typeof options.xml === 'boolean'\n ? xmlModeDefault\n : tslib_1.__assign(tslib_1.__assign({}, xmlModeDefault), options.xml)\n : options !== null && options !== void 0 ? options : undefined;\n}\nexports.flatten = flatten;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.update = void 0;\nvar htmlparser2_1 = require(\"htmlparser2\");\nvar htmlparser2_adapter_1 = require(\"./parsers/htmlparser2-adapter\");\nvar parse5_adapter_1 = require(\"./parsers/parse5-adapter\");\nvar domhandler_1 = require(\"domhandler\");\n/*\n * Parser\n */\nfunction parse(content, options, isDocument) {\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(content)) {\n content = content.toString();\n }\n if (typeof content === 'string') {\n return options.xmlMode || options._useHtmlParser2\n ? htmlparser2_adapter_1.parse(content, options)\n : parse5_adapter_1.parse(content, options, isDocument);\n }\n var doc = content;\n if (!Array.isArray(doc) && domhandler_1.isDocument(doc)) {\n // If `doc` is already a root, just return it\n return doc;\n }\n // Add conent to new root element\n var root = new domhandler_1.Document([]);\n // Update the DOM using the root\n update(doc, root);\n return root;\n}\nexports.default = parse;\n/**\n * Update the dom structure, for one changed layer.\n *\n * @param newChilds - The new children.\n * @param parent - The new parent.\n * @returns The parent node.\n */\nfunction update(newChilds, parent) {\n // Normalize\n var arr = Array.isArray(newChilds) ? newChilds : [newChilds];\n // Update parent\n if (parent) {\n parent.children = arr;\n }\n else {\n parent = null;\n }\n // Update neighbors\n for (var i = 0; i < arr.length; i++) {\n var node = arr[i];\n // Cleanly remove existing nodes from their previous structures.\n if (node.parent && node.parent.children !== arr) {\n htmlparser2_1.DomUtils.removeElement(node);\n }\n if (parent) {\n node.prev = arr[i - 1] || null;\n node.next = arr[i + 1] || null;\n }\n else {\n node.prev = node.next = null;\n }\n node.parent = parent;\n }\n return parent;\n}\nexports.update = update;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = exports.parse = void 0;\nvar htmlparser2_1 = require(\"htmlparser2\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return htmlparser2_1.parseDocument; } });\nvar dom_serializer_1 = require(\"dom-serializer\");\nObject.defineProperty(exports, \"render\", { enumerable: true, get: function () { return __importDefault(dom_serializer_1).default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = exports.parse = void 0;\nvar tslib_1 = require(\"tslib\");\nvar domhandler_1 = require(\"domhandler\");\nvar parse5_1 = require(\"parse5\");\nvar parse5_htmlparser2_tree_adapter_1 = tslib_1.__importDefault(require(\"parse5-htmlparser2-tree-adapter\"));\nfunction parse(content, options, isDocument) {\n var opts = {\n scriptingEnabled: typeof options.scriptingEnabled === 'boolean'\n ? options.scriptingEnabled\n : true,\n treeAdapter: parse5_htmlparser2_tree_adapter_1.default,\n sourceCodeLocationInfo: options.sourceCodeLocationInfo,\n };\n var context = options.context;\n // @ts-expect-error The tree adapter unfortunately doesn't return the exact types.\n return isDocument\n ? parse5_1.parse(content, opts)\n : // @ts-expect-error Same issue again.\n parse5_1.parseFragment(context, content, opts);\n}\nexports.parse = parse;\nfunction render(dom) {\n var _a;\n /*\n * `dom-serializer` passes over the special \"root\" node and renders the\n * node's children in its place. To mimic this behavior with `parse5`, an\n * equivalent operation must be applied to the input array.\n */\n var nodes = 'length' in dom ? dom : [dom];\n for (var index = 0; index < nodes.length; index += 1) {\n var node = nodes[index];\n if (domhandler_1.isDocument(node)) {\n (_a = Array.prototype.splice).call.apply(_a, tslib_1.__spreadArray([nodes, index, 1], node.children));\n }\n }\n // @ts-expect-error Types don't align here either.\n return parse5_1.serialize({ children: nodes }, { treeAdapter: parse5_htmlparser2_tree_adapter_1.default });\n}\nexports.render = render;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = exports.contains = exports.root = exports.parseHTML = exports.text = exports.xml = exports.html = void 0;\nvar tslib_1 = require(\"tslib\");\nvar options_1 = tslib_1.__importStar(require(\"./options\"));\nvar cheerio_select_1 = require(\"cheerio-select\");\nvar htmlparser2_1 = require(\"htmlparser2\");\nvar parse5_adapter_1 = require(\"./parsers/parse5-adapter\");\nvar htmlparser2_adapter_1 = require(\"./parsers/htmlparser2-adapter\");\n/**\n * Helper function to render a DOM.\n *\n * @param that - Cheerio instance to render.\n * @param dom - The DOM to render. Defaults to `that`'s root.\n * @param options - Options for rendering.\n * @returns The rendered document.\n */\nfunction render(that, dom, options) {\n var _a;\n var toRender = dom\n ? typeof dom === 'string'\n ? cheerio_select_1.select(dom, (_a = that === null || that === void 0 ? void 0 : that._root) !== null && _a !== void 0 ? _a : [], options)\n : dom\n : that === null || that === void 0 ? void 0 : that._root.children;\n if (!toRender)\n return '';\n return options.xmlMode || options._useHtmlParser2\n ? htmlparser2_adapter_1.render(toRender, options)\n : parse5_adapter_1.render(toRender);\n}\n/**\n * Checks if a passed object is an options object.\n *\n * @param dom - Object to check if it is an options object.\n * @returns Whether the object is an options object.\n */\nfunction isOptions(dom) {\n return (typeof dom === 'object' &&\n dom != null &&\n !('length' in dom) &&\n !('type' in dom));\n}\nfunction html(dom, options) {\n /*\n * Be flexible about parameters, sometimes we call html(),\n * with options as only parameter\n * check dom argument for dom element specific properties\n * assume there is no 'length' or 'type' properties in the options object\n */\n if (!options && isOptions(dom)) {\n options = dom;\n dom = undefined;\n }\n /*\n * Sometimes `$.html()` is used without preloading html,\n * so fallback non-existing options to the default ones.\n */\n var opts = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, options_1.default), (this ? this._options : {})), options_1.flatten(options !== null && options !== void 0 ? options : {}));\n return render(this || undefined, dom, opts);\n}\nexports.html = html;\n/**\n * Render the document as XML.\n *\n * @param dom - Element to render.\n * @returns THe rendered document.\n */\nfunction xml(dom) {\n var options = tslib_1.__assign(tslib_1.__assign({}, this._options), { xmlMode: true });\n return render(this, dom, options);\n}\nexports.xml = xml;\n/**\n * Render the document as text.\n *\n * @param elements - Elements to render.\n * @returns The rendered document.\n */\nfunction text(elements) {\n var elems = elements ? elements : this ? this.root() : [];\n var ret = '';\n for (var i = 0; i < elems.length; i++) {\n var elem = elems[i];\n if (htmlparser2_1.DomUtils.isText(elem))\n ret += elem.data;\n else if (htmlparser2_1.DomUtils.hasChildren(elem) &&\n elem.type !== htmlparser2_1.ElementType.Comment &&\n elem.type !== htmlparser2_1.ElementType.Script &&\n elem.type !== htmlparser2_1.ElementType.Style) {\n ret += text(elem.children);\n }\n }\n return ret;\n}\nexports.text = text;\nfunction parseHTML(data, context, keepScripts) {\n if (keepScripts === void 0) { keepScripts = typeof context === 'boolean' ? context : false; }\n if (!data || typeof data !== 'string') {\n return null;\n }\n if (typeof context === 'boolean') {\n keepScripts = context;\n }\n var parsed = this.load(data, options_1.default, false);\n if (!keepScripts) {\n parsed('script').remove();\n }\n /*\n * The `children` array is used by Cheerio internally to group elements that\n * share the same parents. When nodes created through `parseHTML` are\n * inserted into previously-existing DOM structures, they will be removed\n * from the `children` array. The results of `parseHTML` should remain\n * constant across these operations, so a shallow copy should be returned.\n */\n return parsed.root()[0].children.slice();\n}\nexports.parseHTML = parseHTML;\n/**\n * Sometimes you need to work with the top-level root element. To query it, you\n * can use `$.root()`.\n *\n * @example\n *\n * ```js\n * $.root().append('<ul id=\"vegetables\"></ul>').html();\n * //=> <ul id=\"fruits\">...</ul><ul id=\"vegetables\"></ul>\n * ```\n *\n * @returns Cheerio instance wrapping the root node.\n * @alias Cheerio.root\n */\nfunction root() {\n return this(this._root);\n}\nexports.root = root;\n/**\n * Checks to see if the `contained` DOM element is a descendant of the\n * `container` DOM element.\n *\n * @param container - Potential parent node.\n * @param contained - Potential child node.\n * @returns Indicates if the nodes contain one another.\n * @alias Cheerio.contains\n * @see {@link https://api.jquery.com/jQuery.contains/}\n */\nfunction contains(container, contained) {\n // According to the jQuery API, an element does not \"contain\" itself\n if (contained === container) {\n return false;\n }\n /*\n * Step up the descendants, stopping when the root element is reached\n * (signaled by `.parent` returning a reference to the same object)\n */\n var next = contained;\n while (next && next !== next.parent) {\n next = next.parent;\n if (next === container) {\n return true;\n }\n }\n return false;\n}\nexports.contains = contains;\n/**\n * $.merge().\n *\n * @param arr1 - First array.\n * @param arr2 - Second array.\n * @returns `arr1`, with elements of `arr2` inserted.\n * @alias Cheerio.merge\n * @see {@link https://api.jquery.com/jQuery.merge/}\n */\nfunction merge(arr1, arr2) {\n if (!isArrayLike(arr1) || !isArrayLike(arr2)) {\n return;\n }\n var newLength = arr1.length;\n var len = +arr2.length;\n for (var i = 0; i < len; i++) {\n arr1[newLength++] = arr2[i];\n }\n arr1.length = newLength;\n return arr1;\n}\nexports.merge = merge;\n/**\n * @param item - Item to check.\n * @returns Indicates if the item is array-like.\n */\nfunction isArrayLike(item) {\n if (Array.isArray(item)) {\n return true;\n }\n if (typeof item !== 'object' ||\n !Object.prototype.hasOwnProperty.call(item, 'length') ||\n typeof item.length !== 'number' ||\n item.length < 0) {\n return false;\n }\n for (var i = 0; i < item.length; i++) {\n if (!(i in item)) {\n return false;\n }\n }\n return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isHtml = exports.cloneDom = exports.domEach = exports.cssCase = exports.camelCase = exports.isCheerio = exports.isTag = void 0;\nvar htmlparser2_1 = require(\"htmlparser2\");\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Check if the DOM element is a tag.\n *\n * `isTag(type)` includes `<script>` and `<style>` tags.\n *\n * @private\n * @category Utils\n * @param type - DOM node to check.\n * @returns Whether the node is a tag.\n */\nexports.isTag = htmlparser2_1.DomUtils.isTag;\n/**\n * Checks if an object is a Cheerio instance.\n *\n * @category Utils\n * @param maybeCheerio - The object to check.\n * @returns Whether the object is a Cheerio instance.\n */\nfunction isCheerio(maybeCheerio) {\n return maybeCheerio.cheerio != null;\n}\nexports.isCheerio = isCheerio;\n/**\n * Convert a string to camel case notation.\n *\n * @private\n * @category Utils\n * @param str - String to be converted.\n * @returns String in camel case notation.\n */\nfunction camelCase(str) {\n return str.replace(/[_.-](\\w|$)/g, function (_, x) { return x.toUpperCase(); });\n}\nexports.camelCase = camelCase;\n/**\n * Convert a string from camel case to \"CSS case\", where word boundaries are\n * described by hyphens (\"-\") and all characters are lower-case.\n *\n * @private\n * @category Utils\n * @param str - String to be converted.\n * @returns String in \"CSS case\".\n */\nfunction cssCase(str) {\n return str.replace(/[A-Z]/g, '-$&').toLowerCase();\n}\nexports.cssCase = cssCase;\n/**\n * Iterate over each DOM element without creating intermediary Cheerio instances.\n *\n * This is indented for use internally to avoid otherwise unnecessary memory\n * pressure introduced by _make.\n *\n * @category Utils\n * @param array - Array to iterate over.\n * @param fn - Function to call.\n * @returns The original instance.\n */\nfunction domEach(array, fn) {\n var len = array.length;\n for (var i = 0; i < len; i++)\n fn(array[i], i);\n return array;\n}\nexports.domEach = domEach;\n/**\n * Create a deep copy of the given DOM structure. Sets the parents of the copies\n * of the passed nodes to `null`.\n *\n * @private\n * @category Utils\n * @param dom - The htmlparser2-compliant DOM structure.\n * @returns - The cloned DOM.\n */\nfunction cloneDom(dom) {\n var clone = 'length' in dom\n ? Array.prototype.map.call(dom, function (el) { return domhandler_1.cloneNode(el, true); })\n : [domhandler_1.cloneNode(dom, true)];\n // Add a root node around the cloned nodes\n var root = new domhandler_1.Document(clone);\n clone.forEach(function (node) {\n node.parent = root;\n });\n return clone;\n}\nexports.cloneDom = cloneDom;\n/**\n * A simple way to check for HTML strings. Tests for a `<` within a string,\n * immediate followed by a letter and eventually followed by a `>`.\n *\n * @private\n */\nvar quickExpr = /<[a-zA-Z][^]*>/;\n/**\n * Check if string is HTML.\n *\n * @private\n * @category Utils\n * @param str - String to check.\n * @returns Indicates if `str` is HTML.\n */\nfunction isHtml(str) {\n // Run the regex\n return quickExpr.test(str);\n}\nexports.isHtml = isHtml;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeRules = void 0;\nvar boolbase_1 = require(\"boolbase\");\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nvar reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nvar caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexports.attributeRules = {\n equals: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return function (elem) {\n return adapter.getAttributeValue(elem, name) === value && next(elem);\n };\n },\n hyphen: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name, value = data.value;\n if (/\\s/.test(value)) {\n return boolbase_1.falseFunc;\n }\n var regex = new RegExp(\"(?:^|\\\\s)\".concat(escapeRegex(value), \"(?:$|\\\\s)\"), shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists: function (next, _a, _b) {\n var name = _a.name;\n var adapter = _b.adapter;\n return function (elem) { return adapter.hasAttrib(elem, name) && next(elem); };\n },\n start: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = value.length;\n if (len === 0) {\n return boolbase_1.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function (elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = -value.length;\n if (len === 0) {\n return boolbase_1.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return function (elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name, value = data.value;\n if (value === \"\") {\n return boolbase_1.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n var regex_1 = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex_1.test(attr) &&\n next(elem));\n };\n }\n return function (elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n if (value === \"\") {\n return function (elem) {\n return !!adapter.getAttributeValue(elem, name) && next(elem);\n };\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return function (elem) {\n return adapter.getAttributeValue(elem, name) !== value && next(elem);\n };\n },\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compileToken = exports.compileUnsafe = exports.compile = void 0;\nvar css_what_1 = require(\"css-what\");\nvar boolbase_1 = require(\"boolbase\");\nvar sort_1 = __importDefault(require(\"./sort\"));\nvar procedure_1 = require(\"./procedure\");\nvar general_1 = require(\"./general\");\nvar subselects_1 = require(\"./pseudo-selectors/subselects\");\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nfunction compile(selector, options, context) {\n var next = compileUnsafe(selector, options, context);\n return (0, subselects_1.ensureIsTag)(next, options.adapter);\n}\nexports.compile = compile;\nfunction compileUnsafe(selector, options, context) {\n var token = typeof selector === \"string\" ? (0, css_what_1.parse)(selector) : selector;\n return compileToken(token, options, context);\n}\nexports.compileUnsafe = compileUnsafe;\nfunction includesScopePseudo(t) {\n return (t.type === \"pseudo\" &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some(function (data) { return data.some(includesScopePseudo); }))));\n}\nvar DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant };\nvar FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nvar SCOPE_TOKEN = {\n type: css_what_1.SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.3.1. Absolutizing a Scope-relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, _a, context) {\n var adapter = _a.adapter;\n // TODO Use better check if the context is a document\n var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function (e) {\n var parent = adapter.isTag(e) && adapter.getParent(e);\n return e === subselects_1.PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (var _i = 0, token_1 = token; _i < token_1.length; _i++) {\n var t = token_1[_i];\n if (t.length > 0 && (0, procedure_1.isTraversal)(t[0]) && t[0].type !== \"descendant\") {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nfunction compileToken(token, options, context) {\n var _a;\n token = token.filter(function (t) { return t.length > 0; });\n token.forEach(sort_1.default);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n var isArrayContext = Array.isArray(context);\n var finalContext = context && (Array.isArray(context) ? context : [context]);\n absolutize(token, options, finalContext);\n var shouldTestNextSiblings = false;\n var query = token\n .map(function (rules) {\n if (rules.length >= 2) {\n var first = rules[0], second = rules[1];\n if (first.type !== \"pseudo\" || first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext && second.type === \"descendant\") {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === \"adjacent\" ||\n second.type === \"sibling\") {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase_1.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nexports.compileToken = compileToken;\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce(function (previous, rule) {\n return previous === boolbase_1.falseFunc\n ? boolbase_1.falseFunc\n : (0, general_1.compileGeneralSelector)(previous, rule, options, context, compileToken);\n }, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase_1.falseFunc || a === boolbase_1.trueFunc) {\n return a;\n }\n if (a === boolbase_1.falseFunc || b === boolbase_1.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compileGeneralSelector = void 0;\nvar attributes_1 = require(\"./attributes\");\nvar pseudo_selectors_1 = require(\"./pseudo-selectors\");\nvar css_what_1 = require(\"css-what\");\n/*\n * All available rules\n */\nfunction compileGeneralSelector(next, selector, options, context, compileToken) {\n var adapter = options.adapter, equals = options.equals;\n switch (selector.type) {\n case css_what_1.SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case css_what_1.SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case css_what_1.SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributes_1.attributeRules[selector.action](next, selector, options);\n }\n case css_what_1.SelectorType.Pseudo: {\n return (0, pseudo_selectors_1.compilePseudoSelector)(next, selector, options, context, compileToken);\n }\n // Tags\n case css_what_1.SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n var name_1 = selector.name;\n if (!options.xmlMode || options.lowerCaseTags) {\n name_1 = name_1.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name_1 && next(elem);\n };\n }\n // Traversal\n case css_what_1.SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n var current = elem;\n while ((current = adapter.getParent(current))) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n var isFalseCache_1 = new WeakSet();\n return function cachedDescendant(elem) {\n var current = elem;\n while ((current = adapter.getParent(current))) {\n if (!isFalseCache_1.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache_1.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n var current = elem;\n do {\n if (adapter.isTag(current) && next(current))\n return true;\n } while ((current = adapter.getParent(current)));\n return false;\n };\n }\n case css_what_1.SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some(function (elem) { return adapter.isTag(elem) && next(elem); });\n };\n }\n case css_what_1.SelectorType.Child: {\n return function child(elem) {\n var parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case css_what_1.SelectorType.Sibling: {\n return function sibling(elem) {\n var siblings = adapter.getSiblings(elem);\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case css_what_1.SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n var previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n var siblings = adapter.getSiblings(elem);\n var lastElement;\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case css_what_1.SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\nexports.compileGeneralSelector = compileGeneralSelector;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aliases = exports.pseudos = exports.filters = exports.is = exports.selectOne = exports.selectAll = exports.prepareContext = exports._compileToken = exports._compileUnsafe = exports.compile = void 0;\nvar DomUtils = __importStar(require(\"domutils\"));\nvar boolbase_1 = require(\"boolbase\");\nvar compile_1 = require(\"./compile\");\nvar subselects_1 = require(\"./pseudo-selectors/subselects\");\nvar defaultEquals = function (a, b) { return a === b; };\nvar defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n var opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_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);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n var opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexports.compile = wrapCompile(compile_1.compile);\nexports._compileUnsafe = wrapCompile(compile_1.compileUnsafe);\nexports._compileToken = wrapCompile(compile_1.compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n var opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = (0, compile_1.compileUnsafe)(query, opts, elements);\n }\n var filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nfunction prepareContext(elems, adapter, shouldTestNextSiblings) {\n if (shouldTestNextSiblings === void 0) { shouldTestNextSiblings = false; }\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nexports.prepareContext = prepareContext;\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n var elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n var elemsLength = elems.length;\n for (var i = 0; i < elemsLength; i++) {\n var nextSiblings = (0, subselects_1.getNextSiblings)(elems[i], adapter);\n elems.push.apply(elems, nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexports.selectAll = getSelectorFunc(function (query, elems, options) {\n return query === boolbase_1.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems);\n});\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexports.selectOne = getSelectorFunc(function (query, elems, options) {\n return query === boolbase_1.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems);\n});\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nfunction is(elem, query, options) {\n var opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : (0, compile_1.compile)(query, opts))(elem);\n}\nexports.is = is;\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexports.default = exports.selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\nvar pseudo_selectors_1 = require(\"./pseudo-selectors\");\nObject.defineProperty(exports, \"filters\", { enumerable: true, get: function () { return pseudo_selectors_1.filters; } });\nObject.defineProperty(exports, \"pseudos\", { enumerable: true, get: function () { return pseudo_selectors_1.pseudos; } });\nObject.defineProperty(exports, \"aliases\", { enumerable: true, get: function () { return pseudo_selectors_1.aliases; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTraversal = exports.procedure = void 0;\nexports.procedure = {\n universal: 50,\n tag: 30,\n attribute: 1,\n pseudo: 0,\n \"pseudo-element\": 0,\n \"column-combinator\": -1,\n descendant: -1,\n child: -1,\n parent: -1,\n sibling: -1,\n adjacent: -1,\n _flexibleDescendant: -1,\n};\nfunction isTraversal(t) {\n return exports.procedure[t.type] < 0;\n}\nexports.isTraversal = isTraversal;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aliases = void 0;\n/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexports.aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: \":is(\\n :is(button, input, select, textarea, optgroup, option)[disabled],\\n optgroup[disabled] > option,\\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\\n )\",\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filters = void 0;\nvar nth_check_1 = __importDefault(require(\"nth-check\"));\nvar boolbase_1 = require(\"boolbase\");\nfunction getChildFunc(next, adapter) {\n return function (elem) {\n var parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexports.filters = {\n contains: function (next, text, _a) {\n var adapter = _a.adapter;\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains: function (next, text, _a) {\n var adapter = _a.adapter;\n var itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = siblings.length - 1; i >= 0; i--) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root: function (next, _rule, _a) {\n var adapter = _a.adapter;\n return function (elem) {\n var parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope: function (next, rule, options, context) {\n var equals = options.equals;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return exports.filters.root(next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return function (elem) { return equals(context[0], elem) && next(elem); };\n }\n return function (elem) { return context.includes(elem) && next(elem); };\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, _a) {\n var adapter = _a.adapter;\n var func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase_1.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compilePseudoSelector = exports.aliases = exports.pseudos = exports.filters = void 0;\n/*\n * Pseudo selectors\n *\n * Pseudo selectors are available in three forms:\n *\n * 1. Filters are called when the selector is compiled and return a function\n * that has to return either false, or the results of `next()`.\n * 2. Pseudos are called on execution. They have to return a boolean.\n * 3. Subselects work like filters, but have an embedded selector that will be run separately.\n *\n * Filters are great if you want to do some pre-processing, or change the call order\n * of `next()` and your code.\n * Pseudos should be used to implement simple checks.\n */\nvar boolbase_1 = require(\"boolbase\");\nvar css_what_1 = require(\"css-what\");\nvar filters_1 = require(\"./filters\");\nObject.defineProperty(exports, \"filters\", { enumerable: true, get: function () { return filters_1.filters; } });\nvar pseudos_1 = require(\"./pseudos\");\nObject.defineProperty(exports, \"pseudos\", { enumerable: true, get: function () { return pseudos_1.pseudos; } });\nvar aliases_1 = require(\"./aliases\");\nObject.defineProperty(exports, \"aliases\", { enumerable: true, get: function () { return aliases_1.aliases; } });\nvar subselects_1 = require(\"./subselects\");\nfunction compilePseudoSelector(next, selector, options, context, compileToken) {\n var name = selector.name, data = selector.data;\n if (Array.isArray(data)) {\n return subselects_1.subselects[name](next, data, options, context, compileToken);\n }\n if (name in aliases_1.aliases) {\n if (data != null) {\n throw new Error(\"Pseudo \".concat(name, \" doesn't have any arguments\"));\n }\n // The alias has to be parsed here, to make sure options are respected.\n var alias = (0, css_what_1.parse)(aliases_1.aliases[name]);\n return subselects_1.subselects.is(next, alias, options, context, compileToken);\n }\n if (name in filters_1.filters) {\n return filters_1.filters[name](next, data, options, context);\n }\n if (name in pseudos_1.pseudos) {\n var pseudo_1 = pseudos_1.pseudos[name];\n (0, pseudos_1.verifyPseudoArgs)(pseudo_1, name, data);\n return pseudo_1 === boolbase_1.falseFunc\n ? boolbase_1.falseFunc\n : next === boolbase_1.trueFunc\n ? function (elem) { return pseudo_1(elem, options, data); }\n : function (elem) { return pseudo_1(elem, options, data) && next(elem); };\n }\n throw new Error(\"unmatched pseudo-class :\".concat(name));\n}\nexports.compilePseudoSelector = compilePseudoSelector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.verifyPseudoArgs = exports.pseudos = void 0;\n// While filters are precompiled, pseudos get called when they are needed\nexports.pseudos = {\n empty: function (elem, _a) {\n var adapter = _a.adapter;\n return !adapter.getChildren(elem).some(function (elem) {\n // FIXME: `getText` call is potentially expensive.\n return adapter.isTag(elem) || adapter.getText(elem) !== \"\";\n });\n },\n \"first-child\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var firstChild = adapter\n .getSiblings(elem)\n .find(function (elem) { return adapter.isTag(elem); });\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n for (var i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n var elemName = adapter.getName(elem);\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n var elemName = adapter.getName(elem);\n for (var i = siblings.length - 1; i >= 0; i--) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every(function (sibling) {\n return equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName;\n });\n },\n \"only-child\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n return adapter\n .getSiblings(elem)\n .every(function (sibling) { return equals(elem, sibling) || !adapter.isTag(sibling); });\n },\n};\nfunction verifyPseudoArgs(func, name, subselect) {\n if (subselect === null) {\n if (func.length > 2) {\n throw new Error(\"pseudo-selector :\".concat(name, \" requires an argument\"));\n }\n }\n else if (func.length === 2) {\n throw new Error(\"pseudo-selector :\".concat(name, \" doesn't have any arguments\"));\n }\n}\nexports.verifyPseudoArgs = verifyPseudoArgs;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subselects = exports.getNextSiblings = exports.ensureIsTag = exports.PLACEHOLDER_ELEMENT = void 0;\nvar boolbase_1 = require(\"boolbase\");\nvar procedure_1 = require(\"../procedure\");\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexports.PLACEHOLDER_ELEMENT = {};\nfunction ensureIsTag(next, adapter) {\n if (next === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n return function (elem) { return adapter.isTag(elem) && next(elem); };\n}\nexports.ensureIsTag = ensureIsTag;\nfunction getNextSiblings(elem, adapter) {\n var siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n var elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nexports.getNextSiblings = getNextSiblings;\nvar is = function (next, token, options, context, compileToken) {\n var opts = {\n xmlMode: !!options.xmlMode,\n adapter: options.adapter,\n equals: options.equals,\n };\n var func = compileToken(token, opts, context);\n return function (elem) { return func(elem) && next(elem); };\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexports.subselects = {\n is: is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not: function (next, token, options, context, compileToken) {\n var opts = {\n xmlMode: !!options.xmlMode,\n adapter: options.adapter,\n equals: options.equals,\n };\n var func = compileToken(token, opts, context);\n if (func === boolbase_1.falseFunc)\n return next;\n if (func === boolbase_1.trueFunc)\n return boolbase_1.falseFunc;\n return function not(elem) {\n return !func(elem) && next(elem);\n };\n },\n has: function (next, subselect, options, _context, compileToken) {\n var adapter = options.adapter;\n var opts = {\n xmlMode: !!options.xmlMode,\n adapter: adapter,\n equals: options.equals,\n };\n // @ts-expect-error Uses an array as a pointer to the current element (side effects)\n var context = subselect.some(function (s) {\n return s.some(procedure_1.isTraversal);\n })\n ? [exports.PLACEHOLDER_ELEMENT]\n : undefined;\n var compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (compiled === boolbase_1.trueFunc) {\n return function (elem) {\n return adapter.getChildren(elem).some(adapter.isTag) && next(elem);\n };\n }\n var hasElement = ensureIsTag(compiled, adapter);\n var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings = _a === void 0 ? false : _a;\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n if (context) {\n return function (elem) {\n context[0] = elem;\n var childs = adapter.getChildren(elem);\n var nextElements = shouldTestNextSiblings\n ? __spreadArray(__spreadArray([], childs, true), getNextSiblings(elem, adapter), true) : childs;\n return (next(elem) && adapter.existsOne(hasElement, nextElements));\n };\n }\n return function (elem) {\n return next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n };\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar css_what_1 = require(\"css-what\");\nvar procedure_1 = require(\"./procedure\");\nvar attributes = {\n exists: 10,\n equals: 8,\n not: 7,\n start: 6,\n end: 6,\n any: 5,\n hyphen: 4,\n element: 4,\n};\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nfunction sortByProcedure(arr) {\n var procs = arr.map(getProcedure);\n for (var i = 1; i < arr.length; i++) {\n var procNew = procs[i];\n if (procNew < 0)\n continue;\n for (var j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n var token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nexports.default = sortByProcedure;\nfunction getProcedure(token) {\n var proc = procedure_1.procedure[token.type];\n if (token.type === css_what_1.SelectorType.Attribute) {\n proc = attributes[token.action];\n if (proc === attributes.equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === css_what_1.SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // \"matches\" and \"not\"\n proc = 0;\n for (var i = 0; i < token.data.length; i++) {\n // TODO better handling of complex selectors\n if (token.data[i].length !== 1)\n continue;\n var cur = getProcedure(token.data[i][0]);\n // Avoid executing :has or :contains\n if (cur === 0) {\n proc = 0;\n break;\n }\n if (cur > proc)\n proc = cur;\n }\n if (token.data.length > 1 && proc > 0)\n proc -= 1;\n }\n else {\n proc = 1;\n }\n }\n return proc;\n}\n","export * from \"./types\";\nexport { isTraversal, parse } from \"./parse\";\nexport { stringify } from \"./stringify\";\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { SelectorType, AttributeAction } from \"./types\";\nconst attribValChars = [\"\\\\\", '\"'];\nconst pseudoValChars = [...attribValChars, \"(\", \")\"];\nconst charsToEscapeInAttributeValue = new Set(attribValChars.map((c) => c.charCodeAt(0)));\nconst charsToEscapeInPseudoValue = new Set(pseudoValChars.map((c) => c.charCodeAt(0)));\nconst charsToEscapeInName = new Set([\n ...pseudoValChars,\n \"~\",\n \"^\",\n \"$\",\n \"*\",\n \"+\",\n \"!\",\n \"|\",\n \":\",\n \"[\",\n \"]\",\n \" \",\n \".\",\n].map((c) => c.charCodeAt(0)));\n/**\n * Turns `selector` back into a string.\n *\n * @param selector Selector to stringify.\n */\nexport function stringify(selector) {\n return selector\n .map((token) => token.map(stringifyToken).join(\"\"))\n .join(\", \");\n}\nfunction stringifyToken(token, index, arr) {\n switch (token.type) {\n // Simple types\n case SelectorType.Child:\n return index === 0 ? \"> \" : \" > \";\n case SelectorType.Parent:\n return index === 0 ? \"< \" : \" < \";\n case SelectorType.Sibling:\n return index === 0 ? \"~ \" : \" ~ \";\n case SelectorType.Adjacent:\n return index === 0 ? \"+ \" : \" + \";\n case SelectorType.Descendant:\n return \" \";\n case SelectorType.ColumnCombinator:\n return index === 0 ? \"|| \" : \" || \";\n case SelectorType.Universal:\n // Return an empty string if the selector isn't needed.\n return token.namespace === \"*\" &&\n index + 1 < arr.length &&\n \"name\" in arr[index + 1]\n ? \"\"\n : `${getNamespace(token.namespace)}*`;\n case SelectorType.Tag:\n return getNamespacedName(token);\n case SelectorType.PseudoElement:\n return `::${escapeName(token.name, charsToEscapeInName)}${token.data === null\n ? \"\"\n : `(${escapeName(token.data, charsToEscapeInPseudoValue)})`}`;\n case SelectorType.Pseudo:\n return `:${escapeName(token.name, charsToEscapeInName)}${token.data === null\n ? \"\"\n : `(${typeof token.data === \"string\"\n ? escapeName(token.data, charsToEscapeInPseudoValue)\n : stringify(token.data)})`}`;\n case SelectorType.Attribute: {\n if (token.name === \"id\" &&\n token.action === AttributeAction.Equals &&\n token.ignoreCase === \"quirks\" &&\n !token.namespace) {\n return `#${escapeName(token.value, charsToEscapeInName)}`;\n }\n if (token.name === \"class\" &&\n token.action === AttributeAction.Element &&\n token.ignoreCase === \"quirks\" &&\n !token.namespace) {\n return `.${escapeName(token.value, charsToEscapeInName)}`;\n }\n const name = getNamespacedName(token);\n if (token.action === AttributeAction.Exists) {\n return `[${name}]`;\n }\n return `[${name}${getActionValue(token.action)}=\"${escapeName(token.value, charsToEscapeInAttributeValue)}\"${token.ignoreCase === null ? \"\" : token.ignoreCase ? \" i\" : \" s\"}]`;\n }\n }\n}\nfunction getActionValue(action) {\n switch (action) {\n case AttributeAction.Equals:\n return \"\";\n case AttributeAction.Element:\n return \"~\";\n case AttributeAction.Start:\n return \"^\";\n case AttributeAction.End:\n return \"$\";\n case AttributeAction.Any:\n return \"*\";\n case AttributeAction.Not:\n return \"!\";\n case AttributeAction.Hyphen:\n return \"|\";\n case AttributeAction.Exists:\n throw new Error(\"Shouldn't be here\");\n }\n}\nfunction getNamespacedName(token) {\n return `${getNamespace(token.namespace)}${escapeName(token.name, charsToEscapeInName)}`;\n}\nfunction getNamespace(namespace) {\n return namespace !== null\n ? `${namespace === \"*\"\n ? \"*\"\n : escapeName(namespace, charsToEscapeInName)}|`\n : \"\";\n}\nfunction escapeName(str, charsToEscape) {\n let lastIdx = 0;\n let ret = \"\";\n for (let i = 0; i < str.length; i++) {\n if (charsToEscape.has(str.charCodeAt(i))) {\n ret += `${str.slice(lastIdx, i)}\\\\${str.charAt(i)}`;\n lastIdx = i + 1;\n }\n }\n return ret.length > 0 ? ret + str.slice(lastIdx) : str;\n}\n","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"],\n]);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = require(\"./foreignNames\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + \"=\\\"\" + (opts.decodeEntities !== false\n ? entities_1.encodeXML(value)\n : value.replace(/\"/g, \""\")) + \"\\\"\";\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"</\" + elem.name + \">\";\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (opts.decodeEntities !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"<![CDATA[\" + elem.children[0].data + \"]]>\";\n}\nfunction renderComment(elem) {\n return \"<!--\" + elem.data + \"-->\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_1 = require(\"./node\");\n__exportStar(require(\"./node\"), exports);\nvar reWhitespace = /\\s+/g;\n// Default options\nvar defaultOpts = {\n normalizeWhitespace: false,\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var normalizeWhitespace = this.options.normalizeWhitespace;\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n if (normalizeWhitespace) {\n lastNode.data = (lastNode.data + data).replace(reWhitespace, \" \");\n }\n else {\n lastNode.data += data;\n }\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n if (normalizeWhitespace) {\n data = data.replace(reWhitespace, \" \");\n }\n var node = new node_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_1.Text(\"\");\n var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar nodeTypes = new Map([\n [domelementtype_1.ElementType.Tag, 1],\n [domelementtype_1.ElementType.Script, 1],\n [domelementtype_1.ElementType.Style, 1],\n [domelementtype_1.ElementType.Directive, 1],\n [domelementtype_1.ElementType.Text, 3],\n [domelementtype_1.ElementType.CDATA, 4],\n [domelementtype_1.ElementType.Comment, 8],\n [domelementtype_1.ElementType.Root, 9],\n]);\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n /**\n *\n * @param type The type of the node.\n */\n function Node(type) {\n this.type = type;\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"nodeType\", {\n // Read-only aliases\n /**\n * [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible\n * node {@link type}.\n */\n get: function () {\n var _a;\n return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param type The type of the node\n * @param data The content of the data node\n */\n function DataNode(type, data) {\n var _this = _super.call(this, type) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text(data) {\n return _super.call(this, domelementtype_1.ElementType.Text, data) || this;\n }\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment(data) {\n return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;\n }\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;\n _this.name = name;\n return _this;\n }\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param type Type of the node.\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(type, children) {\n var _this = _super.call(this, type) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document(children) {\n return _super.call(this, domelementtype_1.ElementType.Root, children) || this;\n }\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, type, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `NodeWithChildren` (has children), `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFeed = void 0;\nvar stringify_1 = require(\"./stringify\");\nvar legacy_1 = require(\"./legacy\");\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nfunction getFeed(doc) {\n var feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\nexports.getFeed = getFeed;\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n var childs = feedRoot.children;\n var feed = {\n type: \"atom\",\n items: (0, legacy_1.getElementsByTagName)(\"entry\", childs).map(function (item) {\n var _a;\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs.href;\n if (href) {\n entry.link = href;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs.href;\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n var feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, legacy_1.getElementsByTagName)(\"item\", feedRoot.children).map(function (item) {\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nvar MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nvar MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return (0, legacy_1.getElementsByTagName)(\"media:content\", where).map(function (elem) {\n var attribs = elem.attribs;\n var media = {\n medium: attribs.medium,\n isDefault: !!attribs.isDefault,\n };\n for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) {\n var attrib = MEDIA_KEYS_STRING_1[_i];\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) {\n var attrib = MEDIA_KEYS_INT_1[_a];\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs.expression) {\n media.expression =\n attribs.expression;\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return (0, legacy_1.getElementsByTagName)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n return (0, stringify_1.textContent)((0, legacy_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n var val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uniqueSort = exports.compareDocumentPosition = exports.removeSubsets = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Given an array of nodes, remove any member that is contained by another.\n *\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't subtrees of each other.\n */\nfunction removeSubsets(nodes) {\n var idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n var node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\nexports.removeSubsets = removeSubsets;\n/**\n * Compare the position of one node against another node in any other document.\n * The return value is a bitmask with the following values:\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent./\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nfunction compareDocumentPosition(nodeA, nodeB) {\n var aParents = [];\n var bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n var maxIdx = Math.min(aParents.length, bParents.length);\n var idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return 1 /* DISCONNECTED */;\n }\n var sharedParent = aParents[idx - 1];\n var siblings = sharedParent.children;\n var aSibling = aParents[idx];\n var bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return 4 /* FOLLOWING */ | 16 /* CONTAINED_BY */;\n }\n return 4 /* FOLLOWING */;\n }\n if (sharedParent === nodeA) {\n return 2 /* PRECEDING */ | 8 /* CONTAINS */;\n }\n return 2 /* PRECEDING */;\n}\nexports.compareDocumentPosition = compareDocumentPosition;\n/**\n * Sort an array of nodes based on their relative position in the document and\n * remove any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nfunction uniqueSort(nodes) {\n nodes = nodes.filter(function (node, i, arr) { return !arr.includes(node, i + 1); });\n nodes.sort(function (a, b) {\n var relative = compareDocumentPosition(a, b);\n if (relative & 2 /* PRECEDING */) {\n return -1;\n }\n else if (relative & 4 /* FOLLOWING */) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\nexports.uniqueSort = uniqueSort;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0;\n__exportStar(require(\"./stringify\"), exports);\n__exportStar(require(\"./traversal\"), exports);\n__exportStar(require(\"./manipulation\"), exports);\n__exportStar(require(\"./querying\"), exports);\n__exportStar(require(\"./legacy\"), exports);\n__exportStar(require(\"./helpers\"), exports);\n__exportStar(require(\"./feeds\"), exports);\n/** @deprecated Use these methods from `domhandler` directly. */\nvar domhandler_1 = require(\"domhandler\");\nObject.defineProperty(exports, \"isTag\", { enumerable: true, get: function () { return domhandler_1.isTag; } });\nObject.defineProperty(exports, \"isCDATA\", { enumerable: true, get: function () { return domhandler_1.isCDATA; } });\nObject.defineProperty(exports, \"isText\", { enumerable: true, get: function () { return domhandler_1.isText; } });\nObject.defineProperty(exports, \"isComment\", { enumerable: true, get: function () { return domhandler_1.isComment; } });\nObject.defineProperty(exports, \"isDocument\", { enumerable: true, get: function () { return domhandler_1.isDocument; } });\nObject.defineProperty(exports, \"hasChildren\", { enumerable: true, get: function () { return domhandler_1.hasChildren; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar querying_1 = require(\"./querying\");\nvar Checks = {\n tag_name: function (name) {\n if (typeof name === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); };\n }\n else if (name === \"*\") {\n return domhandler_1.isTag;\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; };\n },\n tag_type: function (type) {\n if (typeof type === \"function\") {\n return function (elem) { return type(elem.type); };\n }\n return function (elem) { return elem.type === type; };\n },\n tag_contains: function (data) {\n if (typeof data === \"function\") {\n return function (elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); };\n }\n return function (elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; };\n },\n};\n/**\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); };\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; };\n}\n/**\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either\n * of the input functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return function (elem) { return a(elem) || b(elem); };\n}\n/**\n * @param options An object describing nodes to look for.\n * @returns A function executing all checks in `options` and returning `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n var funcs = Object.keys(options).map(function (key) {\n var value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nfunction testElement(options, node) {\n var test = compileTest(options);\n return test ? test(node) : true;\n}\nexports.testElement = testElement;\n/**\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nfunction getElements(options, nodes, recurse, limit) {\n if (limit === void 0) { limit = Infinity; }\n var test = compileTest(options);\n return test ? (0, querying_1.filter)(test, nodes, recurse, limit) : [];\n}\nexports.getElements = getElements;\n/**\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nfunction getElementById(id, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return (0, querying_1.findOne)(getAttribCheck(\"id\", id), nodes, recurse);\n}\nexports.getElementById = getElementById;\n/**\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nfunction getElementsByTagName(tagName, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_1.filter)(Checks.tag_name(tagName), nodes, recurse, limit);\n}\nexports.getElementsByTagName = getElementsByTagName;\n/**\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nfunction getElementsByTagType(type, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_1.filter)(Checks.tag_type(type), nodes, recurse, limit);\n}\nexports.getElementsByTagType = getElementsByTagType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = void 0;\n/**\n * Remove an element from the dom\n *\n * @param elem The element to be removed\n */\nfunction removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n var childs = elem.parent.children;\n childs.splice(childs.lastIndexOf(elem), 1);\n }\n}\nexports.removeElement = removeElement;\n/**\n * Replace an element in the dom\n *\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nfunction replaceElement(elem, replacement) {\n var prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n var next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n var parent = (replacement.parent = elem.parent);\n if (parent) {\n var childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n }\n}\nexports.replaceElement = replaceElement;\n/**\n * Append a child to an element.\n *\n * @param elem The element to append to.\n * @param child The element to be added as a child.\n */\nfunction appendChild(elem, child) {\n removeElement(child);\n child.next = null;\n child.parent = elem;\n if (elem.children.push(child) > 1) {\n var sibling = elem.children[elem.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\nexports.appendChild = appendChild;\n/**\n * Append an element after another.\n *\n * @param elem The element to append after.\n * @param next The element be added.\n */\nfunction append(elem, next) {\n removeElement(next);\n var parent = elem.parent;\n var currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\nexports.append = append;\n/**\n * Prepend a child to an element.\n *\n * @param elem The element to prepend before.\n * @param child The element to be added as a child.\n */\nfunction prependChild(elem, child) {\n removeElement(child);\n child.parent = elem;\n child.prev = null;\n if (elem.children.unshift(child) !== 1) {\n var sibling = elem.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\nexports.prependChild = prependChild;\n/**\n * Prepend an element before another.\n *\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nfunction prepend(elem, prev) {\n removeElement(prev);\n var parent = elem.parent;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\nexports.prepend = prepend;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Search a node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction filter(test, node, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n if (!Array.isArray(node))\n node = [node];\n return find(test, node, recurse, limit);\n}\nexports.filter = filter;\n/**\n * Search an array of node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction find(test, nodes, recurse, limit) {\n var result = [];\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var elem = nodes_1[_i];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n break;\n }\n if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {\n var children = find(test, elem.children, recurse, limit);\n result.push.apply(result, children);\n limit -= children.length;\n if (limit <= 0)\n break;\n }\n }\n return result;\n}\nexports.find = find;\n/**\n * Finds the first element inside of an array that matches a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n */\nfunction findOneChild(test, nodes) {\n return nodes.find(test);\n}\nexports.findOneChild = findOneChild;\n/**\n * Finds one element in a tree that passes a test.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first child node that passes `test`.\n */\nfunction findOne(test, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n var elem = null;\n for (var i = 0; i < nodes.length && !elem; i++) {\n var checked = nodes[i];\n if (!(0, domhandler_1.isTag)(checked)) {\n continue;\n }\n else if (test(checked)) {\n elem = checked;\n }\n else if (recurse && checked.children.length > 0) {\n elem = findOne(test, checked.children);\n }\n }\n return elem;\n}\nexports.findOne = findOne;\n/**\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing a test.\n */\nfunction existsOne(test, nodes) {\n return nodes.some(function (checked) {\n return (0, domhandler_1.isTag)(checked) &&\n (test(checked) ||\n (checked.children.length > 0 &&\n existsOne(test, checked.children)));\n });\n}\nexports.existsOne = existsOne;\n/**\n * Search and array of nodes and its children for nodes passing a test function.\n *\n * Same as `find`, only with less options, leading to reduced complexity.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nfunction findAll(test, nodes) {\n var _a;\n var result = [];\n var stack = nodes.filter(domhandler_1.isTag);\n var elem;\n while ((elem = stack.shift())) {\n var children = (_a = elem.children) === null || _a === void 0 ? void 0 : _a.filter(domhandler_1.isTag);\n if (children && children.length > 0) {\n stack.unshift.apply(stack, children);\n }\n if (test(elem))\n result.push(elem);\n }\n return result;\n}\nexports.findAll = findAll;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.innerText = exports.textContent = exports.getText = exports.getInnerHTML = exports.getOuterHTML = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar dom_serializer_1 = __importDefault(require(\"dom-serializer\"));\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @deprecated Use the `dom-serializer` module directly.\n * @returns `node`'s outer HTML.\n */\nfunction getOuterHTML(node, options) {\n return (0, dom_serializer_1.default)(node, options);\n}\nexports.getOuterHTML = getOuterHTML;\n/**\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @deprecated Use the `dom-serializer` module directly.\n * @returns `node`'s inner HTML.\n */\nfunction getInnerHTML(node, options) {\n return (0, domhandler_1.hasChildren)(node)\n ? node.children.map(function (node) { return getOuterHTML(node, options); }).join(\"\")\n : \"\";\n}\nexports.getInnerHTML = getInnerHTML;\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags.\n *\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nfunction getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if ((0, domhandler_1.isTag)(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if ((0, domhandler_1.isCDATA)(node))\n return getText(node.children);\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.getText = getText;\n/**\n * Get a node's text content.\n *\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nfunction textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {\n return textContent(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.textContent = textContent;\n/**\n * Get a node's inner text.\n *\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nfunction innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {\n return innerText(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.innerText = innerText;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar emptyArray = [];\n/**\n * Get a node's children.\n *\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nfunction getChildren(elem) {\n var _a;\n return (_a = elem.children) !== null && _a !== void 0 ? _a : emptyArray;\n}\nexports.getChildren = getChildren;\n/**\n * Get a node's parent.\n *\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node.\n */\nfunction getParent(elem) {\n return elem.parent || null;\n}\nexports.getParent = getParent;\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first.\n * If we don't have a parent (the element is a root node),\n * we walk the element's `prev` & `next` to get all remaining nodes.\n *\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings.\n */\nfunction getSiblings(elem) {\n var _a, _b;\n var parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n var siblings = [elem];\n var prev = elem.prev, next = elem.next;\n while (prev != null) {\n siblings.unshift(prev);\n (_a = prev, prev = _a.prev);\n }\n while (next != null) {\n siblings.push(next);\n (_b = next, next = _b.next);\n }\n return siblings;\n}\nexports.getSiblings = getSiblings;\n/**\n * Gets an attribute from an element.\n *\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nfunction getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nexports.getAttributeValue = getAttributeValue;\n/**\n * Checks whether an element has an attribute.\n *\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nfunction hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\nexports.hasAttrib = hasAttrib;\n/**\n * Get the tag name of an element.\n *\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nfunction getName(elem) {\n return elem.name;\n}\nexports.getName = getName;\n/**\n * Returns the next element sibling of a node.\n *\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag.\n */\nfunction nextElementSibling(elem) {\n var _a;\n var next = elem.next;\n while (next !== null && !(0, domhandler_1.isTag)(next))\n (_a = next, next = _a.next);\n return next;\n}\nexports.nextElementSibling = nextElementSibling;\n/**\n * Returns the previous element sibling of a node.\n *\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag.\n */\nfunction prevElementSibling(elem) {\n var _a;\n var prev = elem.prev;\n while (prev !== null && !(0, domhandler_1.isTag)(prev))\n (_a = prev, prev = _a.prev);\n return prev;\n}\nexports.prevElementSibling = prevElementSibling;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseFeed = exports.FeedHandler = void 0;\nvar domhandler_1 = __importDefault(require(\"domhandler\"));\nvar DomUtils = __importStar(require(\"domutils\"));\nvar Parser_1 = require(\"./Parser\");\nvar FeedItemMediaMedium;\n(function (FeedItemMediaMedium) {\n FeedItemMediaMedium[FeedItemMediaMedium[\"image\"] = 0] = \"image\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"audio\"] = 1] = \"audio\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"video\"] = 2] = \"video\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"document\"] = 3] = \"document\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"executable\"] = 4] = \"executable\";\n})(FeedItemMediaMedium || (FeedItemMediaMedium = {}));\nvar FeedItemMediaExpression;\n(function (FeedItemMediaExpression) {\n FeedItemMediaExpression[FeedItemMediaExpression[\"sample\"] = 0] = \"sample\";\n FeedItemMediaExpression[FeedItemMediaExpression[\"full\"] = 1] = \"full\";\n FeedItemMediaExpression[FeedItemMediaExpression[\"nonstop\"] = 2] = \"nonstop\";\n})(FeedItemMediaExpression || (FeedItemMediaExpression = {}));\n// TODO: Consume data as it is coming in\nvar FeedHandler = /** @class */ (function (_super) {\n __extends(FeedHandler, _super);\n /**\n *\n * @param callback\n * @param options\n */\n function FeedHandler(callback, options) {\n var _this = this;\n if (typeof callback === \"object\") {\n callback = undefined;\n options = callback;\n }\n _this = _super.call(this, callback, options) || this;\n return _this;\n }\n FeedHandler.prototype.onend = function () {\n var _a, _b;\n var feedRoot = getOneElement(isValidFeed, this.dom);\n if (!feedRoot) {\n this.handleCallback(new Error(\"couldn't find root of feed\"));\n return;\n }\n var feed = {};\n if (feedRoot.name === \"feed\") {\n var childs = feedRoot.children;\n feed.type = \"atom\";\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = getAttribute(\"href\", getOneElement(\"link\", childs));\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n feed.items = getElements(\"entry\", childs).map(function (item) {\n var entry = {};\n var children = item.children;\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href = getAttribute(\"href\", getOneElement(\"link\", children));\n if (href) {\n entry.link = href;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n entry.media = getMediaElements(children);\n return entry;\n });\n }\n else {\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n feed.type = feedRoot.name.substr(0, 3);\n feed.id = \"\";\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n feed.items = getElements(\"item\", feedRoot.children).map(function (item) {\n var entry = {};\n var children = item.children;\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n entry.media = getMediaElements(children);\n return entry;\n });\n }\n this.feed = feed;\n this.handleCallback(null);\n };\n return FeedHandler;\n}(domhandler_1.default));\nexports.FeedHandler = FeedHandler;\nfunction getMediaElements(where) {\n return getElements(\"media:content\", where).map(function (elem) {\n var media = {\n medium: elem.attribs.medium,\n isDefault: !!elem.attribs.isDefault,\n };\n if (elem.attribs.url) {\n media.url = elem.attribs.url;\n }\n if (elem.attribs.fileSize) {\n media.fileSize = parseInt(elem.attribs.fileSize, 10);\n }\n if (elem.attribs.type) {\n media.type = elem.attribs.type;\n }\n if (elem.attribs.expression) {\n media.expression = elem.attribs\n .expression;\n }\n if (elem.attribs.bitrate) {\n media.bitrate = parseInt(elem.attribs.bitrate, 10);\n }\n if (elem.attribs.framerate) {\n media.framerate = parseInt(elem.attribs.framerate, 10);\n }\n if (elem.attribs.samplingrate) {\n media.samplingrate = parseInt(elem.attribs.samplingrate, 10);\n }\n if (elem.attribs.channels) {\n media.channels = parseInt(elem.attribs.channels, 10);\n }\n if (elem.attribs.duration) {\n media.duration = parseInt(elem.attribs.duration, 10);\n }\n if (elem.attribs.height) {\n media.height = parseInt(elem.attribs.height, 10);\n }\n if (elem.attribs.width) {\n media.width = parseInt(elem.attribs.width, 10);\n }\n if (elem.attribs.lang) {\n media.lang = elem.attribs.lang;\n }\n return media;\n });\n}\nfunction getElements(tagName, where) {\n return DomUtils.getElementsByTagName(tagName, where, true);\n}\nfunction getOneElement(tagName, node) {\n return DomUtils.getElementsByTagName(tagName, node, true, 1)[0];\n}\nfunction fetch(tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n return DomUtils.getText(DomUtils.getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\nfunction getAttribute(name, elem) {\n if (!elem) {\n return null;\n }\n var attribs = elem.attribs;\n return attribs[name];\n}\nfunction addConditionally(obj, prop, what, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n var tmp = fetch(what, where, recurse);\n if (tmp)\n obj[prop] = tmp;\n}\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this option, you should set `xmlMode` to `true`.\n */\nfunction parseFeed(feed, options) {\n if (options === void 0) { options = { xmlMode: true }; }\n var handler = new FeedHandler(options);\n new Parser_1.Parser(handler, options).end(feed);\n return handler.feed;\n}\nexports.parseFeed = parseFeed;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = void 0;\nvar Tokenizer_1 = __importDefault(require(\"./Tokenizer\"));\nvar formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nvar pTag = new Set([\"p\"]);\nvar openImpliesClose = {\n tr: new Set([\"tr\", \"th\", \"td\"]),\n th: new Set([\"th\"]),\n td: new Set([\"thead\", \"th\", \"td\"]),\n body: new Set([\"head\", \"link\", \"script\"]),\n li: new Set([\"li\"]),\n p: pTag,\n h1: pTag,\n h2: pTag,\n h3: pTag,\n h4: pTag,\n h5: pTag,\n h6: pTag,\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: new Set([\"option\"]),\n optgroup: new Set([\"optgroup\", \"option\"]),\n dd: new Set([\"dt\", \"dd\"]),\n dt: new Set([\"dt\", \"dd\"]),\n address: pTag,\n article: pTag,\n aside: pTag,\n blockquote: pTag,\n details: pTag,\n div: pTag,\n dl: pTag,\n fieldset: pTag,\n figcaption: pTag,\n figure: pTag,\n footer: pTag,\n form: pTag,\n header: pTag,\n hr: pTag,\n main: pTag,\n nav: pTag,\n ol: pTag,\n pre: pTag,\n section: pTag,\n table: pTag,\n ul: pTag,\n rt: new Set([\"rt\", \"rp\"]),\n rp: new Set([\"rt\", \"rp\"]),\n tbody: new Set([\"thead\", \"tbody\"]),\n tfoot: new Set([\"thead\", \"tbody\"]),\n};\nvar voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nvar foreignContextElements = new Set([\"math\", \"svg\"]);\nvar htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar reNameEnd = /\\s|\\//;\nvar Parser = /** @class */ (function () {\n function Parser(cbs, options) {\n if (options === void 0) { options = {}; }\n var _a, _b, _c, _d, _e;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = null;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.options = options;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n Parser.prototype.updatePosition = function (initialOffset) {\n if (this.endIndex === null) {\n if (this.tokenizer.sectionStart <= initialOffset) {\n this.startIndex = 0;\n }\n else {\n this.startIndex = this.tokenizer.sectionStart - initialOffset;\n }\n }\n else {\n this.startIndex = this.endIndex + 1;\n }\n this.endIndex = this.tokenizer.getAbsoluteIndex();\n };\n // Tokenizer event handlers\n Parser.prototype.ontext = function (data) {\n var _a, _b;\n this.updatePosition(1);\n this.endIndex--;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n };\n Parser.prototype.onopentagname = function (name) {\n var _a, _b;\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.tagname = name;\n if (!this.options.xmlMode &&\n Object.prototype.hasOwnProperty.call(openImpliesClose, name)) {\n var el = void 0;\n while (this.stack.length > 0 &&\n openImpliesClose[name].has((el = this.stack[this.stack.length - 1]))) {\n this.onclosetag(el);\n }\n }\n if (this.options.xmlMode || !voidElements.has(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n };\n Parser.prototype.onopentagend = function () {\n var _a, _b;\n this.updatePosition(1);\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs);\n this.attribs = null;\n }\n if (!this.options.xmlMode &&\n this.cbs.onclosetag &&\n voidElements.has(this.tagname)) {\n this.cbs.onclosetag(this.tagname);\n }\n this.tagname = \"\";\n };\n Parser.prototype.onclosetag = function (name) {\n this.updatePosition(1);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (this.stack.length &&\n (this.options.xmlMode || !voidElements.has(name))) {\n var pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n pos = this.stack.length - pos;\n while (pos--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop());\n }\n }\n else\n this.stack.length = pos;\n }\n else if (name === \"p\" && !this.options.xmlMode) {\n this.onopentagname(name);\n this.closeCurrentTag();\n }\n }\n else if (!this.options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this.closeCurrentTag();\n }\n };\n Parser.prototype.onselfclosingtag = function () {\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag();\n }\n else {\n this.onopentagend();\n }\n };\n Parser.prototype.closeCurrentTag = function () {\n var _a, _b;\n var name = this.tagname;\n this.onopentagend();\n /*\n * Self-closing tags will be on the top of the stack\n * (cheaper check than in onclosetag)\n */\n if (this.stack[this.stack.length - 1] === name) {\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n this.stack.pop();\n }\n };\n Parser.prototype.onattribname = function (name) {\n if (this.lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this.attribname = name;\n };\n Parser.prototype.onattribdata = function (value) {\n this.attribvalue += value;\n };\n Parser.prototype.onattribend = function (quote) {\n var _a, _b;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribname = \"\";\n this.attribvalue = \"\";\n };\n Parser.prototype.getInstructionName = function (value) {\n var idx = value.search(reNameEnd);\n var name = idx < 0 ? value : value.substr(0, idx);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n };\n Parser.prototype.ondeclaration = function (value) {\n if (this.cbs.onprocessinginstruction) {\n var name_1 = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"!\" + name_1, \"!\" + value);\n }\n };\n Parser.prototype.onprocessinginstruction = function (value) {\n if (this.cbs.onprocessinginstruction) {\n var name_2 = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"?\" + name_2, \"?\" + value);\n }\n };\n Parser.prototype.oncomment = function (value) {\n var _a, _b, _c, _d;\n this.updatePosition(4);\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n };\n Parser.prototype.oncdata = function (value) {\n var _a, _b, _c, _d, _e, _f;\n this.updatePosition(1);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n };\n Parser.prototype.onerror = function (err) {\n var _a, _b;\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n Parser.prototype.onend = function () {\n var _a, _b;\n if (this.cbs.onclosetag) {\n for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i]))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n Parser.prototype.reset = function () {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack = [];\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n };\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n Parser.prototype.parseComplete = function (data) {\n this.reset();\n this.end(data);\n };\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n Parser.prototype.write = function (chunk) {\n this.tokenizer.write(chunk);\n };\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n Parser.prototype.end = function (chunk) {\n this.tokenizer.end(chunk);\n };\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n Parser.prototype.pause = function () {\n this.tokenizer.pause();\n };\n /**\n * Resumes parsing after `pause` was called.\n */\n Parser.prototype.resume = function () {\n this.tokenizer.resume();\n };\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n Parser.prototype.parseChunk = function (chunk) {\n this.write(chunk);\n };\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n Parser.prototype.done = function (chunk) {\n this.end(chunk);\n };\n return Parser;\n}());\nexports.Parser = Parser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_codepoint_1 = __importDefault(require(\"entities/lib/decode_codepoint\"));\nvar entities_json_1 = __importDefault(require(\"entities/lib/maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"entities/lib/maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"entities/lib/maps/xml.json\"));\nfunction whitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\nfunction isASCIIAlpha(c) {\n return (c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\");\n}\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n if (upper === lower) {\n return function (t, c) {\n if (c === lower) {\n t._state = SUCCESS;\n }\n else {\n t._state = FAILURE;\n t._index--;\n }\n };\n }\n return function (t, c) {\n if (c === lower || c === upper) {\n t._state = SUCCESS;\n }\n else {\n t._state = FAILURE;\n t._index--;\n }\n };\n}\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n return function (t, c) {\n if (c === lower || c === upper) {\n t._state = NEXT_STATE;\n }\n else {\n t._state = 3 /* InTagName */;\n t._index--; // Consume the token again\n }\n };\n}\nvar stateBeforeCdata1 = ifElseState(\"C\", 24 /* BeforeCdata2 */, 16 /* InDeclaration */);\nvar stateBeforeCdata2 = ifElseState(\"D\", 25 /* BeforeCdata3 */, 16 /* InDeclaration */);\nvar stateBeforeCdata3 = ifElseState(\"A\", 26 /* BeforeCdata4 */, 16 /* InDeclaration */);\nvar stateBeforeCdata4 = ifElseState(\"T\", 27 /* BeforeCdata5 */, 16 /* InDeclaration */);\nvar stateBeforeCdata5 = ifElseState(\"A\", 28 /* BeforeCdata6 */, 16 /* InDeclaration */);\nvar stateBeforeScript1 = consumeSpecialNameChar(\"R\", 35 /* BeforeScript2 */);\nvar stateBeforeScript2 = consumeSpecialNameChar(\"I\", 36 /* BeforeScript3 */);\nvar stateBeforeScript3 = consumeSpecialNameChar(\"P\", 37 /* BeforeScript4 */);\nvar stateBeforeScript4 = consumeSpecialNameChar(\"T\", 38 /* BeforeScript5 */);\nvar stateAfterScript1 = ifElseState(\"R\", 40 /* AfterScript2 */, 1 /* Text */);\nvar stateAfterScript2 = ifElseState(\"I\", 41 /* AfterScript3 */, 1 /* Text */);\nvar stateAfterScript3 = ifElseState(\"P\", 42 /* AfterScript4 */, 1 /* Text */);\nvar stateAfterScript4 = ifElseState(\"T\", 43 /* AfterScript5 */, 1 /* Text */);\nvar stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", 45 /* BeforeStyle2 */);\nvar stateBeforeStyle2 = consumeSpecialNameChar(\"L\", 46 /* BeforeStyle3 */);\nvar stateBeforeStyle3 = consumeSpecialNameChar(\"E\", 47 /* BeforeStyle4 */);\nvar stateAfterStyle1 = ifElseState(\"Y\", 49 /* AfterStyle2 */, 1 /* Text */);\nvar stateAfterStyle2 = ifElseState(\"L\", 50 /* AfterStyle3 */, 1 /* Text */);\nvar stateAfterStyle3 = ifElseState(\"E\", 51 /* AfterStyle4 */, 1 /* Text */);\nvar stateBeforeSpecialT = consumeSpecialNameChar(\"I\", 54 /* BeforeTitle1 */);\nvar stateBeforeTitle1 = consumeSpecialNameChar(\"T\", 55 /* BeforeTitle2 */);\nvar stateBeforeTitle2 = consumeSpecialNameChar(\"L\", 56 /* BeforeTitle3 */);\nvar stateBeforeTitle3 = consumeSpecialNameChar(\"E\", 57 /* BeforeTitle4 */);\nvar stateAfterSpecialTEnd = ifElseState(\"I\", 58 /* AfterTitle1 */, 1 /* Text */);\nvar stateAfterTitle1 = ifElseState(\"T\", 59 /* AfterTitle2 */, 1 /* Text */);\nvar stateAfterTitle2 = ifElseState(\"L\", 60 /* AfterTitle3 */, 1 /* Text */);\nvar stateAfterTitle3 = ifElseState(\"E\", 61 /* AfterTitle4 */, 1 /* Text */);\nvar stateBeforeEntity = ifElseState(\"#\", 63 /* BeforeNumericEntity */, 64 /* InNamedEntity */);\nvar stateBeforeNumericEntity = ifElseState(\"X\", 66 /* InHexEntity */, 65 /* InNumericEntity */);\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(options, cbs) {\n var _a;\n /** The current state the tokenizer is in. */\n this._state = 1 /* Text */;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this._index = 0;\n /**\n * Data that has already been processed will be removed from the buffer occasionally.\n * `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.\n */\n this.bufferOffset = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = 1 /* Text */;\n /** For special parsing behavior inside of script and style tags. */\n this.special = 1 /* None */;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** Indicates whether the tokenizer has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs;\n this.xmlMode = !!(options === null || options === void 0 ? void 0 : options.xmlMode);\n this.decodeEntities = (_a = options === null || options === void 0 ? void 0 : options.decodeEntities) !== null && _a !== void 0 ? _a : true;\n }\n Tokenizer.prototype.reset = function () {\n this._state = 1 /* Text */;\n this.buffer = \"\";\n this.sectionStart = 0;\n this._index = 0;\n this.bufferOffset = 0;\n this.baseState = 1 /* Text */;\n this.special = 1 /* None */;\n this.running = true;\n this.ended = false;\n };\n Tokenizer.prototype.write = function (chunk) {\n if (this.ended)\n this.cbs.onerror(Error(\".write() after done!\"));\n this.buffer += chunk;\n this.parse();\n };\n Tokenizer.prototype.end = function (chunk) {\n if (this.ended)\n this.cbs.onerror(Error(\".end() after done!\"));\n if (chunk)\n this.write(chunk);\n this.ended = true;\n if (this.running)\n this.finish();\n };\n Tokenizer.prototype.pause = function () {\n this.running = false;\n };\n Tokenizer.prototype.resume = function () {\n this.running = true;\n if (this._index < this.buffer.length) {\n this.parse();\n }\n if (this.ended) {\n this.finish();\n }\n };\n /**\n * The current index within all of the written data.\n */\n Tokenizer.prototype.getAbsoluteIndex = function () {\n return this.bufferOffset + this._index;\n };\n Tokenizer.prototype.stateText = function (c) {\n if (c === \"<\") {\n if (this._index > this.sectionStart) {\n this.cbs.ontext(this.getSection());\n }\n this._state = 2 /* BeforeTagName */;\n this.sectionStart = this._index;\n }\n else if (this.decodeEntities &&\n c === \"&\" &&\n (this.special === 1 /* None */ || this.special === 4 /* Title */)) {\n if (this._index > this.sectionStart) {\n this.cbs.ontext(this.getSection());\n }\n this.baseState = 1 /* Text */;\n this._state = 62 /* BeforeEntity */;\n this.sectionStart = this._index;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return (isASCIIAlpha(c) ||\n (this.xmlMode && !whitespace(c) && c !== \"/\" && c !== \">\"));\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === \"/\") {\n this._state = 5 /* BeforeClosingTagName */;\n }\n else if (c === \"<\") {\n this.cbs.ontext(this.getSection());\n this.sectionStart = this._index;\n }\n else if (c === \">\" ||\n this.special !== 1 /* None */ ||\n whitespace(c)) {\n this._state = 1 /* Text */;\n }\n else if (c === \"!\") {\n this._state = 15 /* BeforeDeclaration */;\n this.sectionStart = this._index + 1;\n }\n else if (c === \"?\") {\n this._state = 17 /* InProcessingInstruction */;\n this.sectionStart = this._index + 1;\n }\n else if (!this.isTagStartChar(c)) {\n this._state = 1 /* Text */;\n }\n else {\n this._state =\n !this.xmlMode && (c === \"s\" || c === \"S\")\n ? 32 /* BeforeSpecialS */\n : !this.xmlMode && (c === \"t\" || c === \"T\")\n ? 52 /* BeforeSpecialT */\n : 3 /* InTagName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this.emitToken(\"onopentagname\");\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (whitespace(c)) {\n // Ignore\n }\n else if (c === \">\") {\n this._state = 1 /* Text */;\n }\n else if (this.special !== 1 /* None */) {\n if (this.special !== 4 /* Title */ && (c === \"s\" || c === \"S\")) {\n this._state = 33 /* BeforeSpecialSEnd */;\n }\n else if (this.special === 4 /* Title */ &&\n (c === \"t\" || c === \"T\")) {\n this._state = 53 /* BeforeSpecialTEnd */;\n }\n else {\n this._state = 1 /* Text */;\n this._index--;\n }\n }\n else if (!this.isTagStartChar(c)) {\n this._state = 20 /* InSpecialComment */;\n this.sectionStart = this._index;\n }\n else {\n this._state = 6 /* InClosingTagName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === \">\" || whitespace(c)) {\n this.emitToken(\"onclosetag\");\n this._state = 7 /* AfterClosingTagName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === \">\") {\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === \">\") {\n this.cbs.onopentagend();\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n else if (c === \"/\") {\n this._state = 4 /* InSelfClosingTag */;\n }\n else if (!whitespace(c)) {\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === \">\") {\n this.cbs.onselfclosingtag();\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n this.special = 1 /* None */; // Reset special state, in case of self-closing special tags\n }\n else if (!whitespace(c)) {\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10 /* AfterAttributeName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === \"=\") {\n this._state = 11 /* BeforeAttributeValue */;\n }\n else if (c === \"/\" || c === \">\") {\n this.cbs.onattribend(undefined);\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n else if (!whitespace(c)) {\n this.cbs.onattribend(undefined);\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === '\"') {\n this._state = 12 /* InAttributeValueDq */;\n this.sectionStart = this._index + 1;\n }\n else if (c === \"'\") {\n this._state = 13 /* InAttributeValueSq */;\n this.sectionStart = this._index + 1;\n }\n else if (!whitespace(c)) {\n this._state = 14 /* InAttributeValueNq */;\n this.sectionStart = this._index;\n this._index--; // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote) {\n this.emitToken(\"onattribdata\");\n this.cbs.onattribend(quote);\n this._state = 8 /* BeforeAttributeName */;\n }\n else if (this.decodeEntities && c === \"&\") {\n this.emitToken(\"onattribdata\");\n this.baseState = this._state;\n this._state = 62 /* BeforeEntity */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, '\"');\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, \"'\");\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (whitespace(c) || c === \">\") {\n this.emitToken(\"onattribdata\");\n this.cbs.onattribend(null);\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n else if (this.decodeEntities && c === \"&\") {\n this.emitToken(\"onattribdata\");\n this.baseState = this._state;\n this._state = 62 /* BeforeEntity */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n this._state =\n c === \"[\"\n ? 23 /* BeforeCdata1 */\n : c === \"-\"\n ? 18 /* BeforeComment */\n : 16 /* InDeclaration */;\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === \">\") {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === \">\") {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === \"-\") {\n this._state = 19 /* InComment */;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInComment = function (c) {\n if (c === \"-\")\n this._state = 21 /* AfterComment1 */;\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === \">\") {\n this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index));\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateAfterComment1 = function (c) {\n if (c === \"-\") {\n this._state = 22 /* AfterComment2 */;\n }\n else {\n this._state = 19 /* InComment */;\n }\n };\n Tokenizer.prototype.stateAfterComment2 = function (c) {\n if (c === \">\") {\n // Remove 2 trailing chars\n this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index - 2));\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n else if (c !== \"-\") {\n this._state = 19 /* InComment */;\n }\n // Else: stay in AFTER_COMMENT_2 (`--->`)\n };\n Tokenizer.prototype.stateBeforeCdata6 = function (c) {\n if (c === \"[\") {\n this._state = 29 /* InCdata */;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateInCdata = function (c) {\n if (c === \"]\")\n this._state = 30 /* AfterCdata1 */;\n };\n Tokenizer.prototype.stateAfterCdata1 = function (c) {\n if (c === \"]\")\n this._state = 31 /* AfterCdata2 */;\n else\n this._state = 29 /* InCdata */;\n };\n Tokenizer.prototype.stateAfterCdata2 = function (c) {\n if (c === \">\") {\n // Remove 2 trailing chars\n this.cbs.oncdata(this.buffer.substring(this.sectionStart, this._index - 2));\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n else if (c !== \"]\") {\n this._state = 29 /* InCdata */;\n }\n // Else: stay in AFTER_CDATA_2 (`]]]>`)\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n if (c === \"c\" || c === \"C\") {\n this._state = 34 /* BeforeScript1 */;\n }\n else if (c === \"t\" || c === \"T\") {\n this._state = 44 /* BeforeStyle1 */;\n }\n else {\n this._state = 3 /* InTagName */;\n this._index--; // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeSpecialSEnd = function (c) {\n if (this.special === 2 /* Script */ && (c === \"c\" || c === \"C\")) {\n this._state = 39 /* AfterScript1 */;\n }\n else if (this.special === 3 /* Style */ && (c === \"t\" || c === \"T\")) {\n this._state = 48 /* AfterStyle1 */;\n }\n else\n this._state = 1 /* Text */;\n };\n Tokenizer.prototype.stateBeforeSpecialLast = function (c, special) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this.special = special;\n }\n this._state = 3 /* InTagName */;\n this._index--; // Consume the token again\n };\n Tokenizer.prototype.stateAfterSpecialLast = function (c, sectionStartOffset) {\n if (c === \">\" || whitespace(c)) {\n this.special = 1 /* None */;\n this._state = 6 /* InClosingTagName */;\n this.sectionStart = this._index - sectionStartOffset;\n this._index--; // Reconsume the token\n }\n else\n this._state = 1 /* Text */;\n };\n // For entities terminated with a semicolon\n Tokenizer.prototype.parseFixedEntity = function (map) {\n if (map === void 0) { map = this.xmlMode ? xml_json_1.default : entities_json_1.default; }\n // Offset = 1\n if (this.sectionStart + 1 < this._index) {\n var entity = this.buffer.substring(this.sectionStart + 1, this._index);\n if (Object.prototype.hasOwnProperty.call(map, entity)) {\n this.emitPartial(map[entity]);\n this.sectionStart = this._index + 1;\n }\n }\n };\n // Parses legacy entities (without trailing semicolon)\n Tokenizer.prototype.parseLegacyEntity = function () {\n var start = this.sectionStart + 1;\n // The max length of legacy entities is 6\n var limit = Math.min(this._index - start, 6);\n while (limit >= 2) {\n // The min length of legacy entities is 2\n var entity = this.buffer.substr(start, limit);\n if (Object.prototype.hasOwnProperty.call(legacy_json_1.default, entity)) {\n this.emitPartial(legacy_json_1.default[entity]);\n this.sectionStart += limit + 1;\n return;\n }\n limit--;\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n if (c === \";\") {\n this.parseFixedEntity();\n // Retry as legacy entity if entity wasn't parsed\n if (this.baseState === 1 /* Text */ &&\n this.sectionStart + 1 < this._index &&\n !this.xmlMode) {\n this.parseLegacyEntity();\n }\n this._state = this.baseState;\n }\n else if ((c < \"0\" || c > \"9\") && !isASCIIAlpha(c)) {\n if (this.xmlMode || this.sectionStart + 1 === this._index) {\n // Ignore\n }\n else if (this.baseState !== 1 /* Text */) {\n if (c !== \"=\") {\n // Parse as legacy entity, without allowing additional characters.\n this.parseFixedEntity(legacy_json_1.default);\n }\n }\n else {\n this.parseLegacyEntity();\n }\n this._state = this.baseState;\n this._index--;\n }\n };\n Tokenizer.prototype.decodeNumericEntity = function (offset, base, strict) {\n var sectionStart = this.sectionStart + offset;\n if (sectionStart !== this._index) {\n // Parse entity\n var entity = this.buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial(decode_codepoint_1.default(parsed));\n this.sectionStart = strict ? this._index + 1 : this._index;\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === \";\") {\n this.decodeNumericEntity(2, 10, true);\n }\n else if (c < \"0\" || c > \"9\") {\n if (!this.xmlMode) {\n this.decodeNumericEntity(2, 10, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === \";\") {\n this.decodeNumericEntity(3, 16, true);\n }\n else if ((c < \"a\" || c > \"f\") &&\n (c < \"A\" || c > \"F\") &&\n (c < \"0\" || c > \"9\")) {\n if (!this.xmlMode) {\n this.decodeNumericEntity(3, 16, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n };\n Tokenizer.prototype.cleanup = function () {\n if (this.sectionStart < 0) {\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n }\n else if (this.running) {\n if (this._state === 1 /* Text */) {\n if (this.sectionStart !== this._index) {\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n }\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n }\n else if (this.sectionStart === this._index) {\n // The section just started\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n }\n else {\n // Remove everything unnecessary\n this.buffer = this.buffer.substr(this.sectionStart);\n this._index -= this.sectionStart;\n this.bufferOffset += this.sectionStart;\n }\n this.sectionStart = 0;\n }\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this._index < this.buffer.length && this.running) {\n var c = this.buffer.charAt(this._index);\n if (this._state === 1 /* Text */) {\n this.stateText(c);\n }\n else if (this._state === 12 /* InAttributeValueDq */) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this._state === 9 /* InAttributeName */) {\n this.stateInAttributeName(c);\n }\n else if (this._state === 19 /* InComment */) {\n this.stateInComment(c);\n }\n else if (this._state === 20 /* InSpecialComment */) {\n this.stateInSpecialComment(c);\n }\n else if (this._state === 8 /* BeforeAttributeName */) {\n this.stateBeforeAttributeName(c);\n }\n else if (this._state === 3 /* InTagName */) {\n this.stateInTagName(c);\n }\n else if (this._state === 6 /* InClosingTagName */) {\n this.stateInClosingTagName(c);\n }\n else if (this._state === 2 /* BeforeTagName */) {\n this.stateBeforeTagName(c);\n }\n else if (this._state === 10 /* AfterAttributeName */) {\n this.stateAfterAttributeName(c);\n }\n else if (this._state === 13 /* InAttributeValueSq */) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this._state === 11 /* BeforeAttributeValue */) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this._state === 5 /* BeforeClosingTagName */) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this._state === 7 /* AfterClosingTagName */) {\n this.stateAfterClosingTagName(c);\n }\n else if (this._state === 32 /* BeforeSpecialS */) {\n this.stateBeforeSpecialS(c);\n }\n else if (this._state === 21 /* AfterComment1 */) {\n this.stateAfterComment1(c);\n }\n else if (this._state === 14 /* InAttributeValueNq */) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this._state === 4 /* InSelfClosingTag */) {\n this.stateInSelfClosingTag(c);\n }\n else if (this._state === 16 /* InDeclaration */) {\n this.stateInDeclaration(c);\n }\n else if (this._state === 15 /* BeforeDeclaration */) {\n this.stateBeforeDeclaration(c);\n }\n else if (this._state === 22 /* AfterComment2 */) {\n this.stateAfterComment2(c);\n }\n else if (this._state === 18 /* BeforeComment */) {\n this.stateBeforeComment(c);\n }\n else if (this._state === 33 /* BeforeSpecialSEnd */) {\n this.stateBeforeSpecialSEnd(c);\n }\n else if (this._state === 53 /* BeforeSpecialTEnd */) {\n stateAfterSpecialTEnd(this, c);\n }\n else if (this._state === 39 /* AfterScript1 */) {\n stateAfterScript1(this, c);\n }\n else if (this._state === 40 /* AfterScript2 */) {\n stateAfterScript2(this, c);\n }\n else if (this._state === 41 /* AfterScript3 */) {\n stateAfterScript3(this, c);\n }\n else if (this._state === 34 /* BeforeScript1 */) {\n stateBeforeScript1(this, c);\n }\n else if (this._state === 35 /* BeforeScript2 */) {\n stateBeforeScript2(this, c);\n }\n else if (this._state === 36 /* BeforeScript3 */) {\n stateBeforeScript3(this, c);\n }\n else if (this._state === 37 /* BeforeScript4 */) {\n stateBeforeScript4(this, c);\n }\n else if (this._state === 38 /* BeforeScript5 */) {\n this.stateBeforeSpecialLast(c, 2 /* Script */);\n }\n else if (this._state === 42 /* AfterScript4 */) {\n stateAfterScript4(this, c);\n }\n else if (this._state === 43 /* AfterScript5 */) {\n this.stateAfterSpecialLast(c, 6);\n }\n else if (this._state === 44 /* BeforeStyle1 */) {\n stateBeforeStyle1(this, c);\n }\n else if (this._state === 29 /* InCdata */) {\n this.stateInCdata(c);\n }\n else if (this._state === 45 /* BeforeStyle2 */) {\n stateBeforeStyle2(this, c);\n }\n else if (this._state === 46 /* BeforeStyle3 */) {\n stateBeforeStyle3(this, c);\n }\n else if (this._state === 47 /* BeforeStyle4 */) {\n this.stateBeforeSpecialLast(c, 3 /* Style */);\n }\n else if (this._state === 48 /* AfterStyle1 */) {\n stateAfterStyle1(this, c);\n }\n else if (this._state === 49 /* AfterStyle2 */) {\n stateAfterStyle2(this, c);\n }\n else if (this._state === 50 /* AfterStyle3 */) {\n stateAfterStyle3(this, c);\n }\n else if (this._state === 51 /* AfterStyle4 */) {\n this.stateAfterSpecialLast(c, 5);\n }\n else if (this._state === 52 /* BeforeSpecialT */) {\n stateBeforeSpecialT(this, c);\n }\n else if (this._state === 54 /* BeforeTitle1 */) {\n stateBeforeTitle1(this, c);\n }\n else if (this._state === 55 /* BeforeTitle2 */) {\n stateBeforeTitle2(this, c);\n }\n else if (this._state === 56 /* BeforeTitle3 */) {\n stateBeforeTitle3(this, c);\n }\n else if (this._state === 57 /* BeforeTitle4 */) {\n this.stateBeforeSpecialLast(c, 4 /* Title */);\n }\n else if (this._state === 58 /* AfterTitle1 */) {\n stateAfterTitle1(this, c);\n }\n else if (this._state === 59 /* AfterTitle2 */) {\n stateAfterTitle2(this, c);\n }\n else if (this._state === 60 /* AfterTitle3 */) {\n stateAfterTitle3(this, c);\n }\n else if (this._state === 61 /* AfterTitle4 */) {\n this.stateAfterSpecialLast(c, 5);\n }\n else if (this._state === 17 /* InProcessingInstruction */) {\n this.stateInProcessingInstruction(c);\n }\n else if (this._state === 64 /* InNamedEntity */) {\n this.stateInNamedEntity(c);\n }\n else if (this._state === 23 /* BeforeCdata1 */) {\n stateBeforeCdata1(this, c);\n }\n else if (this._state === 62 /* BeforeEntity */) {\n stateBeforeEntity(this, c);\n }\n else if (this._state === 24 /* BeforeCdata2 */) {\n stateBeforeCdata2(this, c);\n }\n else if (this._state === 25 /* BeforeCdata3 */) {\n stateBeforeCdata3(this, c);\n }\n else if (this._state === 30 /* AfterCdata1 */) {\n this.stateAfterCdata1(c);\n }\n else if (this._state === 31 /* AfterCdata2 */) {\n this.stateAfterCdata2(c);\n }\n else if (this._state === 26 /* BeforeCdata4 */) {\n stateBeforeCdata4(this, c);\n }\n else if (this._state === 27 /* BeforeCdata5 */) {\n stateBeforeCdata5(this, c);\n }\n else if (this._state === 28 /* BeforeCdata6 */) {\n this.stateBeforeCdata6(c);\n }\n else if (this._state === 66 /* InHexEntity */) {\n this.stateInHexEntity(c);\n }\n else if (this._state === 65 /* InNumericEntity */) {\n this.stateInNumericEntity(c);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n }\n else if (this._state === 63 /* BeforeNumericEntity */) {\n stateBeforeNumericEntity(this, c);\n }\n else {\n this.cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n Tokenizer.prototype.handleTrailingData = function () {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 29 /* InCdata */ ||\n this._state === 30 /* AfterCdata1 */ ||\n this._state === 31 /* AfterCdata2 */) {\n this.cbs.oncdata(data);\n }\n else if (this._state === 19 /* InComment */ ||\n this._state === 21 /* AfterComment1 */ ||\n this._state === 22 /* AfterComment2 */) {\n this.cbs.oncomment(data);\n }\n else if (this._state === 64 /* InNamedEntity */ && !this.xmlMode) {\n this.parseLegacyEntity();\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n }\n else if (this._state === 65 /* InNumericEntity */ && !this.xmlMode) {\n this.decodeNumericEntity(2, 10, false);\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n }\n else if (this._state === 66 /* InHexEntity */ && !this.xmlMode) {\n this.decodeNumericEntity(3, 16, false);\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n }\n else if (this._state !== 3 /* InTagName */ &&\n this._state !== 8 /* BeforeAttributeName */ &&\n this._state !== 11 /* BeforeAttributeValue */ &&\n this._state !== 10 /* AfterAttributeName */ &&\n this._state !== 9 /* InAttributeName */ &&\n this._state !== 13 /* InAttributeValueSq */ &&\n this._state !== 12 /* InAttributeValueDq */ &&\n this._state !== 14 /* InAttributeValueNq */ &&\n this._state !== 6 /* InClosingTagName */) {\n this.cbs.ontext(data);\n }\n /*\n * Else, ignore remaining data\n * TODO add a way to remove current tag\n */\n };\n Tokenizer.prototype.getSection = function () {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer.prototype.emitToken = function (name) {\n this.cbs[name](this.getSection());\n this.sectionStart = -1;\n };\n Tokenizer.prototype.emitPartial = function (value) {\n if (this.baseState !== 1 /* Text */) {\n this.cbs.onattribdata(value); // TODO implement the new event\n }\n else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RssHandler = exports.DefaultHandler = exports.DomUtils = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DomHandler = exports.Parser = void 0;\nvar Parser_1 = require(\"./Parser\");\nObject.defineProperty(exports, \"Parser\", { enumerable: true, get: function () { return Parser_1.Parser; } });\nvar domhandler_1 = require(\"domhandler\");\nObject.defineProperty(exports, \"DomHandler\", { enumerable: true, get: function () { return domhandler_1.DomHandler; } });\nObject.defineProperty(exports, \"DefaultHandler\", { enumerable: true, get: function () { return domhandler_1.DomHandler; } });\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nfunction parseDocument(data, options) {\n var handler = new domhandler_1.DomHandler(undefined, options);\n new Parser_1.Parser(handler, options).end(data);\n return handler.root;\n}\nexports.parseDocument = parseDocument;\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nfunction parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\nexports.parseDOM = parseDOM;\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param cb A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nfunction createDomStream(cb, options, elementCb) {\n var handler = new domhandler_1.DomHandler(cb, options, elementCb);\n return new Parser_1.Parser(handler, options);\n}\nexports.createDomStream = createDomStream;\nvar Tokenizer_1 = require(\"./Tokenizer\");\nObject.defineProperty(exports, \"Tokenizer\", { enumerable: true, get: function () { return __importDefault(Tokenizer_1).default; } });\nvar ElementType = __importStar(require(\"domelementtype\"));\nexports.ElementType = ElementType;\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\n__exportStar(require(\"./FeedHandler\"), exports);\nexports.DomUtils = __importStar(require(\"domutils\"));\nvar FeedHandler_1 = require(\"./FeedHandler\");\nObject.defineProperty(exports, \"RssHandler\", { enumerable: true, get: function () { return FeedHandler_1.FeedHandler; } });\n","'use strict';\n\nvar cheerio = require('./lib/cheerio');\nvar makeJuiceClient = require('./lib/inline');\n\n/**\n * Note that makeJuiceClient will take a base object (in this case a function) and enhance it\n * with a lot of useful properties and functions.\n *\n * This client adopts cheerio as a DOM parser and adds an \"inlineContent\" function that let\n * users to specify the CSS to be inlined instead of extracting it from the html.\n * \n * The weird \"makeJuiceClient\" behaviour is there in order to keep backward API compatibility.\n */\nvar juiceClient = makeJuiceClient(function(html,options) {\n return cheerio(html, { xmlMode: options && options.xmlMode}, juiceDocument, [options]);\n});\n\nvar juiceDocument = function(html, options) {\n return juiceClient.juiceDocument(html, options);\n}\n\njuiceClient.inlineContent = function(html, css, options) {\n return cheerio(html, { xmlMode: options && options.xmlMode}, juiceClient.inlineDocument, [css, options]);\n};\n\nmodule.exports = juiceClient;\n","'use strict';\n\n/**\n * Module dependencies.\n */\nvar cheerio = require('cheerio');\nvar utils = require('./utils');\n\nvar cheerioLoad = function(html, options, encodeEntities) {\n options = Object.assign({decodeEntities: false, _useHtmlParser2:true}, options);\n html = encodeEntities(html);\n return cheerio.load(html, options);\n};\n\nvar createEntityConverters = function () {\n var codeBlockLookup = [];\n\n var encodeCodeBlocks = function(html) {\n var blocks = module.exports.codeBlocks;\n Object.keys(blocks).forEach(function(key) {\n var re = new RegExp(blocks[key].start + '([\\\\S\\\\s]*?)' + blocks[key].end, 'g');\n html = html.replace(re, function(match, subMatch) {\n codeBlockLookup.push(match);\n return 'JUICE_CODE_BLOCK_' + (codeBlockLookup.length - 1) + '_';\n });\n });\n return html;\n };\n\n var decodeCodeBlocks = function(html) {\n for(var index = 0; index < codeBlockLookup.length; index++) {\n var re = new RegExp('JUICE_CODE_BLOCK_' + index + '_(=\"\")?', 'gi');\n html = html.replace(re, function() {\n return codeBlockLookup[index];\n });\n }\n return html;\n };\n\n return {\n encodeEntities: encodeCodeBlocks,\n decodeEntities: decodeCodeBlocks,\n };\n};\n\n/**\n * Parses the input, calls the callback on the parsed DOM, and generates the output\n *\n * @param {String} html input html to be processed\n * @param {Object} options for the parser\n * @param {Function} callback to be invoked on the DOM\n * @param {Array} callbackExtraArguments to be passed to the callback\n * @return {String} resulting html\n */\nmodule.exports = function(html, options, callback, callbackExtraArguments) {\n var entityConverters = createEntityConverters();\n\n var $ = cheerioLoad(html, options, entityConverters.encodeEntities);\n var args = [ $ ];\n args.push.apply(args, callbackExtraArguments);\n var doc = callback.apply(undefined, args) || $;\n\n if (options && options.xmlMode) {\n return entityConverters.decodeEntities(doc.xml());\n }\n return entityConverters.decodeEntities(doc.html());\n};\n\nmodule.exports.codeBlocks = {\n EJS: { start: '<%', end: '%>' },\n HBS: { start: '{{', end: '}}' }\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar numbers = require('./numbers');\n\nmodule.exports = function makeJuiceClient(juiceClient) {\n\njuiceClient.ignoredPseudos = ['hover', 'active', 'focus', 'visited', 'link'];\njuiceClient.widthElements = ['TABLE', 'TD', 'TH', 'IMG'];\njuiceClient.heightElements = ['TABLE', 'TD', 'TH', 'IMG'];\njuiceClient.tableElements = ['TABLE', 'TH', 'TR', 'TD', 'CAPTION', 'COLGROUP', 'COL', 'THEAD', 'TBODY', 'TFOOT'];\njuiceClient.nonVisualElements = [ 'HEAD', 'TITLE', 'BASE', 'LINK', 'STYLE', 'META', 'SCRIPT', 'NOSCRIPT' ];\njuiceClient.styleToAttribute = {\n 'background-color': 'bgcolor',\n 'background-image': 'background',\n 'text-align': 'align',\n 'vertical-align': 'valign'\n};\njuiceClient.excludedProperties = [];\n\njuiceClient.juiceDocument = juiceDocument;\njuiceClient.inlineDocument = inlineDocument;\n\nfunction inlineDocument($, css, options) {\n\n options = options || {};\n var rules = utils.parseCSS(css);\n var editedElements = [];\n var styleAttributeName = 'style';\n var counters = {};\n\n if (options.styleAttributeName) {\n styleAttributeName = options.styleAttributeName;\n }\n\n rules.forEach(handleRule);\n editedElements.forEach(setStyleAttrs);\n\n if (options.inlinePseudoElements) {\n editedElements.forEach(inlinePseudoElements);\n }\n\n if (options.applyWidthAttributes) {\n editedElements.forEach(function(el) {\n setDimensionAttrs(el, 'width');\n });\n }\n\n if (options.applyHeightAttributes) {\n editedElements.forEach(function(el) {\n setDimensionAttrs(el, 'height');\n });\n }\n\n if (options.applyAttributesTableElements) {\n editedElements.forEach(setAttributesOnTableElements);\n }\n\n if (options.insertPreservedExtraCss && options.extraCss) {\n var preservedText = utils.getPreservedText(options.extraCss, {\n mediaQueries: options.preserveMediaQueries,\n fontFaces: options.preserveFontFaces,\n keyFrames: options.preserveKeyFrames\n });\n if (preservedText) {\n var $appendTo = null;\n if (options.insertPreservedExtraCss !== true) {\n $appendTo = $(options.insertPreservedExtraCss);\n } else {\n $appendTo = $('head');\n if (!$appendTo.length) { $appendTo = $('body'); }\n if (!$appendTo.length) { $appendTo = $.root(); }\n }\n\n $appendTo.first().append('<style>' + preservedText + '</style>');\n }\n }\n\n function handleRule(rule) {\n var sel = rule[0];\n var style = rule[1];\n var selector = new utils.Selector(sel);\n var parsedSelector = selector.parsed();\n\n if (!parsedSelector) {\n return;\n }\n\n var pseudoElementType = getPseudoElementType(parsedSelector);\n\n // skip rule if the selector has any pseudos which are ignored\n for (var i = 0; i < parsedSelector.length; ++i) {\n var subSel = parsedSelector[i];\n if (subSel.pseudos) {\n for (var j = 0; j < subSel.pseudos.length; ++j) {\n var subSelPseudo = subSel.pseudos[j];\n if (juiceClient.ignoredPseudos.indexOf(subSelPseudo.name) >= 0) {\n return;\n }\n }\n }\n }\n\n if (pseudoElementType) {\n var last = parsedSelector[parsedSelector.length - 1];\n var pseudos = last.pseudos;\n last.pseudos = filterElementPseudos(last.pseudos);\n sel = parsedSelector.toString();\n last.pseudos = pseudos;\n }\n\n var els;\n try {\n els = $(sel);\n } catch (err) {\n // skip invalid selector\n return;\n }\n\n els.each(function() {\n var el = this;\n\n if (el.name && juiceClient.nonVisualElements.indexOf(el.name.toUpperCase()) >= 0) {\n return;\n }\n\n if (pseudoElementType) {\n var pseudoElPropName = 'pseudo' + pseudoElementType;\n var pseudoEl = el[pseudoElPropName];\n if (!pseudoEl) {\n pseudoEl = el[pseudoElPropName] = $('<span />').get(0);\n pseudoEl.pseudoElementType = pseudoElementType;\n pseudoEl.pseudoElementParent = el;\n pseudoEl.counterProps = el.counterProps;\n el[pseudoElPropName] = pseudoEl;\n }\n el = pseudoEl;\n }\n\n if (!el.styleProps) {\n el.styleProps = {};\n\n // if the element has inline styles, fake selector with topmost specificity\n if ($(el).attr(styleAttributeName)) {\n var cssText = '* { ' + $(el).attr(styleAttributeName) + ' } ';\n addProps(utils.parseCSS(cssText)[0][1], new utils.Selector('<style>', true));\n }\n\n // store reference to an element we need to compile style=\"\" attr for\n editedElements.push(el);\n }\n\n if (!el.counterProps) {\n el.counterProps = el.parent && el.parent.counterProps\n ? Object.create(el.parent.counterProps)\n : {};\n }\n\n function resetCounter(el, value) {\n var tokens = value.split(/\\s+/);\n\n for (var j = 0; j < tokens.length; j++) {\n var counter = tokens[j];\n var resetval = parseInt(tokens[j+1], 10);\n\n isNaN(resetval)\n ? el.counterProps[counter] = counters[counter] = 0\n : el.counterProps[counter] = counters[tokens[j++]] = resetval;\n }\n }\n\n function incrementCounter(el, value) {\n var tokens = value.split(/\\s+/);\n\n for (var j = 0; j < tokens.length; j++) {\n var counter = tokens[j];\n\n if (el.counterProps[counter] === undefined) {\n continue;\n }\n\n var incrval = parseInt(tokens[j+1], 10);\n\n isNaN(incrval)\n ? el.counterProps[counter] = counters[counter] += 1\n : el.counterProps[counter] = counters[tokens[j++]] += incrval;\n }\n }\n\n // go through the properties\n function addProps(style, selector) {\n for (var i = 0, l = style.length; i < l; i++) {\n if (style[i].type == 'property') {\n var name = style[i].name;\n var value = style[i].value;\n\n if (name === 'counter-reset') {\n resetCounter(el, value);\n }\n\n if (name === 'counter-increment') {\n incrementCounter(el, value);\n }\n\n var important = value.match(/!important$/) !== null;\n if (important && !options.preserveImportant) value = removeImportant(value);\n // adds line number and column number for the properties as \"additionalPriority\" to the\n // properties because in CSS the position directly affect the priority.\n var additionalPriority = [style[i].position.start.line, style[i].position.start.col];\n var prop = new utils.Property(name, value, selector, important ? 2 : 0, additionalPriority);\n var existing = el.styleProps[name];\n\n // if property name is not in the excluded properties array\n if (juiceClient.excludedProperties.indexOf(name) < 0) {\n if (existing && existing.compare(prop) === prop || !existing) {\n // deleting a property let us change the order (move it to the end in the setStyleAttrs loop)\n if (existing && existing.selector !== selector) {\n delete el.styleProps[name];\n } else if (existing) {\n // make \"prop\" a special composed property.\n prop.nextProp = existing;\n }\n\n el.styleProps[name] = prop;\n }\n }\n }\n }\n }\n\n addProps(style, selector);\n });\n }\n\n function setStyleAttrs(el) {\n var l = Object.keys(el.styleProps).length;\n var props = [];\n // Here we loop each property and make sure to \"expand\"\n // linked \"nextProp\" properties happening when the same property\n // is declared multiple times in the same selector.\n Object.keys(el.styleProps).forEach(function(key) {\n var np = el.styleProps[key];\n while (typeof np !== 'undefined') {\n props.push(np);\n np = np.nextProp;\n }\n });\n // sort properties by their originating selector's specificity so that\n // props like \"padding\" and \"padding-bottom\" are resolved as expected.\n props.sort(function(a, b) {\n return a.compareFunc(b);\n });\n var string = props\n .filter(function(prop) {\n // Content becomes the innerHTML of pseudo elements, not used as a\n // style property\n return prop.prop !== 'content';\n })\n .map(function(prop) {\n return prop.prop + ': ' + prop.value.replace(/[\"]/g, '\\'') + ';';\n })\n .join(' ');\n if (string) {\n $(el).attr(styleAttributeName, string);\n }\n }\n\n function inlinePseudoElements(el) {\n if (el.pseudoElementType && el.styleProps.content) {\n var parsed = parseContent(el);\n if (parsed.img) {\n el.name = 'img';\n $(el).attr('src', parsed.img);\n } else {\n $(el).text(parsed);\n }\n var parent = el.pseudoElementParent;\n if (el.pseudoElementType === 'before') {\n $(parent).prepend(el);\n } else {\n $(parent).append(el);\n }\n }\n }\n\n function setDimensionAttrs(el, dimension) {\n if (!el.name) { return; }\n var elName = el.name.toUpperCase();\n if (juiceClient[dimension + 'Elements'].indexOf(elName) > -1) {\n for (var i in el.styleProps) {\n if (el.styleProps[i].prop === dimension) {\n var value = el.styleProps[i].value;\n if (options.preserveImportant) {\n value = removeImportant(value);\n }\n if (value.match(/px/)) {\n var pxSize = value.replace('px', '');\n $(el).attr(dimension, pxSize);\n return;\n }\n if (juiceClient.tableElements.indexOf(elName) > -1 && value.match(/\\%/)) {\n $(el).attr(dimension, value);\n return;\n }\n }\n }\n }\n }\n\n function extractBackgroundUrl(value) {\n return value.indexOf('url(') !== 0\n ? value\n : value.replace(/^url\\(([\"'])?([^\"']+)\\1\\)$/, '$2');\n }\n\n function setAttributesOnTableElements(el) {\n if (!el.name) { return; }\n var elName = el.name.toUpperCase();\n var styleProps = Object.keys(juiceClient.styleToAttribute);\n\n if (juiceClient.tableElements.indexOf(elName) > -1) {\n for (var i in el.styleProps) {\n if (styleProps.indexOf(el.styleProps[i].prop) > -1) {\n var prop = juiceClient.styleToAttribute[el.styleProps[i].prop];\n var value = el.styleProps[i].value;\n if (options.preserveImportant) {\n value = removeImportant(value);\n }\n if (prop === 'background') {\n value = extractBackgroundUrl(value);\n }\n if (/(linear|radial)-gradient\\(/i.test(value)) {\n continue;\n }\n $(el).attr(prop, value);\n }\n }\n }\n }\n}\n\nfunction removeImportant(value) {\n return value.replace(/\\s*!important$/, '')\n}\n\nfunction findVariableValue(el, variable) {\n while (el) {\n if (variable in el.styleProps) {\n return el.styleProps[variable].value;\n }\n\n var el = el.pseudoElementParent || el.parent;\n }\n}\n\nfunction applyCounterStyle(counter, style) {\n switch (style) {\n case 'lower-roman':\n return numbers.romanize(counter).toLowerCase();\n case 'upper-roman':\n return numbers.romanize(counter);\n case 'lower-latin':\n case 'lower-alpha':\n return numbers.alphanumeric(counter).toLowerCase();\n case 'upper-latin':\n case 'upper-alpha':\n return numbers.alphanumeric(counter);\n // TODO support more counter styles\n default:\n return counter.toString();\n }\n}\n\nfunction parseContent(el) {\n var content = el.styleProps.content.value;\n\n if (content === 'none' || content === 'normal') {\n return '';\n }\n\n var imageUrlMatch = content.match(/^\\s*url\\s*\\(\\s*(.*?)\\s*\\)\\s*$/i);\n if (imageUrlMatch) {\n var url = imageUrlMatch[1].replace(/^['\"]|['\"]$/g, '');\n return { img: url };\n }\n\n var parsed = [];\n\n var tokens = content.split(/['\"]/);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i] === '') continue;\n\n var varMatch = tokens[i].match(/var\\s*\\(\\s*(.*?)\\s*(,\\s*(.*?)\\s*)?\\s*\\)/i);\n if (varMatch) {\n var variable = findVariableValue(el, varMatch[1]) || varMatch[2];\n parsed.push(variable.replace(/^['\"]|['\"]$/g, ''));\n continue;\n }\n\n var counterMatch = tokens[i].match(/counter\\s*\\(\\s*(.*?)\\s*(,\\s*(.*?)\\s*)?\\s*\\)/i);\n if (counterMatch && counterMatch[1] in el.counterProps) {\n var counter = el.counterProps[counterMatch[1]];\n parsed.push(applyCounterStyle(counter, counterMatch[3]));\n continue;\n }\n\n var attrMatch = tokens[i].match(/attr\\s*\\(\\s*(.*?)\\s*\\)/i);\n if (attrMatch) {\n var attr = attrMatch[1];\n parsed.push(el.pseudoElementParent\n ? el.pseudoElementParent.attribs[attr]\n : el.attribs[attr]\n );\n continue;\n }\n\n parsed.push(tokens[i]);\n }\n\n content = parsed.join('');\n // Naive unescape, assume no unicode char codes\n content = content.replace(/\\\\/g, '');\n return content;\n}\n\n// Return \"before\" or \"after\" if the given selector is a pseudo element (e.g.,\n// a::after).\nfunction getPseudoElementType(selector) {\n if (selector.length === 0) {\n return;\n }\n\n var pseudos = selector[selector.length - 1].pseudos;\n if (!pseudos) {\n return;\n }\n\n for (var i = 0; i < pseudos.length; i++) {\n if (isPseudoElementName(pseudos[i])) {\n return pseudos[i].name;\n }\n }\n}\n\nfunction isPseudoElementName(pseudo) {\n return pseudo.name === 'before' || pseudo.name === 'after';\n}\n\nfunction filterElementPseudos(pseudos) {\n return pseudos.filter(function(pseudo) {\n return !isPseudoElementName(pseudo);\n });\n}\n\nfunction juiceDocument($, options) {\n options = utils.getDefaultOptions(options);\n var css = extractCssFromDocument($, options);\n css += '\\n' + options.extraCss;\n inlineDocument($, css, options);\n return $;\n}\n\nfunction getStylesData($, options) {\n var results = [];\n var stylesList = $('style');\n var styleDataList, styleData, styleElement;\n stylesList.each(function() {\n styleElement = this;\n // the API for Cheerio using parse5 (default) and htmlparser2 are slightly different\n // detect this by checking if .childNodes exist (as opposed to .children)\n var usingParse5 = !!styleElement.childNodes;\n styleDataList = usingParse5 ? styleElement.childNodes : styleElement.children;\n if (styleDataList.length !== 1) {\n if (options.removeStyleTags) {\n $(styleElement).remove();\n }\n return;\n }\n styleData = styleDataList[0].data;\n if (options.applyStyleTags && $(styleElement).attr('data-embed') === undefined) {\n results.push(styleData);\n }\n if (options.removeStyleTags && $(styleElement).attr('data-embed') === undefined) {\n var text = usingParse5 ? styleElement.childNodes[0].nodeValue : styleElement.children[0].data;\n var preservedText = utils.getPreservedText(text, {\n mediaQueries: options.preserveMediaQueries,\n fontFaces: options.preserveFontFaces,\n keyFrames: options.preserveKeyFrames,\n pseudos: options.preservePseudos\n }, juiceClient.ignoredPseudos);\n if (preservedText) {\n if (usingParse5) {\n styleElement.childNodes[0].nodeValue = preservedText;\n } else {\n styleElement.children[0].data = preservedText;\n }\n } else {\n $(styleElement).remove();\n }\n }\n $(styleElement).removeAttr('data-embed');\n });\n return results;\n}\n\nfunction extractCssFromDocument($, options) {\n var results = getStylesData($, options);\n var css = results.join('\\n');\n return css;\n}\n\nreturn juiceClient;\n\n};\n","'use strict';\n\n/**\n * Converts a decimal number to roman numeral.\n * https://stackoverflow.com/questions/9083037/convert-a-number-into-a-roman-numeral-in-javascript\n *\n * @param {Number} number\n * @api private.\n */\nexports.romanize = function(num) {\n if (isNaN(num))\n return NaN;\n var digits = String(+num).split(\"\"),\n key = [\"\",\"C\",\"CC\",\"CCC\",\"CD\",\"D\",\"DC\",\"DCC\",\"DCCC\",\"CM\",\n \"\",\"X\",\"XX\",\"XXX\",\"XL\",\"L\",\"LX\",\"LXX\",\"LXXX\",\"XC\",\n \"\",\"I\",\"II\",\"III\",\"IV\",\"V\",\"VI\",\"VII\",\"VIII\",\"IX\"],\n roman = \"\",\n i = 3;\n while (i--)\n roman = (key[+digits.pop() + (i * 10)] || \"\") + roman;\n return Array(+digits.join(\"\") + 1).join(\"M\") + roman;\n}\n\n/**\n * Converts a decimal number to alphanumeric numeral.\n * https://stackoverflow.com/questions/45787459/convert-number-to-alphabet-string-javascript\n *\n * @param {Number} number\n * @api private.\n */\nexports.alphanumeric = function(num) {\n var s = '', t;\n\n while (num > 0) {\n t = (num - 1) % 26;\n s = String.fromCharCode(65 + t) + s;\n num = (num - t)/26 | 0;\n }\n return s || undefined;\n}","'use strict';\n\nmodule.exports = exports = Property;\n\n/**\n * Module dependencies.\n */\n\nvar utils = require('./utils');\n\n/**\n * CSS property constructor.\n *\n * @param {String} property\n * @param {String} value\n * @param {Selector} selector the property originates from\n * @param {Integer} priority 0 for normal properties, 2 for !important properties.\n * @param {Array} additional array of integers representing more detailed priorities (sorting)\n * @api public\n */\n\nfunction Property(prop, value, selector, priority, additionalPriority) {\n this.prop = prop;\n this.value = value;\n this.selector = selector;\n this.priority = priority || 0;\n this.additionalPriority = additionalPriority || [];\n}\n\n/**\n * Compares with another Property based on Selector#specificity.\n *\n * @api public\n */\n\nProperty.prototype.compareFunc = function(property) {\n var a = [];\n a.push.apply(a, this.selector.specificity());\n a.push.apply(a, this.additionalPriority);\n a[0] += this.priority;\n var b = [];\n b.push.apply(b, property.selector.specificity());\n b.push.apply(b, property.additionalPriority);\n b[0] += property.priority;\n return utils.compareFunc(a, b);\n};\n\nProperty.prototype.compare = function(property) {\n var winner = this.compareFunc(property);\n if (winner === 1) {\n return this;\n }\n return property;\n};\n\n\n/**\n * Returns CSS property\n *\n * @api public\n */\n\nProperty.prototype.toString = function() {\n return this.prop + ': ' + this.value.replace(/['\"]+/g, '') + ';';\n};\n","'use strict';\n\nvar parser = require('slick/parser');\n\nmodule.exports = exports = Selector;\n\n/**\n * CSS selector constructor.\n *\n * @param {String} selector text\n * @param {Array} optionally, precalculated specificity\n * @api public\n */\n\nfunction Selector(text, styleAttribute) {\n this.text = text;\n this.spec = undefined;\n this.styleAttribute = styleAttribute || false;\n}\n\n/**\n * Get parsed selector.\n *\n * @api public\n */\n\nSelector.prototype.parsed = function() {\n if (!this.tokens) { this.tokens = parse(this.text); }\n return this.tokens;\n};\n\n/**\n * Lazy specificity getter\n *\n * @api public\n */\n\nSelector.prototype.specificity = function() {\n var styleAttribute = this.styleAttribute;\n if (!this.spec) { this.spec = specificity(this.text, this.parsed()); }\n return this.spec;\n\n function specificity(text, parsed) {\n var expressions = parsed || parse(text);\n var spec = [styleAttribute ? 1 : 0, 0, 0, 0];\n var nots = [];\n\n for (var i = 0; i < expressions.length; i++) {\n var expression = expressions[i];\n var pseudos = expression.pseudos;\n\n // id awards a point in the second column\n if (expression.id) { spec[1]++; }\n\n // classes and attributes award a point each in the third column\n if (expression.attributes) { spec[2] += expression.attributes.length; }\n if (expression.classList) { spec[2] += expression.classList.length; }\n\n // tag awards a point in the fourth column\n if (expression.tag && expression.tag !== '*') { spec[3]++; }\n\n // pseudos award a point each in the fourth column\n if (pseudos) {\n spec[3] += pseudos.length;\n\n for (var p = 0; p < pseudos.length; p++) {\n if (pseudos[p].name === 'not') {\n nots.push(pseudos[p].value);\n spec[3]--;\n }\n }\n }\n }\n\n for (var ii = nots.length; ii--;) {\n var not = specificity(nots[ii]);\n for (var jj = 4; jj--;) { spec[jj] += not[jj]; }\n }\n\n return spec;\n }\n};\n\n/**\n * Parses a selector and returns the tokens.\n *\n * @param {String} selector\n * @api private.\n */\n\nfunction parse(text) {\n try {\n return parser(text)[0];\n } catch (e) {\n return [];\n }\n}\n","'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar mensch = require('mensch');\nvar Selector = require('./selector');\nvar Property = require('./property');\n\nexports.Selector = Selector;\nexports.Property = Property;\n\n/**\n * Returns an array of the selectors.\n *\n * @license Sizzle CSS Selector Engine - MIT\n * @param {String} selectorText from mensch\n * @api public\n */\n\nexports.extract = function extract(selectorText) {\n var attr = 0;\n var sels = [];\n var sel = '';\n\n for (var i = 0, l = selectorText.length; i < l; i++) {\n var c = selectorText.charAt(i);\n\n if (attr) {\n if (']' === c || ')' === c) { attr--; }\n sel += c;\n } else {\n if (',' === c) {\n sels.push(sel);\n sel = '';\n } else {\n if ('[' === c || '(' === c) { attr++; }\n if (sel.length || (c !== ',' && c !== '\\n' && c !== ' ')) { sel += c; }\n }\n }\n }\n\n if (sel.length) {\n sels.push(sel);\n }\n\n return sels;\n};\n\n/**\n * Returns a parse tree for a CSS source.\n * If it encounters multiple selectors separated by a comma, it splits the\n * tree.\n *\n * @param {String} css source\n * @api public\n */\n\nexports.parseCSS = function(css) {\n var parsed = mensch.parse(css, {position: true, comments: true});\n var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];\n var ret = [];\n\n for (var i = 0, l = rules.length; i < l; i++) {\n if (rules[i].type == 'rule') {\n var rule = rules[i];\n var selectors = rule.selectors;\n\n for (var ii = 0, ll = selectors.length; ii < ll; ii++) {\n ret.push([selectors[ii], rule.declarations]);\n }\n }\n }\n\n return ret;\n};\n\n/**\n * Returns preserved text for a CSS source.\n *\n * @param {String} css source\n * @param {Object} options\n * @api public\n */\n\nexports.getPreservedText = function(css, options, ignoredPseudos) {\n var parsed = mensch.parse(css, {position: true, comments: true});\n var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];\n var preserved = [];\n var lastStart = null;\n\n for (var i = rules.length - 1; i >= 0; i--) {\n if ((options.fontFaces && rules[i].type === 'font-face') ||\n (options.mediaQueries && rules[i].type === 'media') ||\n (options.keyFrames && rules[i].type === 'keyframes') ||\n (options.pseudos && rules[i].selectors && this.matchesPseudo(rules[i].selectors[0], ignoredPseudos))) {\n preserved.unshift(\n mensch.stringify(\n { stylesheet: { rules: [ rules[i] ] }},\n { comments: false, indentation: ' ' }\n )\n );\n }\n lastStart = rules[i].position.start;\n }\n\n if (preserved.length === 0) {\n return false;\n }\n return '\\n' + preserved.join('\\n') + '\\n';\n};\n\nexports.normalizeLineEndings = function(text) {\n return text.replace(/\\r\\n/g, '\\n').replace(/\\n/g, '\\r\\n');\n};\n\nexports.matchesPseudo = function(needle, haystack) {\n return haystack.find(function (element) {\n return needle.indexOf(element) > -1;\n })\n}\n\n/**\n * Compares two specificity vectors, returning the winning one.\n *\n * @param {Array} vector a\n * @param {Array} vector b\n * @return {Array}\n * @api public\n */\n\nexports.compareFunc = function(a, b) {\n var min = Math.min(a.length, b.length);\n for (var i = 0; i < min; i++) {\n if (a[i] === b[i]) { continue; }\n if (a[i] > b[i]) { return 1; }\n return -1;\n }\n\n return a.length - b.length;\n};\n\nexports.compare = function(a, b) {\n return exports.compareFunc(a, b) == 1 ? a : b;\n};\n\nexports.getDefaultOptions = function(options) {\n var result = Object.assign({\n extraCss: '',\n insertPreservedExtraCss: true,\n applyStyleTags: true,\n removeStyleTags: true,\n preserveMediaQueries: true,\n preserveFontFaces: true,\n preserveKeyFrames: true,\n preservePseudos: true,\n applyWidthAttributes: true,\n applyHeightAttributes: true,\n applyAttributesTableElements: true,\n url: ''\n }, options);\n\n result.webResources = result.webResources || {};\n\n return result;\n};\n","module.exports = {\n lex : require('./lib/lexer'),\n parse: require('./lib/parser'),\n stringify: require('./lib/stringify')\n};\n","exports = module.exports = debug;\n\nfunction debug(label) {\n return _debug.bind(null, label);\n}\n\nfunction _debug(label) {\n var args = [].slice.call(arguments, 1);\n args.unshift('[' + label + ']');\n process.stderr.write(args.join(' ') + '\\n');\n}","var DEBUG = false; // `true` to print debugging info.\nvar TIMER = false; // `true` to time calls to `lex()` and print the results.\n\nvar debug = require('./debug')('lex');\n\nexports = module.exports = lex;\n\n/**\n * Convert a CSS string into an array of lexical tokens.\n *\n * @param {String} css CSS\n * @returns {Array} lexical tokens\n */\nfunction lex(css) {\n var start; // Debug timer start.\n\n var buffer = ''; // Character accumulator\n var ch; // Current character\n var column = 0; // Current source column number\n var cursor = -1; // Current source cursor position\n var depth = 0; // Current nesting depth\n var line = 1; // Current source line number\n var state = 'before-selector'; // Current state\n var stack = [state]; // State stack\n var token = {}; // Current token\n var tokens = []; // Token accumulator\n\n // Supported @-rules, in roughly descending order of usage probability.\n var atRules = [\n 'media',\n 'keyframes',\n { name: '-webkit-keyframes', type: 'keyframes', prefix: '-webkit-' },\n { name: '-moz-keyframes', type: 'keyframes', prefix: '-moz-' },\n { name: '-ms-keyframes', type: 'keyframes', prefix: '-ms-' },\n { name: '-o-keyframes', type: 'keyframes', prefix: '-o-' },\n 'font-face',\n { name: 'import', state: 'before-at-value' },\n { name: 'charset', state: 'before-at-value' },\n 'supports',\n 'viewport',\n { name: 'namespace', state: 'before-at-value' },\n 'document',\n { name: '-moz-document', type: 'document', prefix: '-moz-' },\n 'page'\n ];\n\n // -- Functions ------------------------------------------------------------\n\n /**\n * Advance the character cursor and return the next character.\n *\n * @returns {String} The next character.\n */\n function getCh() {\n skip();\n return css[cursor];\n }\n\n /**\n * Return the state at the given index in the stack.\n * The stack is LIFO so indexing is from the right.\n *\n * @param {Number} [index=0] Index to return.\n * @returns {String} state\n */\n function getState(index) {\n return index ? stack[stack.length - 1 - index] : state;\n }\n\n /**\n * Look ahead for a string beginning from the next position. The string\n * being looked for must start at the next position.\n *\n * @param {String} str The string to look for.\n * @returns {Boolean} Whether the string was found.\n */\n function isNextString(str) {\n var start = cursor + 1;\n return (str === css.slice(start, start + str.length));\n }\n\n /**\n * Find the start position of a substring beginning from the next\n * position. The string being looked for may begin anywhere.\n *\n * @param {String} str The substring to look for.\n * @returns {Number|false} The position, or `false` if not found.\n */\n function find(str) {\n var pos = css.slice(cursor).indexOf(str);\n\n return pos > 0 ? pos : false;\n }\n\n /**\n * Determine whether a character is next.\n *\n * @param {String} ch Character.\n * @returns {Boolean} Whether the character is next.\n */\n function isNextChar(ch) {\n return ch === peek(1);\n }\n\n /**\n * Return the character at the given cursor offset. The offset is relative\n * to the cursor, so negative values move backwards.\n *\n * @param {Number} [offset=1] Cursor offset.\n * @returns {String} Character.\n */\n function peek(offset) {\n return css[cursor + (offset || 1)];\n }\n\n /**\n * Remove the current state from the stack and set the new current state.\n *\n * @returns {String} The removed state.\n */\n function popState() {\n var removed = stack.pop();\n state = stack[stack.length - 1];\n\n return removed;\n }\n\n /**\n * Set the current state and add it to the stack.\n *\n * @param {String} newState The new state.\n * @returns {Number} The new stack length.\n */\n function pushState(newState) {\n state = newState;\n stack.push(state);\n\n return stack.length;\n }\n\n /**\n * Replace the current state with a new state.\n *\n * @param {String} newState The new state.\n * @returns {String} The replaced state.\n */\n function replaceState(newState) {\n var previousState = state;\n stack[stack.length - 1] = state = newState;\n\n return previousState;\n }\n\n /**\n * Move the character cursor. Positive numbers move the cursor forward.\n * Negative numbers are not supported!\n *\n * @param {Number} [n=1] Number of characters to skip.\n */\n function skip(n) {\n if ((n || 1) == 1) {\n if (css[cursor] == '\\n') {\n line++;\n column = 1;\n } else {\n column++;\n }\n cursor++;\n } else {\n var skipStr = css.slice(cursor, cursor + n).split('\\n');\n if (skipStr.length > 1) {\n line += skipStr.length - 1;\n column = 1;\n }\n column += skipStr[skipStr.length - 1].length;\n cursor = cursor + n;\n }\n }\n\n /**\n * Add the current token to the pile and reset the buffer.\n */\n function addToken() {\n token.end = {\n line: line,\n col: column\n };\n\n DEBUG && debug('addToken:', JSON.stringify(token, null, 2));\n\n tokens.push(token);\n\n buffer = '';\n token = {};\n }\n\n /**\n * Set the current token.\n *\n * @param {String} type Token type.\n */\n function initializeToken(type) {\n token = {\n type: type,\n start: {\n line: line,\n col : column\n }\n };\n }\n\n // -- Main Loop ------------------------------------------------------------\n\n /*\n The main loop is a state machine that reads in one character at a time,\n and determines what to do based on the current state and character.\n This is implemented as a series of nested `switch` statements and the\n case orders have been mildly optimized based on rough probabilities\n calculated by processing a small sample of real-world CSS.\n\n Further optimization (such as a dispatch table) shouldn't be necessary\n since the total number of cases is very low.\n */\n\n TIMER && (start = Date.now());\n\n while (ch = getCh()) {\n DEBUG && debug(ch, getState());\n\n // column += 1;\n\n switch (ch) {\n // Space\n case ' ':\n switch (getState()) {\n case 'selector':\n case 'value':\n case 'value-paren':\n case 'at-group':\n case 'at-value':\n case 'comment':\n case 'double-string':\n case 'single-string':\n buffer += ch;\n break;\n }\n break;\n\n // Newline or tab\n case '\\n':\n case '\\t':\n case '\\r':\n case '\\f':\n switch (getState()) {\n case 'value':\n case 'value-paren':\n case 'at-group':\n case 'comment':\n case 'single-string':\n case 'double-string':\n case 'selector':\n buffer += ch;\n break;\n\n case 'at-value':\n // Tokenize an @-rule if a semi-colon was omitted.\n if ('\\n' === ch) {\n token.value = buffer.trim();\n addToken();\n popState();\n }\n break;\n }\n\n // if ('\\n' === ch) {\n // column = 0;\n // line += 1;\n // }\n break;\n\n case ':':\n switch (getState()) {\n case 'name':\n token.name = buffer.trim();\n buffer = '';\n\n replaceState('before-value');\n break;\n\n case 'before-selector':\n buffer += ch;\n\n initializeToken('selector');\n pushState('selector');\n break;\n\n case 'before-value':\n replaceState('value');\n buffer += ch;\n break;\n\n default:\n buffer += ch;\n break;\n }\n break;\n\n case ';':\n switch (getState()) {\n case 'name':\n case 'before-value':\n case 'value':\n // Tokenize a declaration\n // if value is empty skip the declaration\n if (buffer.trim().length > 0) {\n token.value = buffer.trim(),\n addToken();\n }\n replaceState('before-name');\n break;\n\n case 'value-paren':\n // Insignificant semi-colon\n buffer += ch;\n break;\n\n case 'at-value':\n // Tokenize an @-rule\n token.value = buffer.trim();\n addToken();\n popState();\n break;\n\n case 'before-name':\n // Extraneous semi-colon\n break;\n\n default:\n buffer += ch;\n break;\n }\n break;\n\n case '{':\n switch (getState()) {\n case 'selector':\n // If the sequence is `\\{` then assume that the brace should be escaped.\n if (peek(-1) === '\\\\') {\n buffer += ch;\n break;\n }\n\n // Tokenize a selector\n token.text = buffer.trim();\n addToken();\n replaceState('before-name');\n depth = depth + 1;\n break;\n\n case 'at-group':\n // Tokenize an @-group\n token.name = buffer.trim();\n\n // XXX: @-rules are starting to get hairy\n switch (token.type) {\n case 'font-face':\n case 'viewport' :\n case 'page' :\n pushState('before-name');\n break;\n\n default:\n pushState('before-selector');\n }\n\n addToken();\n depth = depth + 1;\n break;\n\n case 'name':\n case 'at-rule':\n // Tokenize a declaration or an @-rule\n token.name = buffer.trim();\n addToken();\n pushState('before-name');\n depth = depth + 1;\n break;\n\n case 'comment':\n case 'double-string':\n case 'single-string':\n // Ignore braces in comments and strings\n buffer += ch;\n break;\n case 'before-value':\n replaceState('value');\n buffer += ch;\n break;\n }\n\n break;\n\n case '}':\n switch (getState()) {\n case 'before-name':\n case 'name':\n case 'before-value':\n case 'value':\n // If the buffer contains anything, it is a value\n if (buffer) {\n token.value = buffer.trim();\n }\n\n // If the current token has a name and a value it should be tokenized.\n if (token.name && token.value) {\n addToken();\n }\n\n // Leave the block\n initializeToken('end');\n addToken();\n popState();\n\n // We might need to leave again.\n // XXX: What about 3 levels deep?\n if ('at-group' === getState()) {\n initializeToken('at-group-end');\n addToken();\n popState();\n }\n \n if (depth > 0) {\n depth = depth - 1;\n }\n\n break;\n\n case 'at-group':\n case 'before-selector':\n case 'selector':\n // If the sequence is `\\}` then assume that the brace should be escaped.\n if (peek(-1) === '\\\\') {\n buffer += ch;\n break;\n }\n\n if (depth > 0) {\n // Leave block if in an at-group\n if ('at-group' === getState(1)) {\n initializeToken('at-group-end');\n addToken();\n }\n }\n\n if (depth > 1) {\n popState();\n }\n\n if (depth > 0) {\n depth = depth - 1;\n }\n break;\n\n case 'double-string':\n case 'single-string':\n case 'comment':\n // Ignore braces in comments and strings.\n buffer += ch;\n break;\n }\n\n break;\n\n // Strings\n case '\"':\n case \"'\":\n switch (getState()) {\n case 'double-string':\n if ('\"' === ch && '\\\\' !== peek(-1)) {\n popState();\n }\n break;\n\n case 'single-string':\n if (\"'\" === ch && '\\\\' !== peek(-1)) {\n popState();\n }\n break;\n\n case 'before-at-value':\n replaceState('at-value');\n pushState('\"' === ch ? 'double-string' : 'single-string');\n break;\n\n case 'before-value':\n replaceState('value');\n pushState('\"' === ch ? 'double-string' : 'single-string');\n break;\n\n case 'comment':\n // Ignore strings within comments.\n break;\n\n default:\n if ('\\\\' !== peek(-1)) {\n pushState('\"' === ch ? 'double-string' : 'single-string');\n }\n }\n\n buffer += ch;\n break;\n\n // Comments\n case '/':\n switch (getState()) {\n case 'comment':\n case 'double-string':\n case 'single-string':\n // Ignore\n buffer += ch;\n break;\n\n case 'before-value':\n case 'selector':\n case 'name':\n case 'value':\n if (isNextChar('*')) {\n // Ignore comments in selectors, properties and values. They are\n // difficult to represent in the AST.\n var pos = find('*/');\n\n if (pos) {\n skip(pos + 1);\n }\n } else {\n if (getState() == 'before-value') replaceState('value');\n buffer += ch;\n }\n break;\n\n default:\n if (isNextChar('*')) {\n // Create a comment token\n initializeToken('comment');\n pushState('comment');\n skip();\n }\n else {\n buffer += ch;\n }\n break;\n }\n break;\n\n // Comment end or universal selector\n case '*':\n switch (getState()) {\n case 'comment':\n if (isNextChar('/')) {\n // Tokenize a comment\n token.text = buffer; // Don't trim()!\n skip();\n addToken();\n popState();\n }\n else {\n buffer += ch;\n }\n break;\n\n case 'before-selector':\n buffer += ch;\n initializeToken('selector');\n pushState('selector');\n break;\n\n case 'before-value':\n replaceState('value');\n buffer += ch;\n break;\n\n default:\n buffer += ch;\n }\n break;\n\n // @-rules\n case '@':\n switch (getState()) {\n case 'comment':\n case 'double-string':\n case 'single-string':\n buffer += ch;\n break;\n case 'before-value':\n replaceState('value');\n buffer += ch;\n break;\n\n default:\n // Iterate over the supported @-rules and attempt to tokenize one.\n var tokenized = false;\n var name;\n var rule;\n\n for (var j = 0, len = atRules.length; !tokenized && j < len; ++j) {\n rule = atRules[j];\n name = rule.name || rule;\n\n if (!isNextString(name)) { continue; }\n\n tokenized = true;\n\n initializeToken(name);\n pushState(rule.state || 'at-group');\n skip(name.length);\n\n if (rule.prefix) {\n token.prefix = rule.prefix;\n }\n\n if (rule.type) {\n token.type = rule.type;\n }\n }\n\n if (!tokenized) {\n // Keep on truckin' America!\n buffer += ch;\n }\n break;\n }\n break;\n\n // Parentheses are tracked to disambiguate semi-colons, such as within a\n // data URI.\n case '(':\n switch (getState()) {\n case 'value':\n pushState('value-paren');\n break;\n case 'before-value':\n replaceState('value');\n break;\n }\n\n buffer += ch;\n break;\n\n case ')':\n switch (getState()) {\n case 'value-paren':\n popState();\n break;\n case 'before-value':\n replaceState('value');\n break;\n }\n\n buffer += ch;\n break;\n\n default:\n switch (getState()) {\n case 'before-selector':\n initializeToken('selector');\n pushState('selector');\n break;\n\n case 'before-name':\n initializeToken('property');\n replaceState('name');\n break;\n\n case 'before-value':\n replaceState('value');\n break;\n\n case 'before-at-value':\n replaceState('at-value');\n break;\n }\n\n buffer += ch;\n break;\n }\n }\n\n TIMER && debug('ran in', (Date.now() - start) + 'ms');\n\n return tokens;\n}\n","var DEBUG = false; // `true` to print debugging info.\nvar TIMER = false; // `true` to time calls to `parse()` and print the results.\n\nvar debug = require('./debug')('parse');\nvar lex = require('./lexer');\n\nexports = module.exports = parse;\n\nvar _comments; // Whether comments are allowed.\nvar _depth; // Current block nesting depth.\nvar _position; // Whether to include line/column position.\nvar _tokens; // Array of lexical tokens.\n\n/**\n * Convert a CSS string or array of lexical tokens into a `stringify`-able AST.\n *\n * @param {String} css CSS string or array of lexical token\n * @param {Object} [options]\n * @param {Boolean} [options.comments=false] allow comment nodes in the AST\n * @returns {Object} `stringify`-able AST\n */\nfunction parse(css, options) {\n var start; // Debug timer start.\n\n options || (options = {});\n _comments = !!options.comments;\n _position = !!options.position;\n\n _depth = 0;\n\n // Operate on a copy of the given tokens, or the lex()'d CSS string.\n _tokens = Array.isArray(css) ? css.slice() : lex(css);\n\n var rule;\n var rules = [];\n var token;\n\n TIMER && (start = Date.now());\n\n while ((token = next())) {\n rule = parseToken(token);\n rule && rules.push(rule);\n }\n\n TIMER && debug('ran in', (Date.now() - start) + 'ms');\n\n return {\n type: \"stylesheet\",\n stylesheet: {\n rules: rules\n }\n };\n}\n\n// -- Functions --------------------------------------------------------------\n\n/**\n * Build an AST node from a lexical token.\n *\n * @param {Object} token lexical token\n * @param {Object} [override] object hash of properties that override those\n * already in the token, or that will be added to the token.\n * @returns {Object} AST node\n */\nfunction astNode(token, override) {\n override || (override = {});\n\n var key;\n var keys = ['type', 'name', 'value'];\n var node = {};\n\n // Avoiding [].forEach for performance reasons.\n for (var i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n if (token[key]) {\n node[key] = override[key] || token[key];\n }\n }\n\n keys = Object.keys(override);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n if (!node[key]) {\n node[key] = override[key];\n }\n }\n\n if (_position) {\n node.position = {\n start: token.start,\n end: token.end\n };\n }\n\n DEBUG && debug('astNode:', JSON.stringify(node, null, 2));\n\n return node;\n}\n\n/**\n * Remove a lexical token from the stack and return the removed token.\n *\n * @returns {Object} lexical token\n */\nfunction next() {\n var token = _tokens.shift();\n DEBUG && debug('next:', JSON.stringify(token, null, 2));\n return token;\n}\n\n// -- Parse* Functions ---------------------------------------------------------\n\n/**\n * Convert an @-group lexical token to an AST node.\n *\n * @param {Object} token @-group lexical token\n * @returns {Object} @-group AST node\n */\nfunction parseAtGroup(token) {\n _depth = _depth + 1;\n\n // As the @-group token is assembled, relevant token values are captured here\n // temporarily. They will later be used as `tokenize()` overrides.\n var overrides = {};\n\n switch (token.type) {\n case 'font-face':\n case 'viewport' :\n overrides.declarations = parseDeclarations();\n break;\n\n case 'page':\n overrides.prefix = token.prefix;\n overrides.declarations = parseDeclarations();\n break;\n\n default:\n overrides.prefix = token.prefix;\n overrides.rules = parseRules();\n }\n\n return astNode(token, overrides);\n}\n\n/**\n * Convert an @import lexical token to an AST node.\n *\n * @param {Object} token @import lexical token\n * @returns {Object} @import AST node\n */\nfunction parseAtImport(token) {\n return astNode(token);\n}\n\n/**\n * Convert an @charset token to an AST node.\n *\n * @param {Object} token @charset lexical token\n * @returns {Object} @charset node\n */\nfunction parseCharset(token) {\n return astNode(token);\n}\n\n/**\n * Convert a comment token to an AST Node.\n *\n * @param {Object} token comment lexical token\n * @returns {Object} comment node\n */\nfunction parseComment(token) {\n return astNode(token, {text: token.text});\n}\n\nfunction parseNamespace(token) {\n return astNode(token);\n}\n\n/**\n * Convert a property lexical token to a property AST node.\n *\n * @returns {Object} property node\n */\nfunction parseProperty(token) {\n return astNode(token);\n}\n\n/**\n * Convert a selector lexical token to a selector AST node.\n *\n * @param {Object} token selector lexical token\n * @returns {Object} selector node\n */\nfunction parseSelector(token) {\n function trim(str) {\n return str.trim();\n }\n\n return astNode(token, {\n type: 'rule',\n selectors: token.text.split(',').map(trim),\n declarations: parseDeclarations(token)\n });\n}\n\n/**\n * Convert a lexical token to an AST node.\n *\n * @returns {Object|undefined} AST node\n */\nfunction parseToken(token) {\n switch (token.type) {\n // Cases are listed in roughly descending order of probability.\n case 'property': return parseProperty(token);\n\n case 'selector': return parseSelector(token);\n\n case 'at-group-end': _depth = _depth - 1; return;\n\n case 'media' :\n case 'keyframes' :return parseAtGroup(token);\n\n case 'comment': if (_comments) { return parseComment(token); } break;\n\n case 'charset': return parseCharset(token);\n case 'import': return parseAtImport(token);\n\n case 'namespace': return parseNamespace(token);\n\n case 'font-face':\n case 'supports' :\n case 'viewport' :\n case 'document' :\n case 'page' : return parseAtGroup(token);\n }\n\n DEBUG && debug('parseToken: unexpected token:', JSON.stringify(token));\n}\n\n// -- Parse Helper Functions ---------------------------------------------------\n\n/**\n * Iteratively parses lexical tokens from the stack into AST nodes until a\n * conditional function returns `false`, at which point iteration terminates\n * and any AST nodes collected are returned.\n *\n * @param {Function} conditionFn\n * @param {Object} token the lexical token being parsed\n * @returns {Boolean} `true` if the token should be parsed, `false` otherwise\n * @return {Array} AST nodes\n */\nfunction parseTokensWhile(conditionFn) {\n var node;\n var nodes = [];\n var token;\n\n while ((token = next()) && (conditionFn && conditionFn(token))) {\n node = parseToken(token);\n node && nodes.push(node);\n }\n\n // Place an unused non-`end` lexical token back onto the stack.\n if (token && token.type !== 'end') {\n _tokens.unshift(token);\n }\n\n return nodes;\n}\n\n/**\n * Convert a series of tokens into a sequence of declaration AST nodes.\n *\n * @returns {Array} declaration nodes\n */\nfunction parseDeclarations() {\n return parseTokensWhile(function (token) {\n return (token.type === 'property' || token.type === 'comment');\n });\n}\n\n/**\n * Convert a series of tokens into a sequence of rule nodes.\n *\n * @returns {Array} rule nodes\n */\nfunction parseRules() {\n return parseTokensWhile(function () { return _depth; });\n}\n","var DEBUG = false; // `true` to print debugging info.\nvar TIMER = false; // `true` to time calls to `stringify()` and print the results.\n\nvar debug = require('./debug')('stringify');\n\nvar _comments; // Whether comments are allowed in the stringified CSS.\nvar _compress; // Whether the stringified CSS should be compressed.\nvar _indentation; // Indentation option value.\nvar _level; // Current indentation level.\nvar _n; // Compression-aware newline character.\nvar _s; // Compression-aware space character.\n\nexports = module.exports = stringify;\n\n/**\n * Convert a `stringify`-able AST into a CSS string.\n *\n * @param {Object} `stringify`-able AST\n * @param {Object} [options]\n * @param {Boolean} [options.comments=false] allow comments in the CSS\n * @param {Boolean} [options.compress=false] compress whitespace\n * @param {String} [options.indentation=''] indentation sequence\n * @returns {String} CSS\n */\nfunction stringify(ast, options) {\n var start; // Debug timer start.\n\n options || (options = {});\n _indentation = options.indentation || '';\n _compress = !!options.compress;\n _comments = !!options.comments;\n _level = 1;\n\n if (_compress) {\n _n = _s = '';\n } else {\n _n = '\\n';\n _s = ' ';\n }\n\n TIMER && (start = Date.now());\n\n var css = reduce(ast.stylesheet.rules, stringifyNode).join('\\n').trim();\n\n TIMER && debug('ran in', (Date.now() - start) + 'ms');\n\n return css;\n}\n\n// -- Functions --------------------------------------------------------------\n\n/**\n * Modify the indentation level, or return a compression-aware sequence of\n * spaces equal to the current indentation level.\n *\n * @param {Number} [level=undefined] indentation level modifier\n * @returns {String} sequence of spaces\n */\nfunction indent(level) {\n if (level) {\n _level += level;\n return;\n }\n\n if (_compress) { return ''; }\n\n return Array(_level).join(_indentation || '');\n}\n\n// -- Stringify Functions ------------------------------------------------------\n\n/**\n * Stringify an @-rule AST node.\n *\n * Use `stringifyAtGroup()` when dealing with @-groups that may contain blocks\n * such as @media.\n *\n * @param {String} type @-rule type. E.g., import, charset\n * @returns {String} Stringified @-rule\n */\nfunction stringifyAtRule(node) {\n return '@' + node.type + ' ' + node.value + ';' + _n;\n}\n\n/**\n * Stringify an @-group AST node.\n *\n * Use `stringifyAtRule()` when dealing with @-rules that may not contain blocks\n * such as @import.\n *\n * @param {Object} node @-group AST node\n * @returns {String}\n */\nfunction stringifyAtGroup(node) {\n var label = '';\n var prefix = node.prefix || '';\n\n if (node.name) {\n label = ' ' + node.name;\n }\n\n // FIXME: @-rule conditional logic is leaking everywhere.\n var chomp = node.type !== 'page';\n\n return '@' + prefix + node.type + label + _s + stringifyBlock(node, chomp) + _n;\n}\n\n/**\n * Stringify a comment AST node.\n *\n * @param {Object} node comment AST node\n * @returns {String}\n */\nfunction stringifyComment(node) {\n if (!_comments) { return ''; }\n\n return '/*' + (node.text || '') + '*/' + _n;\n}\n\n/**\n * Stringify a rule AST node.\n *\n * @param {Object} node rule AST node\n * @returns {String}\n */\nfunction stringifyRule(node) {\n var label;\n\n if (node.selectors) {\n label = node.selectors.join(',' + _n);\n } else {\n label = '@' + node.type;\n label += node.name ? ' ' + node.name : '';\n }\n\n return indent() + label + _s + stringifyBlock(node) + _n;\n}\n\n\n// -- Stringify Helper Functions -----------------------------------------------\n\n/**\n * Reduce an array by applying a function to each item and retaining the truthy\n * results.\n *\n * When `item.type` is `'comment'` `stringifyComment` will be applied instead.\n *\n * @param {Array} items array to reduce\n * @param {Function} fn function to call for each item in the array\n * @returns {Mixed} Truthy values will be retained, falsy values omitted\n * @returns {Array} retained results\n */\nfunction reduce(items, fn) {\n return items.reduce(function (results, item) {\n var result = (item.type === 'comment') ? stringifyComment(item) : fn(item);\n result && results.push(result);\n return results;\n }, []);\n}\n\n/**\n * Stringify an AST node with the assumption that it represents a block of\n * declarations or other @-group contents.\n *\n * @param {Object} node AST node\n * @returns {String}\n */\n// FIXME: chomp should not be a magic boolean parameter\nfunction stringifyBlock(node, chomp) {\n var children = node.declarations;\n var fn = stringifyDeclaration;\n\n if (node.rules) {\n children = node.rules;\n fn = stringifyRule;\n }\n\n children = stringifyChildren(children, fn);\n children && (children = _n + children + (chomp ? '' : _n));\n\n return '{' + children + indent() + '}';\n}\n\n/**\n * Stringify an array of child AST nodes by calling the given stringify function\n * once for each child, and concatenating the results.\n *\n * @param {Array} children `node.rules` or `node.declarations`\n * @param {Function} fn stringify function\n * @returns {String}\n */\nfunction stringifyChildren(children, fn) {\n if (!children) { return ''; }\n\n indent(1);\n var results = reduce(children, fn);\n indent(-1);\n\n if (!results.length) { return ''; }\n\n return results.join(_n);\n}\n\n/**\n * Stringify a declaration AST node.\n *\n * @param {Object} node declaration AST node\n * @returns {String}\n */\nfunction stringifyDeclaration(node) {\n if (node.type === 'property') {\n return stringifyProperty(node);\n }\n\n DEBUG && debug('stringifyDeclaration: unexpected node:', JSON.stringify(node));\n}\n\n/**\n * Stringify an AST node.\n *\n * @param {Object} node AST node\n * @returns {String}\n */\nfunction stringifyNode(node) {\n switch (node.type) {\n // Cases are listed in roughly descending order of probability.\n case 'rule': return stringifyRule(node);\n\n case 'media' :\n case 'keyframes': return stringifyAtGroup(node);\n\n case 'comment': return stringifyComment(node);\n\n case 'import' :\n case 'charset' :\n case 'namespace': return stringifyAtRule(node);\n\n case 'font-face':\n case 'supports' :\n case 'viewport' :\n case 'document' :\n case 'page' : return stringifyAtGroup(node);\n }\n\n DEBUG && debug('stringifyNode: unexpected node: ' + JSON.stringify(node));\n}\n\n/**\n * Stringify an AST property node.\n *\n * @param {Object} node AST property node\n * @returns {String}\n */\nfunction stringifyProperty(node) {\n var name = node.name ? node.name + ':' + _s : '';\n\n return indent() + name + node.value + ';';\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generate = exports.compile = void 0;\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nfunction compile(parsed) {\n var a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n var b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase_1.default.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return function (index) { return index <= b; };\n if (a === 0)\n return function (index) { return index === b; };\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase_1.default.trueFunc : function (index) { return index >= b; };\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n var absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n var bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? function (index) { return index >= b && index % absA === bMod; }\n : function (index) { return index <= b && index % absA === bMod; };\n}\nexports.compile = compile;\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nfunction generate(parsed) {\n var a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n var b = parsed[1] - 1;\n var n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n var aPos_1 = -a;\n // Get `b mod a`\n var minValue_1 = ((b % aPos_1) + aPos_1) % aPos_1;\n return function () {\n var val = minValue_1 + aPos_1 * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n function () { return null; }\n : // Return `b` exactly once\n function () { return (n++ === 0 ? b : null); };\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return function () { return a * n++ + b; };\n}\nexports.generate = generate;\n//# sourceMappingURL=compile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequence = exports.generate = exports.compile = exports.parse = void 0;\nvar parse_js_1 = require(\"./parse.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parse_js_1.parse; } });\nvar compile_js_1 = require(\"./compile.js\");\nObject.defineProperty(exports, \"compile\", { enumerable: true, get: function () { return compile_js_1.compile; } });\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return compile_js_1.generate; } });\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nfunction nthCheck(formula) {\n return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula));\n}\nexports.default = nthCheck;\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nfunction sequence(formula) {\n return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula));\n}\nexports.sequence = sequence;\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nvar whitespace = new Set([9, 10, 12, 13, 32]);\nvar ZERO = \"0\".charCodeAt(0);\nvar NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nfunction parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n var idx = 0;\n var a = 0;\n var sign = readSign();\n var number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(\"n-th rule couldn't be parsed ('\".concat(formula, \"')\"));\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n var start = idx;\n var value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\nexports.parse = parse;\n//# sourceMappingURL=parse.js.map","'use strict';\n\nconst doctype = require('parse5/lib/common/doctype');\nconst { DOCUMENT_MODE } = require('parse5/lib/common/html');\n\n//Conversion tables for DOM Level1 structure emulation\nconst nodeTypes = {\n element: 1,\n text: 3,\n cdata: 4,\n comment: 8\n};\n\nconst nodePropertyShorthands = {\n tagName: 'name',\n childNodes: 'children',\n parentNode: 'parent',\n previousSibling: 'prev',\n nextSibling: 'next',\n nodeValue: 'data'\n};\n\n//Node\nclass Node {\n constructor(props) {\n for (const key of Object.keys(props)) {\n this[key] = props[key];\n }\n }\n\n get firstChild() {\n const children = this.children;\n\n return (children && children[0]) || null;\n }\n\n get lastChild() {\n const children = this.children;\n\n return (children && children[children.length - 1]) || null;\n }\n\n get nodeType() {\n return nodeTypes[this.type] || nodeTypes.element;\n }\n}\n\nObject.keys(nodePropertyShorthands).forEach(key => {\n const shorthand = nodePropertyShorthands[key];\n\n Object.defineProperty(Node.prototype, key, {\n get: function() {\n return this[shorthand] || null;\n },\n set: function(val) {\n this[shorthand] = val;\n return val;\n }\n });\n});\n\n//Node construction\nexports.createDocument = function() {\n return new Node({\n type: 'root',\n name: 'root',\n parent: null,\n prev: null,\n next: null,\n children: [],\n 'x-mode': DOCUMENT_MODE.NO_QUIRKS\n });\n};\n\nexports.createDocumentFragment = function() {\n return new Node({\n type: 'root',\n name: 'root',\n parent: null,\n prev: null,\n next: null,\n children: []\n });\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n const attribs = Object.create(null);\n const attribsNamespace = Object.create(null);\n const attribsPrefix = Object.create(null);\n\n for (let i = 0; i < attrs.length; i++) {\n const attrName = attrs[i].name;\n\n attribs[attrName] = attrs[i].value;\n attribsNamespace[attrName] = attrs[i].namespace;\n attribsPrefix[attrName] = attrs[i].prefix;\n }\n\n return new Node({\n type: tagName === 'script' || tagName === 'style' ? tagName : 'tag',\n name: tagName,\n namespace: namespaceURI,\n attribs: attribs,\n 'x-attribsNamespace': attribsNamespace,\n 'x-attribsPrefix': attribsPrefix,\n children: [],\n parent: null,\n prev: null,\n next: null\n });\n};\n\nexports.createCommentNode = function(data) {\n return new Node({\n type: 'comment',\n data: data,\n parent: null,\n prev: null,\n next: null\n });\n};\n\nconst createTextNode = function(value) {\n return new Node({\n type: 'text',\n data: value,\n parent: null,\n prev: null,\n next: null\n });\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n const prev = parentNode.children[parentNode.children.length - 1];\n\n if (prev) {\n prev.next = newNode;\n newNode.prev = prev;\n }\n\n parentNode.children.push(newNode);\n newNode.parent = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.children.indexOf(referenceNode);\n const prev = referenceNode.prev;\n\n if (prev) {\n prev.next = newNode;\n newNode.prev = prev;\n }\n\n referenceNode.prev = newNode;\n newNode.next = referenceNode;\n\n parentNode.children.splice(insertionIdx, 0, newNode);\n newNode.parent = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n appendChild(templateElement, contentElement);\n};\n\nexports.getTemplateContent = function(templateElement) {\n return templateElement.children[0];\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n const data = doctype.serializeContent(name, publicId, systemId);\n let doctypeNode = null;\n\n for (let i = 0; i < document.children.length; i++) {\n if (document.children[i].type === 'directive' && document.children[i].name === '!doctype') {\n doctypeNode = document.children[i];\n break;\n }\n }\n\n if (doctypeNode) {\n doctypeNode.data = data;\n doctypeNode['x-name'] = name;\n doctypeNode['x-publicId'] = publicId;\n doctypeNode['x-systemId'] = systemId;\n } else {\n appendChild(\n document,\n new Node({\n type: 'directive',\n name: '!doctype',\n data: data,\n 'x-name': name,\n 'x-publicId': publicId,\n 'x-systemId': systemId\n })\n );\n }\n};\n\nexports.setDocumentMode = function(document, mode) {\n document['x-mode'] = mode;\n};\n\nexports.getDocumentMode = function(document) {\n return document['x-mode'];\n};\n\nexports.detachNode = function(node) {\n if (node.parent) {\n const idx = node.parent.children.indexOf(node);\n const prev = node.prev;\n const next = node.next;\n\n node.prev = null;\n node.next = null;\n\n if (prev) {\n prev.next = next;\n }\n\n if (next) {\n next.prev = prev;\n }\n\n node.parent.children.splice(idx, 1);\n node.parent = null;\n }\n};\n\nexports.insertText = function(parentNode, text) {\n const lastChild = parentNode.children[parentNode.children.length - 1];\n\n if (lastChild && lastChild.type === 'text') {\n lastChild.data += text;\n } else {\n appendChild(parentNode, createTextNode(text));\n }\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1];\n\n if (prevNode && prevNode.type === 'text') {\n prevNode.data += text;\n } else {\n insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n for (let i = 0; i < attrs.length; i++) {\n const attrName = attrs[i].name;\n\n if (typeof recipient.attribs[attrName] === 'undefined') {\n recipient.attribs[attrName] = attrs[i].value;\n recipient['x-attribsNamespace'][attrName] = attrs[i].namespace;\n recipient['x-attribsPrefix'][attrName] = attrs[i].prefix;\n }\n }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n return node.children[0];\n};\n\nexports.getChildNodes = function(node) {\n return node.children;\n};\n\nexports.getParentNode = function(node) {\n return node.parent;\n};\n\nexports.getAttrList = function(element) {\n const attrList = [];\n\n for (const name in element.attribs) {\n attrList.push({\n name: name,\n value: element.attribs[name],\n namespace: element['x-attribsNamespace'][name],\n prefix: element['x-attribsPrefix'][name]\n });\n }\n\n return attrList;\n};\n\n//Node data\nexports.getTagName = function(element) {\n return element.name;\n};\n\nexports.getNamespaceURI = function(element) {\n return element.namespace;\n};\n\nexports.getTextNodeContent = function(textNode) {\n return textNode.data;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode['x-name'];\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode['x-publicId'];\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode['x-systemId'];\n};\n\n//Node types\nexports.isTextNode = function(node) {\n return node.type === 'text';\n};\n\nexports.isCommentNode = function(node) {\n return node.type === 'comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n return node.type === 'directive' && node.name === '!doctype';\n};\n\nexports.isElementNode = function(node) {\n return !!node.attribs;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n for (let i = 0; i < prefixes.length; i++) {\n if (publicId.indexOf(prefixes[i]) === 0) {\n return true;\n }\n }\n\n return false;\n}\n\n//API\nexports.isConforming = function(token) {\n return (\n token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n );\n};\n\nexports.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n const systemId = token.systemId;\n\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let publicId = token.publicId;\n\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n\n return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n let str = '!DOCTYPE ';\n\n if (name) {\n str += name;\n }\n\n if (publicId) {\n str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += ' SYSTEM';\n }\n\n if (systemId !== null) {\n str += ' ' + enquoteDoctypeId(systemId);\n }\n\n return str;\n};\n","'use strict';\n\nmodule.exports = {\n controlCharacterInInputStream: 'control-character-in-input-stream',\n noncharacterInInputStream: 'noncharacter-in-input-stream',\n surrogateInInputStream: 'surrogate-in-input-stream',\n nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n endTagWithAttributes: 'end-tag-with-attributes',\n endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n unexpectedNullCharacter: 'unexpected-null-character',\n unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n missingEndTagName: 'missing-end-tag-name',\n unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n unknownNamedCharacterReference: 'unknown-named-character-reference',\n missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n eofBeforeTagName: 'eof-before-tag-name',\n eofInTag: 'eof-in-tag',\n missingAttributeValue: 'missing-attribute-value',\n missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n 'missing-whitespace-between-doctype-public-and-system-identifiers',\n missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n cdataInHtmlContent: 'cdata-in-html-content',\n incorrectlyOpenedComment: 'incorrectly-opened-comment',\n eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n eofInDoctype: 'eof-in-doctype',\n nestedComment: 'nested-comment',\n abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n eofInComment: 'eof-in-comment',\n incorrectlyClosedComment: 'incorrectly-closed-comment',\n eofInCdata: 'eof-in-cdata',\n absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n nullCharacterReference: 'null-character-reference',\n surrogateCharacterReference: 'surrogate-character-reference',\n characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n controlCharacterReference: 'control-character-reference',\n noncharacterCharacterReference: 'noncharacter-character-reference',\n missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n missingDoctypeName: 'missing-doctype-name',\n invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n duplicateAttribute: 'duplicate-attribute',\n nonConformingDoctype: 'non-conforming-doctype',\n missingDoctype: 'missing-doctype',\n misplacedDoctype: 'misplaced-doctype',\n endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n openElementsLeftAfterEof: 'open-elements-left-after-eof',\n abandonedHeadElementChild: 'abandoned-head-element-child',\n misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n nestedNoscriptInHead: 'nested-noscript-in-head',\n eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: 'attributeName',\n attributetype: 'attributeType',\n basefrequency: 'baseFrequency',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n clippathunits: 'clipPathUnits',\n diffuseconstant: 'diffuseConstant',\n edgemode: 'edgeMode',\n filterunits: 'filterUnits',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n limitingconeangle: 'limitingConeAngle',\n markerheight: 'markerHeight',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textlength: 'textLength',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n xchannelselector: 'xChannelSelector',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n 'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n 'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n 'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n 'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n 'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n 'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n 'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n 'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n 'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n 'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n 'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n [$.B]: true,\n [$.BIG]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.CENTER]: true,\n [$.CODE]: true,\n [$.DD]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EM]: true,\n [$.EMBED]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HR]: true,\n [$.I]: true,\n [$.IMG]: true,\n [$.LI]: true,\n [$.LISTING]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NOBR]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PRE]: true,\n [$.RUBY]: true,\n [$.S]: true,\n [$.SMALL]: true,\n [$.SPAN]: true,\n [$.STRONG]: true,\n [$.STRIKE]: true,\n [$.SUB]: true,\n [$.SUP]: true,\n [$.TABLE]: true,\n [$.TT]: true,\n [$.U]: true,\n [$.UL]: true,\n [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n const tn = startTagToken.tagName;\n const isFontWithAttrs =\n tn === $.FONT &&\n (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrName) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n return true;\n }\n\n if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n return true;\n }\n\n return false;\n};\n","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n HTML: 'http://www.w3.org/1999/xhtml',\n MATHML: 'http://www.w3.org/1998/Math/MathML',\n SVG: 'http://www.w3.org/2000/svg',\n XLINK: 'http://www.w3.org/1999/xlink',\n XML: 'http://www.w3.org/XML/1998/namespace',\n XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n TYPE: 'type',\n ACTION: 'action',\n ENCODING: 'encoding',\n PROMPT: 'prompt',\n NAME: 'name',\n COLOR: 'color',\n FACE: 'face',\n SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n NO_QUIRKS: 'no-quirks',\n QUIRKS: 'quirks',\n LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n A: 'a',\n ADDRESS: 'address',\n ANNOTATION_XML: 'annotation-xml',\n APPLET: 'applet',\n AREA: 'area',\n ARTICLE: 'article',\n ASIDE: 'aside',\n\n B: 'b',\n BASE: 'base',\n BASEFONT: 'basefont',\n BGSOUND: 'bgsound',\n BIG: 'big',\n BLOCKQUOTE: 'blockquote',\n BODY: 'body',\n BR: 'br',\n BUTTON: 'button',\n\n CAPTION: 'caption',\n CENTER: 'center',\n CODE: 'code',\n COL: 'col',\n COLGROUP: 'colgroup',\n\n DD: 'dd',\n DESC: 'desc',\n DETAILS: 'details',\n DIALOG: 'dialog',\n DIR: 'dir',\n DIV: 'div',\n DL: 'dl',\n DT: 'dt',\n\n EM: 'em',\n EMBED: 'embed',\n\n FIELDSET: 'fieldset',\n FIGCAPTION: 'figcaption',\n FIGURE: 'figure',\n FONT: 'font',\n FOOTER: 'footer',\n FOREIGN_OBJECT: 'foreignObject',\n FORM: 'form',\n FRAME: 'frame',\n FRAMESET: 'frameset',\n\n H1: 'h1',\n H2: 'h2',\n H3: 'h3',\n H4: 'h4',\n H5: 'h5',\n H6: 'h6',\n HEAD: 'head',\n HEADER: 'header',\n HGROUP: 'hgroup',\n HR: 'hr',\n HTML: 'html',\n\n I: 'i',\n IMG: 'img',\n IMAGE: 'image',\n INPUT: 'input',\n IFRAME: 'iframe',\n\n KEYGEN: 'keygen',\n\n LABEL: 'label',\n LI: 'li',\n LINK: 'link',\n LISTING: 'listing',\n\n MAIN: 'main',\n MALIGNMARK: 'malignmark',\n MARQUEE: 'marquee',\n MATH: 'math',\n MENU: 'menu',\n META: 'meta',\n MGLYPH: 'mglyph',\n MI: 'mi',\n MO: 'mo',\n MN: 'mn',\n MS: 'ms',\n MTEXT: 'mtext',\n\n NAV: 'nav',\n NOBR: 'nobr',\n NOFRAMES: 'noframes',\n NOEMBED: 'noembed',\n NOSCRIPT: 'noscript',\n\n OBJECT: 'object',\n OL: 'ol',\n OPTGROUP: 'optgroup',\n OPTION: 'option',\n\n P: 'p',\n PARAM: 'param',\n PLAINTEXT: 'plaintext',\n PRE: 'pre',\n\n RB: 'rb',\n RP: 'rp',\n RT: 'rt',\n RTC: 'rtc',\n RUBY: 'ruby',\n\n S: 's',\n SCRIPT: 'script',\n SECTION: 'section',\n SELECT: 'select',\n SOURCE: 'source',\n SMALL: 'small',\n SPAN: 'span',\n STRIKE: 'strike',\n STRONG: 'strong',\n STYLE: 'style',\n SUB: 'sub',\n SUMMARY: 'summary',\n SUP: 'sup',\n\n TABLE: 'table',\n TBODY: 'tbody',\n TEMPLATE: 'template',\n TEXTAREA: 'textarea',\n TFOOT: 'tfoot',\n TD: 'td',\n TH: 'th',\n THEAD: 'thead',\n TITLE: 'title',\n TR: 'tr',\n TRACK: 'track',\n TT: 'tt',\n\n U: 'u',\n UL: 'ul',\n\n SVG: 'svg',\n\n VAR: 'var',\n\n WBR: 'wbr',\n\n XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n [NS.HTML]: {\n [$.ADDRESS]: true,\n [$.APPLET]: true,\n [$.AREA]: true,\n [$.ARTICLE]: true,\n [$.ASIDE]: true,\n [$.BASE]: true,\n [$.BASEFONT]: true,\n [$.BGSOUND]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.BUTTON]: true,\n [$.CAPTION]: true,\n [$.CENTER]: true,\n [$.COL]: true,\n [$.COLGROUP]: true,\n [$.DD]: true,\n [$.DETAILS]: true,\n [$.DIR]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EMBED]: true,\n [$.FIELDSET]: true,\n [$.FIGCAPTION]: true,\n [$.FIGURE]: true,\n [$.FOOTER]: true,\n [$.FORM]: true,\n [$.FRAME]: true,\n [$.FRAMESET]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HEADER]: true,\n [$.HGROUP]: true,\n [$.HR]: true,\n [$.HTML]: true,\n [$.IFRAME]: true,\n [$.IMG]: true,\n [$.INPUT]: true,\n [$.LI]: true,\n [$.LINK]: true,\n [$.LISTING]: true,\n [$.MAIN]: true,\n [$.MARQUEE]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NAV]: true,\n [$.NOEMBED]: true,\n [$.NOFRAMES]: true,\n [$.NOSCRIPT]: true,\n [$.OBJECT]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PARAM]: true,\n [$.PLAINTEXT]: true,\n [$.PRE]: true,\n [$.SCRIPT]: true,\n [$.SECTION]: true,\n [$.SELECT]: true,\n [$.SOURCE]: true,\n [$.STYLE]: true,\n [$.SUMMARY]: true,\n [$.TABLE]: true,\n [$.TBODY]: true,\n [$.TD]: true,\n [$.TEMPLATE]: true,\n [$.TEXTAREA]: true,\n [$.TFOOT]: true,\n [$.TH]: true,\n [$.THEAD]: true,\n [$.TITLE]: true,\n [$.TR]: true,\n [$.TRACK]: true,\n [$.UL]: true,\n [$.WBR]: true,\n [$.XMP]: true\n },\n [NS.MATHML]: {\n [$.MI]: true,\n [$.MO]: true,\n [$.MN]: true,\n [$.MS]: true,\n [$.MTEXT]: true,\n [$.ANNOTATION_XML]: true\n },\n [NS.SVG]: {\n [$.TITLE]: true,\n [$.FOREIGN_OBJECT]: true,\n [$.DESC]: true\n }\n};\n","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n 0xfffe,\n 0xffff,\n 0x1fffe,\n 0x1ffff,\n 0x2fffe,\n 0x2ffff,\n 0x3fffe,\n 0x3ffff,\n 0x4fffe,\n 0x4ffff,\n 0x5fffe,\n 0x5ffff,\n 0x6fffe,\n 0x6ffff,\n 0x7fffe,\n 0x7ffff,\n 0x8fffe,\n 0x8ffff,\n 0x9fffe,\n 0x9ffff,\n 0xafffe,\n 0xaffff,\n 0xbfffe,\n 0xbffff,\n 0xcfffe,\n 0xcffff,\n 0xdfffe,\n 0xdffff,\n 0xefffe,\n 0xeffff,\n 0xffffe,\n 0xfffff,\n 0x10fffe,\n 0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n EOF: -1,\n NULL: 0x00,\n TABULATION: 0x09,\n CARRIAGE_RETURN: 0x0d,\n LINE_FEED: 0x0a,\n FORM_FEED: 0x0c,\n SPACE: 0x20,\n EXCLAMATION_MARK: 0x21,\n QUOTATION_MARK: 0x22,\n NUMBER_SIGN: 0x23,\n AMPERSAND: 0x26,\n APOSTROPHE: 0x27,\n HYPHEN_MINUS: 0x2d,\n SOLIDUS: 0x2f,\n DIGIT_0: 0x30,\n DIGIT_9: 0x39,\n SEMICOLON: 0x3b,\n LESS_THAN_SIGN: 0x3c,\n EQUALS_SIGN: 0x3d,\n GREATER_THAN_SIGN: 0x3e,\n QUESTION_MARK: 0x3f,\n LATIN_CAPITAL_A: 0x41,\n LATIN_CAPITAL_F: 0x46,\n LATIN_CAPITAL_X: 0x58,\n LATIN_CAPITAL_Z: 0x5a,\n RIGHT_SQUARE_BRACKET: 0x5d,\n GRAVE_ACCENT: 0x60,\n LATIN_SMALL_A: 0x61,\n LATIN_SMALL_F: 0x66,\n LATIN_SMALL_X: 0x78,\n LATIN_SMALL_Z: 0x7a,\n REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [0x2d, 0x2d], //--\n DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n return (\n (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f)\n );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n constructor(host, opts) {\n super(host);\n\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n\n _reportError(code) {\n const err = {\n code: code,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n\n _getOverriddenMethods(mxn) {\n return {\n _err(code) {\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n constructor(parser, opts) {\n super(parser, opts);\n\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n },\n\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n\n orig._processInputToken.call(this, token);\n },\n\n _err(code, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n constructor(preprocessor, opts) {\n super(preprocessor, opts);\n\n this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n this.lastErrOffset = -1;\n }\n\n _reportError(code) {\n //NOTE: avoid reporting error twice on advance/retreat\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code);\n }\n }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n constructor(tokenizer, opts) {\n super(tokenizer, opts);\n\n const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n this.posTracker = preprocessorMixin.posTracker;\n }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n constructor(stack, opts) {\n super(stack);\n\n this.onItemPop = opts.onItemPop;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n\n popAllUpToHtmlElement() {\n for (let i = this.stackTop; i > 0; i--) {\n mxn.onItemPop(this.items[i]);\n }\n\n orig.popAllUpToHtmlElement.call(this);\n },\n\n remove(element) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element);\n }\n };\n }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n constructor(parser) {\n super(parser);\n\n this.parser = parser;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n\n _setStartLocation(element) {\n let loc = null;\n\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n\n _setEndLocation(element, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n\n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n\n const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n mxn.posTracker = tokenizerMixin.posTracker;\n\n Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n onItemPop: function(element) {\n mxn._setEndLocation(element, mxn.currentToken);\n }\n });\n },\n\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n\n // NOTE: generate location info for elements\n // that remains on open element stack\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n }\n },\n\n //Token processing\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n\n //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n //their end location explicitly.\n const requireExplicitUpdate =\n token.type === Tokenizer.END_TAG_TOKEN &&\n (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n if (requireExplicitUpdate) {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const element = this.openElements.items[i];\n\n if (this.treeAdapter.getTagName(element) === token.tagName) {\n mxn._setEndLocation(element, token);\n break;\n }\n }\n }\n },\n\n //Doctype\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n\n for (let i = 0; i < cnLength; i++) {\n const node = documentChildren[i];\n\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n\n //Elements\n _attachElementToTree(element) {\n //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n //So we will use token location stored in this methods for the element.\n mxn._setStartLocation(element);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element);\n },\n\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n\n //Comments\n _appendCommentNode(token, parent) {\n orig._appendCommentNode.call(this, token, parent);\n\n const children = this.treeAdapter.getChildNodes(parent);\n const commentNode = children[children.length - 1];\n\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n\n //Text\n _findFosterParentingLocation() {\n //NOTE: store last foster parenting location, so we will be able to find inserted text\n //in case of foster parenting\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n return mxn.lastFosterParentingLocation;\n },\n\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n const parent =\n (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n this.openElements.currentTmplContent ||\n this.openElements.current;\n\n const siblings = this.treeAdapter.getChildNodes(parent);\n\n const textNodeIdx =\n hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n : siblings.length - 1;\n\n const textNode = siblings[textNodeIdx];\n\n //NOTE: if we have location assigned by another token, then just update end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n constructor(tokenizer) {\n super(tokenizer);\n\n this.tokenizer = tokenizer;\n this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = Object.create(null);\n }\n\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n\n //NOTE: if we have pending character token make it's end location equal to the\n //current token's start location.\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n\n if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n\n orig._emitCurrentToken.call(this);\n },\n\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n //then set it's location at the current preprocessor position.\n //We don't need to increment preprocessor position, since character token\n //emission is always forced by the start of the next character token here.\n //So, we already have advanced position.\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n\n //NOTE: patch initial states for each mode to obtain token start position\n Object.keys(Tokenizer.MODE).forEach(modeName => {\n const state = Tokenizer.MODE[modeName];\n\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n\n return methods;\n }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n constructor(preprocessor) {\n super(preprocessor);\n\n this.preprocessor = preprocessor;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n\n //NOTE: LF should be in the last column of the line\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n\n if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n mxn.isEol = true;\n }\n\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n\n return orig.advance.call(this);\n },\n\n retreat() {\n orig.retreat.call(this);\n\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n\n dropParsedChunk() {\n const prevPos = this.pos;\n\n orig.dropParsedChunk.call(this);\n\n const reduction = prevPos - this.pos;\n\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n","'use strict';\n\nconst Parser = require('./parser');\nconst Serializer = require('./serializer');\n\n// Shorthands\nexports.parse = function parse(html, options) {\n const parser = new Parser(options);\n\n return parser.parse(html);\n};\n\nexports.parseFragment = function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n\n const parser = new Parser(options);\n\n return parser.parseFragment(html, fragmentContext);\n};\n\nexports.serialize = function(node, options) {\n const serializer = new Serializer(node, options);\n\n return serializer.serialize();\n};\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n\n const element = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element);\n\n const isCandidate =\n this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n elementAttrs.length === neAttrsLength;\n\n if (isCandidate) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = Object.create(null);\n\n //NOTE: build attrs map for the new element so we can perform fast lookups\n for (let i = 0; i < neAttrsLength; i++) {\n const neAttr = neAttrs[i];\n\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n\n for (let i = 0; i < neAttrsLength; i++) {\n for (let j = 0; j < cLength; j++) {\n const cAttr = candidates[j].attrs[i];\n\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j, 1);\n cLength--;\n }\n\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n\n //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n this.entries.splice(candidates[i].idx, 1);\n this.length--;\n }\n }\n }\n\n //Mutations\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n insertElementAfterBookmark(element, token) {\n let bookmarkIdx = this.length - 1;\n\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n removeEntry(entry) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.entries[i] === entry) {\n this.entries.splice(i, 1);\n this.length--;\n break;\n }\n }\n }\n\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n\n this.length--;\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n\n return null;\n }\n\n getElementEntry(element) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n return entry;\n }\n }\n\n return null;\n }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n [$.TR]: IN_ROW_MODE,\n [$.TBODY]: IN_TABLE_BODY_MODE,\n [$.THEAD]: IN_TABLE_BODY_MODE,\n [$.TFOOT]: IN_TABLE_BODY_MODE,\n [$.CAPTION]: IN_CAPTION_MODE,\n [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$.TABLE]: IN_TABLE_MODE,\n [$.BODY]: IN_BODY_MODE,\n [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$.CAPTION]: IN_TABLE_MODE,\n [$.COLGROUP]: IN_TABLE_MODE,\n [$.TBODY]: IN_TABLE_MODE,\n [$.TFOOT]: IN_TABLE_MODE,\n [$.THEAD]: IN_TABLE_MODE,\n [$.COL]: IN_COLUMN_GROUP_MODE,\n [$.TR]: IN_TABLE_BODY_MODE,\n [$.TD]: IN_ROW_MODE,\n [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer.END_TAG_TOKEN]: endTagInText,\n [Tokenizer.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer.EOF_TOKEN]: stopParsing\n }\n};\n\n//Parser\nclass Parser {\n constructor(options) {\n this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n\n if (this.options.sourceCodeLocationInfo) {\n Mixin.install(this, LocationInfoParserMixin);\n }\n\n if (this.options.onParseError) {\n Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n }\n }\n\n // API\n parse(html) {\n const document = this.treeAdapter.createDocument();\n\n this._bootstrap(document, null);\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n return document;\n }\n\n parseFragment(html, fragmentContext) {\n //NOTE: use <template> element as a fragment context if context element was not provided,\n //so we will parse in \"forgiving\" manner\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n }\n\n //NOTE: create fake element which will be used as 'document' for fragment parsing.\n //This is important for jsdom there 'document' can't be recreated, therefore\n //fragment parsing causes messing of the main `document`.\n const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n this._bootstrap(documentMock, fragmentContext);\n\n if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment = this.treeAdapter.createDocumentFragment();\n\n this._adoptNodes(rootElement, fragment);\n\n return fragment;\n }\n\n //Bootstrap parser\n _bootstrap(document, fragmentContext) {\n this.tokenizer = new Tokenizer(this.options);\n\n this.stopped = false;\n\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = '';\n\n this.document = document;\n this.fragmentContext = fragmentContext;\n\n this.headElement = null;\n this.formElement = null;\n\n this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n //Parsing loop\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n\n const token = this.tokenizer.getNextToken();\n\n if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n break;\n }\n\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n\n if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n if (token.chars.length === 1) {\n continue;\n }\n\n token.chars = token.chars.substr(1);\n }\n }\n\n this._processInputToken(token);\n\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n\n this.pendingScript = null;\n\n scriptHandler(script);\n\n return;\n }\n\n if (writeCallback) {\n writeCallback();\n }\n }\n\n //Text parsing\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n\n this.tokenizer.allowCDATA =\n current &&\n current !== this.document &&\n this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n !this._isIntegrationPoint(current);\n }\n\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n\n do {\n if (this.treeAdapter.getTagName(node) === $.FORM) {\n this.formElement = node;\n break;\n }\n\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n if (tn === $.TITLE || tn === $.TEXTAREA) {\n this.tokenizer.state = Tokenizer.MODE.RCDATA;\n } else if (\n tn === $.STYLE ||\n tn === $.XMP ||\n tn === $.IFRAME ||\n tn === $.NOEMBED ||\n tn === $.NOFRAMES ||\n tn === $.NOSCRIPT\n ) {\n this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n } else if (tn === $.SCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n } else if (tn === $.PLAINTEXT) {\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n }\n }\n\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n\n _attachElementToTree(element) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.appendChild(parent, element);\n }\n }\n\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n }\n\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertFakeElement(tagName) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element);\n }\n\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n this.treeAdapter.appendChild(parent, commentNode);\n }\n\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n\n //Token processing\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n\n if (!current || current === this.document) {\n return false;\n }\n\n const ns = this.treeAdapter.getNamespaceURI(current);\n\n if (ns === NS.HTML) {\n return false;\n }\n\n if (\n this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n ns === NS.MATHML &&\n token.type === Tokenizer.START_TAG_TOKEN &&\n token.tagName === $.SVG\n ) {\n return false;\n }\n\n const isCharacterToken =\n token.type === Tokenizer.CHARACTER_TOKEN ||\n token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n const isMathMLTextStartTag =\n token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n\n if (\n (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n this._isIntegrationPoint(current, NS.HTML)\n ) {\n return false;\n }\n\n return token.type !== Tokenizer.EOF_TOKEN;\n }\n\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n\n if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n\n //Integration points\n _isIntegrationPoint(element, foreignNS) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n\n return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n }\n\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n\n for (let i = unopenIdx; i < listLength; i++) {\n entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n let element = this.openElements.items[i];\n\n if (i === 0) {\n last = true;\n\n if (this.fragmentContext) {\n element = this.fragmentContext;\n }\n }\n\n const tn = this.treeAdapter.getTagName(element);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last && (tn === $.TD || tn === $.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last && tn === $.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn === $.SELECT) {\n this._resetInsertionModeForSelect(i);\n break;\n } else if (tn === $.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn === $.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const ancestor = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(ancestor);\n\n if (tn === $.TEMPLATE) {\n break;\n } else if (tn === $.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n\n this.insertionMode = IN_SELECT_MODE;\n }\n\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n\n //Foster parenting\n _isElementCausesFosterParenting(element) {\n const tn = this.treeAdapter.getTagName(element);\n\n return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n }\n\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n\n _findFosterParentingLocation() {\n const location = {\n parent: null,\n beforeElement: null\n };\n\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(openElement);\n const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n location.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn === $.TABLE) {\n location.parent = this.treeAdapter.getParentNode(openElement);\n\n if (location.parent) {\n location.beforeElement = openElement;\n } else {\n location.parent = this.openElements.items[i - 1];\n }\n\n break;\n }\n }\n\n if (!location.parent) {\n location.parent = this.openElements.items[0];\n }\n\n return location;\n }\n\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n\n _fosterParentText(chars) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n } else {\n this.treeAdapter.insertText(location.parent, chars);\n }\n }\n\n //Special elements\n _isSpecialElement(element) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n\n return HTML.SPECIAL_ELEMENTS[ns][tn];\n }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p, token);\n }\n\n return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n\n if (element === formattingElementEntry.element) {\n break;\n }\n\n if (p._isSpecialElement(element)) {\n furthestBlock = element;\n }\n }\n\n if (!furthestBlock) {\n p.openElements.popUntilElementPopped(formattingElementEntry.element);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n\n return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n\n p.openElements.remove(element);\n } else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n\n return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n\n return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n if (p._isElementCausesFosterParenting(commonAncestor)) {\n p._fosterParentElement(lastElement);\n } else {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n\n p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n let formattingElementEntry;\n\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n if (!formattingElementEntry) {\n break;\n }\n\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n if (!furthestBlock) {\n break;\n }\n\n p.activeFormattingElements.bookmark = formattingElementEntry;\n\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n p.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n\n const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n if (!doctype.isConforming(token)) {\n p._err(ERR.nonConformingDoctype);\n }\n\n p.treeAdapter.setDocumentMode(p.document, mode);\n\n p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n p._err(ERR.missingDoctype, { beforeToken: true });\n p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = BEFORE_HTML_MODE;\n p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagName === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = BEFORE_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.HEAD) {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p, token);\n }\n}\n\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement($.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TITLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else if (tn === $.SCRIPT) {\n p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n } else if (tn === $.TEMPLATE) {\n p._insertTemplate(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = IN_TEMPLATE_MODE;\n p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p, token);\n }\n}\n\nfunction endTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n tokenInHead(p, token);\n } else if (tn === $.TEMPLATE) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n\n if (p.openElements.currentTagName !== $.TEMPLATE) {\n p._err(ERR.closingOfElementWithOpenChildElements);\n }\n\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.HEAD ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.STYLE\n ) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n p._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p, token);\n }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.NOSCRIPT) {\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n } else if (tn === $.BR) {\n tokenInHeadNoScript(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n const errCode =\n token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n p._err(errCode);\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BODY) {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_BODY_MODE;\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n } else if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n p._err(ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p, token);\n }\n}\n\nfunction endTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenAfterHead(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement($.BODY);\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\n\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\n\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n }\n}\n\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n const tn = p.openElements.currentTagName;\n\n if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\n\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n const elementTn = p.treeAdapter.getTagName(element);\n let closeTn = null;\n\n if (tn === $.LI && elementTn === $.LI) {\n closeTn = $.LI;\n } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n closeTn = elementTn;\n }\n\n if (closeTn) {\n p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n\n if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n break;\n }\n }\n\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n if (\n p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n p.openElements.hasInButtonScope($.P)\n ) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p.framesetOk = false;\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n token.tagName = $.IMG;\n areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = Tokenizer.MODE.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n\n if (\n p.insertionMode === IN_TABLE_MODE ||\n p.insertionMode === IN_CAPTION_MODE ||\n p.insertionMode === IN_TABLE_BODY_MODE ||\n p.insertionMode === IN_ROW_MODE ||\n p.insertionMode === IN_CELL_MODE\n ) {\n p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p.insertionMode = IN_SELECT_MODE;\n }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n } else {\n p._insertElement(token, NS.MATHML);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n } else {\n p._insertElement(token, NS.SVG);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n bStartTagInBody(p, token);\n } else if (tn === $.P) {\n addressStartTagInBody(p, token);\n } else if (tn === $.A) {\n aStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.OL || tn === $.UL) {\n addressStartTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderStartTagInBody(p, token);\n } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n listItemStartTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n bStartTagInBody(p, token);\n } else if (tn === $.BR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.HR) {\n hrStartTagInBody(p, token);\n } else if (tn === $.RB) {\n rbStartTagInBody(p, token);\n } else if (tn === $.RT || tn === $.RP) {\n rtStartTagInBody(p, token);\n } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n addressStartTagInBody(p, token);\n } else if (tn === $.PRE) {\n preStartTagInBody(p, token);\n } else if (tn === $.BIG) {\n bStartTagInBody(p, token);\n } else if (tn === $.IMG || tn === $.WBR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.XMP) {\n xmpStartTagInBody(p, token);\n } else if (tn === $.SVG) {\n svgStartTagInBody(p, token);\n } else if (tn === $.RTC) {\n rbStartTagInBody(p, token);\n } else if (tn !== $.COL) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n htmlStartTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n startTagInHead(p, token);\n } else if (tn === $.BODY) {\n bodyStartTagInBody(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressStartTagInBody(p, token);\n } else if (tn === $.FORM) {\n formStartTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT) {\n bStartTagInBody(p, token);\n } else if (tn === $.NOBR) {\n nobrStartTagInBody(p, token);\n } else if (tn === $.AREA) {\n areaStartTagInBody(p, token);\n } else if (tn === $.MATH) {\n mathStartTagInBody(p, token);\n } else if (tn === $.MENU) {\n menuStartTagInBody(p, token);\n } else if (tn !== $.HEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.STYLE || tn === $.TITLE) {\n startTagInHead(p, token);\n } else if (tn === $.ASIDE) {\n addressStartTagInBody(p, token);\n } else if (tn === $.SMALL) {\n bStartTagInBody(p, token);\n } else if (tn === $.TABLE) {\n tableStartTagInBody(p, token);\n } else if (tn === $.EMBED) {\n areaStartTagInBody(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInBody(p, token);\n } else if (tn === $.PARAM || tn === $.TRACK) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IMAGE) {\n imageStartTagInBody(p, token);\n } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.BUTTON) {\n buttonStartTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n bStartTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletStartTagInBody(p, token);\n } else if (tn === $.KEYGEN) {\n areaStartTagInBody(p, token);\n } else if (tn === $.SOURCE) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IFRAME) {\n iframeStartTagInBody(p, token);\n } else if (tn === $.SELECT) {\n selectStartTagInBody(p, token);\n } else if (tn === $.OPTION) {\n optgroupStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.BGSOUND) {\n startTagInHead(p, token);\n } else if (\n tn === $.DETAILS ||\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.SECTION ||\n tn === $.SUMMARY\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.LISTING) {\n preStartTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletStartTagInBody(p, token);\n } else if (tn === $.NOEMBED) {\n noembedStartTagInBody(p, token);\n } else if (tn !== $.CAPTION) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.BASEFONT) {\n startTagInHead(p, token);\n } else if (tn === $.FRAMESET) {\n framesetStartTagInBody(p, token);\n } else if (tn === $.FIELDSET) {\n addressStartTagInBody(p, token);\n } else if (tn === $.TEXTAREA) {\n textareaStartTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n } else if (tn === $.OPTGROUP) {\n optgroupStartTagInBody(p, token);\n } else if (tn !== $.COLGROUP) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 9:\n if (tn === $.PLAINTEXT) {\n plaintextStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n default:\n genericStartTagInBody(p, token);\n }\n}\n\nfunction bodyEndTagInBody(p) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n }\n}\n\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n p._processToken(token);\n }\n}\n\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const formElement = p.formElement;\n\n if (!inTemplate) {\n p.formElement = null;\n }\n\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n } else {\n p.openElements.remove(formElement);\n }\n }\n}\n\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement($.P);\n }\n\n p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\n\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\n\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\n\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement($.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getTagName(element) === tn) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilElementPopped(element);\n break;\n }\n\n if (p._isSpecialElement(element)) {\n break;\n }\n }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n callAdoptionAgency(p, token);\n } else if (tn === $.P) {\n pEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.UL || tn === $.OL) {\n addressEndTagInBody(p, token);\n } else if (tn === $.LI) {\n liEndTagInBody(p, token);\n } else if (tn === $.DD || tn === $.DT) {\n ddEndTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderEndTagInBody(p, token);\n } else if (tn === $.BR) {\n brEndTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.BIG) {\n callAdoptionAgency(p, token);\n } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.BODY) {\n bodyEndTagInBody(p, token);\n } else if (tn === $.HTML) {\n htmlEndTagInBody(p, token);\n } else if (tn === $.FORM) {\n formEndTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n callAdoptionAgency(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.ASIDE) {\n addressEndTagInBody(p, token);\n } else if (tn === $.SMALL) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletEndTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.DETAILS ||\n tn === $.SECTION ||\n tn === $.SUMMARY ||\n tn === $.LISTING\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.FIELDSET) {\n addressEndTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n default:\n genericEndTagInBody(p, token);\n }\n}\n\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p, token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n if (token.tagName === $.SCRIPT) {\n p.pendingScript = p.openElements.current;\n }\n\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n p._err(ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n const curTn = p.openElements.currentTagName;\n\n if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n p.pendingCharacterTokens = [];\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = IN_TABLE_TEXT_MODE;\n p._processToken(token);\n } else {\n tokenInTable(p, token);\n }\n}\n\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.COLGROUP);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.TBODY);\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processToken(token);\n }\n}\n\nfunction inputStartTagInTable(p, token) {\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p, token);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\n\nfunction startTagInTable(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH || tn === $.TR) {\n tdStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.COL) {\n colStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.FORM) {\n formStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n tableStartTagInTable(p, token);\n } else if (tn === $.STYLE) {\n startTagInHead(p, token);\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n tbodyStartTagInTable(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.CAPTION) {\n captionStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.COLGROUP) {\n colgroupStartTagInTable(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n default:\n tokenInTable(p, token);\n }\n}\n\nfunction endTagInTable(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (\n tn !== $.BODY &&\n tn !== $.CAPTION &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n tokenInTable(p, token);\n }\n}\n\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n\n p.fosterParentingEnabled = true;\n p._processTokenInBodyMode(token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n let i = 0;\n\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n } else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (tn === $.CAPTION || tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n\n if (tn === $.TABLE) {\n p._processToken(token);\n }\n }\n } else if (\n tn !== $.BODY &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.COL) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction endTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.COLGROUP) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (tn !== $.COL) {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_ROW_MODE;\n } else if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement($.TR);\n p.insertionMode = IN_ROW_MODE;\n p._processToken(token);\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD\n ) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CELL_MODE;\n p.activeFormattingElements.insertMarker();\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCell(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TD || tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_ROW_MODE;\n }\n } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.OPTGROUP) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n\n if (tn !== $.SELECT) {\n p._processToken(token);\n }\n }\n } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.OPTGROUP) {\n const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n startTagInSelect(p, token);\n }\n}\n\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n }\n } else {\n endTagInSelect(p, token);\n }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n startTagInHead(p, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n p._popTmplInsertionMode();\n p._pushTmplInsertionMode(newInsertionMode);\n p.insertionMode = newInsertionMode;\n p._processToken(token);\n }\n}\n\nfunction endTagInTemplate(p, token) {\n if (token.tagName === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction endTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction tokenAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n } else if (tn === $.FRAME) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInFrameset(p, token) {\n if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n\n if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n p.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagAfterFrameset(p, token) {\n if (token.tagName === $.HTML) {\n p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterAfterBody(p, token);\n }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token) && !p.fragmentContext) {\n while (\n p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.current)\n ) {\n p.openElements.pop();\n }\n\n p._processToken(token);\n } else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n } else {\n p._insertElement(token, currentNs);\n }\n\n token.ackSelfClosing = true;\n }\n}\n\nfunction endTagInForeignContent(p, token) {\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._processToken(token);\n break;\n }\n\n if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n p.openElements.popUntilElementPopped(element);\n break;\n }\n }\n}\n","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n case 3:\n return tn === $.RTC;\n\n case 6:\n return tn === $.OPTION;\n\n case 8:\n return tn === $.OPTGROUP;\n }\n\n return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return (\n tn === $.RB ||\n tn === $.RP ||\n tn === $.RT ||\n tn === $.DD ||\n tn === $.DT ||\n tn === $.LI ||\n tn === $.TD ||\n tn === $.TH ||\n tn === $.TR\n );\n\n case 3:\n return tn === $.RTC;\n\n case 5:\n return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n case 6:\n return tn === $.OPTION;\n\n case 7:\n return tn === $.CAPTION;\n\n case 8:\n return tn === $.OPTGROUP || tn === $.COLGROUP;\n }\n\n return false;\n}\n\nfunction isScopingElement(tn, ns) {\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH) {\n return ns === NS.HTML;\n } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n return ns === NS.MATHML;\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n return ns === NS.HTML;\n } else if (tn === $.DESC) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n return ns === NS.HTML;\n } else if (tn === $.MTEXT) {\n return ns === NS.MATHML;\n } else if (tn === $.TITLE) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 6:\n return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n case 7:\n return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n case 8:\n return tn === $.TEMPLATE && ns === NS.HTML;\n\n case 13:\n return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n case 14:\n return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n }\n\n return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n constructor(document, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n\n //Index of element\n _indexOf(element) {\n let idx = -1;\n\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n\n //Update current element\n _isInTemplate() {\n return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n\n //Mutations\n push(element) {\n this.items[++this.stackTop] = element;\n this._updateCurrentElement();\n\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n\n pop() {\n this.stackTop--;\n\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n\n this._updateCurrentElement();\n }\n\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n\n this.items[idx] = newElement;\n\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n\n this.items.splice(insertionIdx, 0, newElement);\n\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === tagName && ns === NS.HTML) {\n break;\n }\n }\n }\n\n popUntilElementPopped(element) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n\n this.pop();\n\n if (poppedElement === element) {\n break;\n }\n }\n }\n\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (\n tn === $.H1 ||\n tn === $.H2 ||\n tn === $.H3 ||\n tn === $.H4 ||\n tn === $.H5 ||\n (tn === $.H6 && ns === NS.HTML)\n ) {\n break;\n }\n }\n }\n\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n break;\n }\n }\n }\n\n popAllUpToHtmlElement() {\n //NOTE: here we assume that root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n\n clearBackToTableContext() {\n while (\n (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableBodyContext() {\n while (\n (this.currentTagName !== $.TBODY &&\n this.currentTagName !== $.TFOOT &&\n this.currentTagName !== $.THEAD &&\n this.currentTagName !== $.TEMPLATE &&\n this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableRowContext() {\n while (\n (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n remove(element) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n this.items.splice(i, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n const element = this.items[1];\n\n return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n }\n\n contains(element) {\n return this._indexOf(element) > -1;\n }\n\n getCommonAncestor(element) {\n let elementIdx = this._indexOf(element);\n\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $.HTML;\n }\n\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (\n (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n ns === NS.HTML\n ) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n\n return true;\n }\n\n //Implied end tags\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Default serializer options\nconst DEFAULT_OPTIONS = {\n treeAdapter: defaultTreeAdapter\n};\n\n//Escaping regexes\nconst AMP_REGEX = /&/g;\nconst NBSP_REGEX = /\\u00a0/g;\nconst DOUBLE_QUOTE_REGEX = /\"/g;\nconst LT_REGEX = /</g;\nconst GT_REGEX = />/g;\n\n//Serializer\nclass Serializer {\n constructor(node, options) {\n this.options = mergeOptions(DEFAULT_OPTIONS, options);\n this.treeAdapter = this.options.treeAdapter;\n\n this.html = '';\n this.startNode = node;\n }\n\n //API\n serialize() {\n this._serializeChildNodes(this.startNode);\n\n return this.html;\n }\n\n //Internals\n _serializeChildNodes(parentNode) {\n const childNodes = this.treeAdapter.getChildNodes(parentNode);\n\n if (childNodes) {\n for (let i = 0, cnLength = childNodes.length; i < cnLength; i++) {\n const currentNode = childNodes[i];\n\n if (this.treeAdapter.isElementNode(currentNode)) {\n this._serializeElement(currentNode);\n } else if (this.treeAdapter.isTextNode(currentNode)) {\n this._serializeTextNode(currentNode);\n } else if (this.treeAdapter.isCommentNode(currentNode)) {\n this._serializeCommentNode(currentNode);\n } else if (this.treeAdapter.isDocumentTypeNode(currentNode)) {\n this._serializeDocumentTypeNode(currentNode);\n }\n }\n }\n }\n\n _serializeElement(node) {\n const tn = this.treeAdapter.getTagName(node);\n const ns = this.treeAdapter.getNamespaceURI(node);\n\n this.html += '<' + tn;\n this._serializeAttributes(node);\n this.html += '>';\n\n if (\n tn !== $.AREA &&\n tn !== $.BASE &&\n tn !== $.BASEFONT &&\n tn !== $.BGSOUND &&\n tn !== $.BR &&\n tn !== $.COL &&\n tn !== $.EMBED &&\n tn !== $.FRAME &&\n tn !== $.HR &&\n tn !== $.IMG &&\n tn !== $.INPUT &&\n tn !== $.KEYGEN &&\n tn !== $.LINK &&\n tn !== $.META &&\n tn !== $.PARAM &&\n tn !== $.SOURCE &&\n tn !== $.TRACK &&\n tn !== $.WBR\n ) {\n const childNodesHolder =\n tn === $.TEMPLATE && ns === NS.HTML ? this.treeAdapter.getTemplateContent(node) : node;\n\n this._serializeChildNodes(childNodesHolder);\n this.html += '</' + tn + '>';\n }\n }\n\n _serializeAttributes(node) {\n const attrs = this.treeAdapter.getAttrList(node);\n\n for (let i = 0, attrsLength = attrs.length; i < attrsLength; i++) {\n const attr = attrs[i];\n const value = Serializer.escapeString(attr.value, true);\n\n this.html += ' ';\n\n if (!attr.namespace) {\n this.html += attr.name;\n } else if (attr.namespace === NS.XML) {\n this.html += 'xml:' + attr.name;\n } else if (attr.namespace === NS.XMLNS) {\n if (attr.name !== 'xmlns') {\n this.html += 'xmlns:';\n }\n\n this.html += attr.name;\n } else if (attr.namespace === NS.XLINK) {\n this.html += 'xlink:' + attr.name;\n } else {\n this.html += attr.prefix + ':' + attr.name;\n }\n\n this.html += '=\"' + value + '\"';\n }\n }\n\n _serializeTextNode(node) {\n const content = this.treeAdapter.getTextNodeContent(node);\n const parent = this.treeAdapter.getParentNode(node);\n let parentTn = void 0;\n\n if (parent && this.treeAdapter.isElementNode(parent)) {\n parentTn = this.treeAdapter.getTagName(parent);\n }\n\n if (\n parentTn === $.STYLE ||\n parentTn === $.SCRIPT ||\n parentTn === $.XMP ||\n parentTn === $.IFRAME ||\n parentTn === $.NOEMBED ||\n parentTn === $.NOFRAMES ||\n parentTn === $.PLAINTEXT ||\n parentTn === $.NOSCRIPT\n ) {\n this.html += content;\n } else {\n this.html += Serializer.escapeString(content, false);\n }\n }\n\n _serializeCommentNode(node) {\n this.html += '<!--' + this.treeAdapter.getCommentNodeContent(node) + '-->';\n }\n\n _serializeDocumentTypeNode(node) {\n const name = this.treeAdapter.getDocumentTypeNodeName(node);\n\n this.html += '<' + doctype.serializeContent(name, null, null) + '>';\n }\n}\n\n// NOTE: used in tests and by rewriting stream\nSerializer.escapeString = function(str, attrMode) {\n str = str.replace(AMP_REGEX, '&').replace(NBSP_REGEX, ' ');\n\n if (attrMode) {\n str = str.replace(DOUBLE_QUOTE_REGEX, '"');\n } else {\n str = str.replace(LT_REGEX, '<').replace(GT_REGEX, '>');\n }\n\n return str;\n};\n\nmodule.exports = Serializer;\n","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 0x80: 0x20ac,\n 0x82: 0x201a,\n 0x83: 0x0192,\n 0x84: 0x201e,\n 0x85: 0x2026,\n 0x86: 0x2020,\n 0x87: 0x2021,\n 0x88: 0x02c6,\n 0x89: 0x2030,\n 0x8a: 0x0160,\n 0x8b: 0x2039,\n 0x8c: 0x0152,\n 0x8e: 0x017d,\n 0x91: 0x2018,\n 0x92: 0x2019,\n 0x93: 0x201c,\n 0x94: 0x201d,\n 0x95: 0x2022,\n 0x96: 0x2013,\n 0x97: 0x2014,\n 0x98: 0x02dc,\n 0x99: 0x2122,\n 0x9a: 0x0161,\n 0x9b: 0x203a,\n 0x9c: 0x0153,\n 0x9e: 0x017e,\n 0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n if (cp <= 0xffff) {\n return String.fromCharCode(cp);\n }\n\n cp -= 0x10000;\n return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midCp = neTree[mid];\n\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n constructor() {\n this.preprocessor = new Preprocessor();\n\n this.tokenQueue = [];\n\n this.allowCDATA = false;\n\n this.state = DATA_STATE;\n this.returnState = '';\n\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = '';\n\n this.consumedAfterSnapshot = -1;\n this.active = false;\n\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n\n //API\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n\n const cp = this._consume();\n\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n\n return this.tokenQueue.shift();\n }\n\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n return true;\n }\n\n return false;\n }\n\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n\n if (cp === $.EOF) {\n isMatch = false;\n break;\n }\n\n patternCp = pattern[patternPos];\n\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n\n return isMatch;\n }\n\n //Temp buffer\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n\n for (let i = 0; i < this.tempBuff.length; i++) {\n if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n attrs: []\n };\n }\n\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: ''\n };\n }\n\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type: type,\n chars: ch\n };\n }\n\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: ''\n };\n }\n\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR.duplicateAttribute);\n }\n\n this.state = toState;\n }\n\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n\n //Token emission\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n\n const ct = this.currentToken;\n\n this.currentToken = null;\n\n //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n }\n\n this.tokenQueue.push(ct);\n }\n\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n\n //Characters emission\n\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n\n _emitSeveralCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n this._emitCodePoint(codePoints[i]);\n }\n }\n\n //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n //So we can avoid additional checks here.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n\n // Character reference helpers\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i = findNamedEntityTreeBranch(0, startCp);\n\n this.tempBuff.push(startCp);\n\n while (i > -1) {\n const current = neTree[i];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n if (nodeWithData) {\n //NOTE: we use greedy search, so we continue lookup at this point\n result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n excess = 0;\n }\n\n const cp = this._consume();\n\n this.tempBuff.push(cp);\n excess++;\n\n if (cp === $.EOF) {\n break;\n }\n\n if (inNode) {\n i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n } else {\n i = cp === current ? ++i : -1;\n }\n }\n\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n\n return result;\n }\n\n _isCharacterReferenceInAttribute() {\n return (\n this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n );\n }\n\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n\n this._unconsume();\n\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n\n return false;\n }\n\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i = 0; i < this.tempBuff.length; i++) {\n this.currentAttr.value += toChar(this.tempBuff[i]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n\n this.tempBuff = [];\n }\n\n // State machine\n\n // Data state\n //------------------------------------------------------------------\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RCDATA state\n //------------------------------------------------------------------\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RAWTEXT state\n //------------------------------------------------------------------\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data state\n //------------------------------------------------------------------\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // PLAINTEXT state\n //------------------------------------------------------------------\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Tag open state\n //------------------------------------------------------------------\n [TAG_OPEN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.QUESTION_MARK) {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this._reconsumeInState(DATA_STATE);\n }\n }\n\n // End tag open state\n //------------------------------------------------------------------\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Tag name state\n //------------------------------------------------------------------\n [TAG_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentToken.tagName += toChar(cp);\n }\n }\n\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RCDATA_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag open state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag name state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RAWTEXT_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // Script data less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n this._emitChars('<!');\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n : SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars('/');\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Script data double escape end state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_ESCAPED_STATE\n : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Before attribute name state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.EQUALS_SIGN) {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Attribute name state\n //------------------------------------------------------------------\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n\n // After attribute name state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Before attribute value state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (\n cp === $.QUOTATION_MARK ||\n cp === $.APOSTROPHE ||\n cp === $.LESS_THAN_SIGN ||\n cp === $.EQUALS_SIGN ||\n cp === $.GRAVE_ACCENT\n ) {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Self-closing start tag state\n //------------------------------------------------------------------\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Bogus comment state\n //------------------------------------------------------------------\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Markup declaration open state\n //------------------------------------------------------------------\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = '[CDATA[';\n this.state = BOGUS_COMMENT_STATE;\n }\n }\n\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Comment start state\n //------------------------------------------------------------------\n [COMMENT_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment start dash state\n //------------------------------------------------------------------\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment state\n //------------------------------------------------------------------\n [COMMENT_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '<';\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Comment less-than sign state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.currentToken.data += '!';\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '!';\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n\n this._reconsumeInState(COMMENT_END_STATE);\n }\n\n // Comment end dash state\n //------------------------------------------------------------------\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end state\n //------------------------------------------------------------------\n [COMMENT_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '-';\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end bang state\n //------------------------------------------------------------------\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '--!';\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--!';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // DOCTYPE state\n //------------------------------------------------------------------\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n\n // DOCTYPE name state\n //------------------------------------------------------------------\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n\n // After DOCTYPE name state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n\n // CDATA section state\n //------------------------------------------------------------------\n [CDATA_SECTION_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // CDATA section bracket state\n //------------------------------------------------------------------\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(']');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // CDATA section end state\n //------------------------------------------------------------------\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n this._emitChars(']');\n } else {\n this._emitChars(']]');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // Character reference state\n //------------------------------------------------------------------\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$.AMPERSAND];\n\n if (cp === $.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Named character reference state\n //------------------------------------------------------------------\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n\n //NOTE: matching can be abrupted by hibernation. In that case match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n this.tempBuff = [$.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n }\n\n this.tempBuff = matchResult;\n }\n\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Numeric character reference state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n\n // Hexademical character reference start state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Decimal character reference start state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Hexademical character reference state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Decimal character reference state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Numeric character reference end state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 0x10ffff) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n\n this.tempBuff = [this.charRefCode];\n\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n\n return null;\n};\n\nmodule.exports = Tokenizer;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor() {\n this.html = null;\n\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n\n this.gapStack = [];\n\n this.skipNextNewLine = false;\n\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n\n if (unicode.isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n\n //NOTE: add gap that should be avoided during retreat\n this._addGap();\n\n return unicode.getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n\n //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n\n return cp;\n }\n\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n\n advance() {\n this.pos++;\n\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n\n let cp = this.html.charCodeAt(this.pos);\n\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (this.skipNextNewLine && cp === $.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n\n this.skipNextNewLine = false;\n\n if (unicode.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange =\n (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n\n return cp;\n }\n\n _checkForProblematicCharacters(cp) {\n if (unicode.isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n } else if (unicode.isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n\n this.pos--;\n }\n}\n\nmodule.exports = Preprocessor;\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n};\n\nexports.createDocumentFragment = function() {\n return {\n nodeName: '#document-fragment',\n childNodes: []\n };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName: tagName,\n attrs: attrs,\n namespaceURI: namespaceURI,\n childNodes: [],\n parentNode: null\n };\n};\n\nexports.createCommentNode = function(data) {\n return {\n nodeName: '#comment',\n data: data,\n parentNode: null\n };\n};\n\nconst createTextNode = function(value) {\n return {\n nodeName: '#text',\n value: value,\n parentNode: null\n };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n let doctypeNode = null;\n\n for (let i = 0; i < document.childNodes.length; i++) {\n if (document.childNodes[i].nodeName === '#documentType') {\n doctypeNode = document.childNodes[i];\n break;\n }\n }\n\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document, {\n nodeName: '#documentType',\n name: name,\n publicId: publicId,\n systemId: systemId\n });\n }\n};\n\nexports.setDocumentMode = function(document, mode) {\n document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n return document.mode;\n};\n\nexports.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n};\n\nexports.insertText = function(parentNode, text) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n if (prevNode.nodeName === '#text') {\n prevNode.value += text;\n return;\n }\n }\n\n appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n if (prevNode && prevNode.nodeName === '#text') {\n prevNode.value += text;\n } else {\n insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n\n for (let i = 0; i < recipient.attrs.length; i++) {\n recipientAttrsMap.push(recipient.attrs[i].name);\n }\n\n for (let j = 0; j < attrs.length; j++) {\n if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n recipient.attrs.push(attrs[j]);\n }\n }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n options = options || Object.create(null);\n\n return [defaults, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach(key => {\n merged[key] = optObj[key];\n });\n\n return merged;\n }, Object.create(null));\n};\n","'use strict';\n\nclass Mixin {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n for (const key of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key] === 'function') {\n originalMethods[key] = host[key];\n host[key] = overriddenMethods[key];\n }\n }\n }\n\n _getOverriddenMethods() {\n throw new Error('Not implemented');\n }\n}\n\nMixin.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n\n for (let i = 0; i < host.__mixins.length; i++) {\n if (host.__mixins[i].constructor === Ctor) {\n return host.__mixins[i];\n }\n }\n\n const mixin = new Ctor(host, opts);\n\n host.__mixins.push(mixin);\n\n return mixin;\n};\n\nmodule.exports = Mixin;\n","/*\r\nSlick Parser\r\n - originally created by the almighty Thomas Aylott <@subtlegradient> (http://subtlegradient.com)\r\n*/\"use strict\"\r\n\r\n// Notable changes from Slick.Parser 1.0.x\r\n\r\n// The parser now uses 2 classes: Expressions and Expression\r\n// `new Expressions` produces an array-like object containing a list of Expression objects\r\n// - Expressions::toString() produces a cleaned up expressions string\r\n// `new Expression` produces an array-like object\r\n// - Expression::toString() produces a cleaned up expression string\r\n// The only exposed method is parse, which produces a (cached) `new Expressions` instance\r\n// parsed.raw is no longer present, use .toString()\r\n// parsed.expression is now useless, just use the indices\r\n// parsed.reverse() has been removed for now, due to its apparent uselessness\r\n// Other changes in the Expressions object:\r\n// - classNames are now unique, and save both escaped and unescaped values\r\n// - attributes now save both escaped and unescaped values\r\n// - pseudos now save both escaped and unescaped values\r\n\r\nvar escapeRe = /([-.*+?^${}()|[\\]\\/\\\\])/g,\r\n unescapeRe = /\\\\/g\r\n\r\nvar escape = function(string){\r\n // XRegExp v2.0.0-beta-3\r\n // « https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js\r\n return (string + \"\").replace(escapeRe, '\\\\$1')\r\n}\r\n\r\nvar unescape = function(string){\r\n return (string + \"\").replace(unescapeRe, '')\r\n}\r\n\r\nvar slickRe = RegExp(\r\n/*\r\n#!/usr/bin/env ruby\r\nputs \"\\t\\t\" + DATA.read.gsub(/\\(\\?x\\)|\\s+#.*$|\\s+|\\\\$|\\\\n/,'')\r\n__END__\r\n \"(?x)^(?:\\\r\n \\\\s* ( , ) \\\\s* # Separator \\n\\\r\n | \\\\s* ( <combinator>+ ) \\\\s* # Combinator \\n\\\r\n | ( \\\\s+ ) # CombinatorChildren \\n\\\r\n | ( <unicode>+ | \\\\* ) # Tag \\n\\\r\n | \\\\# ( <unicode>+ ) # ID \\n\\\r\n | \\\\. ( <unicode>+ ) # ClassName \\n\\\r\n | # Attribute \\n\\\r\n \\\\[ \\\r\n \\\\s* (<unicode1>+) (?: \\\r\n \\\\s* ([*^$!~|]?=) (?: \\\r\n \\\\s* (?:\\\r\n ([\\\"']?)(.*?)\\\\9 \\\r\n )\\\r\n ) \\\r\n )? \\\\s* \\\r\n \\\\](?!\\\\]) \\n\\\r\n | :+ ( <unicode>+ )(?:\\\r\n \\\\( (?:\\\r\n (?:([\\\"'])([^\\\\12]*)\\\\12)|((?:\\\\([^)]+\\\\)|[^()]*)+)\\\r\n ) \\\\)\\\r\n )?\\\r\n )\"\r\n*/\r\n\"^(?:\\\\s*(,)\\\\s*|\\\\s*(<combinator>+)\\\\s*|(\\\\s+)|(<unicode>+|\\\\*)|\\\\#(<unicode>+)|\\\\.(<unicode>+)|\\\\[\\\\s*(<unicode1>+)(?:\\\\s*([*^$!~|]?=)(?:\\\\s*(?:([\\\"']?)(.*?)\\\\9)))?\\\\s*\\\\](?!\\\\])|(:+)(<unicode>+)(?:\\\\((?:(?:([\\\"'])([^\\\\13]*)\\\\13)|((?:\\\\([^)]+\\\\)|[^()]*)+))\\\\))?)\"\r\n .replace(/<combinator>/, '[' + escape(\">+~`!@$%^&={}\\\\;</\") + ']')\r\n .replace(/<unicode>/g, '(?:[\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])')\r\n .replace(/<unicode1>/g, '(?:[:\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])')\r\n)\r\n\r\n// Part\r\n\r\nvar Part = function Part(combinator){\r\n this.combinator = combinator || \" \"\r\n this.tag = \"*\"\r\n}\r\n\r\nPart.prototype.toString = function(){\r\n\r\n if (!this.raw){\r\n\r\n var xpr = \"\", k, part\r\n\r\n xpr += this.tag || \"*\"\r\n if (this.id) xpr += \"#\" + this.id\r\n if (this.classes) xpr += \".\" + this.classList.join(\".\")\r\n if (this.attributes) for (k = 0; part = this.attributes[k++];){\r\n xpr += \"[\" + part.name + (part.operator ? part.operator + '\"' + part.value + '\"' : '') + \"]\"\r\n }\r\n if (this.pseudos) for (k = 0; part = this.pseudos[k++];){\r\n xpr += \":\" + part.name\r\n if (part.value) xpr += \"(\" + part.value + \")\"\r\n }\r\n\r\n this.raw = xpr\r\n\r\n }\r\n\r\n return this.raw\r\n}\r\n\r\n// Expression\r\n\r\nvar Expression = function Expression(){\r\n this.length = 0\r\n}\r\n\r\nExpression.prototype.toString = function(){\r\n\r\n if (!this.raw){\r\n\r\n var xpr = \"\"\r\n\r\n for (var j = 0, bit; bit = this[j++];){\r\n if (j !== 1) xpr += \" \"\r\n if (bit.combinator !== \" \") xpr += bit.combinator + \" \"\r\n xpr += bit\r\n }\r\n\r\n this.raw = xpr\r\n\r\n }\r\n\r\n return this.raw\r\n}\r\n\r\nvar replacer = function(\r\n rawMatch,\r\n\r\n separator,\r\n combinator,\r\n combinatorChildren,\r\n\r\n tagName,\r\n id,\r\n className,\r\n\r\n attributeKey,\r\n attributeOperator,\r\n attributeQuote,\r\n attributeValue,\r\n\r\n pseudoMarker,\r\n pseudoClass,\r\n pseudoQuote,\r\n pseudoClassQuotedValue,\r\n pseudoClassValue\r\n){\r\n\r\n var expression, current\r\n\r\n if (separator || !this.length){\r\n expression = this[this.length++] = new Expression\r\n if (separator) return ''\r\n }\r\n\r\n if (!expression) expression = this[this.length - 1]\r\n\r\n if (combinator || combinatorChildren || !expression.length){\r\n current = expression[expression.length++] = new Part(combinator)\r\n }\r\n\r\n if (!current) current = expression[expression.length - 1]\r\n\r\n if (tagName){\r\n\r\n current.tag = unescape(tagName)\r\n\r\n } else if (id){\r\n\r\n current.id = unescape(id)\r\n\r\n } else if (className){\r\n\r\n var unescaped = unescape(className)\r\n\r\n var classes = current.classes || (current.classes = {})\r\n if (!classes[unescaped]){\r\n classes[unescaped] = escape(className)\r\n var classList = current.classList || (current.classList = [])\r\n classList.push(unescaped)\r\n classList.sort()\r\n }\r\n\r\n } else if (pseudoClass){\r\n\r\n pseudoClassValue = pseudoClassValue || pseudoClassQuotedValue\r\n\r\n ;(current.pseudos || (current.pseudos = [])).push({\r\n type : pseudoMarker.length == 1 ? 'class' : 'element',\r\n name : unescape(pseudoClass),\r\n escapedName : escape(pseudoClass),\r\n value : pseudoClassValue ? unescape(pseudoClassValue) : null,\r\n escapedValue : pseudoClassValue ? escape(pseudoClassValue) : null\r\n })\r\n\r\n } else if (attributeKey){\r\n\r\n attributeValue = attributeValue ? escape(attributeValue) : null\r\n\r\n ;(current.attributes || (current.attributes = [])).push({\r\n operator : attributeOperator,\r\n name : unescape(attributeKey),\r\n escapedName : escape(attributeKey),\r\n value : attributeValue ? unescape(attributeValue) : null,\r\n escapedValue : attributeValue ? escape(attributeValue) : null\r\n })\r\n\r\n }\r\n\r\n return ''\r\n\r\n}\r\n\r\n// Expressions\r\n\r\nvar Expressions = function Expressions(expression){\r\n this.length = 0\r\n\r\n var self = this\r\n\r\n var original = expression, replaced\r\n\r\n while (expression){\r\n replaced = expression.replace(slickRe, function(){\r\n return replacer.apply(self, arguments)\r\n })\r\n if (replaced === expression) throw new Error(original + ' is an invalid expression')\r\n expression = replaced\r\n }\r\n}\r\n\r\nExpressions.prototype.toString = function(){\r\n if (!this.raw){\r\n var expressions = []\r\n for (var i = 0, expression; expression = this[i++];) expressions.push(expression)\r\n this.raw = expressions.join(\", \")\r\n }\r\n\r\n return this.raw\r\n}\r\n\r\nvar cache = {}\r\n\r\nvar parse = function(expression){\r\n if (expression == null) return null\r\n expression = ('' + expression).replace(/^\\s+|\\s+$/g, '')\r\n return cache[expression] || (cache[expression] = new Expressions(expression))\r\n}\r\n\r\nmodule.exports = parse\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import type { Editor, BlockProperties } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default function (editor: Editor, opts: Required<PluginOptions>) {\r\n const { Blocks } = editor;\r\n\r\n const addBlock = (id: string, blockDef: BlockProperties) => {\r\n opts.blocks.indexOf(id)! >= 0 &&\r\n editor.Blocks.add(id, {\r\n select: true,\r\n ...blockDef,\r\n ...opts.block(id),\r\n });\r\n };\r\n\r\n Blocks.getAll().reset();\r\n\r\n Blocks.add(\"applyQrCode\", {\r\n label: opts.t9n.applyQrCodeBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\">\r\n <path fill=\"currentColor\" d=\"m2.7781 1.1906v2.2964h2.2964v-2.2964zm3.1469 0v0.76565h0.76507v-0.76565zm1.7005 0v2.2964h2.2964v-2.2964zm-4.0817 0.76565h0.76507v0.76507h-0.76507zm4.8474 0h0.76507v0.76507h-0.76507zm-2.4661 0.82902v0.76507h0.76507v-0.76507zm-3.1469 1.5947v0.76507h0.76565v-0.76507zm1.5307 0v0.76507h0.76565v-0.76507zm1.6162 0v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-3.2312 1.5947v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-6.3781 0.063368v2.2964h2.2964v-2.2964zm0.76565 0.76565h0.76507v0.76507h-0.76507zm2.3813 0.76507v0.76565h0.76507v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565z\" stroke-width=\".51027\"/>\r\n </svg>`,\r\n content: {\r\n type: \"image\",\r\n editable: false,\r\n droppable: true,\r\n attributes: {\r\n src: \"$$$ApplyQrCode$$$\",\r\n alt: \"Apply link QR code\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"viewQrCode\", {\r\n label: opts.t9n.viewQrCodeBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\">\r\n <path fill=\"currentColor\" d=\"m2.7781 1.1906v2.2964h2.2964v-2.2964zm3.1469 0v0.76565h0.76507v-0.76565zm1.7005 0v2.2964h2.2964v-2.2964zm-4.0817 0.76565h0.76507v0.76507h-0.76507zm4.8474 0h0.76507v0.76507h-0.76507zm-2.4661 0.82902v0.76507h0.76507v-0.76507zm-3.1469 1.5947v0.76507h0.76565v-0.76507zm1.5307 0v0.76507h0.76565v-0.76507zm1.6162 0v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-3.2312 1.5947v0.76507h0.76507v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm1.6156 0v0.76507h0.76565v-0.76507zm-6.3781 0.063368v2.2964h2.2964v-2.2964zm0.76565 0.76565h0.76507v0.76507h-0.76507zm2.3813 0.76507v0.76565h0.76507v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565zm1.6156 0v0.76565h0.76565v-0.76565z\" stroke-width=\".51027\"/>\r\n </svg>`,\r\n content: {\r\n type: \"image\",\r\n editable: false,\r\n droppable: true,\r\n attributes: {\r\n src: \"$$$ViewQrCode$$$\",\r\n alt: \"View link QR code\",\r\n },\r\n },\r\n });\r\n\r\n var btnStyle = `display: block; padding: 10px 30px; margin: 10px auto; text-decoration: none; border: none; color: #fff; text-align: center; background-color: #4b75cd; border-radius: 0.25rem 0.25rem 0.25em 0.25rem;`;\r\n\r\n Blocks.add(\"applyButton\", {\r\n label: opts.t9n.buttonApplyBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content:\r\n `<a data-gjs-type=\"link\" href=\"$$$ApplyLink$$$\" target=\"_blank\" role=\"button\" style=\"` +\r\n btnStyle +\r\n `\">${opts.t9n.buttonApplyBlkText}</a>`,\r\n media: `<svg style=\"width:54px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m0.87695 1.1856c-0.46379 0-0.87695 0.3355-0.87695 0.7891v3.2851c0 0.4536 0.41316 0.7891 0.87695 0.7891h5.3676v1.7446c0 0.12334 0.099882 0.22273 0.22221 0.22273 0.063691 0 0.12549-0.027437 0.16795-0.075964l0.83509-0.9555 0.58704 1.1762c0.079866 0.15973 0.27435 0.22404 0.43408 0.14418 0.15973-0.079866 0.22404-0.27383 0.14418-0.43357l-0.57309-1.1493h1.1942c0.12334 0 0.22324-0.10042 0.22324-0.22376 0-0.063691-0.027421-0.12394-0.074931-0.1664l-0.31884-0.28319h2.7363c0.46379 0 0.87695-0.3355 0.87695-0.7891v-3.2851c0-0.4536-0.41316-0.7891-0.87695-0.7891zm0 0.48214h10.945c0.2413 0 0.39688 0.15381 0.39688 0.30696v3.2851c0 0.15315-0.15557 0.30644-0.39688 0.30644h-3.2789l-1.9084-1.696c-0.043471-0.038418-0.09792-0.059945-0.15555-0.059945-0.1294 0-0.23461 0.10521-0.23461 0.23461v1.5214h-5.3676c-0.2413 0-0.39429-0.15329-0.39429-0.30644v-3.2851c0-0.15315 0.15299-0.30696 0.39429-0.30696z\"/>\r\n </svg>`,\r\n });\r\n\r\n Blocks.add(\"button\", {\r\n label: opts.t9n.buttonBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content:\r\n `<a data-gjs-type=\"link\" role=\"button\" style=\"` +\r\n btnStyle +\r\n `\">Button</a>`,\r\n media: `<svg style=\"width:54px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m0.87695 1.1856c-0.46379 0-0.87695 0.3355-0.87695 0.7891v3.2851c0 0.4536 0.41316 0.7891 0.87695 0.7891h5.3676v1.7446c0 0.12334 0.099882 0.22273 0.22221 0.22273 0.063691 0 0.12549-0.027437 0.16795-0.075964l0.83509-0.9555 0.58704 1.1762c0.079866 0.15973 0.27435 0.22404 0.43408 0.14418 0.15973-0.079866 0.22404-0.27383 0.14418-0.43357l-0.57309-1.1493h1.1942c0.12334 0 0.22324-0.10042 0.22324-0.22376 0-0.063691-0.027421-0.12394-0.074931-0.1664l-0.31884-0.28319h2.7363c0.46379 0 0.87695-0.3355 0.87695-0.7891v-3.2851c0-0.4536-0.41316-0.7891-0.87695-0.7891zm0 0.48214h10.945c0.2413 0 0.39688 0.15381 0.39688 0.30696v3.2851c0 0.15315-0.15557 0.30644-0.39688 0.30644h-3.2789l-1.9084-1.696c-0.043471-0.038418-0.09792-0.059945-0.15555-0.059945-0.1294 0-0.23461 0.10521-0.23461 0.23461v1.5214h-5.3676c-0.2413 0-0.39429-0.15329-0.39429-0.30644v-3.2851c0-0.15315 0.15299-0.30696 0.39429-0.30696z\"/>\r\n </svg>`,\r\n });\r\n\r\n Blocks.add(\"header\", {\r\n label: opts.t9n.headerBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m8.4664 2.3913 0.3777 1.3753-0.31258 0.082201c-0.14652-0.27506-0.2963-0.55011-0.46886-0.68922-0.17257-0.13595-0.37444-0.13595-0.57306-0.13595h-0.814v3.3196c0 0.15808 0 0.31616 0.10745 0.3952 0.1107 0.079039 0.3256 0.079039 0.54375 0.079039v0.31616h-1.9536v-0.31616c0.21815 0 0.43305 0 0.54375-0.07904 0.10745-0.079039 0.10745-0.23712 0.10745-0.3952v-3.3196h-0.814c-0.19862 0-0.40049 0-0.57306 0.13595-0.17257 0.13911-0.32234 0.41417-0.46886 0.68922l-0.31258-0.082201 0.3777-1.3753z\" stroke-width=\".32084\"/>\r\n </svg>`,\r\n content: {\r\n type: \"header\",\r\n content: \"Title\",\r\n },\r\n });\r\n\r\n Blocks.add(\"text\", {\r\n label: opts.t9n.textBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 1.9461v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0211v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: {\r\n type: \"text\",\r\n content: \"Text\",\r\n },\r\n });\r\n\r\n Blocks.add(\"text2\", {\r\n label: opts.t9n.textBlkLabelWithSpace,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px;\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 1.9461v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0211v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: {\r\n type: \"text\",\r\n content: \"Text\",\r\n style: { \"margin-top\": \"15px\", \"margin-bottom\": \"15px\" },\r\n },\r\n });\r\n\r\n Blocks.add(\"titleAndText\", {\r\n label: opts.t9n.titleAndTextBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 1.9461v1.0583h8.1695v-1.0583h-8.1695zm0 2.0412v0.52917h9.0403v-0.52917h-9.0403zm0 1.0211v0.52917h7.2135v-0.52917h-7.2135zm0 1.0206v0.52917h9.0403v-0.52917h-9.0403zm0 1.0206v0.52917h7.2135v-0.52917h-7.2135z\" stroke-width=\".3322\"/>\r\n </svg>`,\r\n content: [\r\n {\r\n tagname: \"div\",\r\n components: [\r\n {\r\n type: \"header\",\r\n tagName: \"h3\",\r\n content: \"Title\",\r\n },\r\n { tagname: \"div\", components: [{ type: \"text\", content: \"Text\" }] },\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n Blocks.add(\"ulist\", {\r\n label: opts.t9n.ulistBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m2.3859 2.1921a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135zm-1.2707 1.7766a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135zm-1.2707 1.7766a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: { type: \"ulist\" },\r\n });\r\n\r\n Blocks.add(\"titleAndList\", {\r\n label: opts.t9n.titleAndListBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m1.8299 2.1854v1.0583h8.1623v-1.0583h-8.1623zm0.55604 2.0479a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135zm-1.2707 1.7766a0.52917 0.52917 0 0 0-0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917 0.52917 0.52917 0.52917 0 0 0 0.52917-0.52917 0.52917 0.52917 0 0 0-0.52917-0.52917zm1.2707 0.26458v0.52917h7.2135v-0.52917h-7.2135z\"/>\r\n </svg>`,\r\n content: [\r\n {\r\n tagname: \"div\",\r\n components: [\r\n {\r\n type: \"header\",\r\n tagName: \"h3\",\r\n content: \"Title\",\r\n },\r\n { tagname: \"div\", components: [{ type: \"ulist\" }] },\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n Blocks.add(\"divider\", {\r\n label: opts.t9n.dividerBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content: `<hr style=\"border-top: 1px solid #2b303b;\">`,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m-1.4833e-5 4.5835h12.7v0.35797h-12.7z\"/>\r\n </svg>`,\r\n });\r\n\r\n Blocks.add(\"icon\", {\r\n label: opts.t9n.iconBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 12.7 9.525\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill=\"currentColor\" d=\"m6.1759 1.5875c-0.067716 0-0.13494 0.025902-0.18655 0.077515l-1.9275 1.9265-0.87023-0.8692c-0.10323-0.10323-0.27091-0.10323-0.37414 0-0.10323 0.10323-0.10323 0.27091 0 0.37414l1.0568 1.0568c0.10323 0.10323 0.27091 0.10323 0.37414 0l2.1141-2.1136c0.10322-0.10323 0.10322-0.27143 0-0.37465h0.0010336c-0.051608-0.051613-0.11987-0.077515-0.18759-0.077515zm2.3988 0a1.3854 1.3854 0 0 0-1.3854 1.3854 1.3854 1.3854 0 0 0 1.3854 1.386 1.3854 1.3854 0 0 0 1.3854-1.386 1.3854 1.3854 0 0 0-1.3854-1.3854zm0 0.49661a0.889 0.889 0 0 1 0.88935 0.88883 0.889 0.889 0 0 1-0.88935 0.88935 0.889 0.889 0 0 1-0.88883-0.88935 0.889 0.889 0 0 1 0.88883-0.88883zm-0.096118 2.8897c-0.063262 0-0.12645 0.024129-0.17467 0.072347-0.096436 0.096436-0.096436 0.2529 0 0.34933l0.8139 0.81339h-2.3668c-0.13655 0-0.24701 0.10994-0.24701 0.2465 0 0.13655 0.11046 0.24701 0.24701 0.24701h2.3657l-0.81235 0.81339c-0.096436 0.096436-0.096436 0.2529 0 0.34933 0.096436 0.096436 0.25341 0.096436 0.34985 0l1.234-1.2346-5.167e-4 -5.167e-4c0.096436-0.096436 0.096436-0.2529 0-0.34933l-1.2346-1.2346c-0.048218-0.048218-0.1114-0.072347-0.17467-0.072347zm-4.2344 0.045475c-0.0701 0-0.13304 0.039629-0.16381 0.10232l-0.3669 0.75396-0.81804 0.12092c-0.068389 0.010262-0.12567 0.057966-0.14676 0.12351-0.021088 0.06554-0.0040554 0.13811 0.044958 0.18655l0.59428 0.58756-0.14056 0.83044c-0.011402 0.068389 0.017477 0.13782 0.073897 0.17828 0.056422 0.040464 0.13069 0.045922 0.19224 0.013436l0.73122-0.39067 0.73122 0.39067c0.061552 0.032485 0.13633 0.027597 0.19275-0.013436 0.056423-0.041034 0.08478-0.10989 0.07338-0.17828l-0.14056-0.83044 0.59376-0.58756c0.049012-0.048444 0.066616-0.12101 0.044958-0.18655-0.021657-0.06554-0.077856-0.11325-0.14624-0.12351l-0.81907-0.12092-0.36639-0.75396c-0.030206-0.06269-0.094231-0.10232-0.16433-0.10232z\" stroke-width=\".34931\"/>\r\n </svg>`,\r\n content: { type: \"icon\" },\r\n });\r\n\r\n Blocks.add(\"image\", {\r\n label: opts.t9n.imageBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-regular fa-image\" },\r\n content: {\r\n type: \"image\",\r\n activeOnRender: 1,\r\n },\r\n });\r\n\r\n Blocks.add(\"video\", {\r\n label: opts.t9n.videoBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-brands fa-youtube\" },\r\n content: {\r\n type: \"video\",\r\n src: \"/video.mp4\",\r\n style: {\r\n width: \"100%\",\r\n height: \"350px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"box\", {\r\n label: opts.t9n.boxBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h20V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: {\r\n style: {\r\n padding: \"20px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"sect55\", {\r\n label: opts.t9n.sect55BlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 23 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h8V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1ZM13 20h8V4h-8v16Zm-1 0V4a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: `<div style=\"display:flex; flex-wrap: wrap; padding: 0.2rem 0\">\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 280px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 280px; padding:20px;\"></div>\r\n </div>`,\r\n });\r\n\r\n Blocks.add(\"sect37\", {\r\n label: opts.t9n.sect37BlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h5V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1ZM10 20h12V4H10v16Zm-1 0V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H10a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: `<div style=\"display:flex; flex-wrap: wrap; padding: 0.2rem 0\">\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 38.2%; min-width:200px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 61.8%; padding:20px;\"></div>\r\n </div>`,\r\n });\r\n\r\n Blocks.add(\"sect333\", {\r\n label: opts.t9n.sect333BlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 23 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h4V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1ZM17 20h4V4h-4v16Zm-1 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1ZM9.5 20h4V4h-4v16Zm-1 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: `<div style=\"display:flex; flex-wrap: wrap; padding: 0.2rem 0\">\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 200px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 200px; padding:20px;\"></div>\r\n <div style=\"flex-grow: 1; flex-shrink: 1; flex-basis: 200px; padding:20px;\"></div>\r\n </div>`,\r\n });\r\n\r\n Blocks.add(\"box\", {\r\n label: \"Box\",\r\n category: opts.t9n.categoryLabel,\r\n media: `<svg style=\"width:60px\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M2 20h20V4H2v16Zm-1 0V4a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1Z\"></path>\r\n </svg>`,\r\n content: {\r\n style: {\r\n padding: \"20px 20px 20px 20px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"map\", {\r\n label: opts.t9n.mapBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-solid fa-map-location-dot\" },\r\n content: {\r\n type: \"map\",\r\n style: {\r\n width: \"100%\",\r\n height: \"350px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"link\", {\r\n label: opts.t9n.linkBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-solid fa-link\" },\r\n content: {\r\n type: \"link\",\r\n content: \"Link\",\r\n },\r\n });\r\n\r\n Blocks.add(\"link-block\", {\r\n label: opts.t9n.linkBlockBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n attributes: { class: \"fa-solid fa-link\" },\r\n content: {\r\n type: \"link\",\r\n editable: false,\r\n droppable: true,\r\n style: {\r\n display: \"inline-block\",\r\n padding: \"5px\",\r\n \"min-height\": \"50px\",\r\n \"min-width\": \"50px\",\r\n },\r\n },\r\n });\r\n\r\n Blocks.add(\"scale\", {\r\n label: opts.t9n.inputRangeBlkLabel,\r\n category: opts.t9n.categoryLabel,\r\n content: { type: \"scale\" },\r\n attributes: { class: \"fa-solid fa-bars-progress\" },\r\n });\r\n\r\n // Social media sites blocks\r\n Blocks.add(\"facebook\", {\r\n label: opts.t9n.facebookBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://facebook.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fa-brands fa-square-facebook\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-facebook\" },\r\n });\r\n\r\n Blocks.add(\"instagram\", {\r\n label: opts.t9n.instagramBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://instagram.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fab fa-instagram-square\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-instagram\" },\r\n });\r\n\r\n Blocks.add(\"youtube\", {\r\n label: opts.t9n.youtubeBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.youtube.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-brands fa-square-youtube\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-youtube\" },\r\n });\r\n\r\n Blocks.add(\"linkedin\", {\r\n label: opts.t9n.linkedinBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://linkedin.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fab fa-linkedin\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-linkedin\" },\r\n });\r\n\r\n Blocks.add(\"xing\", {\r\n label: opts.t9n.xingBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://xing.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i aria-hidden=\"true\" class=\"fa-brands fa-square-xing\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-xing\" },\r\n });\r\n\r\n Blocks.add(\"twitter\", {\r\n label: opts.t9n.twitterBlkLabelSite,\r\n category: opts.t9n.smSitesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://twitter.com/\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"display:flex; justify-content: center; align-items: center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-brands fa-square-x-twitter\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-x-twitter\" },\r\n });\r\n\r\n // Social Media Share blocks\r\n Blocks.add(\"facebookShare\", {\r\n label: opts.t9n.facebookBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.facebook.com/sharer/sharer.php?u=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-facebook-f\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-facebook\" },\r\n });\r\n\r\n Blocks.add(\"linkedinShare\", {\r\n label: opts.t9n.linkedinBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.linkedin.com/shareArticle?mini=true&url=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-linkedin-in\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-linkedin\" },\r\n });\r\n\r\n Blocks.add(\"xingShare\", {\r\n label: opts.t9n.xingBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://www.xing.com/spi/shares/new?url=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-xing\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-xing\" },\r\n });\r\n\r\n Blocks.add(\"twitterShare\", {\r\n label: opts.t9n.twitterBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"https://twitter.com/intent/tweet?url=$$$ViewLink$$$&text=\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-x-twitter\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-x-twitter\" },\r\n });\r\n\r\n Blocks.add(\"whatsAppShare\", {\r\n label: opts.t9n.whatsAppBlkLabelShare,\r\n category: opts.t9n.smSharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n \"data-ost-simple-hide\": \"1\",\r\n href: \"https://wa.me/?text=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n },\r\n components: `<div style=\"border: 2px solid #293133; border-radius: 3px; display:flex; justify-content: space-around; align-items: center; text-align:center; width:60px; height:28px; font-size:21px; color:#293133;\">\r\n <i class=\"fa-solid fa-share\"></i>\r\n <i class=\"fa-brands fa-whatsapp\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-brands fa-square-whatsapp\" },\r\n });\r\n\r\n // conventional Shares\r\n Blocks.add(\"mail\", {\r\n label: opts.t9n.mailBlkLabel,\r\n category: opts.t9n.sharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"mailto:example@mail.com?subject=Sieh%20dir%20dieses%20Inserat%20an&body=$$$ViewLink$$$\",\r\n target: \"_blank\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"display:inline-block; text-align:center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-solid fa-envelope\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-solid fa-square-envelope\" },\r\n });\r\n\r\n Blocks.add(\"sms\", {\r\n label: opts.t9n.smsBlkLabel,\r\n category: opts.t9n.sharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"sms:?body=Sieh%20dir%20dieses%20Inserat%20an%20$$$ViewLink$$$\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"display:inline-block; text-align:center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-solid fa-comment-sms\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-solid fa-comment-sms\" },\r\n });\r\n\r\n Blocks.add(\"print\", {\r\n label: opts.t9n.printBlkLabel,\r\n category: opts.t9n.sharesCategoryLabel,\r\n content: {\r\n type: \"link\",\r\n style: {\r\n display: \"inline-block\",\r\n margin: \"3px\",\r\n \"text-decoration\": \"none\",\r\n },\r\n attributes: {\r\n href: \"javascript:if(window.print)window.print()\",\r\n \"data-ost-simple-hide\": \"1\",\r\n },\r\n components: `<div style=\"display:inline-block; text-align:center; width:28px; height:28px; font-size:28px; color:#293133;\">\r\n <i class=\"fa-solid fa-print\"></i>\r\n </div>`,\r\n },\r\n attributes: { class: \"fa-solid fa-print\" },\r\n });\r\n}\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport { cmdDeviceDesktop, cmdDeviceMobile, cmdDeviceTablet } from \"./consts\";\r\nimport openExportCommand from \"./openExportCommand\";\r\nimport openImportCommand from \"./openImportCommand\";\r\n\r\nexport default async (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { Commands } = editor;\r\n\r\n openImportCommand(editor, opts);\r\n openExportCommand(editor, opts);\r\n\r\n Commands.add(cmdDeviceDesktop, {\r\n run: (ed) => ed.setDevice(\"Desktop\"),\r\n stop: () => {},\r\n });\r\n\r\n Commands.add(cmdDeviceTablet, {\r\n run: (ed) => ed.setDevice(\"Tablet\"),\r\n stop: () => {},\r\n });\r\n\r\n Commands.add(cmdDeviceMobile, {\r\n run: (ed) => ed.setDevice(\"Mobile portrait\"),\r\n stop: () => {},\r\n });\r\n\r\n Commands.add(\"ost-blocks-visibility\", {\r\n run(editor) {\r\n const cList = editor.Canvas.getBody().classList;\r\n cList.add(\"show-ost-blocks\");\r\n },\r\n stop(editor) {\r\n const cList = editor.Canvas.getBody().classList;\r\n cList.remove(\"show-ost-blocks\");\r\n },\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport {\r\n uListItemContent,\r\n ulListItem,\r\n ostTypeTextTrait,\r\n ostTypeImageTrait,\r\n ostTypeHideInSimpleHtmlTrait,\r\n headerTrait,\r\n iconTrait,\r\n nameTrait,\r\n valueTrait,\r\n} from \"./consts\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { DomComponents } = editor;\r\n\r\n // Add ostendis block trait to video components\r\n var dType = DomComponents.getType(\"video\");\r\n var dModel = dType?.model;\r\n var dView = dType?.view;\r\n const yt = \"yt\";\r\n const vi = \"vi\";\r\n const ytnc = \"ytnc\";\r\n\r\n DomComponents.addType(\"video\", {\r\n model: dModel.extend({\r\n updateTraits() {\r\n const { em } = this;\r\n const prov = this.get(\"provider\");\r\n let tagName = \"iframe\";\r\n let traits;\r\n\r\n switch (prov) {\r\n case yt:\r\n case ytnc:\r\n traits = this.getYoutubeTraits();\r\n break;\r\n case vi:\r\n traits = this.getVimeoTraits();\r\n break;\r\n default:\r\n tagName = \"video\";\r\n traits = this.getSourceTraits();\r\n }\r\n\r\n traits.push({\r\n type: \"select\",\r\n label: \"Ostendis Blocks\",\r\n name: \"data-ost-type\",\r\n options: [\r\n { id: \"\", name: opts.t9n.traitOstNone },\r\n { id: \"videoURL\", name: opts.t9n.traitOstVideoURL },\r\n ],\r\n });\r\n\r\n this.set({ tagName }, { silent: true }); // avoid break in view\r\n this.set({ traits });\r\n em.get(\"ready\") && em.trigger(\"component:toggled\");\r\n },\r\n }),\r\n view: dView,\r\n });\r\n\r\n // Scale the new range\r\n DomComponents.addType(\"scale\", {\r\n isComponent: (el) => el.tagName === \"DIV\" && el.classList.contains(\"scale\"),\r\n model: {\r\n defaults: {\r\n tagName: \"div\",\r\n attributes: {\r\n class: \"scale\",\r\n \"data-percent\": \"66\",\r\n \"data-fcolor\": \"#3b5998\",\r\n \"data-bgcolor\": \"#CCCCCC\",\r\n },\r\n style: {\r\n \"box-sizing\": \"border-box\",\r\n padding: \"0\",\r\n height: \"20px\",\r\n \"max-width\": \"100%\",\r\n border: \"0px solid #666666\",\r\n background: \"linear-gradient(to right,#3b5998 66%, #CCCCCC 66%);\",\r\n },\r\n traits: [\r\n {\r\n name: \"percent\",\r\n type: \"number\",\r\n min: 0,\r\n max: 100,\r\n label: opts.t9n.labelScalePercent,\r\n changeProp: true,\r\n },\r\n {\r\n name: \"fcolor\",\r\n type: \"color\",\r\n label: opts.t9n.labelScaleBarColor,\r\n placeholder: \"#222222\",\r\n changeProp: true,\r\n },\r\n {\r\n name: \"bgcolor\",\r\n type: \"color\",\r\n label: opts.t9n.labelScaleBgColor,\r\n placeholder: \"#cccccc\",\r\n changeProp: true,\r\n },\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n init() {\r\n const scaleAttr = this.getAttributes();\r\n this.set(\"percent\", scaleAttr[\"data-percent\"]);\r\n this.set(\"bgcolor\", scaleAttr[\"data-bgcolor\"]);\r\n this.set(\"fcolor\", scaleAttr[\"data-fcolor\"]);\r\n\r\n this.on(\"change:percent\", this.updateScale);\r\n this.on(\"change:bgcolor\", this.updateScale);\r\n this.on(\"change:fcolor\", this.updateScale);\r\n },\r\n updateScale() {\r\n var p = this.get(\"percent\");\r\n var b = this.get(\"bgcolor\");\r\n var f = this.get(\"fcolor\");\r\n this.set(\"attributes\", {\r\n \"data-percent\": p,\r\n \"data-bgcolor\": b,\r\n \"data-fcolor\": f,\r\n });\r\n this.addStyle({\r\n background: `linear-gradient(to right, ${f} ${p}%, ${b} ${p}%)`,\r\n });\r\n },\r\n },\r\n });\r\n\r\n // INPUT\r\n DomComponents.addType(\"range\", {\r\n isComponent: (el) => el.tagName == \"INPUT\",\r\n model: {\r\n defaults: {\r\n tagName: \"input\",\r\n droppable: true,\r\n highlightable: true,\r\n traits: [nameTrait, valueTrait],\r\n attributes: { type: \"range\", disabled: true },\r\n },\r\n },\r\n extendFnView: [\"updateAttributes\"],\r\n view: {\r\n updateAttributes() {\r\n this.el.setAttribute(\"autocomplete\", \"on\");\r\n },\r\n },\r\n });\r\n\r\n // Unsorted list item component\r\n DomComponents.addType(\"ulistitem\", {\r\n isComponent: (el) => {\r\n if (el.tagName === \"LI\" && el.classList.contains(\"ulistitem\")) {\r\n return { type: \"ulistitem\" };\r\n }\r\n },\r\n model: {\r\n defaults: {\r\n tagName: \"li\",\r\n draggable: \"ul\",\r\n attributes: { class: \"ulistitem\" },\r\n style: { \"text-align\": \"left\" },\r\n components: uListItemContent,\r\n traits: [\"id\", \"title\", ostTypeTextTrait(opts)],\r\n },\r\n },\r\n });\r\n\r\n // Unsorted list component with fontawesome\r\n DomComponents.addType(\"ulist\", {\r\n isComponent: (el) => {\r\n if (el.tagName === \"UL\" && el.classList.contains(\"ulist\")) {\r\n return { type: \"ulist\" };\r\n }\r\n },\r\n model: {\r\n defaults: {\r\n tagName: \"ul\",\r\n attributes: { class: \"ulist fa-ul\" },\r\n style: {\r\n padding: \"0.2em 0\",\r\n \"margin-left\": \"2em\",\r\n \"line-height\": \"1.4em\",\r\n },\r\n components: [ulListItem, ulListItem, ulListItem],\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Header component\r\n DomComponents.addType(\"header\", {\r\n isComponent: (el) => {\r\n const headings = [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"];\r\n if (el.tagName && headings.includes(el.tagName.toLowerCase())) {\r\n return { type: \"header\" };\r\n }\r\n },\r\n extend: \"text\",\r\n model: {\r\n defaults: {\r\n tagName: \"h1\", //Default\r\n traits: [\r\n \"id\",\r\n headerTrait(opts),\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Icon component\r\n DomComponents.addType(\"icon\", {\r\n isComponent: (el) => {\r\n var classNames = [\r\n \"fa\",\r\n \"fas\",\r\n \"far\",\r\n \"fab\",\r\n \"fa-solid\",\r\n \"fa-regular\",\r\n \"fa-brands\",\r\n ];\r\n if (\r\n el.tagName === \"I\" &&\r\n classNames.some((className) => el.classList.contains(className))\r\n ) {\r\n return { type: \"icon\" };\r\n }\r\n },\r\n model: {\r\n defaults: {\r\n tagName: \"i\",\r\n attributes: { class: \"fas fa-star\" },\r\n traits: [\"id\", iconTrait(opts), ostTypeHideInSimpleHtmlTrait(opts)],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to table components\r\n DomComponents.addType(\"table\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to link components\r\n DomComponents.addType(\"link\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n \"href\",\r\n \"target\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to image components\r\n DomComponents.addType(\"image\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n \"alt\",\r\n ostTypeImageTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to text components\r\n DomComponents.addType(\"textnode\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to text components\r\n DomComponents.addType(\"text\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n\r\n // Add ostendis type trait to default components\r\n DomComponents.addType(\"default\", {\r\n model: {\r\n defaults: {\r\n traits: [\r\n \"id\",\r\n ostTypeTextTrait(opts),\r\n ostTypeHideInSimpleHtmlTrait(opts),\r\n ],\r\n },\r\n },\r\n });\r\n};\r\n","import PluginOptions from \"./pluginOptions\";\nimport { ostTrans } from \"./ostTranslations\";\n\nexport const cmdDeviceDesktop = \"set-device-desktop\";\nexport const cmdDeviceTablet = \"set-device-tablet\";\nexport const cmdDeviceMobile = \"set-device-mobile\";\n\nexport const nameTrait = {\n name: \"name\",\n};\n\nexport const valueTrait = {\n name: \"value\",\n label: ostTrans.traitBlkValue,\n};\n\nexport const uListItemContent = [\n {\n tagName: \"span\",\n attributes: { class: \"fa-li\" },\n style: { left: \"-2em\", width: \"2em\" },\n components: [\n {\n type: \"icon\",\n tagName: \"i\",\n attributes: { class: \"fas fa-circle\", \"data-gjs-type\": \"icon\" },\n style: {\n \"font-size\": \"0.4em\",\n \"line-height\": \"inherit\",\n display: \"block\",\n },\n },\n ],\n },\n {\n type: \"text\",\n tagName: \"p\",\n content: \"Text\",\n style: { margin: \"0\", padding: \"0\", \"text-align\": \"left\" },\n },\n];\n\nexport const ulListItem = {\n type: \"ulistitem\",\n tagName: \"li\",\n attributes: { class: \"ulistitem\" },\n style: { \"text-align\": \"left\" },\n components: uListItemContent,\n};\n\n// Define ostendis type trait for text and default components\nexport function ostTypeTextTrait(opts: Required<PluginOptions>) {\n return {\n type: \"ost-blocks-select\",\n label: \"Ostendis Blocks\",\n name: \"data-ost-type\",\n attributes: {\n \"data-tooltip\": opts.t9n.traitBlkOstendisTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n options: [\n { id: \"\", name: opts.t9n.traitOstNone },\n { id: \"organizationHeading\", name: opts.t9n.traitOstOrganizationHeading },\n { id: \"organization\", name: opts.t9n.traitOstOrganization },\n { id: \"introductionHeading\", name: opts.t9n.traitOstIntroductionHeading },\n { id: \"introduction\", name: opts.t9n.traitOstIntroduction },\n { id: \"descriptionHeading\", name: opts.t9n.traitOstDescriptionHeading },\n { id: \"description\", name: opts.t9n.traitOstDescription },\n { id: \"tasksHeading\", name: opts.t9n.traitOstTasksHeading },\n { id: \"tasks\", name: opts.t9n.traitOstTasks },\n { id: \"requirementsHeading\", name: opts.t9n.traitOstRequirementsHeading },\n { id: \"requirements\", name: opts.t9n.traitOstRequirements },\n { id: \"benefitsHeading\", name: opts.t9n.traitOstBenefitsHeading },\n { id: \"benefits\", name: opts.t9n.traitOstBenefits },\n { id: \"contactHeading\", name: opts.t9n.traitOstContactHeading },\n { id: \"contact\", name: opts.t9n.traitOstContact },\n { id: \"calltoaction\", name: opts.t9n.traitOstCallToAction },\n ],\n };\n}\n// Define ostendis type trait for images\nexport function ostTypeImageTrait(opts: Required<PluginOptions>) {\n return {\n type: \"ost-blocks-select\",\n label: \"Ostendis Blocks\",\n name: \"data-ost-type\",\n attributes: {\n \"data-tooltip\": opts.t9n.traitBlkOstendisTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n options: [\n { id: \"\", name: opts.t9n.traitOstNone },\n { id: \"logoPicURL\", name: opts.t9n.traitOstLogoPicURL },\n { id: \"headerPic1URL\", name: opts.t9n.traitOstHeaderPic1URL },\n { id: \"headerPic2URL\", name: opts.t9n.traitOstHeaderPic2URL },\n { id: \"headerPic3URL\", name: opts.t9n.traitOstHeaderPic3URL },\n { id: \"footerPic1URL\", name: opts.t9n.traitOstFooterPic1URL },\n { id: \"footerPic2URL\", name: opts.t9n.traitOstFooterPic2URL },\n { id: \"footerPic3URL\", name: opts.t9n.traitOstFooterPic3URL },\n { id: \"additionalPic1URL\", name: opts.t9n.traitOstAdditionalPic1URL },\n { id: \"additionalPic2URL\", name: opts.t9n.traitOstAdditionalPic2URL },\n { id: \"additionalPic3URL\", name: opts.t9n.traitOstAdditionalPic3URL },\n ],\n };\n}\n// Define ostendis type \"hide in simple html\"\nexport function ostTypeHideInSimpleHtmlTrait(opts: Required<PluginOptions>) {\n return {\n type: \"checkbox\",\n label: opts.t9n.hideInSimpleHtmlLabel,\n name: \"data-ost-simple-hide\",\n valueTrue: \"1\",\n valueFalse: \"\",\n attributes: {\n \"data-tooltip\": opts.t9n.hideInSimpleHtmlTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n };\n}\n// Define ostendis type header\nexport function headerTrait(opts: Required<PluginOptions>) {\n return {\n type: \"select\",\n name: \"tagName\",\n label: opts.t9n.traitHeaderLabel,\n options: [\n { id: \"h1\", value: \"h1\", name: opts.t9n.traitHeaderSelectH1 },\n { id: \"h2\", value: \"h2\", name: opts.t9n.traitHeaderSelectH2 },\n { id: \"h3\", value: \"h3\", name: opts.t9n.traitHeaderSelectH3 },\n { id: \"h4\", value: \"h4\", name: opts.t9n.traitHeaderSelectH4 },\n { id: \"h5\", value: \"h5\", name: opts.t9n.traitHeaderSelectH5 },\n { id: \"h6\", value: \"h6\", name: opts.t9n.traitHeaderSelectH6 },\n ],\n changeProp: true,\n };\n}\n// Define ostendis type trait for icons\nexport function iconTrait(opts: Required<PluginOptions>) {\n return {\n type: \"select\",\n label: \"Icon\",\n name: \"class\",\n attributes: {\n id: \"select-fontawesome\",\n \"data-tooltip\": opts.t9n.labelIconTooltip,\n \"data-tooltip-pos\": \"bottom\",\n },\n options: [\n { id: \"fas fa-minus\", name: opts.t9n.labelIconSelectMinus },\n { id: \"fas fa-circle\", name: opts.t9n.labelIconSelectCircleSolid },\n { id: \"far fa-circle\", name: opts.t9n.labelIconSelectCircle },\n { id: \"fas fa-check\", name: opts.t9n.labelIconSelectCheck },\n { id: \"fas fa-square\", name: opts.t9n.labelIconSelectSquare },\n { id: \"fas fa-arrow-right\", name: opts.t9n.labelIconSelectArrowRight },\n { id: \"fas fa-check-circle\", name: opts.t9n.labelIconSelectCheckCircle },\n { id: \"far fa-clock\", name: opts.t9n.labelIconSelectClock },\n { id: \"fas fa-percent\", name: opts.t9n.labelIconSelectPercent },\n { id: \"far fa-building\", name: opts.t9n.labelIconSelectBuilding },\n { id: \"fas fa-home\", name: opts.t9n.labelIconSelectHome },\n { id: \"fas fa-globe\", name: opts.t9n.labelIconSelectGlobe },\n { id: \"far fa-file\", name: opts.t9n.labelIconSelectFile },\n { id: \"fas fa-utensils\", name: opts.t9n.labelIconSelectUtensils },\n { id: \"far fa-calendar-alt\", name: opts.t9n.labelIconSelectCalendar },\n { id: \"far fa-hourglass\", name: opts.t9n.labelIconSelectHourglass },\n { id: \"fas fa-map-marker-alt\", name: opts.t9n.labelIconSelectMapMarker },\n { id: \"fas fa-road\", name: opts.t9n.labelIconSelectRoad },\n { id: \"fas fa-coffee\", name: opts.t9n.labelIconSelectCoffee },\n { id: \"fas fa-phone\", name: opts.t9n.labelIconSelectPhone },\n { id: \"fas fa-envelope\", name: opts.t9n.labelIconSelectEnvelope },\n { id: \"fas fa-star\", name: opts.t9n.labelIconSelectStar },\n ],\n };\n}\n","import type { Editor } from \"grapesjs\";\r\nimport juice from \"juice\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const cmdm = editor.Commands;\r\n const pfx = editor.getConfig().stylePrefix;\r\n\r\n cmdm.add(opts.cmdInlineHtml, {\r\n run(editor, s, opts = {}) {\r\n const tmpl = editor.getHtml() + `<style>${editor.getCss()}</style>`;\r\n return juice(tmpl, { ...opts.juiceOpts, ...opts });\r\n },\r\n });\r\n\r\n cmdm.add(opts.cmdOpenExport, {\r\n containerEl: null as HTMLDivElement | null,\r\n codeEditorHtml: null as HTMLDivElement | null,\r\n\r\n createCodeViewer(): any {\r\n return editor.CodeManager.createViewer({\r\n codeName: \"htmlmixed\",\r\n theme: opts.codeViewerTheme,\r\n });\r\n },\r\n\r\n createCodeEditor() {\r\n const el = document.createElement(\"div\");\r\n const codeEditor = this.createCodeViewer();\r\n\r\n el.style.flex = \"1 0 auto\";\r\n el.style.boxSizing = \"border-box\";\r\n el.className = `${pfx}export-code`;\r\n el.appendChild(codeEditor.getElement());\r\n\r\n return { codeEditor, el };\r\n },\r\n\r\n getCodeContainer(): HTMLDivElement {\r\n let containerEl = this.containerEl;\r\n\r\n if (!containerEl) {\r\n containerEl = document.createElement(\"div\");\r\n containerEl.className = `${pfx}export-container`;\r\n containerEl.style.display = \"flex\";\r\n containerEl.style.gap = \"5px\";\r\n containerEl.style.flexDirection = \"column\";\r\n containerEl.style.justifyContent = \"space-between\";\r\n this.containerEl = containerEl;\r\n }\r\n\r\n return containerEl;\r\n },\r\n\r\n run(editor) {\r\n let { codeEditorHtml } = this as any;\r\n const container = this.getCodeContainer();\r\n\r\n // Init code viewer if not yet instantiated\r\n if (!codeEditorHtml) {\r\n const codeViewer = this.createCodeEditor();\r\n codeEditorHtml = codeViewer.codeEditor;\r\n this.codeEditorHtml = codeEditorHtml;\r\n\r\n if (opts.t9n.modalLabelExport) {\r\n let labelEl = document.createElement(\"div\");\r\n labelEl.className = `${pfx}export-label`;\r\n labelEl.innerHTML = opts.t9n.modalLabelExport;\r\n container.appendChild(labelEl);\r\n }\r\n\r\n container.appendChild(codeViewer.el);\r\n }\r\n\r\n editor.Modal.open({\r\n title: opts.t9n.modalTitleExport,\r\n content: container,\r\n });\r\n\r\n if (codeEditorHtml) {\r\n const tmpl = `${editor.getHtml()}<style>${editor.getCss()}</style>`;\r\n codeEditorHtml.setContent(\r\n opts.inlineCss ? juice(tmpl, opts.juiceOpts) : tmpl\r\n );\r\n codeEditorHtml.editor.refresh();\r\n }\r\n },\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const cmdm = editor.Commands;\r\n const pfx = editor.getConfig().stylePrefix;\r\n\r\n cmdm.add(opts.cmdOpenImport, {\r\n containerEl: null as HTMLDivElement | null,\r\n codeEditorHtml: null as HTMLDivElement | null,\r\n\r\n createCodeViewer(): any {\r\n return editor.CodeManager.createViewer({\r\n codeName: \"htmlmixed\",\r\n theme: opts.codeViewerTheme,\r\n readOnly: false,\r\n });\r\n },\r\n\r\n createCodeEditor() {\r\n const el = document.createElement(\"div\");\r\n const codeEditor = this.createCodeViewer();\r\n\r\n el.style.flex = \"1 0 auto\";\r\n el.style.boxSizing = \"border-box\";\r\n el.className = `${pfx}import-code`;\r\n el.appendChild(codeEditor.getElement());\r\n\r\n return { codeEditor, el };\r\n },\r\n\r\n getCodeContainer(): HTMLDivElement {\r\n let containerEl = this.containerEl;\r\n\r\n if (!containerEl) {\r\n containerEl = document.createElement(\"div\");\r\n containerEl.className = `${pfx}import-container`;\r\n containerEl.style.display = \"flex\";\r\n containerEl.style.gap = \"5px\";\r\n containerEl.style.flexDirection = \"column\";\r\n containerEl.style.justifyContent = \"space-between\";\r\n this.containerEl = containerEl;\r\n }\r\n\r\n return containerEl;\r\n },\r\n\r\n run(editor) {\r\n const container = this.getCodeContainer();\r\n let { codeEditorHtml } = this as any;\r\n\r\n // Init code viewer if not yet instantiated\r\n if (!codeEditorHtml) {\r\n const codeViewer = this.createCodeEditor();\r\n const btnImp = document.createElement(\"button\");\r\n codeEditorHtml = codeViewer.codeEditor;\r\n this.codeEditorHtml = codeEditorHtml;\r\n\r\n if (opts.t9n.modalLabelImport) {\r\n let labelEl = document.createElement(\"div\");\r\n labelEl.className = `${pfx}import-label`;\r\n labelEl.innerHTML = opts.t9n.modalLabelImport;\r\n container.appendChild(labelEl);\r\n }\r\n\r\n // Init import button\r\n btnImp.innerHTML = opts.t9n.modalBtnImport;\r\n btnImp.type = \"button\";\r\n btnImp.className = `${pfx}btn-prim ${pfx}btn-import`;\r\n btnImp.style.alignSelf = \"flex-start\";\r\n btnImp.onclick = () => {\r\n const code = codeViewer.codeEditor.editor.getValue();\r\n editor.Components.clear();\r\n editor.Css.clear();\r\n editor.setComponents(code);\r\n editor.Modal.close();\r\n };\r\n\r\n container.appendChild(codeViewer.el);\r\n container.appendChild(btnImp);\r\n }\r\n\r\n editor.Modal.open({\r\n title: opts.t9n.modalTitleImport,\r\n content: container,\r\n });\r\n\r\n if (codeEditorHtml) {\r\n codeEditorHtml.setContent(opts.t9n.importPlaceholder || \"\");\r\n codeEditorHtml.editor.refresh();\r\n }\r\n },\r\n });\r\n};\r\n","import type { OstTranslations } from \"./pluginOptions\";\r\n\r\nexport const ostTrans: OstTranslations = {\r\n cmdBtnDesktopLabel: \"Desktop\",\r\n cmdBtnTabletLabel: \"Tablet\",\r\n cmdBtnMobileLabel: \"Mobile\",\r\n\r\n cmdBtnViewOstBlocks: \"View Ostendis Blocks\",\r\n cmdBtnViewCompLabel: \"View components\",\r\n cmdBtnImportLabel: \"Import template\",\r\n cmdBtnExportLabel: \"Export template\",\r\n cmdBtnUndoLabel: \"Undo\",\r\n cmdBtnRedoLabel: \"Redo\",\r\n openStyleManager: \"Open Style Manager\",\r\n openTraits: \"Open Parameter\",\r\n openLayers: \"Open Layer Manager\",\r\n openBlocks: \"Open Blocks\",\r\n\r\n modalTitleImport: \"Import template\",\r\n modalTitleExport: \"Export template\",\r\n modalLabelImport: \"\",\r\n modalLabelExport: \"\",\r\n modalBtnImport: \"Import\",\r\n importPlaceholder: \"\",\r\n\r\n categoryLabel: \"Basic\",\r\n smSitesCategoryLabel: \"Social media sites\",\r\n smSharesCategoryLabel: \"Social media shares\",\r\n sharesCategoryLabel: \"Shares\",\r\n\r\n applyQrCodeBlkLabel: \"Apply link QR code\",\r\n viewQrCodeBlkLabel: \"View link QR code\",\r\n buttonApplyBlkLabel: \"Apply button\",\r\n buttonApplyBlkText: \"Apply here\",\r\n buttonBlkLabel: \"Button\",\r\n headerBlkLabel: \"Header\",\r\n textBlkLabel: \"Text\",\r\n textBlkLabelWithSpace: \"Text with spacing\",\r\n titleAndTextBlkLabel: \"Title and text\",\r\n ulistBlkLabel: \"List\",\r\n titleAndListBlkLabel: \"Title and list\",\r\n dividerBlkLabel: \"Divider\",\r\n iconBlkLabel: \"Icons\",\r\n imageBlkLabel: \"Image\",\r\n videoBlkLabel: \"Video\",\r\n boxBlkLabel: \"Box\",\r\n sect333BlkLabel: \"1/1/1 Columns\",\r\n sect55BlkLabel: \"1/1 Columns\",\r\n sect37BlkLabel: \"3/7 Columns\",\r\n mapBlkLabel: \"Map\",\r\n linkBlkLabel: \"Link\",\r\n linkBlockBlkLabel: \"Link Block\",\r\n inputRangeBlkLabel: \"Range Input\",\r\n\r\n facebookBlkLabelSite: \"Facebook link\",\r\n instagramBlkLabelSite: \"Instagram link\",\r\n youtubeBlkLabelSite: \"YouTube link\",\r\n linkedinBlkLabelSite: \"LinkedIn link\",\r\n xingBlkLabelSite: \"Xing link\",\r\n twitterBlkLabelSite: \"Twitter link\",\r\n\r\n facebookBlkLabelShare: \"Facebook share\",\r\n linkedinBlkLabelShare: \"LinkedIn share\",\r\n xingBlkLabelShare: \"Xing share\",\r\n twitterBlkLabelShare: \"Twitter share\",\r\n whatsAppBlkLabelShare: \"WhatsApp share\",\r\n\r\n mailBlkLabel: \"Mail to\",\r\n smsBlkLabel: \"SMS to\",\r\n printBlkLabel: \"Print\",\r\n\r\n traitBlkValue: \"Value\",\r\n\r\n traitHeaderLabel: \"Header Level\",\r\n traitHeaderSelectH1: \"H1 (highest)\",\r\n traitHeaderSelectH2: \"H2\",\r\n traitHeaderSelectH3: \"H3\",\r\n traitHeaderSelectH4: \"H4\",\r\n traitHeaderSelectH5: \"H5\",\r\n traitHeaderSelectH6: \"H6 (lowest)\",\r\n\r\n traitBlkOstendisTooltip: \"Define Ostendis block.\",\r\n traitOstNone: \"None\",\r\n traitOstOrganizationHeading: \"Organization Heading\",\r\n traitOstOrganization: \"Organization\",\r\n traitOstIntroductionHeading: \"Introduction Heading\",\r\n traitOstIntroduction: \"Introduction\",\r\n traitOstDescriptionHeading: \"Description Heading\",\r\n traitOstDescription: \"Description\",\r\n traitOstTasksHeading: \"Tasks Heading\",\r\n traitOstTasks: \"Tasks\",\r\n traitOstRequirementsHeading: \"Requirements Heading\",\r\n traitOstRequirements: \"Requirements\",\r\n traitOstBenefitsHeading: \"Benefits Heading\",\r\n traitOstBenefits: \"Benefits\",\r\n traitOstContactHeading: \"Contact Heading\",\r\n traitOstContact: \"Contact\",\r\n traitOstCallToAction: \"Call to action\",\r\n\r\n traitOstLogoPicURL: \"Logo Image\",\r\n traitOstHeaderPic1URL: \"Header Image 1\",\r\n traitOstHeaderPic2URL: \"Header Image 2\",\r\n traitOstHeaderPic3URL: \"Header Image 3\",\r\n traitOstFooterPic1URL: \"Footer Image 1\",\r\n traitOstFooterPic2URL: \"Footer Image 2\",\r\n traitOstFooterPic3URL: \"Footer Image 3\",\r\n traitOstAdditionalPic1URL: \"Additional Image 1\",\r\n traitOstAdditionalPic2URL: \"Additional Image 2\",\r\n traitOstAdditionalPic3URL: \"Additional Image 3\",\r\n traitOstVideoURL: \"Video\",\r\n\r\n hideInSimpleHtmlLabel: \"Hide\",\r\n hideInSimpleHtmlTooltip: \"Hide element in simple HTML (jobs.ch)\",\r\n\r\n labelIconTooltip: \"For more icons: change class name in style manager.\",\r\n labelIconSelectMinus: \"minus\",\r\n labelIconSelectCircleSolid: \"circle solid\",\r\n labelIconSelectCircle: \"circle\",\r\n labelIconSelectCheck: \"check\",\r\n labelIconSelectSquare: \"square\",\r\n labelIconSelectArrowRight: \"arrow right\",\r\n labelIconSelectCheckCircle: \"check circle\",\r\n labelIconSelectClock: \"clock\",\r\n labelIconSelectPercent: \"percent\",\r\n labelIconSelectBuilding: \"building\",\r\n labelIconSelectHome: \"home\",\r\n labelIconSelectGlobe: \"globe\",\r\n labelIconSelectFile: \"file\",\r\n labelIconSelectUtensils: \"utensils\",\r\n labelIconSelectCalendar: \"calendar\",\r\n labelIconSelectHourglass: \"hourglass\",\r\n labelIconSelectMapMarker: \"map marker\",\r\n labelIconSelectRoad: \"road\",\r\n labelIconSelectCoffee: \"coffee\",\r\n labelIconSelectPhone: \"phone\",\r\n labelIconSelectEnvelope: \"envelope\",\r\n labelIconSelectStar: \"star\",\r\n\r\n labelScalePercent: \"Percent\",\r\n labelScaleBarColor: \"Color 1\",\r\n labelScaleBgColor: \"Color 2\",\r\n\r\n ostToolbarClone: \"Clone list element\",\r\n ostToolbarDelete: \"Delete list element\",\r\n ostToolbarUp: \"Move list element up\",\r\n ostToolbarDown: \"Move list element down\",\r\n cmdRteRemoveFormat: \"Remove format\",\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport { cmdDeviceDesktop, cmdDeviceMobile, cmdDeviceTablet } from \"./consts\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { Panels } = editor;\r\n const { cmdOpenImport, cmdOpenExport } = opts;\r\n const openStyleManager = \"open-sm\";\r\n const openTraits = \"open-tm\";\r\n const openLayers = \"open-layers\";\r\n const openBlocks = \"open-blocks\";\r\n const activateOutline = \"sw-visibility\";\r\n const iconStyle = 'style=\"display: block; max-width: 22px\"';\r\n\r\n // Turn off default devices select and create new one\r\n editor.getConfig().showDevices = false;\r\n\r\n Panels.getPanels().reset([\r\n {\r\n id: \"commands\",\r\n buttons: [{}],\r\n },\r\n {\r\n id: \"devices-c\",\r\n buttons: [\r\n {\r\n id: cmdDeviceDesktop,\r\n command: cmdDeviceDesktop,\r\n className: \"fa-solid fa-desktop\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnDesktopLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n active: true,\r\n },\r\n {\r\n id: cmdDeviceTablet,\r\n command: cmdDeviceTablet,\r\n className: \"fa-solid fa-tablet-screen-button\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnTabletLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: cmdDeviceMobile,\r\n command: cmdDeviceMobile,\r\n className: \"fa-solid fa-mobile-screen-button\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnMobileLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"options\",\r\n buttons: [\r\n {\r\n id: \"ost-blocks-visibility\",\r\n command: \"ost-blocks-visibility\",\r\n context: \"ost-blocks-visibility\",\r\n className: \"fa-solid fa-file-circle-check\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnViewOstBlocks,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: activateOutline,\r\n command: activateOutline,\r\n context: activateOutline,\r\n className: \"fa-solid fa-border-none\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnViewCompLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: cmdOpenExport,\r\n command: cmdOpenExport,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnExportLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: cmdOpenImport,\r\n command: cmdOpenImport,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnImportLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: \"undo\",\r\n command: \"core:undo\",\r\n className: \"fa-solid fa-rotate-left\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnUndoLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n {\r\n id: \"redo\",\r\n command: \"core:redo\",\r\n className: \"fa-solid fa-rotate-right\",\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.cmdBtnRedoLabel,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"views\",\r\n buttons: [\r\n {\r\n id: openStyleManager,\r\n command: openStyleManager,\r\n active: true,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openStyleManager,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: openTraits,\r\n command: openTraits,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openTraits,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"></path>\r\n </svg>`,\r\n },\r\n {\r\n id: openLayers,\r\n command: openLayers,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openLayers,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z\" />\r\n </svg>`,\r\n },\r\n {\r\n id: openBlocks,\r\n command: openBlocks,\r\n togglable: false,\r\n attributes: {\r\n \"data-tooltip\": opts.t9n.openBlocks,\r\n \"data-tooltip-pos\": \"bottom\",\r\n },\r\n label: `<svg ${iconStyle} viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" />\r\n </svg>`,\r\n },\r\n ],\r\n },\r\n ]);\r\n\r\n editor.onReady(() => {\r\n if (opts.showOutlineOnLoad) {\r\n const btn = Panels.getButton(\"options\", activateOutline);\r\n btn?.set(\"active\", true);\r\n }\r\n\r\n if (opts.showBlocksOnLoad) {\r\n const btn = Panels.getButton(\"views\", openBlocks);\r\n btn?.set(\"active\", true);\r\n }\r\n\r\n if (opts.showTraitsOnLoad) {\r\n const btn = Panels.getButton(\"views\", openTraits);\r\n btn?.set(\"active\", true);\r\n }\r\n //Beautify tooltips\r\n document.querySelectorAll(\"*[data-tooltip-pos]\").forEach((el) => {\r\n const title = el.getAttribute(\"title\")?.trim();\r\n if (title) {\r\n el.setAttribute(\"data-tooltip\", title);\r\n el.removeAttribute(\"title\");\r\n }\r\n });\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default async (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { RichTextEditor } = editor;\r\n\r\n RichTextEditor.add(\"removeFormat\", {\r\n icon: '<i class=\"fa-solid fa-text-slash\"></i>',\r\n attributes: { title: opts.t9n.cmdRteRemoveFormat },\r\n\r\n result: (rte) => rte.exec(\"removeFormat\"),\r\n });\r\n};\r\n","import type { Editor } from \"grapesjs\";\r\nimport PluginOptions from \"./pluginOptions\";\r\n\r\nexport default (editor: Editor, opts: Required<PluginOptions>) => {\r\n const { TraitManager } = editor;\r\n\r\n // Ostendis-Blocks trait\r\n TraitManager.addType(\"ost-blocks-select\", {\r\n createInput({ trait }) {\r\n const traitOpts = trait.get(\"options\") || [];\r\n const traitName = trait.get(\"name\") || \"ost-block-select\";\r\n const options = traitOpts.length\r\n ? traitOpts\r\n : [{ id: \"\", name: \"None\", disabled: \"disabled\" }];\r\n\r\n const el = document.createElement(\"div\");\r\n el.innerHTML = `\r\n <select class=\"ost-blocks-select\" id=\"${traitName}\">\r\n ${options\r\n .map(\r\n (opt) =>\r\n `<option value=\"${opt.id}\" ${opt.disabled}>${opt.name}</option>`\r\n )\r\n .join(\"\")}\r\n </select>\r\n <div class=\"gjs-sel-arrow\">\r\n <div class=\"gjs-d-s-arrow\"></div>\r\n </div>`;\r\n return el;\r\n },\r\n onEvent({ elInput, component, trait }) {\r\n const traitName = trait.get(\"name\") || \"ost-block-select-default\";\r\n let element = elInput.querySelector(\r\n \"#\" + [traitName]\r\n ) as HTMLSelectElement;\r\n const dataOstType = element.value;\r\n\r\n if (dataOstType == \"\") {\r\n component.removeAttributes(traitName);\r\n } else {\r\n component.addAttributes({ [traitName]: dataOstType });\r\n }\r\n updateTrait(element);\r\n },\r\n onUpdate({ elInput, component, trait }) {\r\n const traitName = trait.get(\"name\") || \"ost-block-select-default\";\r\n\r\n if (elInput !== null) {\r\n let element = elInput.querySelector(\r\n \"#\" + [traitName]\r\n ) as HTMLSelectElement;\r\n updateTrait(element);\r\n\r\n // Set select\r\n const dataOstType = component.getAttributes()[traitName] || \"\";\r\n element = elInput.querySelector(\"#\" + [traitName]) as HTMLSelectElement;\r\n element.value = dataOstType;\r\n }\r\n },\r\n });\r\n\r\n // Range trait\r\n TraitManager.addType(\"value\", {\r\n label: opts.t9n.traitBlkValue,\r\n min: 0, // Minimum number value\r\n max: 100, // Maximum number value\r\n events: {\r\n keyup: \"onChange\",\r\n },\r\n\r\n onValueChange() {\r\n const { model, target } = this;\r\n const optionsStr = model.get(\"value\").trim();\r\n const options = optionsStr.split(\"\\n\");\r\n const optComps = [];\r\n\r\n for (let i = 0; i < options.length; i++) {\r\n const optionStr = options[i];\r\n const option = optionStr.split(\"::\");\r\n optComps.push({\r\n type: \"range\",\r\n components: option[1] || option[0],\r\n attributes: { value: option[0] },\r\n });\r\n }\r\n\r\n target.components().reset(optComps);\r\n target?.view?.render();\r\n },\r\n });\r\n\r\n function updateTrait(element: HTMLSelectElement) {\r\n // Set Array to 0\r\n opts.usedOstBlocks.forEach((el) => {\r\n el.count = 0;\r\n });\r\n\r\n var wrapper = editor.DomComponents.getWrapper();\r\n var elements = wrapper?.view?.$el.find(\"[data-ost-type]\").get();\r\n\r\n // List all data-ost-type\r\n elements?.forEach((element) => {\r\n var type = element.getAttribute(\"data-ost-type\") || \"\";\r\n let index = opts.usedOstBlocks.findIndex((item) => item.name === type);\r\n if (index === -1) {\r\n opts.usedOstBlocks.push({ name: type, count: 1 });\r\n } else {\r\n opts.usedOstBlocks[index].count++;\r\n }\r\n });\r\n\r\n // Display update select input\r\n Array.from(element.options).forEach(function (optionElement, optionIndex) {\r\n if (optionElement.value != \"\") {\r\n const usedOstBlockIndex = opts.usedOstBlocks.findIndex(\r\n (e) => e.name === optionElement.value\r\n );\r\n\r\n // Reset\r\n var optionEl = element.options[optionIndex];\r\n optionEl.text = optionEl.text.replace(/^\\(.*\\)\\s*/g, \"\");\r\n optionEl.removeAttribute(\"class\");\r\n optionEl.removeAttribute(\"disabled\");\r\n\r\n if (usedOstBlockIndex > -1) {\r\n if (opts.usedOstBlocks[usedOstBlockIndex].count == 1) {\r\n optionEl.innerHTML = \"(✓) \" + optionEl.text;\r\n optionEl.classList.add(\"gjs-select-option-ok\");\r\n optionEl.disabled = true;\r\n } else if (opts.usedOstBlocks[usedOstBlockIndex].count > 1) {\r\n optionEl.innerHTML =\r\n \"(! \" +\r\n opts.usedOstBlocks[usedOstBlockIndex].count +\r\n \"×) \" +\r\n optionEl.text;\r\n optionEl.classList.add(\"gjs-select-option-nok\");\r\n optionEl.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n};\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { Component, Plugin } from \"grapesjs\";\r\nimport loadBlocks from \"./blocks\";\r\nimport loadCommands from \"./commands\";\r\nimport loadPanels from \"./panels\";\r\nimport loadTraits from \"./traits\";\r\nimport loadComponents from \"./components\";\r\nimport loadRte from \"./rte\";\r\nimport PluginOptions from \"./pluginOptions\";\r\nimport { ostTrans } from \"./ostTranslations\";\r\nimport {\r\n headerTrait,\r\n ostTypeTextTrait,\r\n ostTypeHideInSimpleHtmlTrait,\r\n} from \"./consts\";\r\n\r\nexport type RequiredPluginOptions = Required<PluginOptions>;\r\n\r\nconst plugin: Plugin<PluginOptions> = async (\r\n editor,\r\n opts: Partial<PluginOptions> = {}\r\n) => {\r\n let config = editor.getConfig();\r\n\r\n const options: RequiredPluginOptions = {\r\n blocks: [],\r\n block: () => ({}),\r\n usedOstBlocks: [],\r\n cmdOpenExport: \"gjs-open-export-template\",\r\n cmdOpenImport: \"gjs-open-import-template\",\r\n cmdInlineHtml: \"gjs-get-inlined-html\",\r\n codeViewerTheme: \"hopscotch\",\r\n inlineCss: true,\r\n juiceOpts: {},\r\n updateStyleManager: true,\r\n showStylesOnChange: true,\r\n showBlocksOnLoad: false,\r\n showTraitsOnLoad: true,\r\n showOutlineOnLoad: true,\r\n t9n: ostTrans,\r\n ...opts,\r\n };\r\n\r\n // Change some config\r\n config.devicePreviewMode = true;\r\n\r\n loadComponents(editor, options);\r\n loadTraits(editor, options);\r\n await loadCommands(editor, options);\r\n loadBlocks(editor, options);\r\n loadPanels(editor, options);\r\n await loadRte(editor, options);\r\n\r\n // On load\r\n editor.on(\"load\", () => {\r\n // Create ostendis toolbar\r\n const tools = document.getElementById(\"gjs-tools\");\r\n const ostTools = document.createElement(\"div\");\r\n ostTools.classList.add(\"gjs-ost-toolbar\");\r\n tools?.append(ostTools);\r\n\r\n // Change all elements with header tags from type text to header\r\n const changeHeaderType = (component: Component): void => {\r\n const tagName = component.get(\"tagName\");\r\n\r\n const headings = [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"];\r\n if (\r\n tagName &&\r\n headings.includes(tagName.toLowerCase()) &&\r\n component.get(\"type\") === \"text\"\r\n ) {\r\n component.set({ type: \"header\" });\r\n component.setTraits([\r\n { name: \"id\" },\r\n headerTrait(options),\r\n ostTypeTextTrait(options),\r\n ostTypeHideInSimpleHtmlTrait(options),\r\n ]);\r\n }\r\n const children = component.components();\r\n children.each((child) => changeHeaderType(child));\r\n };\r\n const wrapper = editor.getWrapper();\r\n const components = wrapper?.components();\r\n components?.each((component) => changeHeaderType(component));\r\n });\r\n\r\n // On selected components\r\n editor.on(\"component:selected\", () => {\r\n let selected = editor.getSelected();\r\n\r\n if (selected != undefined) {\r\n if (selected.is(\"ulistitem\")) {\r\n showOstToolbar(selected);\r\n } else if (selected.isChildOf(\"ulistitem\")) {\r\n showOstToolbar(selected.closestType(\"ulistitem\"));\r\n } else if (selected.getEl()?.tagName === \"LI\") {\r\n // If list element is empty replace with placeholder text (M&E case:)\r\n if (selected.components().length === 0 && !selected.get(\"content\")) {\r\n var selectedPosition = selected.index();\r\n var newComponent = selected\r\n .parent()\r\n ?.append(\"<li>Text</li>\", { at: selectedPosition });\r\n selected.remove();\r\n editor.select(newComponent);\r\n selected = editor.getSelected();\r\n }\r\n showOstToolbar(selected);\r\n } else if (isChildOfElement(selected.getEl(), \"LI\")) {\r\n showOstToolbar(selected.closest(\"li\"));\r\n }\r\n }\r\n });\r\n\r\n // On deselected components\r\n editor.on(\"component:deselected\", () => {\r\n var ostToolbar = document.querySelector(\".gjs-ost-toolbar\");\r\n ostToolbar?.classList.remove(\"show\");\r\n });\r\n\r\n function isChildOfElement(element: HTMLElement | undefined, tag: string) {\r\n while (element?.parentNode) {\r\n element = element.parentNode as HTMLElement;\r\n if (element.tagName === tag) return element;\r\n }\r\n return false;\r\n }\r\n\r\n function showOstToolbar(listItem: Component | undefined) {\r\n var elPos = listItem?.index() || 0;\r\n var elLast = listItem?.parent()?.getLastChild().index();\r\n\r\n var ostToolbar = document.querySelector(\".gjs-ost-toolbar\");\r\n if (ostToolbar != undefined) {\r\n ostToolbar.innerHTML = \"\";\r\n\r\n // Add clone button\r\n const cBtn = document.createElement(\"div\");\r\n cBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12 3a9 9 0 0 0 0 18 9 9 0 0 0 0-18zm-1.3 3.88h2.6v3.82h3.82v2.6H13.3v3.82h-2.6V13.3H6.88v-2.6h3.82z\"/></svg>';\r\n cBtn.classList.add(\"gjs-ost-toolbar-item\", \"clone\");\r\n cBtn.title = options.t9n.ostToolbarClone;\r\n cBtn.addEventListener(\"click\", () => {\r\n if (!listItem || !editor) return;\r\n const clonedItem = listItem?.clone();\r\n listItem?.parent()?.append(clonedItem, { at: elPos + 1 });\r\n });\r\n ostToolbar.appendChild(cBtn);\r\n\r\n //Add delete button\r\n const dBtn = document.createElement(\"div\");\r\n dBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm5.12 7.7v2.6H6.88v-2.6z\"/></svg>';\r\n dBtn.title = options.t9n.ostToolbarDelete;\r\n dBtn.classList.add(\"gjs-ost-toolbar-item\", \"del\");\r\n if (elLast != 0) {\r\n dBtn.addEventListener(\"click\", () => {\r\n listItem?.remove();\r\n ostToolbar?.classList.remove(\"show\");\r\n });\r\n } else {\r\n dBtn.classList.add(\"disable\");\r\n }\r\n ostToolbar.appendChild(dBtn);\r\n\r\n // Add move up button\r\n const upBtn = document.createElement(\"div\");\r\n upBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M1.9 20.75 12 3.25l10.1 17.5Z\"/></svg>';\r\n upBtn.title = options.t9n.ostToolbarUp;\r\n upBtn.classList.add(\"gjs-ost-toolbar-item\", \"up\");\r\n if (elPos > 0) {\r\n upBtn.addEventListener(\"click\", () => {\r\n if (elPos && listItem?.parent() != undefined) {\r\n let parent = listItem.parent();\r\n if (parent) {\r\n listItem?.move(parent, { at: elPos - 1 });\r\n }\r\n editor.selectRemove(listItem);\r\n editor.select(listItem);\r\n }\r\n });\r\n } else {\r\n upBtn.classList.add(\"disable\");\r\n }\r\n ostToolbar.appendChild(upBtn);\r\n\r\n // Add move down button\r\n const dwnBtn = document.createElement(\"div\");\r\n dwnBtn.innerHTML =\r\n '<svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M22.4 3.25 12 20.75 1.6 3.25Z\"/></svg>';\r\n dwnBtn.title = options.t9n.ostToolbarDown;\r\n dwnBtn.classList.add(\"gjs-ost-toolbar-item\", \"down\");\r\n if (elPos != elLast) {\r\n var toPos = elPos + 2;\r\n if (elPos == elLast) {\r\n toPos = 0;\r\n }\r\n dwnBtn.addEventListener(\"click\", () => {\r\n if (toPos && listItem?.parent() != undefined) {\r\n let parent = listItem.parent();\r\n if (parent) {\r\n listItem.move(parent, { at: toPos });\r\n }\r\n editor.selectRemove(listItem);\r\n editor.select(listItem);\r\n }\r\n });\r\n } else {\r\n dwnBtn.classList.add(\"disable\");\r\n }\r\n ostToolbar.appendChild(dwnBtn);\r\n\r\n // Add show\r\n ostToolbar.classList.add(\"show\");\r\n }\r\n }\r\n\r\n // On storage start\r\n editor.on(\"storage:start\", () => {\r\n // Reset all Components\r\n const getAllComponents = (model: any, result: any[] = []) => {\r\n result.push(model);\r\n model.components().each((mod: any) => getAllComponents(mod, result));\r\n return result;\r\n };\r\n var allComponents = getAllComponents(editor.DomComponents.getWrapper());\r\n allComponents.forEach((compo) =>\r\n compo.set({\r\n draggable: true,\r\n removable: true,\r\n copyable: true,\r\n toolbar: [\r\n {\r\n attributes: { class: \"fa-solid fa-arrow-up\" },\r\n command: \"select-parent\",\r\n },\r\n {\r\n attributes: { class: \"fa-solid fa-arrows-up-down-left-right\" },\r\n command: \"tlb-move\",\r\n },\r\n { attributes: { class: \"fa-regular fa-copy\" }, command: \"tlb-clone\" },\r\n { attributes: { class: \"fa-solid fa-trash\" }, command: \"tlb-delete\" },\r\n ],\r\n })\r\n );\r\n });\r\n};\r\n\r\nexport default plugin;\r\n"],"names":[],"sourceRoot":""}
|