@lyads/visual-editor 0.0.0-stage → 1.0.1

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.
Files changed (258) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +8 -0
  4. package/README.md +135 -2
  5. package/THIRD_PARTY_NOTICES.md +21259 -0
  6. package/dist/application/block-placement.d.ts +30 -0
  7. package/dist/application/block-session.d.ts +135 -0
  8. package/dist/application/content-service.d.ts +73 -0
  9. package/dist/application/document-commands.d.ts +51 -0
  10. package/dist/application/document-metadata.d.ts +30 -0
  11. package/dist/application/document-presentation.d.ts +35 -0
  12. package/dist/application/email-insertion.d.ts +76 -0
  13. package/dist/application/host.d.ts +36 -0
  14. package/dist/application/image-link.d.ts +36 -0
  15. package/dist/application/section-layout.d.ts +25 -0
  16. package/dist/application/session.d.ts +128 -0
  17. package/dist/assets/browser-worker-D56tNvnb.js +1014 -0
  18. package/dist/assets/browser-worker-D56tNvnb.js.map +1 -0
  19. package/dist/block-controller-RjYGvOcn.js +2468 -0
  20. package/dist/block-controller-RjYGvOcn.js.map +1 -0
  21. package/dist/block-factory-C5oHi4Fm.js +5397 -0
  22. package/dist/block-factory-C5oHi4Fm.js.map +1 -0
  23. package/dist/blocks/block-checks.d.ts +34 -0
  24. package/dist/blocks/block-inspector.d.ts +55 -0
  25. package/dist/blocks/block-output.d.ts +28 -0
  26. package/dist/blocks/block-type.d.ts +124 -0
  27. package/dist/blocks/content-guard.d.ts +52 -0
  28. package/dist/blocks/conversion.d.ts +22 -0
  29. package/dist/blocks/definitions.d.ts +43 -0
  30. package/dist/blocks/device-styles.d.ts +31 -0
  31. package/dist/blocks/email-generator.d.ts +22 -0
  32. package/dist/blocks/email-preview.d.ts +23 -0
  33. package/dist/blocks/email-renderer.d.ts +20 -0
  34. package/dist/blocks/fields.d.ts +34 -0
  35. package/dist/blocks/page-generator.d.ts +16 -0
  36. package/dist/blocks/render-context.d.ts +58 -0
  37. package/dist/blocks/styles.d.ts +54 -0
  38. package/dist/blocks/types/embed.d.ts +40 -0
  39. package/dist/blocks/types/layout.d.ts +41 -0
  40. package/dist/blocks/types/media.d.ts +53 -0
  41. package/dist/blocks/types/structure.d.ts +44 -0
  42. package/dist/blocks/types/text.d.ts +88 -0
  43. package/dist/blocks/values.d.ts +64 -0
  44. package/dist/browser.js +69 -0
  45. package/dist/browser.js.map +1 -0
  46. package/dist/canvas-runtime/action-bar.d.ts +19 -0
  47. package/dist/canvas-runtime/auto-scroll.d.ts +10 -0
  48. package/dist/canvas-runtime/block-drag.d.ts +29 -0
  49. package/dist/canvas-runtime/bridge.d.ts +6 -0
  50. package/dist/canvas-runtime/context.d.ts +53 -0
  51. package/dist/canvas-runtime/document-sync.d.ts +21 -0
  52. package/dist/canvas-runtime/drop-targets.d.ts +34 -0
  53. package/dist/canvas-runtime/embed-markers.d.ts +15 -0
  54. package/dist/canvas-runtime/file-guard.d.ts +12 -0
  55. package/dist/canvas-runtime/image-tools.d.ts +31 -0
  56. package/dist/canvas-runtime/keyboard.d.ts +18 -0
  57. package/dist/canvas-runtime/main.d.ts +1 -0
  58. package/dist/canvas-runtime/messages.d.ts +26 -0
  59. package/dist/canvas-runtime/morph.d.ts +21 -0
  60. package/dist/canvas-runtime/navigation.d.ts +29 -0
  61. package/dist/canvas-runtime/overlay.d.ts +15 -0
  62. package/dist/canvas-runtime/pointer-intents.d.ts +14 -0
  63. package/dist/canvas-runtime/selection-layer.d.ts +16 -0
  64. package/dist/canvas-runtime/shared/shortcuts.d.ts +27 -0
  65. package/dist/canvas-runtime/text-editor.d.ts +55 -0
  66. package/dist/canvas-runtime/text-session.d.ts +39 -0
  67. package/dist/canvas-runtime/variable-marks.d.ts +20 -0
  68. package/dist/canvas-runtime/viewport.d.ts +10 -0
  69. package/dist/codecs/css.d.ts +74 -0
  70. package/dist/codecs/html.d.ts +81 -0
  71. package/dist/compilation/browser-compiler.d.ts +14 -0
  72. package/dist/compilation/browser-worker.d.ts +1 -0
  73. package/dist/compilation/compile-lanes.d.ts +18 -0
  74. package/dist/compilation/generated-mjml.d.ts +25 -0
  75. package/dist/compilation/guard.d.ts +40 -0
  76. package/dist/compilation/node-compiler.d.ts +17 -0
  77. package/dist/compilation/node-worker.d.ts +1 -0
  78. package/dist/composition/block-factory.d.ts +84 -0
  79. package/dist/composition/browser.d.ts +48 -0
  80. package/dist/composition/factory.d.ts +48 -0
  81. package/dist/composition/server.d.ts +43 -0
  82. package/dist/core/any-document.d.ts +16 -0
  83. package/dist/core/block-document.d.ts +215 -0
  84. package/dist/core/budget.d.ts +32 -0
  85. package/dist/core/canvas-contract.d.ts +29 -0
  86. package/dist/core/canvas-layout.d.ts +66 -0
  87. package/dist/core/catalog.d.ts +35 -0
  88. package/dist/core/document-presentation.d.ts +21 -0
  89. package/dist/core/document.d.ts +99 -0
  90. package/dist/core/history.d.ts +26 -0
  91. package/dist/core/html-content-model.d.ts +32 -0
  92. package/dist/core/html-escape.d.ts +2 -0
  93. package/dist/core/rich-text-format.d.ts +14 -0
  94. package/dist/core/rich-text-markup.d.ts +28 -0
  95. package/dist/core/section-layout.d.ts +83 -0
  96. package/dist/generated-mjml-CtzE-f3v.js +1235 -0
  97. package/dist/generated-mjml-CtzE-f3v.js.map +1 -0
  98. package/dist/identity-CJHb6l9N.js +13759 -0
  99. package/dist/identity-CJHb6l9N.js.map +1 -0
  100. package/dist/renderers/canvas-bridge.d.ts +75 -0
  101. package/dist/renderers/canvas-icons.d.ts +1 -0
  102. package/dist/renderers/canvas-runtime.generated.d.ts +3 -0
  103. package/dist/renderers/element-source.d.ts +13 -0
  104. package/dist/renderers/email-renderer.d.ts +14 -0
  105. package/dist/renderers/marked-preview.d.ts +34 -0
  106. package/dist/renderers/markup-tree.d.ts +36 -0
  107. package/dist/renderers/page-renderer.d.ts +15 -0
  108. package/dist/renderers/preview-document.d.ts +39 -0
  109. package/dist/renderers/preview-frame.d.ts +102 -0
  110. package/dist/renderers/section-scaffold.d.ts +16 -0
  111. package/dist/renderers/selection-preview.d.ts +47 -0
  112. package/dist/rich-text/command-executor.d.ts +26 -0
  113. package/dist/rich-text/commands.d.ts +36 -0
  114. package/dist/rich-text/document-builder.d.ts +52 -0
  115. package/dist/rich-text/formatting.d.ts +17 -0
  116. package/dist/rich-text/projection-export.d.ts +17 -0
  117. package/dist/rich-text/projection-rules.d.ts +13 -0
  118. package/dist/rich-text/schema.d.ts +50 -0
  119. package/dist/rich-text/whitespace.d.ts +7 -0
  120. package/dist/security/bounded-parser.d.ts +18 -0
  121. package/dist/security/conditional-comment.d.ts +30 -0
  122. package/dist/security/content-inventory.d.ts +78 -0
  123. package/dist/security/email-sanitizer.d.ts +36 -0
  124. package/dist/security/identity.d.ts +6 -0
  125. package/dist/security/markup-rules.d.ts +31 -0
  126. package/dist/security/policy.d.ts +61 -0
  127. package/dist/security/preview-message.d.ts +317 -0
  128. package/dist/security/rich-text-projection.d.ts +19 -0
  129. package/dist/security/sha256.d.ts +6 -0
  130. package/dist/security/source-markup.d.ts +53 -0
  131. package/dist/security/text-presentation.d.ts +19 -0
  132. package/dist/security/url-policy.d.ts +23 -0
  133. package/dist/server-worker.js +17 -0
  134. package/dist/server-worker.js.map +1 -0
  135. package/dist/server.js +79 -0
  136. package/dist/server.js.map +1 -0
  137. package/dist/templates/blank-email.d.ts +6 -0
  138. package/dist/templates/blocks/catalog.d.ts +31 -0
  139. package/dist/templates/catalog.d.ts +31 -0
  140. package/dist/visual-editor.css +2 -0
  141. package/dist/vue/block-controller.d.ts +106 -0
  142. package/dist/vue/block-workbench.d.ts +70 -0
  143. package/dist/vue/canvas/canvas-theme.d.ts +8 -0
  144. package/dist/vue/canvas/file-drop.d.ts +38 -0
  145. package/dist/vue/canvas/frame-window.d.ts +26 -0
  146. package/dist/vue/canvas/inline-text.d.ts +98 -0
  147. package/dist/vue/canvas/palette-drag.d.ts +55 -0
  148. package/dist/vue/canvas/piece-requests.d.ts +48 -0
  149. package/dist/vue/canvas/strip-reserve.d.ts +14 -0
  150. package/dist/vue/canvas-content-label.d.ts +5 -0
  151. package/dist/vue/components/BlockVisualEditor.vue.d.ts +44 -0
  152. package/dist/vue/components/CanvasSurface.vue.d.ts +11 -0
  153. package/dist/vue/components/CodeEditor.vue.d.ts +22 -0
  154. package/dist/vue/components/EditorBlockMenus.vue.d.ts +3 -0
  155. package/dist/vue/components/EditorBlockPalette.vue.d.ts +3 -0
  156. package/dist/vue/components/EditorDiagnostics.vue.d.ts +3 -0
  157. package/dist/vue/components/EditorDialogs.vue.d.ts +16 -0
  158. package/dist/vue/components/EditorDocumentMetadata.vue.d.ts +3 -0
  159. package/dist/vue/components/EditorDocumentStyles.vue.d.ts +15 -0
  160. package/dist/vue/components/EditorImageSizeControls.vue.d.ts +23 -0
  161. package/dist/vue/components/EditorLayoutControls.vue.d.ts +16 -0
  162. package/dist/vue/components/EditorLeftPanel.vue.d.ts +3 -0
  163. package/dist/vue/components/EditorNoticeIndicator.vue.d.ts +3 -0
  164. package/dist/vue/components/EditorPreview.vue.d.ts +8 -0
  165. package/dist/vue/components/EditorProperties.vue.d.ts +14 -0
  166. package/dist/vue/components/EditorRichTextControls.vue.d.ts +25 -0
  167. package/dist/vue/components/EditorSelectionPath.vue.d.ts +11 -0
  168. package/dist/vue/components/EditorShortcutHelp.vue.d.ts +3 -0
  169. package/dist/vue/components/EditorSourcePane.vue.d.ts +3 -0
  170. package/dist/vue/components/EditorStructureTree.vue.d.ts +3 -0
  171. package/dist/vue/components/EditorTemplateGallery.vue.d.ts +15 -0
  172. package/dist/vue/components/EditorTopBar.vue.d.ts +33 -0
  173. package/dist/vue/components/RichTextEditor.vue.d.ts +47 -0
  174. package/dist/vue/components/SelectionPreviewFrame.vue.d.ts +212 -0
  175. package/dist/vue/components/VisualEditor.vue.d.ts +53 -0
  176. package/dist/vue/components/blocks/BlockCanvas.vue.d.ts +15 -0
  177. package/dist/vue/components/blocks/BlockFieldControl.vue.d.ts +39 -0
  178. package/dist/vue/components/blocks/BlockGlobalStyles.vue.d.ts +3 -0
  179. package/dist/vue/components/blocks/BlockPalette.vue.d.ts +6 -0
  180. package/dist/vue/components/blocks/BlockProperties.vue.d.ts +5 -0
  181. package/dist/vue/components/blocks/BlockReview.vue.d.ts +5 -0
  182. package/dist/vue/components/properties/EditorPropertyAdvanced.vue.d.ts +8 -0
  183. package/dist/vue/components/properties/EditorPropertyContent.vue.d.ts +13 -0
  184. package/dist/vue/components/properties/EditorPropertyStyle.vue.d.ts +8 -0
  185. package/dist/vue/components/ui/EditorAnchoredMenu.vue.d.ts +36 -0
  186. package/dist/vue/components/ui/EditorBadge.vue.d.ts +18 -0
  187. package/dist/vue/components/ui/EditorButton.vue.d.ts +28 -0
  188. package/dist/vue/components/ui/EditorCheckbox.vue.d.ts +13 -0
  189. package/dist/vue/components/ui/EditorColorInput.vue.d.ts +27 -0
  190. package/dist/vue/components/ui/EditorConfirmDialog.vue.d.ts +35 -0
  191. package/dist/vue/components/ui/EditorContextMenu.vue.d.ts +27 -0
  192. package/dist/vue/components/ui/EditorContextPopover.vue.d.ts +33 -0
  193. package/dist/vue/components/ui/EditorEmpty.vue.d.ts +8 -0
  194. package/dist/vue/components/ui/EditorField.vue.d.ts +24 -0
  195. package/dist/vue/components/ui/EditorGroup.vue.d.ts +16 -0
  196. package/dist/vue/components/ui/EditorIcon.vue.d.ts +6 -0
  197. package/dist/vue/components/ui/EditorIconButton.vue.d.ts +19 -0
  198. package/dist/vue/components/ui/EditorInput.vue.d.ts +41 -0
  199. package/dist/vue/components/ui/EditorKeys.vue.d.ts +6 -0
  200. package/dist/vue/components/ui/EditorMeasurement.vue.d.ts +34 -0
  201. package/dist/vue/components/ui/EditorMenu.vue.d.ts +56 -0
  202. package/dist/vue/components/ui/EditorNotice.vue.d.ts +30 -0
  203. package/dist/vue/components/ui/EditorPropertyGroup.vue.d.ts +22 -0
  204. package/dist/vue/components/ui/EditorRecoveryDialog.vue.d.ts +23 -0
  205. package/dist/vue/components/ui/EditorScrollArea.vue.d.ts +13 -0
  206. package/dist/vue/components/ui/EditorSelect.vue.d.ts +25 -0
  207. package/dist/vue/components/ui/EditorSeparator.vue.d.ts +8 -0
  208. package/dist/vue/components/ui/EditorSidePanel.vue.d.ts +26 -0
  209. package/dist/vue/components/ui/EditorSwitch.vue.d.ts +12 -0
  210. package/dist/vue/components/ui/EditorTabs.vue.d.ts +28 -0
  211. package/dist/vue/components/ui/EditorTemplatePreview.vue.d.ts +9 -0
  212. package/dist/vue/components/ui/EditorTextToolbar.vue.d.ts +16 -0
  213. package/dist/vue/components/ui/EditorTree.vue.d.ts +37 -0
  214. package/dist/vue/components/ui/EditorUiProvider.vue.d.ts +13 -0
  215. package/dist/vue/components/ui/EditorVariablePicker.vue.d.ts +20 -0
  216. package/dist/vue/components/ui/color-style-value.d.ts +9 -0
  217. package/dist/vue/components/ui/composition-dismissal.d.ts +1 -0
  218. package/dist/vue/components/ui/editor-dialog-focus.d.ts +6 -0
  219. package/dist/vue/components/ui/numeric-style-value.d.ts +15 -0
  220. package/dist/vue/controller.d.ts +115 -0
  221. package/dist/vue/font-options.d.ts +6 -0
  222. package/dist/vue/icon-data.d.ts +233 -0
  223. package/dist/vue/icons.d.ts +5 -0
  224. package/dist/vue/locale.d.ts +7 -0
  225. package/dist/vue/outline.d.ts +26 -0
  226. package/dist/vue/projection-key.d.ts +7 -0
  227. package/dist/vue/properties/selection-properties.d.ts +40 -0
  228. package/dist/vue/properties/style-fields.d.ts +30 -0
  229. package/dist/vue/public.d.ts +14 -0
  230. package/dist/vue/recovery.d.ts +30 -0
  231. package/dist/vue/responsive-panel.d.ts +1 -0
  232. package/dist/vue/rich-text-commands.d.ts +29 -0
  233. package/dist/vue/services/block-command-definitions.d.ts +14 -0
  234. package/dist/vue/services/block-commands.d.ts +114 -0
  235. package/dist/vue/services/block-menu.d.ts +12 -0
  236. package/dist/vue/services/block-palette.d.ts +21 -0
  237. package/dist/vue/services/block-presentation.d.ts +16 -0
  238. package/dist/vue/services/diagnostic-groups.d.ts +25 -0
  239. package/dist/vue/services/image-requests.d.ts +80 -0
  240. package/dist/vue/services/live-change.d.ts +26 -0
  241. package/dist/vue/services/property-commands.d.ts +28 -0
  242. package/dist/vue/services/saved-blocks.d.ts +32 -0
  243. package/dist/vue/services/selection-path.d.ts +20 -0
  244. package/dist/vue/services/shortcuts.d.ts +39 -0
  245. package/dist/vue/services/structure-tree.d.ts +38 -0
  246. package/dist/vue/services/template-application.d.ts +33 -0
  247. package/dist/vue/services/tree-drag.d.ts +28 -0
  248. package/dist/vue/session/blocks.d.ts +44 -0
  249. package/dist/vue/session/guard.d.ts +13 -0
  250. package/dist/vue/session/structure.d.ts +36 -0
  251. package/dist/vue/session/text.d.ts +23 -0
  252. package/dist/vue/session/transfer.d.ts +23 -0
  253. package/dist/vue/theme.d.ts +20 -0
  254. package/dist/vue/variables.d.ts +21 -0
  255. package/dist/vue/workbench.d.ts +100 -0
  256. package/dist/vue.js +71418 -0
  257. package/dist/vue.js.map +1 -0
  258. package/package.json +125 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-CJHb6l9N.js","names":["integer","number","parse","v.strictObject","v.exactOptional","v.pipe","v.string","v.maxLength","v.number","v.integer","v.minValue","v.picklist","v.lazy","v.minLength","v.record","v.array","v.literal","v.maxValue","v.safeParse","$","$","$$","$","$","$","TN","foreignContent.isIntegrationPoint","doctype.getDocumentMode","doctype.isConforming","foreignContent.causesExit","$","parse","N","F","R","balancePair","tokenNames","tokenize","SyntaxError","EXCLAMATIONMARK","NUMBERSIGN","LEFTCURLYBRACKET","tokenNames","SyntaxError","tokenize","SourceMapGenerator","PLUSSIGN","HYPHENMINUS","tokenBefore.safe","tokenBefore","tokenize","noop","ensureFunction","hasOwnProperty","noop","generate","generate","HYPHENMINUS","PLUSSIGN","HYPHENMINUS","N","DISALLOW_SIGN","ALLOW_SIGN","isDelim","checkInteger","consumeB","PLUSSIGN","HYPHENMINUS","QUESTIONMARK","U","startsWith","SyntaxError","TAB","N","F","R","SPACE","SyntaxError","N","SPACE","EXCLAMATIONMARK","NUMBERSIGN","AMPERSAND","APOSTROPHE","LEFTPARENTHESIS","RIGHTPARENTHESIS","ASTERISK","PLUSSIGN","LESSTHANSIGN","GREATERTHANSIGN","QUESTIONMARK","VERTICALLINE","readProperty","parse","walk","LEFTPARENTHESIS","RIGHTPARENTHESIS","parse","hasOwnProperty","hasOwnProperty","generate","trace","prepareTokens","units","parse","names.keyword","names.property","property","PLUSSIGN","HYPHENMINUS","name","structure","parse","generate","consumeRaw","name","walkContext","structure","parse","generate","name","walkContext","structure","parse","generate","DOLLARSIGN","ASTERISK","EQUALSSIGN","VERTICALLINE","TILDE","name","structure","parse","generate","AMPERSAND","consumeRaw","name","walkContext","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","FULLSTOP","name","structure","parse","generate","PLUSSIGN","SOLIDUS","GREATERTHANSIGN","TILDE","name","structure","parse","generate","ASTERISK","SOLIDUS","name","structure","parse","generate","name","structure","parse","generate","EXCLAMATIONMARK","NUMBERSIGN","AMPERSAND","ASTERISK","PLUSSIGN","SOLIDUS","name","walkContext","structure","parse","generate","AMPERSAND","consumeRaw","name","structure","parse","generate","name","structure","parse","generate","SOLIDUS","name","structure","parse","generate","name","structure","parse","generate","SOLIDUS","GREATERTHANSIGN","name","structure","parse","generate","name","walkContext","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","FULLSTOP","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","AMPERSAND","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","walkContext","structure","parse","generate","name","walkContext","structure","parse","generate","SOLIDUS","name","structure","parse","generate","name","structure","parse","generate","consumeRaw","name","walkContext","structure","parse","generate","name","structure","parse","generate","name","structure","parse","generate","name","walkContext","structure","parse","generate","REVERSE_SOLIDUS","QUOTATION_MARK","APOSTROPHE","decode","encode","name","structure","parse","decode","generate","encode","name","structure","parse","generate","name","structure","parse","generate","ASTERISK","VERTICALLINE","name","structure","parse","generate","PLUSSIGN","HYPHENMINUS","name","structure","parse","generate","SPACE","REVERSE_SOLIDUS","decode","name","structure","parse","url.decode","string.decode","generate","url.encode","name","structure","parse","generate","parse","generate","definitions","NUMBERSIGN","ASTERISK","PLUSSIGN","SOLIDUS","expressionFn","varFn","fontFace","importAtrule","startingStyle","createSyntax","lexerConfig","parserConfig","walkerConfig","syntax","v.pipe","v.number","v.finite","v.minValue","v.maxValue","v.strictObject","v.union","v.literal","v.tuple","v.picklist","v.exactOptional","cssTree.parse","cssTree.ident.decode","cssTree.generate","parse","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__commonJSMin","mod","cb","__exportAll","target","name","all","no_symbols","__copyProps","from","keys","i","n","key","to","except","k","desc","__reExport","secondTarget","DEFAULT_CONFIG","getGlobalConfig","config$1","_stringify","type","input","_addIssue","other","dataset","expected","context","received","issue","label","isSchema","message$1","_standardCache","_getStandardProps","cached","value$1","_isValidObjectKey","object$1","_joinExpects","list","values$1","separator","ValiError","issues","check","finite","integer$1","maxLength","requirement","maxValue","minLength","minValue","regex","trim","ABORT_EARLY_CONFIG","getFallback","schema","getDefault","array","itemDataset","pathItem","boolean","exactOptional","wrapped","default_","lazy","literal","literal_","number$2","picklist","options","record","entryKey","entryValue","keyDataset","valueDataset","strictObject","entries$1","valueSchema","string","tuple","_subIssues","datasets","union","option","validDataset","typedDatasets","untypedDatasets","optionDataset","unknown","variant","outputDataset","maxDiscriminatorPriority","invalidDiscriminatorKey","expectedDiscriminators","parseOptions","variant$1","allKeys","keysAreValid","currentPriority","currentKey","discriminatorSchema","parse$52","pipe","pipe$1","item","safeParse","DocumentBudgetError","code","DocumentBudget","bytes","index","value","html","css","visiting","stack","data","objects","frame","prototype","node","HtmlContentModel","parent","parentTag","child","tag","required","children","DOCUMENT_LIMITS","HTML_VOID_ELEMENTS","metadataSchema","DocumentNodeSchema","EditorDocumentSchema","DocumentValidationError","EditorDocument","#data","result","change","#bytes","revision","error","normalized","nodes","previous","seen","model","budget","counted","attributes","styleLabels","styleProperties","names","attributeProperties","boxStyles","side","textStyles","containerStyles","containerProperties","property","textProperties","inlineTags","richBlockTags","descriptors","descriptor","BlockCatalog","kind","entry","blockAllowed","style","base","id","UNDEFINED_CODE_POINTS","CODE_POINTS","\"EOF\"","\"NULL\"","\"TABULATION\"","\"CARRIAGE_RETURN\"","\"LINE_FEED\"","\"FORM_FEED\"","\"SPACE\"","\"EXCLAMATION_MARK\"","\"QUOTATION_MARK\"","\"AMPERSAND\"","\"APOSTROPHE\"","\"HYPHEN_MINUS\"","\"SOLIDUS\"","\"DIGIT_0\"","\"DIGIT_9\"","\"SEMICOLON\"","\"LESS_THAN_SIGN\"","\"EQUALS_SIGN\"","\"GREATER_THAN_SIGN\"","\"QUESTION_MARK\"","\"LATIN_CAPITAL_A\"","\"LATIN_CAPITAL_Z\"","\"RIGHT_SQUARE_BRACKET\"","\"GRAVE_ACCENT\"","\"LATIN_SMALL_A\"","\"LATIN_SMALL_Z\"","SEQUENCES","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","ERR","\"controlCharacterInInputStream\"","\"noncharacterInInputStream\"","\"surrogateInInputStream\"","\"nonVoidHtmlElementStartTagWithTrailingSolidus\"","\"endTagWithAttributes\"","\"endTagWithTrailingSolidus\"","\"unexpectedSolidusInTag\"","\"unexpectedNullCharacter\"","\"unexpectedQuestionMarkInsteadOfTagName\"","\"invalidFirstCharacterOfTagName\"","\"unexpectedEqualsSignBeforeAttributeName\"","\"missingEndTagName\"","\"unexpectedCharacterInAttributeName\"","\"unknownNamedCharacterReference\"","\"missingSemicolonAfterCharacterReference\"","\"unexpectedCharacterAfterDoctypeSystemIdentifier\"","\"unexpectedCharacterInUnquotedAttributeValue\"","\"eofBeforeTagName\"","\"eofInTag\"","\"missingAttributeValue\"","\"missingWhitespaceBetweenAttributes\"","\"missingWhitespaceAfterDoctypePublicKeyword\"","\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"","\"missingWhitespaceAfterDoctypeSystemKeyword\"","\"missingQuoteBeforeDoctypePublicIdentifier\"","\"missingQuoteBeforeDoctypeSystemIdentifier\"","\"missingDoctypePublicIdentifier\"","\"missingDoctypeSystemIdentifier\"","\"abruptDoctypePublicIdentifier\"","\"abruptDoctypeSystemIdentifier\"","\"cdataInHtmlContent\"","\"incorrectlyOpenedComment\"","\"eofInScriptHtmlCommentLikeText\"","\"eofInDoctype\"","\"nestedComment\"","\"abruptClosingOfEmptyComment\"","\"eofInComment\"","\"incorrectlyClosedComment\"","\"eofInCdata\"","\"absenceOfDigitsInNumericCharacterReference\"","\"nullCharacterReference\"","\"surrogateCharacterReference\"","\"characterReferenceOutsideUnicodeRange\"","\"controlCharacterReference\"","\"noncharacterCharacterReference\"","\"missingWhitespaceBeforeDoctypeName\"","\"missingDoctypeName\"","\"invalidCharacterSequenceAfterDoctypeName\"","\"duplicateAttribute\"","\"nonConformingDoctype\"","\"missingDoctype\"","\"misplacedDoctype\"","\"endTagWithoutMatchingOpenElement\"","\"closingOfElementWithOpenChildElements\"","\"disallowedContentInNoscriptInHead\"","\"openElementsLeftAfterEof\"","\"abandonedHeadElementChild\"","\"misplacedStartTagForHeadElement\"","\"nestedNoscriptInHead\"","\"eofInElementThatCanContainOnlyText\"","DEFAULT_BUFFER_WATERLINE","Preprocessor","handler","startCol","col","cpOffset","startOffset","offset","line","nextCp","chunk","isLastChunk","pattern","caseSensitive","pos","count","TokenType","\"CHARACTER\"","\"NULL_CHARACTER\"","\"WHITESPACE_CHARACTER\"","\"START_TAG\"","\"END_TAG\"","\"COMMENT\"","\"DOCTYPE\"","\"HIBERNATION\"","getTokenAttr","token","attrName","c1","isInvalidCodePoint","codePoint","replaceCodePoint","replaceCodePointXML","BASE91_INVERSE","table","char","decodeTrieDict","inputLength","twoCharBias","dictSize","readSlotCode","dict2AtomCount","atomCount","dict1AtomCount","slotCount","ngramCount","single","start","length","decodeDelta","slot","off","end","runLength","next","references","poolSize","ngramIndex","readNgramReferences","startSlot","a","b","entryLength","pool","write","half","source","read","readEnd","out","resultLength","outIndex","htmlDecodeTree","xmlDecodeTree","BinTrieFlags","\"VALUE_LENGTH\"","\"FLAG13\"","\"BRANCH_LENGTH\"","\"JUMP_TABLE\"","\"VALUE_MASK\"","CharCodes","\"AMP\"","\"NUM\"","\"SEMI\"","\"EQUALS\"","\"ZERO\"","\"NINE\"","\"LOWER_A\"","\"LOWER_X\"","TO_LOWER_BIT","isNumber","isHexadecimalCharacter","isAlpha","isEntityInAttributeInvalidEnd","EntityDecoderState","\"EntityStart\"","\"NumericStart\"","\"NumericDecimal\"","\"NumericHex\"","\"NamedEntity\"","DecodingMode","\"Legacy\"","\"Strict\"","\"Attribute\"","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","digit","consumed","expectedLength","lastCp","excess","valueLength","isStrict","current","treeIndex","jumpOffset","branchCount","stored","runConsumed","charIndexInPacked","expectedChar","determineBranch","nodeIndex","packedKeySlots","branchEnd","NS","\"HTML\"","\"MATHML\"","\"SVG\"","\"XLINK\"","\"XML\"","\"XMLNS\"","ATTRS","\"TYPE\"","\"ACTION\"","\"ENCODING\"","\"PROMPT\"","\"NAME\"","\"COLOR\"","\"FACE\"","\"SIZE\"","DOCUMENT_MODE","\"NO_QUIRKS\"","\"QUIRKS\"","\"LIMITED_QUIRKS\"","TAG_NAMES","\"A\"","\"ADDRESS\"","\"ANNOTATION_XML\"","\"APPLET\"","\"AREA\"","\"ARTICLE\"","\"ASIDE\"","\"B\"","\"BASE\"","\"BASEFONT\"","\"BGSOUND\"","\"BIG\"","\"BLOCKQUOTE\"","\"BODY\"","\"BR\"","\"BUTTON\"","\"CAPTION\"","\"CENTER\"","\"CODE\"","\"COL\"","\"COLGROUP\"","\"DD\"","\"DESC\"","\"DETAILS\"","\"DIALOG\"","\"DIR\"","\"DIV\"","\"DL\"","\"DT\"","\"EM\"","\"EMBED\"","\"FIELDSET\"","\"FIGCAPTION\"","\"FIGURE\"","\"FONT\"","\"FOOTER\"","\"FOREIGN_OBJECT\"","\"FORM\"","\"FRAME\"","\"FRAMESET\"","\"H1\"","\"H2\"","\"H3\"","\"H4\"","\"H5\"","\"H6\"","\"HEAD\"","\"HEADER\"","\"HGROUP\"","\"HR\"","\"I\"","\"IMG\"","\"IMAGE\"","\"INPUT\"","\"IFRAME\"","\"KEYGEN\"","\"LABEL\"","\"LI\"","\"LINK\"","\"LISTING\"","\"MAIN\"","\"MALIGNMARK\"","\"MARQUEE\"","\"MATH\"","\"MENU\"","\"META\"","\"MGLYPH\"","\"MI\"","\"MO\"","\"MN\"","\"MS\"","\"MTEXT\"","\"NAV\"","\"NOBR\"","\"NOFRAMES\"","\"NOEMBED\"","\"NOSCRIPT\"","\"OBJECT\"","\"OL\"","\"OPTGROUP\"","\"OPTION\"","\"P\"","\"PARAM\"","\"PLAINTEXT\"","\"PRE\"","\"RB\"","\"RP\"","\"RT\"","\"RTC\"","\"RUBY\"","\"S\"","\"SCRIPT\"","\"SEARCH\"","\"SECTION\"","\"SELECT\"","\"SOURCE\"","\"SMALL\"","\"SPAN\"","\"STRIKE\"","\"STRONG\"","\"STYLE\"","\"SUB\"","\"SUMMARY\"","\"SUP\"","\"TABLE\"","\"TBODY\"","\"TEMPLATE\"","\"TEXTAREA\"","\"TFOOT\"","\"TD\"","\"TH\"","\"THEAD\"","\"TITLE\"","\"TR\"","\"TRACK\"","\"TT\"","\"U\"","\"UL\"","\"VAR\"","\"WBR\"","\"XMP\"","TAG_ID","\"UNKNOWN\"","TAG_NAME_TO_ID","getTagID","tagName","$","SPECIAL_ELEMENTS","NUMBERED_HEADERS","UNESCAPED_TEXT","hasUnescapedText","tn","scriptingEnabled","State","\"DATA\"","\"RCDATA\"","\"RAWTEXT\"","\"SCRIPT_DATA\"","\"TAG_OPEN\"","\"END_TAG_OPEN\"","\"TAG_NAME\"","\"RCDATA_LESS_THAN_SIGN\"","\"RCDATA_END_TAG_OPEN\"","\"RCDATA_END_TAG_NAME\"","\"RAWTEXT_LESS_THAN_SIGN\"","\"RAWTEXT_END_TAG_OPEN\"","\"RAWTEXT_END_TAG_NAME\"","\"SCRIPT_DATA_LESS_THAN_SIGN\"","\"SCRIPT_DATA_END_TAG_OPEN\"","\"SCRIPT_DATA_END_TAG_NAME\"","\"SCRIPT_DATA_ESCAPE_START\"","\"SCRIPT_DATA_ESCAPE_START_DASH\"","\"SCRIPT_DATA_ESCAPED\"","\"SCRIPT_DATA_ESCAPED_DASH\"","\"SCRIPT_DATA_ESCAPED_DASH_DASH\"","\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"","\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"","\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"","\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"","\"SCRIPT_DATA_DOUBLE_ESCAPED\"","\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"","\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"","\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"","\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"","\"BEFORE_ATTRIBUTE_NAME\"","\"ATTRIBUTE_NAME\"","\"AFTER_ATTRIBUTE_NAME\"","\"BEFORE_ATTRIBUTE_VALUE\"","\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"","\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"","\"ATTRIBUTE_VALUE_UNQUOTED\"","\"AFTER_ATTRIBUTE_VALUE_QUOTED\"","\"SELF_CLOSING_START_TAG\"","\"BOGUS_COMMENT\"","\"MARKUP_DECLARATION_OPEN\"","\"COMMENT_START\"","\"COMMENT_START_DASH\"","\"COMMENT_LESS_THAN_SIGN\"","\"COMMENT_LESS_THAN_SIGN_BANG\"","\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"","\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"","\"COMMENT_END_DASH\"","\"COMMENT_END\"","\"COMMENT_END_BANG\"","\"BEFORE_DOCTYPE_NAME\"","\"DOCTYPE_NAME\"","\"AFTER_DOCTYPE_NAME\"","\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"","\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"","\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"","\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"","\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"","\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"","\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"","\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"","\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"","\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"","\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"","\"BOGUS_DOCTYPE\"","\"CDATA_SECTION\"","\"CDATA_SECTION_BRACKET\"","\"CDATA_SECTION_END\"","\"CHARACTER_REFERENCE\"","\"AMBIGUOUS_AMPERSAND\"","TokenizerMode","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","toAsciiLower","isWhitespace","isScriptDataDoubleEscapeSequenceEnd","getErrorForNumericCharacterReference","Tokenizer","_a","_b","writeCallback","initialName","attrNameFirstCh","attrLocations","ct","nextLocation","location","ch","IMPLICIT_END_TAG_REQUIRED","IMPLICIT_END_TAG_REQUIRED_THOROUGHLY","SCOPING_ELEMENTS_HTML","SCOPING_ELEMENTS_HTML_LIST","SCOPING_ELEMENTS_HTML_BUTTON","SCOPING_ELEMENTS_MATHML","SCOPING_ELEMENTS_SVG","TABLE_ROW_CONTEXT","TABLE_BODY_CONTEXT","TABLE_CONTEXT","TABLE_CELLS","OpenElementStack","treeAdapter","document","element","tagID","popped","idx","oldElement","newElement","insertionIdx","referenceElement","newElementID","targetIdx","tagNames","targetNS","namespace","elementIdx","htmlScope","exclusionId","NOAH_ARK_CAPACITY","EntryType","\"Marker\"","\"Element\"","MARKER","FormattingElementList","candidates","neAttrsLength","neAttrs","neTagName","neNamespaceURI","elementAttrs","neAttrsMap","neAttr","validCandidates","candidate","cAttr","bookmarkIdx","entryIndex","markerIdx","defaultTreeAdapter","parentNode","newNode","referenceNode","contentElement","templateElement","doctypeNode","publicId","systemId","mode","prevNode","text","recipientAttrsMap","recipient","attr","j","attrs","textNode","commentNode","endLocation","VALID_DOCTYPE_NAME","VALID_SYSTEM_ID","QUIRKS_MODE_SYSTEM_ID","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","hasPrefix","prefixes","prefix","isConforming","getDocumentMode","MIME_TYPES","DEFINITION_URL_ATTR","ADJUSTED_DEFINITION_URL_ATTR","SVG_ATTRS_ADJUSTMENT_MAP","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","EXITS_FOREIGN_CONTENT","causesExit","startTagToken","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isMathMLTextIntegrationPoint","ns","isHtmlIntegrationPoint","isIntegrationPoint","foreignNS","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","InsertionMode","\"INITIAL\"","\"BEFORE_HTML\"","\"BEFORE_HEAD\"","\"IN_HEAD\"","\"IN_HEAD_NO_SCRIPT\"","\"AFTER_HEAD\"","\"IN_BODY\"","\"TEXT\"","\"IN_TABLE\"","\"IN_TABLE_TEXT\"","\"IN_CAPTION\"","\"IN_COLUMN_GROUP\"","\"IN_TABLE_BODY\"","\"IN_ROW\"","\"IN_CELL\"","\"IN_SELECT\"","\"IN_SELECT_IN_TABLE\"","\"IN_TEMPLATE\"","\"AFTER_BODY\"","\"IN_FRAMESET\"","\"AFTER_FRAMESET\"","\"AFTER_AFTER_BODY\"","\"AFTER_AFTER_FRAMESET\"","BASE_LOC","TABLE_STRUCTURE_TAGS","defaultParserOptions","Parser","fragmentContext","scriptHandler","parser","opts","documentMock","rootElement","fragment","loc","err","beforeToken","isTop","tid","currentTagId","isHTML","currentToken","nextTokenizerState","docTypeNode","namespaceURI","tmpl","content","beforeElement","siblings","donor","closingToken","ctLoc","endLoc","listLength","endIndex","unopenIdx","selectIdx","openElement","startTagInForeignContent","endTagInForeignContent","aaObtainFormattingElementEntry","formattingElementEntry","p","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","aaInnerLoop","lastElement","nextElement","formattingElement","elementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","callAdoptionAgency","appendComment","appendCommentToRootHtmlElement","appendCommentToDocument","stopParsing","htmlElement","htmlLocation","bodyElement","bodyLocation","doctypeInInitialMode","tokenInInitialMode","startTagBeforeHtml","tokenBeforeHtml","endTagBeforeHtml","startTagBeforeHead","endTagBeforeHead","tokenBeforeHead","startTagInHead","endTagInHead","templateEndTagInHead","tokenInHead","startTagInHeadNoScript","endTagInHeadNoScript","tokenInHeadNoScript","errCode","startTagAfterHead","endTagAfterHead","tokenAfterHead","modeInBody","whitespaceCharacterInBody","characterInBody","htmlStartTagInBody","bodyStartTagInBody","framesetStartTagInBody","addressStartTagInBody","numberedHeaderStartTagInBody","preStartTagInBody","formStartTagInBody","inTemplate","listItemStartTagInBody","elementId","plaintextStartTagInBody","buttonStartTagInBody","aStartTagInBody","activeElementEntry","bStartTagInBody","nobrStartTagInBody","appletStartTagInBody","tableStartTagInBody","areaStartTagInBody","isHiddenInput","inputType","inputStartTagInBody","paramStartTagInBody","hrStartTagInBody","imageStartTagInBody","textareaStartTagInBody","xmpStartTagInBody","iframeStartTagInBody","rawTextStartTagInBody","selectStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","rtStartTagInBody","mathStartTagInBody","svgStartTagInBody","genericStartTagInBody","startTagInBody","bodyEndTagInBody","htmlEndTagInBody","endTagAfterBody","addressEndTagInBody","formEndTagInBody","formElement","pEndTagInBody","liEndTagInBody","ddEndTagInBody","numberedHeaderEndTagInBody","appletEndTagInBody","brEndTagInBody","endTagInBody","eofInBody","eofInTemplate","endTagInText","eofInText","characterInTable","captionStartTagInTable","colgroupStartTagInTable","colStartTagInTable","startTagInColumnGroup","tbodyStartTagInTable","tdStartTagInTable","startTagInTableBody","tableStartTagInTable","inputStartTagInTable","tokenInTable","formStartTagInTable","startTagInTable","endTagInTable","savedFosterParentingState","whitespaceCharacterInTableText","characterInTableText","tokenInTableText","TABLE_VOID_ELEMENTS","startTagInCaption","endTagInCaption","endTagInColumnGroup","tokenInColumnGroup","startTagInRow","endTagInTableBody","endTagInRow","startTagInCell","endTagInCell","startTagInSelect","endTagInSelect","startTagInSelectInTable","endTagInSelectInTable","startTagInTemplate","endTagInTemplate","startTagAfterBody","tokenAfterBody","startTagInFrameset","endTagInFrameset","startTagAfterFrameset","endTagAfterFrameset","startTagAfterAfterBody","tokenAfterAfterBody","startTagAfterAfterFrameset","nullCharacterInForeignContent","characterInForeignContent","popUntilHtmlOrIntegrationPoint","currentNs","getEscape","escapeWithRegex","re","last","attributeEscapeRegex","escapeAttribute","textEscapeRegex","escapeText","VOID_ELEMENTS","isVoidElement","defaultOpts","serialize","serializeChildNodes","serializeOuter","serializeNode","container","childNodes","currentNode","serializeElement","serializeTextNode","serializeCommentNode","serializeDocumentTypeNode","serializeAttributes","parentTn","parse$51","parseFragment","EOF","isDigit","isHexDigit","isUppercaseLetter","isLowercaseLetter","isLetter","isNonAscii","isNameStart","isName","isNonPrintable","isNewline","isWhiteSpace","isValidEscape","first","second","isIdentifierStart","third","isNumberStart","isBOM","CATEGORY","charCodeCategory","getCharCode","getNewlineLength","cmpChar","testStr","referenceCode","cmpStr","referenceStr","testCode","findWhiteSpaceStart","findWhiteSpaceEnd","findDecimalNumberEnd","consumeEscaped","maxOffset","consumeName","consumeNumber","sign","consumeBadUrlRemnants","decodeEscaped","escaped","names_default","MIN_SIZE","adoptBuffer","buffer","size","N$4","F$2","R$2","computeLinesAndColumns","host","sourceLength","lines","columns","column","OffsetToLocation","startLine","startColumn","filename","OFFSET_MASK","TYPE_SHIFT","BLOCK_OPEN_TOKEN","BLOCK_CLOSE_TOKEN","balancePair$1","blockTokens","boundIndex","min","max","TokenStream","tokenize","offsetAndType","balance","tokenCount","firstCharOffset","balanceCloseType","balanceStart","prevBalanceStart","balanceEnd","tokenType","tokenIndex","pairIndex","closeType","cursor","startToken","stopConsume","fn","tokens","tokenize$1","consumeNumericToken","consumeIdentLikeToken","nameStartOffset","consumeStringToken","endingCodePoint","nextCode","consumeUrlToken","releasedCursors","List","prev","prevOld","prevNew","nextOld","nextNew","thisArg","acc","initialValue","before","newItemOrList","oldItem","createCustomError","errorStack","message","MAX_LINE_LENGTH","OFFSET_CORRECTION","TAB_REPLACEMENT","sourceFragment","processLines","maxNumLength","baseLine","baseColumn","extraLines","endLine","cutLeft","SyntaxError$2","readSequence","space","recognizer","NOOP","EXCLAMATIONMARK$3","NUMBERSIGN$4","SEMICOLON","LEFTCURLYBRACKET$1","NULL","arrayMethods","listMethods","createParseContext","fetchParseValues","dict","processConfig","parseConfig","config","createParser","needPositions","onParseError","onParseErrorThrow","locationMap","startIndex","consumer","fallbackNode","fallback","offsetStart","offsetEnd","charCode","str","number","tokenName","m","head","tail","createTokenIterateAPI","source_","onToken","onComment","ast","require_base64","intToCharMap","bigA","bigZ","littleA","littleZ","zero","require_base64_vlq","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encoded","vlq","strLen","aStr","shift","continuation","aIndex","require_util","getArg","aName","aArgs","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","match","aUrl","urlGenerate","url","aParsedUrl","MAX_CACHED_INPUTS","lruMemoize","cache","temp","f","normalize","path","aPath","isAbsolute","exports","parts","part","up","join","aRoot","aPathUrl","aRootUrl","joined","relative","level","supportsNullProto","identity","s","toSetString","isProtoString","fromSetString","compareByOriginalPositions","cmp","strcmp","mappingA","mappingB","onlyCompareOriginal","compareByOriginalPositionsNoSource","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsDeflatedNoLine","aStr1","aStr2","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","parsed","require_array_set","util","has","hasNativeMap","ArraySet","set","len","aArray","aAllowDuplicates","sStr","isDuplicate","aIdx","require_mapping_list","generatedPositionAfter","lineA","lineB","columnA","columnB","MappingList","aCallback","aThisArg","aMapping","import_source_map_generator","base64VLQ","SourceMapGenerator","aSourceMapConsumer","generator","generatorOps","newMapping","mapping","sourceRelative","sourceFile","generated","original","aSourceFile","aSourceContent","newSources","newNames","aSourceMapPath","aOriginal","aGenerated","aSource","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","nameIdx","sourceIdx","mappings","lineDelta","aSources","aSourceRoot","map","trackNodes","generateSourceMap","activatedGenerated","activatedMapping","sourceMappingActive","origHandlersNode","handlers","nodeLine","nodeColumn","origHandlersEmit","auto","origHandlersResult","token_before_exports","safe","spec","PLUSSIGN$9","HYPHENMINUS$6","specPairs","safePairs","createMap","isWhiteSpaceRequired","pairs","nextCharCode","prevCode","REVERSESOLIDUS","processChildren","delimeter","createGenerator","types","publicApi","suppressAutoWhiteSpace","raw","createConvertor","walk","hasOwnProperty$3","noop$2","ensureFunction$1","invokeForType","getWalkersFromStructure","structure","nodeType","walkers","fieldTypes","walker","fieldType","getTypesFromConfig","createTypeIterator","fields","contextName","useContext","reverse","prevContextValue","field","ref","walkReducer","createFastTraveralMap","createWalker","iteratorsNatural","iteratorsReverse","breakWalk","skipNode","fastTraversalIteratorsNatural","fastTraversalIteratorsReverse","walkNode","enterRet","enter","iterators","leave","ret","root","found","noop$1","generateMultiplier","multiplier","comma","generateTypeOpts","generateSequence","combinator","compact","internalGenerate","term","decorate","forceBraces","generate$50","defaultLoc","locateMismatch","matchResult","longestMatch","mismatchNode","badNode","mismatchOffset","mismatchLength","entries","fromLoc","buildLoc","point","extra","SyntaxReferenceError","referenceName","SyntaxMatchError","syntax","keywords","properties","HYPHENMINUS$5","keyword","getKeywordDescriptor","getPropertyDescriptor","isCustomProperty","getVendorPrefix","secondDashIndex","custom","vendor","hack","cssWideKeywords","PLUSSIGN$8","HYPHENMINUS$4","N$3","DISALLOW_SIGN$1","ALLOW_SIGN$1","isDelim$1","skipSC","getNextToken","checkInteger$1","valueOffset","disallowSign","consumeB$1","offset_","anPlusB","PLUSSIGN$7","HYPHENMINUS$3","QUESTIONMARK$2","U$1","isDelim","startsWith$1","hexSequence","hexlen","allowDash","withQuestionMarkSequence","urange","consumedHexLength","calcFunctionNames","comparisonFunctionNames","steppedValueFunctionNames","trigNumberFunctionNames","trigAngleFunctionNames","otherNumberFunctionNames","expNumberDimensionPercentageFunctionNames","signFunctionNames","numberFunctionNames","percentageFunctionNames","dimensionFunctionNames","balancePair","charCodeAt","eqStr","actual","eqStrAny","isPostfixIeHack","outOfRange","num","numEnd","consumeFunction","balanceStash","math","functionNames","expectedTokenType","customIdent","dashedIdent","customPropertyName","hexColor","idSelector","declarationValue","anyValue","dimension","numberEnd","reverseSolidusOffset","unit","percentage","integer","tokenTypes","productionTypes","\"string\"","\"ident\"","\"percentage\"","\"zero\"","\"number\"","\"integer\"","\"urange\"","unitGroups","createDemensionTypes","units","\"dimension\"","\"angle\"","angle","\"decibel\"","decibel","\"frequency\"","frequency","\"flex\"","flex","\"length\"","\"resolution\"","resolution","\"semitones\"","semitones","\"time\"","time","createAttrUnit","unitSet","group","createGenericTypes","units_exports","SyntaxError$1","TAB$1","N$2","F$1","R$1","SPACE$3","NAME_CHAR","Scanner","TAB","N$1","F","R","SPACE$2","EXCLAMATIONMARK$2","NUMBERSIGN$3","AMPERSAND$5","APOSTROPHE$2","LEFTPARENTHESIS$2","RIGHTPARENTHESIS$2","ASTERISK$6","PLUSSIGN$6","COMMA","HYPERMINUS","LESSTHANSIGN$1","GREATERTHANSIGN$3","QUESTIONMARK$1","COMMERCIALAT","LEFTSQUAREBRACKET","RIGHTSQUAREBRACKET","LEFTCURLYBRACKET","VERTICALLINE$3","RIGHTCURLYBRACKET","INFINITY","COMBINATOR_PRECEDENCE","readMultiplierRange","scanner","readMultiplier","range","maybeMultiplied","maybeToken","readProperty$1","readTypeRange","readType","implicitGroup","readImplicitGroup","readKeywordOrFunction","regroupTerms","createGroup","combinators","subgroupStart","terms","prevToken","prevTokenPos","prevTokenIsFunction","stopCharCode","peek","readGroup","parse$50","noop","ensureFunction","walk$1","astToTokens","curNode","tmp","stringToTokens","prepare_tokens_default","MATCH","MISMATCH","DISALLOW_EMPTY","LEFTPARENTHESIS$1","RIGHTPARENTHESIS$1","createCondition","thenBranch","elseBranch","isFunctionType","isEnumCapatible","groupNode","replaceTypeInGraph","visited","replacements","buildGroupMatchGraph","thenClause","newGroupTerm","atLeastOneTermMatched","buildMultiplierMatchGraph","matchTerm","buildMatchGraphInternal","matchNode","booleanGroup","buildMatchGraph","syntaxTree","hasOwnProperty$2","STUB","TOKEN","OPEN_SYNTAX","CLOSE_SYNTAX","EXIT_REASON_MATCH","EXIT_REASON_MISMATCH","EXIT_REASON_ITERATION_LIMIT","ITERATION_LIMIT","totalIterationCount","reverseList","areStringsEqualCaseInsensitive","isContextEdgeDelim","isCommaContextStart","isCommaContextEnd","internalMatch","moveToNextToken","nextIndex","stateSnapshotFromSyntax","pushThenStack","thenStack","pushElseStack","nextState","elseStack","addTokenToMatch","state","matchStack","openSyntax","syntaxStack","closeSyntax","syntaxStash","iterationCount","exitReason","matchFlag","lastTokenIndex","syntaxDict","dictSyntax","syntaxes","keywordName","matchAsTree","matchGraph","hostStack","trace_exports","getTrace","isKeyword","isProperty","isType","shouldPutToTrace","hasMatch","testNode","trace","getFirstMatchNode","getLastMatchNode","matchFragments","findFragments","fragments","hasOwnProperty$1","isValidNumber","isValidLocation","createNodeStructureChecker","warn","valid","genTypesList","docsTypes","processStructure","docs","getStructureFromConfig","dumpMapSyntax","syntaxAsAst","dumpAtruleMapSyntax","atrule","valueHasVar","syntaxHasTopLevelCommaMultiplier","singleTerm","buildMatchResult","matchSyntax","lexer","useCssWideKeywords","Lexer","collectWarning","warns","descName","atruleName","prelude","descriptorName","propertyName","typeSyntax","typeName","declaration","fallbackBasename","property$1","syntaxRef","validate","broken","brokenMap","brokenTypes","brokenProperties","brokenTypesArray","brokenPropertiesArray","pretty","appendOrSet","extractProps","prop","obj","props","mergeDicts","ext","mix","dest","src","patch","exists","descriptorValue","createSyntax","parse","generate","extension","create_default","data_default","\"generic\"","\"cssWideKeywords\"","\"units\"","\"types\"","\"attachment\"","\"axis\"","\"color\"","\"combinator\"","\"counter\"","\"dasharray\"","\"gradient\"","\"hue\"","\"image\"","\"paint\"","\"position\"","\"quote\"","\"ratio\"","\"scroller\"","\"shadow\"","\"shape\"","\"size\"","\"symbol\"","\"target\"","\"xyz\"","\"age\"","\"autospace\"","\"bottom\"","\"gender\"","\"left\"","\"right\"","\"top\"","\"x\"","\"y\"","\"declaration\"","\"url\"","\"syntax\"","\"properties\"","\"all\"","\"animation\"","\"appearance\"","\"background\"","\"border\"","\"caret\"","\"clear\"","\"clip\"","\"columns\"","\"contain\"","\"container\"","\"content\"","\"cursor\"","\"cx\"","\"cy\"","\"d\"","\"direction\"","\"display\"","\"fill\"","\"filter\"","\"float\"","\"font\"","\"gap\"","\"grid\"","\"height\"","\"hyphens\"","\"inset\"","\"isolation\"","\"interactivity\"","\"margin\"","\"marker\"","\"mask\"","\"offset\"","\"opacity\"","\"order\"","\"orphans\"","\"outline\"","\"overflow\"","\"overlay\"","\"padding\"","\"page\"","\"perspective\"","\"quotes\"","\"r\"","\"resize\"","\"rotate\"","\"rx\"","\"ry\"","\"scale\"","\"stroke\"","\"transform\"","\"transition\"","\"translate\"","\"visibility\"","\"widows\"","\"width\"","\"zoom\"","\"behavior\"","\"cue\"","\"kerning\"","\"pause\"","\"rest\"","\"speak\"","\"atrules\"","\"charset\"","\"prelude\"","\"descriptors\"","\"fallback\"","\"negative\"","\"pad\"","\"prefix\"","\"range\"","\"suffix\"","\"symbols\"","\"system\"","\"document\"","\"src\"","\"import\"","\"keyframes\"","\"layer\"","\"media\"","\"namespace\"","\"bleed\"","\"marks\"","\"property\"","\"inherits\"","\"scope\"","\"supports\"","\"navigation\"","AnPlusB_exports","generate$49","name$48","parse$49","structure$48","PLUSSIGN$5","HYPHENMINUS$2","N","DISALLOW_SIGN","ALLOW_SIGN","checkInteger","checkTokenIsInteger","expectCharCode","msg","consumeB","Atrule_exports","generate$48","name$47","parse$48","structure$47","walkContext$9","consumeRaw$4","isDeclarationBlockAtrule","nameLowerCase","block","isDeclaration","AtrulePrelude_exports","generate$47","name$46","parse$47","structure$46","walkContext$8","AttributeSelector_exports","generate$46","name$45","parse$46","structure$45","DOLLARSIGN$1","ASTERISK$5","EQUALSSIGN$1","CIRCUMFLEXACCENT","VERTICALLINE$2","TILDE$2","getAttributeName","expectIdent","getOperator","matcher","flags","Block_exports","generate$45","name$44","parse$45","structure$44","walkContext$7","AMPERSAND$4","consumeRaw$3","consumeRule","consumeRawDeclaration","consumeDeclaration","isStyleBlock","Brackets_exports","generate$44","name$43","parse$44","structure$43","CDC_exports","generate$43","parse$43","structure$42","CDO_exports","generate$42","parse$42","structure$41","ClassSelector_exports","generate$41","name$40","parse$41","structure$40","FULLSTOP$2","Combinator_exports","generate$40","name$39","parse$40","structure$39","PLUSSIGN$4","SOLIDUS$7","GREATERTHANSIGN$2","TILDE$1","Comment_exports","generate$39","name$38","parse$39","structure$38","ASTERISK$4","SOLIDUS$6","Condition_exports","generate$38","name$37","parse$38","structure$37","likelyFeatureToken","featureOrRange","parentheses","res","Declaration_exports","generate$37","name$36","parse$37","structure$36","walkContext$6","EXCLAMATIONMARK$1","NUMBERSIGN$2","DOLLARSIGN","AMPERSAND$3","ASTERISK$3","PLUSSIGN$3","SOLIDUS$5","consumeValueRaw","consumeCustomPropertyRaw","consumeValue","startValueToken","readProperty","customProperty","parseValue","consumeRaw","important","valueStart","getImportant","DeclarationList_exports","generate$36","name$35","parse$36","structure$35","AMPERSAND$2","consumeRaw$2","Dimension_exports","generate$35","name$34","parse$35","structure$34","Feature_exports","generate$34","name$33","parse$34","structure$33","SOLIDUS$4","FeatureFunction_exports","generate$33","name$32","parse$33","structure$32","getFeatureParser","functionName","valueParser","FeatureRange_exports","generate$32","name$31","parse$32","structure$31","SOLIDUS$3","LESSTHANSIGN","EQUALSSIGN","GREATERTHANSIGN$1","readTerm","readComparison","expectColon","left","leftComparison","middle","rightComparison","right","Function_exports","generate$31","name$30","parse$31","structure$30","walkContext$5","GeneralEnclosed_exports","generate$30","name$29","parse$30","structure$29","Hash_exports","generate$29","name$28","parse$29","structure$28","Identifier_exports","generate$28","name$27","parse$28","structure$27","IdSelector_exports","generate$27","name$26","parse$27","structure$26","Layer_exports","generate$26","name$25","parse$26","structure$25","FULLSTOP$1","tokenStart","LayerList_exports","generate$25","name$24","parse$25","structure$24","MediaQuery_exports","generate$24","name$23","parse$24","structure$23","modifier","mediaType","condition","ident","identLowerCase","MediaQueryList_exports","generate$23","name$22","parse$23","structure$22","NestingSelector_exports","generate$22","name$21","parse$22","structure$21","AMPERSAND$1","Nth_exports","generate$21","parse$21","structure$20","selector","nth","Number_exports","generate$20","name$19","parse$20","structure$19","Operator_exports","generate$19","name$18","parse$19","structure$18","Parentheses_exports","generate$18","name$17","parse$18","structure$17","Percentage_exports","generate$17","name$16","parse$17","structure$16","PseudoClassSelector_exports","generate$16","name$15","parse$16","structure$15","walkContext$4","PseudoElementSelector_exports","generate$15","name$14","parse$15","structure$14","walkContext$3","Ratio_exports","generate$14","name$13","parse$14","structure$13","SOLIDUS$2","consumeTerm","Raw_exports","generate$13","parse$13","structure$12","getOffsetExcludeWS","endOffset","consumeUntil","excludeWhiteSpace","Rule_exports","generate$12","name$11","parse$12","structure$11","walkContext$2","consumeRaw$1","consumePrelude","Scope_exports","generate$11","name$10","parse$11","structure$10","limit","Selector_exports","generate$10","name$9","parse$10","structure$9","SelectorList_exports","generate$9","name$8","parse$9","structure$8","walkContext$1","REVERSE_SOLIDUS$2","QUOTATION_MARK$1","APOSTROPHE$1","decode$2","firstChar","decoded","escapeStart","escapeEnd","encode$1","quote","apostrophe","quoteCode","wsBeforeHexIsNeeded","String_exports","generate$8","name$7","parse$8","structure$7","StyleSheet_exports","generate$7","name$6","parse$7","structure$6","walkContext","EXCLAMATIONMARK","SupportsDeclaration_exports","generate$6","name$5","parse$6","structure$5","TypeSelector_exports","generate$5","name$4","parse$5","structure$4","ASTERISK$2","VERTICALLINE$1","eatIdentifierOrAsterisk","UnicodeRange_exports","generate$4","name$3","parse$4","structure$3","PLUSSIGN$2","HYPHENMINUS$1","QUESTIONMARK","eatHexSequence","eatQuestionMarkSequence","startsWith","scanUnicodeRange","hexLength","SPACE$1","REVERSE_SOLIDUS$1","QUOTATION_MARK","APOSTROPHE","LEFTPARENTHESIS","RIGHTPARENTHESIS","decode$1","encode","Url_exports","generate$3","parse$3","structure$2","Value_exports","generate$2","name$1","parse$2","structure$1","WhiteSpace_exports","generate$1","parse$1","SPACE","node_exports","lexer_default","NUMBERSIGN$1","ASTERISK$1","PLUSSIGN$1","HYPHENMINUS","SOLIDUS$1","U","defaultRecognizer","atrulePrelude_default","NUMBERSIGN","AMPERSAND","ASTERISK","PLUSSIGN","SOLIDUS","FULLSTOP","GREATERTHANSIGN","VERTICALLINE","TILDE","onWhiteSpace","getNode","selector_default","expression_default","var_default","isPlusMinusOperator","value_default","\"expression\"","\"var\"","scope_exports","nonContainerNameKeywords","container_default","nested","font_face_default","parseWithFallback","parseFunctions","atrule_default","parseLanguageRangeList","selectorList","identList","langList","parser_default","\"dir\"","\"has\"","\"lang\"","\"matches\"","\"is\"","\"where\"","\"not\"","\"slotted\"","\"host\"","walker_default","syntax_default","REVERSE_SOLIDUS","decode","UrlPolicy","placeholders","#placeholders","character","purpose","scheme","lower","rest","boundaries","mark","pathStart","TEXT_FONT_FAMILIES","TEXT_STYLE_LIMITS","component","TextPresentationStyleSchema","URL_FUNCTIONS","CssDocumentCodec","#urls","urls","diagnostics","declarations","urlCandidates","functions","imports","fontFaces","active","importing","cuts","output","removed","cut","spans","flat","marker","builtIn","priority","inspected","allowed","invalid","serialized","numeric","amount","pixels","families","permitted","font","identifiers","unresolved","remaining","existing","preamble","leading","additions","incoming","stylesheet","pieces","comments","located","kept","comment","piece","open","diagnostic","PARSER_ANCESTORS","BoundedHtmlParser","depth","#limit","#adapter","reference","#owners","template","markup","bounded","SecureIdentifier","random","byte"],"sources":["../node_modules/valibot/dist/index.mjs","../src/core/budget.ts","../src/core/html-content-model.ts","../src/core/document.ts","../src/core/catalog.ts","../node_modules/parse5/dist/common/unicode.js","../node_modules/parse5/dist/common/error-codes.js","../node_modules/parse5/dist/tokenizer/preprocessor.js","../node_modules/parse5/dist/common/token.js","../node_modules/parse5/node_modules/entities/dist/decode-codepoint.js","../node_modules/parse5/node_modules/entities/dist/internal/decode-shared.js","../node_modules/parse5/node_modules/entities/dist/generated/decode-data-html.js","../node_modules/parse5/node_modules/entities/dist/generated/decode-data-xml.js","../node_modules/parse5/node_modules/entities/dist/internal/bin-trie-flags.js","../node_modules/parse5/node_modules/entities/dist/decode.js","../node_modules/parse5/dist/common/html.js","../node_modules/parse5/dist/tokenizer/index.js","../node_modules/parse5/dist/parser/open-element-stack.js","../node_modules/parse5/dist/parser/formatting-element-list.js","../node_modules/parse5/dist/tree-adapters/default.js","../node_modules/parse5/dist/common/doctype.js","../node_modules/parse5/dist/common/foreign-content.js","../node_modules/parse5/dist/parser/index.js","../node_modules/parse5/node_modules/entities/dist/escape.js","../node_modules/parse5/dist/serializer/index.js","../node_modules/parse5/dist/index.js","../node_modules/css-tree/lib/tokenizer/char-code-definitions.js","../node_modules/css-tree/lib/tokenizer/utils.js","../node_modules/css-tree/lib/tokenizer/names.js","../node_modules/css-tree/lib/tokenizer/adopt-buffer.js","../node_modules/css-tree/lib/tokenizer/OffsetToLocation.js","../node_modules/css-tree/lib/tokenizer/TokenStream.js","../node_modules/css-tree/lib/tokenizer/index.js","../node_modules/css-tree/lib/utils/List.js","../node_modules/css-tree/lib/utils/create-custom-error.js","../node_modules/css-tree/lib/parser/SyntaxError.js","../node_modules/css-tree/lib/parser/sequence.js","../node_modules/css-tree/lib/parser/create.js","../node_modules/source-map-js/lib/base64.js","../node_modules/source-map-js/lib/base64-vlq.js","../node_modules/source-map-js/lib/util.js","../node_modules/source-map-js/lib/array-set.js","../node_modules/source-map-js/lib/mapping-list.js","../node_modules/source-map-js/lib/source-map-generator.js","../node_modules/css-tree/lib/generator/sourceMap.js","../node_modules/css-tree/lib/generator/token-before.js","../node_modules/css-tree/lib/generator/create.js","../node_modules/css-tree/lib/convertor/create.js","../node_modules/css-tree/lib/walker/create.js","../node_modules/css-tree/lib/definition-syntax/generate.js","../node_modules/css-tree/lib/lexer/error.js","../node_modules/css-tree/lib/utils/names.js","../node_modules/css-tree/lib/lexer/generic-const.js","../node_modules/css-tree/lib/lexer/generic-an-plus-b.js","../node_modules/css-tree/lib/lexer/generic-urange.js","../node_modules/css-tree/lib/lexer/generic.js","../node_modules/css-tree/lib/lexer/units.js","../node_modules/css-tree/lib/definition-syntax/SyntaxError.js","../node_modules/css-tree/lib/definition-syntax/scanner.js","../node_modules/css-tree/lib/definition-syntax/parse.js","../node_modules/css-tree/lib/definition-syntax/walk.js","../node_modules/css-tree/lib/lexer/prepare-tokens.js","../node_modules/css-tree/lib/lexer/match-graph.js","../node_modules/css-tree/lib/lexer/match.js","../node_modules/css-tree/lib/lexer/trace.js","../node_modules/css-tree/lib/lexer/search.js","../node_modules/css-tree/lib/lexer/structure.js","../node_modules/css-tree/lib/lexer/Lexer.js","../node_modules/css-tree/lib/syntax/config/mix.js","../node_modules/css-tree/lib/syntax/create.js","../node_modules/css-tree/dist/data.js","../node_modules/css-tree/lib/syntax/node/AnPlusB.js","../node_modules/css-tree/lib/syntax/node/Atrule.js","../node_modules/css-tree/lib/syntax/node/AtrulePrelude.js","../node_modules/css-tree/lib/syntax/node/AttributeSelector.js","../node_modules/css-tree/lib/syntax/node/Block.js","../node_modules/css-tree/lib/syntax/node/Brackets.js","../node_modules/css-tree/lib/syntax/node/CDC.js","../node_modules/css-tree/lib/syntax/node/CDO.js","../node_modules/css-tree/lib/syntax/node/ClassSelector.js","../node_modules/css-tree/lib/syntax/node/Combinator.js","../node_modules/css-tree/lib/syntax/node/Comment.js","../node_modules/css-tree/lib/syntax/node/Condition.js","../node_modules/css-tree/lib/syntax/node/Declaration.js","../node_modules/css-tree/lib/syntax/node/DeclarationList.js","../node_modules/css-tree/lib/syntax/node/Dimension.js","../node_modules/css-tree/lib/syntax/node/Feature.js","../node_modules/css-tree/lib/syntax/node/FeatureFunction.js","../node_modules/css-tree/lib/syntax/node/FeatureRange.js","../node_modules/css-tree/lib/syntax/node/Function.js","../node_modules/css-tree/lib/syntax/node/GeneralEnclosed.js","../node_modules/css-tree/lib/syntax/node/Hash.js","../node_modules/css-tree/lib/syntax/node/Identifier.js","../node_modules/css-tree/lib/syntax/node/IdSelector.js","../node_modules/css-tree/lib/syntax/node/Layer.js","../node_modules/css-tree/lib/syntax/node/LayerList.js","../node_modules/css-tree/lib/syntax/node/MediaQuery.js","../node_modules/css-tree/lib/syntax/node/MediaQueryList.js","../node_modules/css-tree/lib/syntax/node/NestingSelector.js","../node_modules/css-tree/lib/syntax/node/Nth.js","../node_modules/css-tree/lib/syntax/node/Number.js","../node_modules/css-tree/lib/syntax/node/Operator.js","../node_modules/css-tree/lib/syntax/node/Parentheses.js","../node_modules/css-tree/lib/syntax/node/Percentage.js","../node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js","../node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js","../node_modules/css-tree/lib/syntax/node/Ratio.js","../node_modules/css-tree/lib/syntax/node/Raw.js","../node_modules/css-tree/lib/syntax/node/Rule.js","../node_modules/css-tree/lib/syntax/node/Scope.js","../node_modules/css-tree/lib/syntax/node/Selector.js","../node_modules/css-tree/lib/syntax/node/SelectorList.js","../node_modules/css-tree/lib/utils/string.js","../node_modules/css-tree/lib/syntax/node/String.js","../node_modules/css-tree/lib/syntax/node/StyleSheet.js","../node_modules/css-tree/lib/syntax/node/SupportsDeclaration.js","../node_modules/css-tree/lib/syntax/node/TypeSelector.js","../node_modules/css-tree/lib/syntax/node/UnicodeRange.js","../node_modules/css-tree/lib/utils/url.js","../node_modules/css-tree/lib/syntax/node/Url.js","../node_modules/css-tree/lib/syntax/node/Value.js","../node_modules/css-tree/lib/syntax/node/WhiteSpace.js","../node_modules/css-tree/lib/syntax/node/index.js","../node_modules/css-tree/lib/syntax/config/lexer.js","../node_modules/css-tree/lib/syntax/scope/default.js","../node_modules/css-tree/lib/syntax/scope/atrulePrelude.js","../node_modules/css-tree/lib/syntax/scope/selector.js","../node_modules/css-tree/lib/syntax/function/expression.js","../node_modules/css-tree/lib/syntax/function/var.js","../node_modules/css-tree/lib/syntax/scope/value.js","../node_modules/css-tree/lib/syntax/scope/index.js","../node_modules/css-tree/lib/syntax/atrule/container.js","../node_modules/css-tree/lib/syntax/atrule/font-face.js","../node_modules/css-tree/lib/syntax/atrule/import.js","../node_modules/css-tree/lib/syntax/atrule/layer.js","../node_modules/css-tree/lib/syntax/atrule/media.js","../node_modules/css-tree/lib/syntax/atrule/nest.js","../node_modules/css-tree/lib/syntax/atrule/page.js","../node_modules/css-tree/lib/syntax/atrule/scope.js","../node_modules/css-tree/lib/syntax/atrule/starting-style.js","../node_modules/css-tree/lib/syntax/atrule/supports.js","../node_modules/css-tree/lib/syntax/atrule/index.js","../node_modules/css-tree/lib/syntax/pseudo/lang.js","../node_modules/css-tree/lib/syntax/pseudo/index.js","../node_modules/css-tree/lib/syntax/node/index-parse.js","../node_modules/css-tree/lib/syntax/config/parser.js","../node_modules/css-tree/lib/syntax/config/walker.js","../node_modules/css-tree/lib/syntax/index.js","../node_modules/css-tree/lib/utils/ident.js","../node_modules/css-tree/lib/index.js","../src/security/url-policy.ts","../src/security/text-presentation.ts","../src/codecs/css.ts","../src/security/bounded-parser.ts","../src/security/identity.ts"],"sourcesContent":["//#region src/storages/globalConfig/globalConfig.ts\nlet store$4;\nconst DEFAULT_CONFIG = {\n\tlang: void 0,\n\tmessage: void 0,\n\tabortEarly: void 0,\n\tabortPipeEarly: void 0\n};\n/**\n* Sets the global configuration.\n*\n* @param config The configuration.\n*/\nfunction setGlobalConfig(config$1) {\n\tstore$4 = {\n\t\t...store$4,\n\t\t...config$1\n\t};\n}\n/**\n* Returns the global configuration.\n*\n* @param config The config to merge.\n*\n* @returns The configuration.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalConfig(config$1) {\n\tif (!config$1 && !store$4) return DEFAULT_CONFIG;\n\treturn {\n\t\tlang: config$1?.lang ?? store$4?.lang,\n\t\tmessage: config$1?.message,\n\t\tabortEarly: config$1?.abortEarly ?? store$4?.abortEarly,\n\t\tabortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly\n\t};\n}\n/**\n* Deletes the global configuration.\n*/\nfunction deleteGlobalConfig() {\n\tstore$4 = void 0;\n}\n\n//#endregion\n//#region src/storages/globalMessage/globalMessage.ts\nlet store$3;\n/**\n* Sets a global error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setGlobalMessage(message$1, lang) {\n\tif (!store$3) store$3 = /* @__PURE__ */ new Map();\n\tstore$3.set(lang, message$1);\n}\n/**\n* Returns a global error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalMessage(lang) {\n\treturn store$3?.get(lang);\n}\n/**\n* Deletes a global error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteGlobalMessage(lang) {\n\tstore$3?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/schemaMessage/schemaMessage.ts\nlet store$2;\n/**\n* Sets a schema error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSchemaMessage(message$1, lang) {\n\tif (!store$2) store$2 = /* @__PURE__ */ new Map();\n\tstore$2.set(lang, message$1);\n}\n/**\n* Returns a schema error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSchemaMessage(lang) {\n\treturn store$2?.get(lang);\n}\n/**\n* Deletes a schema error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteSchemaMessage(lang) {\n\tstore$2?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/specificMessage/specificMessage.ts\nlet store$1;\n/**\n* Sets a specific error message.\n*\n* @param reference The identifier reference.\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSpecificMessage(reference, message$1, lang) {\n\tif (!store$1) store$1 = /* @__PURE__ */ new Map();\n\tif (!store$1.get(reference)) store$1.set(reference, /* @__PURE__ */ new Map());\n\tstore$1.get(reference).set(lang, message$1);\n}\n/**\n* Returns a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSpecificMessage(reference, lang) {\n\treturn store$1?.get(reference)?.get(lang);\n}\n/**\n* Deletes a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*/\nfunction deleteSpecificMessage(reference, lang) {\n\tstore$1?.get(reference)?.delete(lang);\n}\n\n//#endregion\n//#region src/utils/_stringify/_stringify.ts\n/**\n* Stringifies an unknown input to a literal or type string.\n*\n* @param input The unknown input.\n*\n* @returns A literal or type string.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _stringify(input) {\n\tconst type = typeof input;\n\tif (type === \"string\") return `\"${input}\"`;\n\tif (type === \"number\" || type === \"bigint\" || type === \"boolean\") return `${input}`;\n\tif (type === \"object\" || type === \"function\") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? \"null\";\n\treturn type;\n}\n\n//#endregion\n//#region src/utils/_addIssue/_addIssue.ts\n/**\n* Adds an issue to the dataset.\n*\n* @param context The issue context.\n* @param label The issue label.\n* @param dataset The input dataset.\n* @param config The configuration.\n* @param other The optional props.\n*\n* @internal\n*/\nfunction _addIssue(context, label, dataset, config$1, other) {\n\tconst input = other && \"input\" in other ? other.input : dataset.value;\n\tconst expected = other?.expected ?? context.expects ?? null;\n\tconst received = other?.received ?? /* @__PURE__ */ _stringify(input);\n\tconst issue = {\n\t\tkind: context.kind,\n\t\ttype: context.type,\n\t\tinput,\n\t\texpected,\n\t\treceived,\n\t\tmessage: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : \"R\"}eceived ${received}`,\n\t\trequirement: context.requirement,\n\t\tpath: other?.path,\n\t\tissues: other?.issues,\n\t\tlang: config$1.lang,\n\t\tabortEarly: config$1.abortEarly,\n\t\tabortPipeEarly: config$1.abortPipeEarly\n\t};\n\tconst isSchema = context.kind === \"schema\";\n\tconst message$1 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config$1.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);\n\tif (message$1 !== void 0) issue.message = typeof message$1 === \"function\" ? message$1(issue) : message$1;\n\tif (isSchema) dataset.typed = false;\n\tif (dataset.issues) dataset.issues.push(issue);\n\telse dataset.issues = [issue];\n}\n\n//#endregion\n//#region src/utils/_cloneDataset/_cloneDataset.ts\n/**\n* Creates a shallow copy of a dataset.\n*\n* Hint: The `value` is copied by reference, but the `issues` array is cloned\n* to avoid reusing mutable dataset state across multiple runs. Mutating a\n* returned object or array value can therefore affect later cache hits that\n* reuse the same cached output.\n*\n* @param dataset The output dataset.\n*\n* @returns The copied output dataset.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cloneDataset(dataset) {\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tvalue: dataset.value,\n\t\tissues: dataset.issues && [...dataset.issues]\n\t};\n}\n\n//#endregion\n//#region src/utils/_formatCase/_formatCase.ts\n/**\n* Splits a string into lowercase words and rejoins them with the given\n* separator and capitalization rules.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries. Whether the first or subsequent words are\n* capitalized is controlled by `capFirst` and `capRest`.\n*\n* Hint: Implemented in a single pass that emits directly to the result\n* string to avoid an intermediate `string[]` allocation. ASCII chars are\n* classified via char codes to skip `.toLowerCase()` and `.toUpperCase()`\n* method calls in the common case.\n*\n* Hint: Digits are treated as a separate character class, so `item2Name`\n* yields `item2` and `name` rather than `item`, `2` and `name`.\n*\n* @param input The input string.\n* @param separator The string inserted between words.\n* @param capFirst Whether to capitalize the first word.\n* @param capRest Whether to capitalize subsequent words.\n*\n* @returns The formatted string.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _formatCase(input, separator, capFirst, capRest) {\n\tlet result = \"\";\n\tlet firstWord = true;\n\tlet start = 0;\n\tlet prev = 0;\n\tlet prevPrev = 0;\n\tconst flush = (end) => {\n\t\tif (end > start) {\n\t\t\tlet word = input.slice(start, end).toLowerCase();\n\t\t\tif (firstWord ? capFirst : capRest) {\n\t\t\t\tconst firstCode = word.charCodeAt(0);\n\t\t\t\tif (firstCode >= 97 && firstCode <= 122) word = String.fromCharCode(firstCode - 32) + word.slice(1);\n\t\t\t\telse {\n\t\t\t\t\tconst charLen = firstCode >= 55296 && firstCode <= 56319 ? 2 : 1;\n\t\t\t\t\tword = word.slice(0, charLen).toUpperCase() + word.slice(charLen);\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult += firstWord ? word : separator + word;\n\t\t\tfirstWord = false;\n\t\t}\n\t};\n\tfor (let index = 0; index < input.length; index++) {\n\t\tconst code = input.charCodeAt(index);\n\t\tlet type;\n\t\tif (code === 32 || code === 9 || code === 10 || code === 11 || code === 12 || code === 13 || code === 45 || code === 95) {\n\t\t\tflush(index);\n\t\t\tstart = index + 1;\n\t\t\ttype = 0;\n\t\t} else if (code < 128) type = code >= 65 && code <= 90 ? 1 : code >= 97 && code <= 122 ? 2 : 3;\n\t\telse {\n\t\t\tconst char = input[index];\n\t\t\tconst charLower = char.toLowerCase();\n\t\t\ttype = charLower === char.toUpperCase() ? 3 : char === charLower ? 2 : 1;\n\t\t}\n\t\tif (type === 1 && (prev === 2 || prev === 3) && index > start) {\n\t\t\tflush(index);\n\t\t\tstart = index;\n\t\t} else if (type === 2 && prev === 1 && prevPrev === 1 && index - 1 > start) {\n\t\t\tflush(index - 1);\n\t\t\tstart = index - 1;\n\t\t}\n\t\tprevPrev = prev;\n\t\tprev = type;\n\t}\n\tflush(input.length);\n\treturn result;\n}\n\n//#endregion\n//#region src/utils/_getByteCount/_getByteCount.ts\nlet textEncoder;\n/**\n* Returns the byte count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The byte count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getByteCount(input) {\n\tif (!textEncoder) textEncoder = new TextEncoder();\n\treturn textEncoder.encode(input).length;\n}\n\n//#endregion\n//#region src/utils/_getGraphemeCount/_getGraphemeCount.ts\nlet segmenter;\n/**\n* Returns the grapheme count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The grapheme count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getGraphemeCount(input) {\n\tif (!segmenter) segmenter = new Intl.Segmenter();\n\tconst segments = segmenter.segment(input);\n\tlet count = 0;\n\tfor (const _ of segments) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_getLastMetadata/_getLastMetadata.ts\n/**\n* Returns the last top-level value of a given metadata type from a schema\n* using a breadth-first search that starts with the last item in the pipeline.\n*\n* @param schema The schema to search.\n* @param type The metadata type.\n*\n* @returns The value, if any.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getLastMetadata(schema, type) {\n\tif (\"pipe\" in schema) {\n\t\tconst nestedSchemas = [];\n\t\tfor (let index = schema.pipe.length - 1; index >= 0; index--) {\n\t\t\tconst item = schema.pipe[index];\n\t\t\tif (item.kind === \"schema\" && \"pipe\" in item) nestedSchemas.push(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === type) return item[type];\n\t\t}\n\t\tfor (const nestedSchema of nestedSchemas) {\n\t\t\tconst result = /* @__PURE__ */ _getLastMetadata(nestedSchema, type);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/utils/_getStandardProps/_getStandardProps.ts\nconst _standardCache = /* @__PURE__ */ new WeakMap();\n/**\n* Returns the Standard Schema properties.\n*\n* @param context The schema context.\n*\n* @returns The Standard Schema properties.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getStandardProps(context) {\n\tlet cached = _standardCache.get(context);\n\tif (!cached) {\n\t\tcached = {\n\t\t\tversion: 1,\n\t\t\tvendor: \"valibot\",\n\t\t\tvalidate(value$1) {\n\t\t\t\treturn context[\"~run\"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig());\n\t\t\t}\n\t\t};\n\t\t_standardCache.set(context, cached);\n\t}\n\treturn cached;\n}\n\n//#endregion\n//#region src/utils/_getWordCount/_getWordCount.ts\nlet store;\n/**\n* Returns the word count of the input.\n*\n* @param locales The locales to be used.\n* @param input The input to be measured.\n*\n* @returns The word count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getWordCount(locales, input) {\n\tif (!store) store = /* @__PURE__ */ new Map();\n\tconst key = String(locales);\n\tlet segmenter$1 = store.get(key);\n\tif (!segmenter$1) {\n\t\tsegmenter$1 = new Intl.Segmenter(locales, { granularity: \"word\" });\n\t\tstore.set(key, segmenter$1);\n\t}\n\tconst segments = segmenter$1.segment(input);\n\tlet count = 0;\n\tfor (const segment of segments) if (segment.isWordLike) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_isLuhnAlgo/_isLuhnAlgo.ts\n/**\n* Non-digit regex.\n*/\nconst NON_DIGIT_REGEX = /\\D/gu;\n/**\n* Checks whether a string with numbers corresponds to the luhn algorithm.\n*\n* @param input The input to be checked.\n*\n* @returns Whether input is valid.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isLuhnAlgo(input) {\n\tconst number$1 = input.replace(NON_DIGIT_REGEX, \"\");\n\tlet length$1 = number$1.length;\n\tlet bit = 1;\n\tlet sum = 0;\n\twhile (length$1) {\n\t\tconst value$1 = +number$1[--length$1];\n\t\tbit ^= 1;\n\t\tsum += bit ? [\n\t\t\t0,\n\t\t\t2,\n\t\t\t4,\n\t\t\t6,\n\t\t\t8,\n\t\t\t1,\n\t\t\t3,\n\t\t\t5,\n\t\t\t7,\n\t\t\t9\n\t\t][value$1] : value$1;\n\t}\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/utils/_isValidObjectKey/_isValidObjectKey.ts\n/**\n* Disallows inherited object properties and prevents object prototype\n* pollution by disallowing certain keys.\n*\n* @param object The object to check.\n* @param key The key to check.\n*\n* @returns Whether the key is allowed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isValidObjectKey(object$1, key) {\n\treturn Object.prototype.hasOwnProperty.call(object$1, key) && key !== \"__proto__\" && key !== \"prototype\" && key !== \"constructor\";\n}\n\n//#endregion\n//#region src/utils/_joinExpects/_joinExpects.ts\n/**\n* Joins multiple `expects` values with the given separator.\n*\n* @param values The `expects` values.\n* @param separator The separator.\n*\n* @returns The joined `expects` property.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _joinExpects(values$1, separator) {\n\tconst list = [...new Set(values$1)];\n\tif (list.length > 1) return `(${list.join(` ${separator} `)})`;\n\treturn list[0] ?? \"never\";\n}\n\n//#endregion\n//#region src/utils/entriesFromList/entriesFromList.ts\n/**\n* Creates an object entries definition from a list of keys and a schema.\n*\n* @param list A list of keys.\n* @param schema The schema of the keys.\n*\n* @returns The object entries.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromList(list, schema) {\n\tconst entries$1 = {};\n\tfor (const key of list) entries$1[key] = schema;\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/entriesFromObjects/entriesFromObjects.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromObjects(schemas) {\n\tconst entries$1 = {};\n\tfor (const schema of schemas) Object.assign(entries$1, schema.entries);\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/getDotPath/getDotPath.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDotPath(issue) {\n\tif (issue.path) {\n\t\tlet key = \"\";\n\t\tfor (const item of issue.path) if (typeof item.key === \"string\" || typeof item.key === \"number\") if (key) key += `.${item.key}`;\n\t\telse key += item.key;\n\t\telse return null;\n\t\treturn key;\n\t}\n\treturn null;\n}\n\n//#endregion\n//#region src/utils/isOfKind/isOfKind.ts\n/**\n* A generic type guard to check the kind of an object.\n*\n* @param kind The kind to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfKind(kind, object$1) {\n\treturn object$1.kind === kind;\n}\n\n//#endregion\n//#region src/utils/isOfType/isOfType.ts\n/**\n* A generic type guard to check the type of an object.\n*\n* @param type The type to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfType(type, object$1) {\n\treturn object$1.type === type;\n}\n\n//#endregion\n//#region src/utils/isValiError/isValiError.ts\n/**\n* A type guard to check if an error is a ValiError.\n*\n* @param error The error to check.\n*\n* @returns Whether its a ValiError.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isValiError(error) {\n\treturn error instanceof ValiError;\n}\n\n//#endregion\n//#region src/utils/ValiError/ValiError.ts\n/**\n* A Valibot error with useful information.\n*/\nvar ValiError = class extends Error {\n\t/**\n\t* Creates a Valibot error with useful information.\n\t*\n\t* @param issues The error issues.\n\t*/\n\tconstructor(issues) {\n\t\tsuper(issues[0].message);\n\t\tthis.name = \"ValiError\";\n\t\tthis.issues = issues;\n\t}\n};\n\n//#endregion\n//#region src/actions/args/args.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction args(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: args,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst argsDataset = this.schema[\"~run\"]({ value: args_ }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/args/argsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction argsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: argsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args$1) => {\n\t\t\t\tconst argsDataset = await schema[\"~run\"]({ value: args$1 }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/await/awaitAsync.ts\n/**\n* Creates an await transformation action.\n*\n* @returns An await action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction awaitAsync() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"await\",\n\t\treference: awaitAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/regex.ts\n/**\n* [Base64](https://en.wikipedia.org/wiki/Base64) regex.\n*/\nconst BASE64_REGEX = /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\n/**\n* [BIC](https://en.wikipedia.org/wiki/ISO_9362) regex.\n*/\nconst BIC_REGEX = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\n/**\n* [Cuid2](https://github.com/paralleldrive/cuid2) regex.\n*/\nconst CUID2_REGEX = /^[a-z][\\da-z]*$/u;\n/**\n* [Decimal](https://en.wikipedia.org/wiki/Decimal) regex.\n*/\nconst DECIMAL_REGEX = /^[+-]?(?:\\d*\\.)?\\d+$/u;\n/**\n* [Digits](https://en.wikipedia.org/wiki/Numerical_digit) regex.\n*/\nconst DIGITS_REGEX = /^\\d+$/u;\n/**\n* [Domain name](https://en.wikipedia.org/wiki/Domain_name) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n* ASCII-only validation. Internationalized domain names (IDNs) are not\n* supported, including Punycode-encoded labels.\n*/\nconst DOMAIN_REGEX = /^(?=.{1,253}$)(?:(?![Xx][Nn]--)[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$/u;\n/**\n* [Email address](https://en.wikipedia.org/wiki/Email_address) regex.\n*/\nconst EMAIL_REGEX = /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-z]+(?:[.-][\\da-z]+)*\\.[a-z]{2,}$/iu;\n/**\n* Emoji regex from [emoji-regex-xs](https://github.com/slevithan/emoji-regex-xs) v1.0.0 (MIT license).\n*\n* Hint: We decided against the newer `/^\\p{RGI_Emoji}+$/v` regex because it is\n* not supported in older runtimes and does not match all emoji.\n*/\nconst EMOJI_REGEX = /^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$/u;\n/**\n* [Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEXADECIMAL_REGEX = /^(?:0[hx])?[\\da-fA-F]+$/u;\n/**\n* [Hex color](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEX_COLOR_REGEX = /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\n/**\n* [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) regex.\n*/\nconst IMEI_REGEX = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\n/**\n* [IPv4](https://en.wikipedia.org/wiki/IPv4) regex.\n*/\nconst IPV4_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$/u;\n/**\n* [IPv6](https://en.wikipedia.org/wiki/IPv6) regex.\n*/\nconst IPV6_REGEX = /^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [IP](https://en.wikipedia.org/wiki/IP_address) regex.\n*/\nconst IP_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$|^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date regex.\n*/\nconst ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time regex.\n*/\nconst ISO_DATE_TIME_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time with seconds regex.\n*/\nconst ISO_DATE_TIME_SECOND_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time regex.\n*/\nconst ISO_TIME_REGEX = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time with seconds regex.\n*/\nconst ISO_TIME_SECOND_REGEX = /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp regex. Allows a\n* space as a date/time separator and an optional space before the UTC offset.\n*/\nconst ISO_TIMESTAMP_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}(?:\\.\\d{1,9})?(?:Z| ?[+-](?:0\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week regex.\n*/\nconst ISO_WEEK_REGEX = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\n/**\n* [JWS compact serialization](https://datatracker.ietf.org/doc/html/rfc7515#section-3.1)\n* regex.\n*\n* Hint: Empty payload and signature segments are allowed because the\n* Base64URL-encoded representation of an empty octet sequence is an empty\n* string.\n*/\nconst JWS_COMPACT_REGEX = /^(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)\\.(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)?\\.(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)?$/u;\n/**\n* [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code) regex.\n*/\nconst ISRC_REGEX = /^(?:[A-Z]{2}[A-Z\\d]{3}\\d{7}|[A-Z]{2}-[A-Z\\d]{3}-\\d{2}-\\d{5})$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 48 bit regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC48_REGEX = /^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){2}[\\da-fA-F]{4}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 64 bit regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC64_REGEX = /^(?:[\\da-fA-F]{2}:){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){3}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{4}:){3}[\\da-fA-F]{4}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC_REGEX = /^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){2}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{2}:){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){3}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{4}:){3}[\\da-fA-F]{4}$/u;\n/**\n* [Nano ID](https://github.com/ai/nanoid) regex.\n*/\nconst NANO_ID_REGEX = /^[\\w-]+$/u;\n/**\n* [Octal](https://en.wikipedia.org/wiki/Octal) regex.\n*/\nconst OCTAL_REGEX = /^(?:0o)?[0-7]+$/u;\n/**\n* [RFC 5322 email address](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) regex.\n*\n* Hint: This regex was taken from the [HTML Living Standard Specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) and does not perfectly represent RFC 5322.\n*/\nconst RFC_EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/**\n* [Slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) regex.\n*/\nconst SLUG_REGEX = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\n/**\n* [ULID](https://github.com/ulid/spec) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst ULID_REGEX = /^[\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{26}$/u;\n/**\n* [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) regex.\n*/\nconst UUID_REGEX = /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n\n//#endregion\n//#region src/actions/base64/base64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction base64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"base64\",\n\t\treference: base64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BASE64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Base64\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bic/bic.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bic(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bic\",\n\t\treference: bic,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BIC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"BIC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/brand/brand.ts\n/**\n* Creates a brand transformation action.\n*\n* @param name The brand name.\n*\n* @returns A brand action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction brand(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"brand\",\n\t\treference: brand,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bytes/bytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bytes\",\n\t\treference: bytes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 !== this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/check.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction check(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: check,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/checkAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: checkAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItems(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItems,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) for (let index = 0; index < dataset.value.length; index++) {\n\t\t\t\tconst item = dataset.value[index];\n\t\t\t\tif (!this.requirement(item, index, dataset.value)) _addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\tinput: item,\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\tvalue: item\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItemsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItemsAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItemsAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst requirementResults = await Promise.all(dataset.value.map(this.requirement));\n\t\t\t\tfor (let index = 0; index < dataset.value.length; index++) if (!requirementResults[index]) {\n\t\t\t\t\tconst item = dataset.value[index];\n\t\t\t\t\t_addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\t\tinput: item,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\tvalue: item\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/creditCard/creditCard.ts\n/**\n* Credit card regex.\n*/\nconst CREDIT_CARD_REGEX = /^(?:\\d{13,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\n/**\n* Sanitize regex.\n*/\nconst SANITIZE_REGEX = /[- ]/gu;\n/**\n* Provider regex list.\n*/\nconst PROVIDER_REGEX_LIST = [\n\t/^3[47]\\d{13}$/u,\n\t/^3(?:0[0-5]|[68]\\d)\\d{11,13}$/u,\n\t/^6(?:011|5\\d{2})\\d{12,15}$/u,\n\t/^(?:2131|1800|35\\d{3})\\d{11}$/u,\n\t/^(?:5[1-5]\\d{2}|222\\d|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)\\d{12}$/u,\n\t/^(?:6[27]\\d{14,17}|81\\d{14,17})$/u,\n\t/^4\\d{12}(?:\\d{3,6})?$/u\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction creditCard(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"credit_card\",\n\t\treference: creditCard,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tlet sanitized;\n\t\t\treturn CREDIT_CARD_REGEX.test(input) && (sanitized = input.replace(SANITIZE_REGEX, \"\")) && PROVIDER_REGEX_LIST.some((regex$1) => regex$1.test(sanitized)) && /* @__PURE__ */ _isLuhnAlgo(sanitized);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"credit card\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/cuid2/cuid2.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cuid2(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"cuid2\",\n\t\treference: cuid2,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: CUID2_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Cuid2\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/decimal/decimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction decimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"decimal\",\n\t\treference: decimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"decimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/description/description.ts\n/**\n* Creates a description metadata action.\n*\n* @param description_ The description text.\n*\n* @returns A description action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction description(description_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"description\",\n\t\treference: description,\n\t\tdescription: description_\n\t};\n}\n\n//#endregion\n//#region src/actions/digits/digits.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction digits(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"digits\",\n\t\treference: digits,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DIGITS_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"digits\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/domain/domain.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction domain(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"domain\",\n\t\treference: domain,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: DOMAIN_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"domain\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/email/email.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction email(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"email\",\n\t\treference: email,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/emoji/emoji.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction emoji(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"emoji\",\n\t\treference: emoji,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: EMOJI_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"emoji\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/empty/empty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction empty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"empty\",\n\t\treference: empty,\n\t\tasync: false,\n\t\texpects: \"0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > 0) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/endsWith/endsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction endsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ends_with\",\n\t\treference: endsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.endsWith(this.requirement)) _addIssue(this, \"end\", dataset, config$1, { received: `\"${dataset.value.slice(-this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/entries/entries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"entries\",\n\t\treference: entries,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count !== this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/everyItem/everyItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction everyItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"every_item\",\n\t\treference: everyItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.every(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/examples/examples.ts\n/**\n* Creates an examples metadata action.\n*\n* @param examples_ The examples.\n*\n* @returns An examples action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction examples(examples_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"examples\",\n\t\treference: examples,\n\t\texamples: examples_\n\t};\n}\n\n//#endregion\n//#region src/actions/excludes/excludes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction excludes(requirement, message$1) {\n\tconst received = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"excludes\",\n\t\treference: excludes,\n\t\tasync: false,\n\t\texpects: `!${received}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/filterItems/filterItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction filterItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"filter_items\",\n\t\treference: filterItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.filter(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/findItem/findItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction findItem(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"find_item\",\n\t\treference: findItem,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.find(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/finite/finite.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction finite(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"finite\",\n\t\treference: finite,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isFinite,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"finite\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/flavor/flavor.ts\n/**\n* Creates a flavor transformation action.\n*\n* @param name The flavor name.\n*\n* @returns A flavor action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction flavor(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"flavor\",\n\t\treference: flavor,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/graphemes/graphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction graphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"graphemes\",\n\t\treference: graphemes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/gtValue/gtValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction gtValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"gt_value\",\n\t\treference: gtValue,\n\t\tasync: false,\n\t\texpects: `>${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value > this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/guard/guard.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction guard(requirement, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"guard\",\n\t\treference: guard,\n\t\tasync: false,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) {\n\t\t\t\t_addIssue(this, \"input\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hash/hash.ts\n/**\n* Hash lengths object.\n*/\nconst HASH_LENGTHS = {\n\tmd4: 32,\n\tmd5: 32,\n\tsha1: 40,\n\tsha256: 64,\n\tsha384: 96,\n\tsha512: 128,\n\tripemd128: 32,\n\tripemd160: 40,\n\ttiger128: 32,\n\ttiger160: 40,\n\ttiger192: 48,\n\tcrc32: 8,\n\tcrc32b: 8,\n\tadler32: 8\n};\n/* @__NO_SIDE_EFFECTS__ */\nfunction hash(types, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hash\",\n\t\treference: hash,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RegExp(types.map((type) => `^[a-fA-F0-9]{${HASH_LENGTHS[type]}}$`).join(\"|\"), \"u\"),\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hash\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexadecimal/hexadecimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexadecimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hexadecimal\",\n\t\treference: hexadecimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEXADECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hexadecimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexColor/hexColor.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexColor(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hex_color\",\n\t\treference: hexColor,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEX_COLOR_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hex color\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/imei/imei.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction imei(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"imei\",\n\t\treference: imei,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\treturn IMEI_REGEX.test(input) && /* @__PURE__ */ _isLuhnAlgo(input);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"IMEI\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/includes/includes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction includes(requirement, message$1) {\n\tconst expects = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"includes\",\n\t\treference: includes,\n\t\tasync: false,\n\t\texpects,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received: `!${expects}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/integer/integer.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction integer(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"integer\",\n\t\treference: integer,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ip/ip.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ip(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ip\",\n\t\treference: ip,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IP\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv4/ipv4.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv4(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv4\",\n\t\treference: ipv4,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV4_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv4\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv6/ipv6.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv6(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv6\",\n\t\treference: ipv6,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV6_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv6\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isbn/utils/_isIsbn10.ts\n/**\n* [Validates an ISBN-10](https://en.wikipedia.org/wiki/ISBN#ISBN-10_check_digits).\n*\n* @param input The input value.\n*\n* @returns `true` if the input is a valid ISBN-10, `false` otherwise.\n*\n* @internal\n*/\nfunction _isIsbn10(input) {\n\tconst digits$1 = input.split(\"\").map((c) => c === \"X\" ? 10 : parseInt(c));\n\tlet sum = 0;\n\tfor (let i = 0; i < 10; i++) sum += digits$1[i] * (10 - i);\n\treturn sum % 11 === 0;\n}\n\n//#endregion\n//#region src/actions/isbn/utils/_isIsbn13.ts\n/**\n* [Validates an ISBN-13](https://en.wikipedia.org/wiki/ISBN#ISBN-13_check_digit_calculation).\n*\n* @param input The input value.\n*\n* @returns `true` if the input is a valid ISBN-13, `false` otherwise.\n*\n* @internal\n*/\nfunction _isIsbn13(input) {\n\tconst digits$1 = input.split(\"\").map((c) => parseInt(c));\n\tlet sum = 0;\n\tfor (let i = 0; i < 13; i++) sum += digits$1[i] * (i % 2 === 0 ? 1 : 3);\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/actions/isbn/isbn.ts\n/**\n* ISBN separator regex.\n*/\nconst ISBN_SEPARATOR_REGEX = /[- ]/gu;\n/**\n* ISBN-10 detection regex.\n*/\nconst ISBN_10_DETECTION_REGEX = /^\\d{9}[\\dX]$/u;\n/**\n* ISBN-13 detection regex.\n*/\nconst ISBN_13_DETECTION_REGEX = /^\\d{13}$/u;\n/* @__NO_SIDE_EFFECTS__ */\nfunction isbn(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"isbn\",\n\t\treference: isbn,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tconst replacedInput = input.replace(ISBN_SEPARATOR_REGEX, \"\");\n\t\t\tif (ISBN_10_DETECTION_REGEX.test(replacedInput)) return _isIsbn10(replacedInput);\n\t\t\telse if (ISBN_13_DETECTION_REGEX.test(replacedInput)) return _isIsbn13(replacedInput);\n\t\t\treturn false;\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"ISBN\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isrc/isrc.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isrc(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"isrc\",\n\t\treference: isrc,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISRC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ISRC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDate/isoDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDate(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date\",\n\t\treference: isoDate,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDateTime/isoDateTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDateTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date_time\",\n\t\treference: isoDateTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date-time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDateTimeSecond/isoDateTimeSecond.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDateTimeSecond(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date_time_second\",\n\t\treference: isoDateTimeSecond,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_TIME_SECOND_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date-time-second\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTime/isoTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time\",\n\t\treference: isoTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimeSecond/isoTimeSecond.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimeSecond(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time_second\",\n\t\treference: isoTimeSecond,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_SECOND_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time-second\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimestamp/isoTimestamp.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimestamp(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_timestamp\",\n\t\treference: isoTimestamp,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIMESTAMP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"timestamp\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoWeek/isoWeek.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoWeek(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_week\",\n\t\treference: isoWeek,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_WEEK_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"week\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/jwsCompact/jwsCompact.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction jwsCompact(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"jws_compact\",\n\t\treference: jwsCompact,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: JWS_COMPACT_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"JWS compact\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/length/length.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction length(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"length\",\n\t\treference: length,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length !== this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ltValue/ltValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ltValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"lt_value\",\n\t\treference: ltValue,\n\t\tasync: false,\n\t\texpects: `<${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value < this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac/mac.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac\",\n\t\treference: mac,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac48/mac48.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac48(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac48\",\n\t\treference: mac48,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC48_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"48-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac64/mac64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac64\",\n\t\treference: mac64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"64-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mapItems/mapItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"map_items\",\n\t\treference: mapItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.map(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxBytes/maxBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_bytes\",\n\t\treference: maxBytes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 > this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxEntries/maxEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_entries\",\n\t\treference: maxEntries,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count > this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxGraphemes/maxGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_graphemes\",\n\t\treference: maxGraphemes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxLength/maxLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_length\",\n\t\treference: maxLength,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxSize/maxSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_size\",\n\t\treference: maxSize,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size > this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxValue/maxValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_value\",\n\t\treference: maxValue,\n\t\tasync: false,\n\t\texpects: `<=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value <= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxWords/maxWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_words\",\n\t\treference: maxWords,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/metadata/metadata.ts\n/**\n* Creates a custom metadata action.\n*\n* @param metadata_ The metadata object.\n*\n* @returns A metadata action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction metadata(metadata_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"metadata\",\n\t\treference: metadata,\n\t\tmetadata: metadata_\n\t};\n}\n\n//#endregion\n//#region src/actions/mimeType/mimeType.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mimeType(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mime_type\",\n\t\treference: mimeType,\n\t\tasync: false,\n\t\texpects: /* @__PURE__ */ _joinExpects(requirement.map((option) => `\"${option}\"`), \"|\"),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.includes(dataset.value.type)) _addIssue(this, \"MIME type\", dataset, config$1, { received: `\"${dataset.value.type}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minBytes/minBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_bytes\",\n\t\treference: minBytes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 < this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minEntries/minEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_entries\",\n\t\treference: minEntries,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count < this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minGraphemes/minGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_graphemes\",\n\t\treference: minGraphemes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minLength/minLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_length\",\n\t\treference: minLength,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minSize/minSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_size\",\n\t\treference: minSize,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size < this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minValue/minValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_value\",\n\t\treference: minValue,\n\t\tasync: false,\n\t\texpects: `>=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value >= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minWords/minWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_words\",\n\t\treference: minWords,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/multipleOf/multipleOf.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction multipleOf(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"multiple_of\",\n\t\treference: multipleOf,\n\t\tasync: false,\n\t\texpects: `%${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value % this.requirement != 0) _addIssue(this, \"multiple\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nanoid/nanoid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nanoid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"nanoid\",\n\t\treference: nanoid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: NANO_ID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Nano ID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nonEmpty/nonEmpty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonEmpty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"non_empty\",\n\t\treference: nonEmpty,\n\t\tasync: false,\n\t\texpects: \"!0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === 0) _addIssue(this, \"length\", dataset, config$1, { received: \"0\" });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/normalize/normalize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction normalize(form) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"normalize\",\n\t\treference: normalize,\n\t\tasync: false,\n\t\tform,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.normalize(this.form);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notBytes/notBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_bytes\",\n\t\treference: notBytes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 === this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notEntries/notEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_entries\",\n\t\treference: notEntries,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count === this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notGraphemes/notGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_graphemes\",\n\t\treference: notGraphemes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notLength/notLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_length\",\n\t\treference: notLength,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notSize/notSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_size\",\n\t\treference: notSize,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size === this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValue/notValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_value\",\n\t\treference: notValue,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? `!${requirement.toJSON()}` : `!${/* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement <= dataset.value && this.requirement >= dataset.value) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValues/notValues.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValues(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_values\",\n\t\treference: notValues,\n\t\tasync: false,\n\t\texpects: `!${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement.some((value$1) => value$1 <= dataset.value && value$1 >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notWords/notWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_words\",\n\t\treference: notWords,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/octal/octal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction octal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"octal\",\n\t\treference: octal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: OCTAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"octal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseBoolean/parseBoolean.ts\nconst TRUTHY = [\n\ttrue,\n\t1,\n\t\"true\",\n\t\"1\",\n\t\"yes\",\n\t\"y\",\n\t\"on\",\n\t\"enabled\"\n];\nconst FALSY = [\n\tfalse,\n\t0,\n\t\"false\",\n\t\"0\",\n\t\"no\",\n\t\"n\",\n\t\"off\",\n\t\"disabled\"\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseBoolean(config$1, message$1) {\n\tconst normalize$1 = (v) => typeof v === \"string\" ? v.toLowerCase() : v;\n\tconst truthyRaw = config$1?.truthy ?? TRUTHY;\n\tconst falsyRaw = config$1?.falsy ?? FALSY;\n\tconst truthy = config$1?.truthy ? config$1.truthy.map(normalize$1) : TRUTHY;\n\tconst falsy = config$1?.falsy ? config$1.falsy.map(normalize$1) : FALSY;\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_boolean\",\n\t\treference: parseBoolean,\n\t\texpects: /* @__PURE__ */ _joinExpects([...truthyRaw, ...falsyRaw].map(_stringify), \"|\"),\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\tconst input = normalize$1(dataset.value);\n\t\t\tif (truthy.includes(input)) dataset.value = true;\n\t\t\telse if (falsy.includes(input)) dataset.value = false;\n\t\t\telse {\n\t\t\t\t_addIssue(this, \"boolean\", dataset, config$2);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseJson/parseJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_json\",\n\t\treference: parseJson,\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tdataset.value = JSON.parse(dataset.value, this.config?.reviver);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/utils/_isPartiallyTyped/_isPartiallyTyped.ts\n/**\n* Checks if a dataset is partially typed.\n*\n* @param dataset The dataset to check.\n* @param paths The paths to check.\n*\n* @returns Whether it is partially typed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isPartiallyTyped(dataset, paths) {\n\tif (dataset.issues) for (const path of paths) for (const issue of dataset.issues) {\n\t\tlet typed = false;\n\t\tconst bound = Math.min(path.length, issue.path?.length ?? 0);\n\t\tfor (let index = 0; index < bound; index++) if (path[index] !== issue.path[index].key && (path[index] !== \"$\" || issue.path[index].type !== \"array\")) {\n\t\t\ttyped = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!typed) return false;\n\t}\n\treturn true;\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheck.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheck(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheckAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheckAsync(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheck.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheck(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\taction({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheckAsync.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheckAsync(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tawait action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransform.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransform(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransform,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst output = action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransformAsync.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransformAsync(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransformAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst output = await action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/readonly/readonly.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction readonly() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"readonly\",\n\t\treference: readonly,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/reduceItems/reduceItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction reduceItems(operation, initial) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"reduce_items\",\n\t\treference: reduceItems,\n\t\tasync: false,\n\t\toperation,\n\t\tinitial,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.reduce(this.operation, this.initial);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/regex/regex.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction regex(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"regex\",\n\t\treference: regex,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"format\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returns.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returns(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returns,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst returnsDataset = this.schema[\"~run\"]({ value: func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returnsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returnsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returnsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args_) => {\n\t\t\t\tconst returnsDataset = await this.schema[\"~run\"]({ value: await func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rfcEmail/rfcEmail.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction rfcEmail(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"rfc_email\",\n\t\treference: rfcEmail,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RFC_EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/safeInteger/safeInteger.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeInteger(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"safe_integer\",\n\t\treference: safeInteger,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isSafeInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"safe integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/size/size.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction size(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"size\",\n\t\treference: size,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size !== this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/slug/slug.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction slug(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"slug\",\n\t\treference: slug,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: SLUG_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"slug\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/someItem/someItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction someItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"some_item\",\n\t\treference: someItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.some(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/sortItems/sortItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction sortItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"sort_items\",\n\t\treference: sortItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.sort(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/startsWith/startsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction startsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"starts_with\",\n\t\treference: startsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.startsWith(this.requirement)) _addIssue(this, \"start\", dataset, config$1, { received: `\"${dataset.value.slice(0, this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/stringifyJson/stringifyJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction stringifyJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"stringify_json\",\n\t\treference: stringifyJson,\n\t\tmessage: message$1,\n\t\tconfig: config$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tconst output = JSON.stringify(dataset.value, this.config?.replacer, this.config?.space);\n\t\t\t\tif (output === void 0) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t\tdataset.value = output;\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/title/title.ts\n/**\n* Creates a title metadata action.\n*\n* @param title_ The title text.\n*\n* @returns A title action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction title(title_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"title\",\n\t\treference: title,\n\t\ttitle: title_\n\t};\n}\n\n//#endregion\n//#region src/actions/toBigint/toBigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBigint(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_bigint\",\n\t\treference: toBigint,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = BigInt(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"bigint\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toBoolean/toBoolean.ts\n/**\n* Creates a to boolean transformation action.\n*\n* @returns A to boolean action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBoolean() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_boolean\",\n\t\treference: toBoolean,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = Boolean(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toCamelCase/toCamelCase.ts\n/**\n* Creates a to camel case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `parseUrlValue`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `item2Name`).\n*\n* @returns A to camel case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toCamelCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_camel_case\",\n\t\treference: toCamelCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"\", false, true);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toDate/toDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toDate(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_date\",\n\t\treference: toDate,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = new Date(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"date\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"date\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toKebabCase/toKebabCase.ts\n/**\n* Creates a to kebab case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `parse-url-value`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `item2-name`).\n*\n* @returns A to kebab case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toKebabCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_kebab_case\",\n\t\treference: toKebabCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"-\", false, false);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toLowerCase/toLowerCase.ts\n/**\n* Creates a to lower case transformation action.\n*\n* @returns A to lower case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toLowerCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_lower_case\",\n\t\treference: toLowerCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toLowerCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMaxValue/toMaxValue.ts\n/**\n* Creates a to max value transformation action.\n*\n* @param requirement The maximum value.\n*\n* @returns A to max value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMaxValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_max_value\",\n\t\treference: toMaxValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value > this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMinValue/toMinValue.ts\n/**\n* Creates a to min value transformation action.\n*\n* @param requirement The minimum value.\n*\n* @returns A to min value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMinValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_min_value\",\n\t\treference: toMinValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value < this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toNumber/toNumber.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toNumber(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_number\",\n\t\treference: toNumber,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = Number(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toPascalCase/toPascalCase.ts\n/**\n* Creates a to pascal case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `ParseUrlValue`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `Item2Name`).\n*\n* @returns A to pascal case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toPascalCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_pascal_case\",\n\t\treference: toPascalCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"\", true, true);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toSnakeCase/toSnakeCase.ts\n/**\n* Creates a to snake case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `parse_url_value`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `item2_name`).\n*\n* @returns A to snake case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toSnakeCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_snake_case\",\n\t\treference: toSnakeCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"_\", false, false);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toString/toString.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toString(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_string\",\n\t\treference: toString,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = String(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"string\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toUpperCase/toUpperCase.ts\n/**\n* Creates a to upper case transformation action.\n*\n* @returns A to upper case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toUpperCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_upper_case\",\n\t\treference: toUpperCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toUpperCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transform.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transform(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transform,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transformAsync.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transformAsync(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transformAsync,\n\t\tasync: true,\n\t\toperation,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trim/trim.ts\n/**\n* Creates a trim transformation action.\n*\n* @returns A trim action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trim() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim\",\n\t\treference: trim,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trim();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimEnd/trimEnd.ts\n/**\n* Creates a trim end transformation action.\n*\n* @returns A trim end action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimEnd() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_end\",\n\t\treference: trimEnd,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimEnd();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimStart/trimStart.ts\n/**\n* Creates a trim start transformation action.\n*\n* @returns A trim start action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimStart() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_start\",\n\t\treference: trimStart,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimStart();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ulid/ulid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ulid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ulid\",\n\t\treference: ulid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ULID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ULID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/url/url.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction url(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"url\",\n\t\treference: url,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\ttry {\n\t\t\t\tnew URL(input);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"URL\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/uuid/uuid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction uuid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"uuid\",\n\t\treference: uuid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: UUID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"UUID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/value/value.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction value(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"value\",\n\t\treference: value,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(this.requirement <= dataset.value && this.requirement >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/values/values.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction values(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"values\",\n\t\treference: values,\n\t\tasync: false,\n\t\texpects: `${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.some((value$1) => value$1 <= dataset.value && value$1 >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/words/words.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction words(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"words\",\n\t\treference: words,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/const.ts\nconst ABORT_EARLY_CONFIG = { abortEarly: true };\n\n//#endregion\n//#region src/methods/assert/assert.ts\n/**\n* Checks if the input matches the schema. As this is an assertion function, it\n* can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*/\nfunction assert(schema, input) {\n\tconst issues = schema[\"~run\"]({ value: input }, ABORT_EARLY_CONFIG).issues;\n\tif (issues) throw new ValiError(issues);\n}\n\n//#endregion\n//#region src/methods/cache/_LruCache.ts\n/**\n* Efficient LRU cache using Map iteration order.\n*/\nvar _LruCache = class {\n\tconstructor(config$1) {\n\t\tthis.refCount = 0;\n\t\tthis.maxSize = config$1?.maxSize ?? 1e3;\n\t\tthis.maxAge = config$1?.maxAge ?? Infinity;\n\t\tthis.hasMaxAge = isFinite(this.maxAge);\n\t}\n\t/**\n\t* Stringifies an unknown input to a cache key component.\n\t*\n\t* @param input The unknown input.\n\t*\n\t* @returns A cache key component.\n\t*/\n\tstringify(input) {\n\t\tconst type = typeof input;\n\t\tif (type === \"string\") return `\"${input}\"`;\n\t\tif (type === \"number\" || type === \"boolean\") return `${input}`;\n\t\tif (type === \"bigint\") return `${input}n`;\n\t\tif (type === \"object\" || type === \"function\") {\n\t\t\tif (input) {\n\t\t\t\tthis.refIds ?? (this.refIds = /* @__PURE__ */ new WeakMap());\n\t\t\t\tlet id = this.refIds.get(input);\n\t\t\t\tif (!id) {\n\t\t\t\t\tid = ++this.refCount;\n\t\t\t\t\tthis.refIds.set(input, id);\n\t\t\t\t}\n\t\t\t\treturn `#${id}`;\n\t\t\t}\n\t\t\treturn \"null\";\n\t\t}\n\t\treturn type;\n\t}\n\t/**\n\t* Creates a cache key from input and config.\n\t*\n\t* @param input The input value.\n\t* @param config The parse configuration.\n\t*\n\t* @returns The cache key.\n\t*/\n\tkey(input, config$1 = {}) {\n\t\treturn `${this.stringify(input)}|${this.stringify(config$1.lang)}|${this.stringify(config$1.message)}|${this.stringify(config$1.abortEarly)}|${this.stringify(config$1.abortPipeEarly)}`;\n\t}\n\t/**\n\t* Gets a value from the cache by key.\n\t*\n\t* @param key The cache key.\n\t*\n\t* @returns The cached value.\n\t*/\n\tget(key) {\n\t\tif (!this.store) return void 0;\n\t\tconst entry = this.store.get(key);\n\t\tif (!entry) return void 0;\n\t\tif (this.hasMaxAge && Date.now() - entry[1] > this.maxAge) {\n\t\t\tthis.store.delete(key);\n\t\t\treturn;\n\t\t}\n\t\tthis.store.delete(key);\n\t\tthis.store.set(key, entry);\n\t\treturn entry[0];\n\t}\n\t/**\n\t* Sets a value in the cache by key.\n\t*\n\t* @param key The cache key.\n\t* @param value The cached value.\n\t*/\n\tset(key, value$1) {\n\t\tthis.store ?? (this.store = /* @__PURE__ */ new Map());\n\t\tthis.store.delete(key);\n\t\tconst timestamp = this.hasMaxAge ? Date.now() : 0;\n\t\tthis.store.set(key, [value$1, timestamp]);\n\t\tif (this.store.size > this.maxSize) this.store.delete(this.store.keys().next().value);\n\t}\n\t/**\n\t* Clears all entries from the cache.\n\t*/\n\tclear() {\n\t\tthis.store?.clear();\n\t}\n};\n\n//#endregion\n//#region src/methods/cache/cache.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cache(schema, config$1) {\n\treturn {\n\t\t...schema,\n\t\tcacheConfig: config$1,\n\t\tcache: new _LruCache(config$1),\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, runConfig) {\n\t\t\tconst key = this.cache.key(dataset.value, runConfig);\n\t\t\tlet outputDataset = this.cache.get(key);\n\t\t\tif (!outputDataset) this.cache.set(key, outputDataset = schema[\"~run\"](dataset, runConfig));\n\t\t\treturn /* @__PURE__ */ _cloneDataset(outputDataset);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/cache/cacheAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cacheAsync(schema, config$1) {\n\tlet activeRuns;\n\treturn {\n\t\t...schema,\n\t\tasync: true,\n\t\tcacheConfig: config$1,\n\t\tcache: new _LruCache(config$1),\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, runConfig) {\n\t\t\tconst key = this.cache.key(dataset.value, runConfig);\n\t\t\tconst cached = this.cache.get(key);\n\t\t\tif (cached) return /* @__PURE__ */ _cloneDataset(cached);\n\t\t\tlet promise$1 = activeRuns?.get(key);\n\t\t\tif (!promise$1) {\n\t\t\t\tactiveRuns ?? (activeRuns = /* @__PURE__ */ new Map());\n\t\t\t\tpromise$1 = Promise.resolve(schema[\"~run\"](dataset, runConfig));\n\t\t\t\tactiveRuns.set(key, promise$1);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst outputDataset = await promise$1;\n\t\t\t\tthis.cache.set(key, outputDataset);\n\t\t\t\treturn /* @__PURE__ */ _cloneDataset(outputDataset);\n\t\t\t} finally {\n\t\t\t\tactiveRuns?.delete(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/config/config.ts\n/**\n* Changes the local configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param config The parse configuration.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction config(schema, config$1) {\n\treturn {\n\t\t...schema,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config_) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config_,\n\t\t\t\t...config$1\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getFallback/getFallback.ts\n/**\n* Returns the fallback value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The output dataset if available.\n* @param config The config if available.\n*\n* @returns The fallback value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallback(schema, dataset, config$1) {\n\treturn typeof schema.fallback === \"function\" ? schema.fallback(dataset, config$1) : schema.fallback;\n}\n\n//#endregion\n//#region src/methods/fallback/fallback.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallback(schema, fallback$1) {\n\treturn {\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/fallback/fallbackAsync.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallbackAsync(schema, fallback$1) {\n\treturn {\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tasync: true,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = await schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: await /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/flatten/flatten.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction flatten(issues) {\n\tconst flatErrors = {};\n\tfor (const issue of issues) if (issue.path) {\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) {\n\t\t\tif (!flatErrors.nested) flatErrors.nested = {};\n\t\t\tif (Object.prototype.hasOwnProperty.call(flatErrors.nested, dotPath)) flatErrors.nested[dotPath].push(issue.message);\n\t\t\telse flatErrors.nested[dotPath] = [issue.message];\n\t\t} else if (flatErrors.other) flatErrors.other.push(issue.message);\n\t\telse flatErrors.other = [issue.message];\n\t} else if (flatErrors.root) flatErrors.root.push(issue.message);\n\telse flatErrors.root = [issue.message];\n\treturn flatErrors;\n}\n\n//#endregion\n//#region src/methods/forward/forward.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forward(action, path) {\n\treturn {\n\t\t...action,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/forward/forwardAsync.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forwardAsync(action, path) {\n\treturn {\n\t\t...action,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = await action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getDefault/getDefault.ts\n/**\n* Returns the default value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The input dataset if available.\n* @param config The config if available.\n*\n* @returns The default value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefault(schema, dataset, config$1) {\n\treturn typeof schema.default === \"function\" ? schema.default(dataset, config$1) : schema.default;\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaults.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefaults(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getDefaults(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getDefaults);\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaultsAsync.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getDefaultsAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getDefaultsAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getDefaultsAsync));\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDescription/getDescription.ts\n/**\n* Returns the description of the schema.\n*\n* If multiple descriptions are defined, the last one of the highest level is\n* returned. If no description is defined, `undefined` is returned.\n*\n* @param schema The schema to get the description from.\n*\n* @returns The description, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDescription(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"description\");\n}\n\n//#endregion\n//#region src/methods/getExamples/getExamples.ts\n/**\n* Returns the examples of a schema.\n*\n* If multiple examples are defined, it concatenates them using depth-first\n* search. If no examples are defined, an empty array is returned.\n*\n* @param schema The schema to get the examples from.\n*\n* @returns The examples, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getExamples(schema) {\n\tconst examples$1 = [];\n\tfunction depthFirstCollect(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstCollect(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"examples\") for (const example of item.examples) examples$1.push(example);\n\t\t}\n\t}\n\tdepthFirstCollect(schema);\n\treturn examples$1;\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacks.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallbacks(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getFallbacks(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getFallbacks);\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacksAsync.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getFallbacksAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getFallbacksAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getFallbacksAsync));\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getMetadata/getMetadata.ts\n/**\n* Returns the metadata of a schema.\n*\n* If multiple metadata are defined, it shallowly merges them using depth-first\n* search. If no metadata is defined, an empty object is returned.\n*\n* @param schema Schema to get the metadata from.\n*\n* @returns The metadata, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getMetadata(schema) {\n\tconst result = {};\n\tfunction depthFirstMerge(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstMerge(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"metadata\") Object.assign(result, item.metadata);\n\t\t}\n\t}\n\tdepthFirstMerge(schema);\n\treturn result;\n}\n\n//#endregion\n//#region src/methods/getTitle/getTitle.ts\n/**\n* Returns the title of the schema.\n*\n* If multiple titles are defined, the last one of the highest level is\n* returned. If no title is defined, `undefined` is returned.\n*\n* @param schema The schema to get the title from.\n*\n* @returns The title, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getTitle(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"title\");\n}\n\n//#endregion\n//#region src/methods/is/is.ts\n/**\n* Checks if the input matches the schema. By using a type predicate, this\n* function can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*\n* @returns Whether the input matches the schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction is(schema, input) {\n\treturn !schema[\"~run\"]({ value: input }, ABORT_EARLY_CONFIG).issues;\n}\n\n//#endregion\n//#region src/schemas/any/any.ts\n/**\n* Creates an any schema.\n*\n* Hint: This schema function exists only for completeness and is not\n* recommended in practice. Instead, `unknown` should be used to accept\n* unknown data.\n*\n* @returns An any schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction any() {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"any\",\n\t\treference: any,\n\t\texpects: \"any\",\n\t\tasync: false,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/array/array.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction array(item, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: array,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titem,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.item[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/array/arrayAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction arrayAsync(item, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: arrayAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titem,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(input.map((value$1) => this.item[\"~run\"]({ value: value$1 }, config$1)));\n\t\t\t\tfor (let key = 0; key < itemDatasets.length; key++) {\n\t\t\t\t\tconst itemDataset = itemDatasets[key];\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/bigint/bigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bigint(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"bigint\",\n\t\treference: bigint,\n\t\texpects: \"bigint\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"bigint\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/blob/blob.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction blob(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"blob\",\n\t\treference: blob,\n\t\texpects: \"Blob\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Blob) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/boolean/boolean.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction boolean(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"boolean\",\n\t\treference: boolean,\n\t\texpects: \"boolean\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"boolean\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/custom/custom.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction custom(check$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: custom,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/custom/customAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction customAsync(check$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: customAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (await this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/date/date.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction date(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"date\",\n\t\treference: date,\n\t\texpects: \"Date\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Date) if (!isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/enum/enum.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction enum_(enum__, message$1) {\n\tconst options = [];\n\tfor (const key in enum__) if (`${+key}` !== key || typeof enum__[key] !== \"string\" || !Object.is(enum__[enum__[key]], +key)) options.push(enum__[key]);\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"enum\",\n\t\treference: enum_,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\tenum: enum__,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptional(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptional,\n\t\texpects: wrapped.expects,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptionalAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptionalAsync,\n\t\texpects: wrapped.expects,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/file/file.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction file(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"file\",\n\t\treference: file,\n\t\texpects: \"File\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof File) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/function/function.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction function_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"function\",\n\t\treference: function_,\n\t\texpects: \"Function\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"function\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/instance/instance.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction instance(class_, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"instance\",\n\t\treference: instance,\n\t\texpects: class_.name,\n\t\tasync: false,\n\t\tclass: class_,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof this.class) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/intersect/utils/_merge/_merge.ts\n/**\n* Merges two values into one single output.\n*\n* @param value1 First value.\n* @param value2 Second value.\n*\n* @returns The merge dataset.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _merge(value1, value2) {\n\tif (typeof value1 === typeof value2) {\n\t\tif (value1 === value2 || value1 instanceof Date && value2 instanceof Date && +value1 === +value2) return { value: value1 };\n\t\tif (value1 && value2 && value1.constructor === Object && value2.constructor === Object) {\n\t\t\tconst nextValue = { ...value1 };\n\t\t\tfor (const key in value2) if (Object.prototype.hasOwnProperty.call(value1, key)) {\n\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[key], value2[key]);\n\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\tnextValue[key] = dataset.value;\n\t\t\t} else nextValue[key] = value2[key];\n\t\t\treturn { value: nextValue };\n\t\t}\n\t\tif (Array.isArray(value1) && Array.isArray(value2)) {\n\t\t\tif (value1.length === value2.length) {\n\t\t\t\tconst nextValue = [...value1];\n\t\t\t\tfor (let index = 0; index < value1.length; index++) {\n\t\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[index], value2[index]);\n\t\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\t\tnextValue[index] = dataset.value;\n\t\t\t\t}\n\t\t\t\treturn { value: nextValue };\n\t\t\t}\n\t\t}\n\t}\n\treturn { issue: true };\n}\n\n//#endregion\n//#region src/schemas/intersect/intersect.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersect(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersect,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tfor (const schema of this.options) {\n\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) for (const issue of optionDataset.issues) dataset.issues.push(issue);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/intersect/intersectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersectAsync(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersectAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tconst optionDatasets = await Promise.all(this.options.map((schema) => schema[\"~run\"]({ value: input }, config$1)));\n\t\t\t\tfor (const optionDataset of optionDatasets) {\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) for (const issue of optionDataset.issues) dataset.issues.push(issue);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/lazy/lazy.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazy(getter) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazy,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tgetter,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.getter(dataset.value)[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/lazy/lazyAsync.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazyAsync(getter) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazyAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tgetter,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn (await this.getter(dataset.value))[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/literal/literal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction literal(literal_, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"literal\",\n\t\treference: literal,\n\t\texpects: /* @__PURE__ */ _stringify(literal_),\n\t\tasync: false,\n\t\tliteral: literal_,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === this.literal) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObject(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObjectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/map/map.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction map(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: map,\n\t\texpects: \"Map\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const [inputKey, inputValue] of input) {\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: inputKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/map/mapAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapAsync(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: mapAsync,\n\t\texpects: \"Map\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tconst datasets = await Promise.all([...input].map(([inputKey, inputValue]) => Promise.all([\n\t\t\t\t\tinputKey,\n\t\t\t\t\tinputValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: inputKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: inputValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [inputKey, inputValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nan/nan.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nan(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nan\",\n\t\treference: nan,\n\t\texpects: \"NaN\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (Number.isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/never/never.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction never(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"never\",\n\t\treference: never,\n\t\texpects: \"never\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\t_addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullable(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullable,\n\t\texpects: \"!null\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullableAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullableAsync,\n\t\texpects: \"!null\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullish(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullish,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullishAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullishAsync,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptional(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptional,\n\t\texpects: \"!undefined\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptionalAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptionalAsync,\n\t\texpects: \"!undefined\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/null/null.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction null_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"null\",\n\t\treference: null_,\n\t\texpects: \"null\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullable/nullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullable(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullable,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullable/nullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullableAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullableAsync,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullish/nullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullish(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullish,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullish/nullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullishAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullishAsync,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/number/number.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction number(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"number\",\n\t\treference: number,\n\t\texpects: \"number\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"number\" && !isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/object/object.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction object(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: object,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/object/objectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: objectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRest(entries$1, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRest,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) {\n\t\t\t\t\t\tconst valueDataset = this.rest[\"~run\"]({ value: input[key] }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRestAsync(entries$1, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRestAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(Object.entries(input).filter(([key]) => /* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)).map(async ([key, value$1]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue$1,\n\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t]))]);\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of normalDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, valueDataset] of restDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/optional/optional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optional(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optional,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/optional/optionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optionalAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optionalAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/picklist/picklist.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction picklist(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"picklist\",\n\t\treference: picklist,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/promise/promise.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction promise(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"promise\",\n\t\treference: promise,\n\t\texpects: \"Promise\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Promise) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/record/record.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction record(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: record,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {\n\t\t\t\t\tconst entryValue = input[entryKey];\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: entryKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: entryValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/record/recordAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction recordAsync(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: recordAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst datasets = await Promise.all(Object.entries(input).filter(([key$1]) => /* @__PURE__ */ _isValidObjectKey(input, key$1)).map(([entryKey, entryValue]) => Promise.all([\n\t\t\t\t\tentryKey,\n\t\t\t\t\tentryValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: entryKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: entryValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [entryKey, entryValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/set/set.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction set(value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: set,\n\t\texpects: \"Set\",\n\t\tasync: false,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const inputValue of input) {\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/set/setAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction setAsync(value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: setAsync,\n\t\texpects: \"Set\",\n\t\tasync: true,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tconst valueDatasets = await Promise.all([...input].map(async (inputValue) => [inputValue, await this.value[\"~run\"]({ value: inputValue }, config$1)]));\n\t\t\t\tfor (const [inputValue, valueDataset] of valueDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObject(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!(key in this.entries)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObjectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!(key in this.entries)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/string/string.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction string(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"string\",\n\t\treference: string,\n\t\texpects: \"string\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"string\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/symbol/symbol.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction symbol(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"symbol\",\n\t\treference: symbol,\n\t\texpects: \"symbol\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"symbol\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tuple/tuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tuple/tupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRest(items, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRest,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.rest[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRestAsync(items, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRestAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(input.slice(this.items.length).map(async (value$1, key) => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey + this.items.length,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}))]);\n\t\t\t\tfor (const [key, value$1, itemDataset] of normalDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, itemDataset] of restDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefined/undefined.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefined_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefined\",\n\t\treference: undefined_,\n\t\texpects: \"undefined\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedable(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedable,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedableAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedableAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/union/utils/_subIssues/_subIssues.ts\n/**\n* Returns the sub issues of the provided datasets for the union issue.\n*\n* @param datasets The datasets.\n*\n* @returns The sub issues.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _subIssues(datasets) {\n\tlet issues;\n\tif (datasets) for (const dataset of datasets) if (issues) for (const issue of dataset.issues) issues.push(issue);\n\telse issues = dataset.issues;\n\treturn issues;\n}\n\n//#endregion\n//#region src/schemas/union/union.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction union(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: union,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/union/unionAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction unionAsync(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: unionAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/unknown/unknown.ts\n/**\n* Creates a unknown schema.\n*\n* @returns A unknown schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unknown() {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"unknown\",\n\t\treference: unknown,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/variant/variant.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variant(key, options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variant,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, ABORT_EARLY_CONFIG).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tparseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/variant/variantAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variantAsync(key, options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variantAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = async (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") await parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? (await discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, ABORT_EARLY_CONFIG)).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tawait parseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/void/void.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction void_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"void\",\n\t\treference: void_,\n\t\texpects: \"void\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/keyof/keyof.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction keyof(schema, message$1) {\n\treturn /* @__PURE__ */ picklist(Object.keys(schema.entries), message$1);\n}\n\n//#endregion\n//#region src/methods/message/message.ts\n/**\n* Changes the local message configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param message_ The error message.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction message(schema, message_) {\n\treturn {\n\t\t...schema,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config$1,\n\t\t\t\tmessage: message_\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/omit/omit.ts\n/**\n* Creates a modified copy of an object schema that does not contain the\n* selected entries.\n*\n* @param schema The schema to omit from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction omit(schema, keys) {\n\tconst entries$1 = { ...schema.entries };\n\tfor (const key of keys) delete entries$1[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/parse/parse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nfunction parse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parse/parseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nasync function parseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parser/parser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parser(schema, config$1) {\n\tconst func = (input) => parse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/parser/parserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parserAsync(schema, config$1) {\n\tconst func = (input) => parseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/partial/partial.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partial(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optional(schema.entries[key]) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/partial/partialAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialAsync(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optionalAsync(schema.entries[key]) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pick/pick.ts\n/**\n* Creates a modified copy of an object schema that contains only the selected\n* entries.\n*\n* @param schema The schema to pick from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction pick(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key of keys) entries$1[key] = schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pipe/pipe.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipe(...pipe$1) {\n\treturn {\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pipe/pipeAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipeAsync(...pipe$1) {\n\treturn {\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tasync: true,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = await item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/required/required.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction required(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptional(schema.entries[key], message$1) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/required/requiredAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction requiredAsync(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptionalAsync(schema.entries[key], message$1) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function safeParseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParser(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParserAsync(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/summarize/summarize.ts\n/**\n* Summarize the error messages of issues in a pretty-printable multi-line string.\n*\n* @param issues The list of issues.\n*\n* @returns A summary of the issues.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction summarize(issues) {\n\tlet summary = \"\";\n\tfor (const issue of issues) {\n\t\tif (summary) summary += \"\\n\";\n\t\tsummary += `× ${issue.message}`;\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) summary += `\\n → at ${dotPath}`;\n\t}\n\treturn summary;\n}\n\n//#endregion\n//#region src/methods/unwrap/unwrap.ts\n/**\n* Unwraps the wrapped schema.\n*\n* @param schema The schema to be unwrapped.\n*\n* @returns The unwrapped schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unwrap(schema) {\n\treturn schema.wrapped;\n}\n\n//#endregion\nexport { BASE64_REGEX, BIC_REGEX, CUID2_REGEX, DECIMAL_REGEX, DIGITS_REGEX, DOMAIN_REGEX, EMAIL_REGEX, EMOJI_REGEX, HEXADECIMAL_REGEX, HEX_COLOR_REGEX, IMEI_REGEX, IPV4_REGEX, IPV6_REGEX, IP_REGEX, ISO_DATE_REGEX, ISO_DATE_TIME_REGEX, ISO_DATE_TIME_SECOND_REGEX, ISO_TIMESTAMP_REGEX, ISO_TIME_REGEX, ISO_TIME_SECOND_REGEX, ISO_WEEK_REGEX, ISRC_REGEX, JWS_COMPACT_REGEX, MAC48_REGEX, MAC64_REGEX, MAC_REGEX, NANO_ID_REGEX, OCTAL_REGEX, RFC_EMAIL_REGEX, SLUG_REGEX, ULID_REGEX, UUID_REGEX, ValiError, _addIssue, _cloneDataset, _formatCase, _getByteCount, _getGraphemeCount, _getLastMetadata, _getStandardProps, _getWordCount, _isLuhnAlgo, _isValidObjectKey, _joinExpects, _stringify, any, args, argsAsync, array, arrayAsync, assert, awaitAsync, base64, bic, bigint, blob, boolean, brand, bytes, cache, cacheAsync, check, checkAsync, checkItems, checkItemsAsync, config, creditCard, cuid2, custom, customAsync, date, decimal, deleteGlobalConfig, deleteGlobalMessage, deleteSchemaMessage, deleteSpecificMessage, description, digits, domain, email, emoji, empty, endsWith, entries, entriesFromList, entriesFromObjects, enum_ as enum, enum_, everyItem, exactOptional, exactOptionalAsync, examples, excludes, fallback, fallbackAsync, file, filterItems, findItem, finite, flatten, flavor, forward, forwardAsync, function_ as function, function_, getDefault, getDefaults, getDefaultsAsync, getDescription, getDotPath, getExamples, getFallback, getFallbacks, getFallbacksAsync, getGlobalConfig, getGlobalMessage, getMetadata, getSchemaMessage, getSpecificMessage, getTitle, graphemes, gtValue, guard, hash, hexColor, hexadecimal, imei, includes, instance, integer, intersect, intersectAsync, ip, ipv4, ipv6, is, isOfKind, isOfType, isValiError, isbn, isoDate, isoDateTime, isoDateTimeSecond, isoTime, isoTimeSecond, isoTimestamp, isoWeek, isrc, jwsCompact, keyof, lazy, lazyAsync, length, literal, looseObject, looseObjectAsync, looseTuple, looseTupleAsync, ltValue, mac, mac48, mac64, map, mapAsync, mapItems, maxBytes, maxEntries, maxGraphemes, maxLength, maxSize, maxValue, maxWords, message, metadata, mimeType, minBytes, minEntries, minGraphemes, minLength, minSize, minValue, minWords, multipleOf, nan, nanoid, never, nonEmpty, nonNullable, nonNullableAsync, nonNullish, nonNullishAsync, nonOptional, nonOptionalAsync, normalize, notBytes, notEntries, notGraphemes, notLength, notSize, notValue, notValues, notWords, null_ as null, null_, nullable, nullableAsync, nullish, nullishAsync, number, object, objectAsync, objectWithRest, objectWithRestAsync, octal, omit, optional, optionalAsync, parse, parseAsync, parseBoolean, parseJson, parser, parserAsync, partial, partialAsync, partialCheck, partialCheckAsync, pick, picklist, pipe, pipeAsync, promise, rawCheck, rawCheckAsync, rawTransform, rawTransformAsync, readonly, record, recordAsync, reduceItems, regex, required, requiredAsync, returns, returnsAsync, rfcEmail, safeInteger, safeParse, safeParseAsync, safeParser, safeParserAsync, set, setAsync, setGlobalConfig, setGlobalMessage, setSchemaMessage, setSpecificMessage, size, slug, someItem, sortItems, startsWith, strictObject, strictObjectAsync, strictTuple, strictTupleAsync, string, stringifyJson, summarize, symbol, title, toBigint, toBoolean, toCamelCase, toDate, toKebabCase, toLowerCase, toMaxValue, toMinValue, toNumber, toPascalCase, toSnakeCase, toString, toUpperCase, transform, transformAsync, trim, trimEnd, trimStart, tuple, tupleAsync, tupleWithRest, tupleWithRestAsync, ulid, undefined_ as undefined, undefined_, undefinedable, undefinedableAsync, union, unionAsync, unknown, unwrap, url, uuid, value, values, variant, variantAsync, void_ as void, void_, words };","export class DocumentBudgetError extends Error {\n constructor(readonly code: string) {\n super(code);\n this.name = 'DocumentBudgetError';\n }\n}\n\n/** Bounds are checked before recursive schemas and parsers inspect untrusted input. */\nexport class DocumentBudget {\n // JSON also contains the canonical tree, provenance and an optional recovery buffer.\n // Its larger transfer ceiling accommodates escaped strings; source/tree budgets still apply.\n // Sized for real e-mails (300-400 KB) and landing pages (1 MB):\n // `nodes` counts elements, comments, doctypes and text which is not only white space.\n // Indentation between tags is bounded by `totalNodes` and by the source size instead.\n static readonly limits = Object.freeze({\n nodes: 50_000,\n totalNodes: 150_000,\n depth: 256,\n sourceBytes: 2_000_000,\n cssBytes: 500_000,\n jsonBytes: 64_000_000,\n attributesPerNode: 256,\n /** Ceiling of values typed or projected by the editor itself (links, rich text). */\n attributeLength: 16_384,\n /** Ceiling of one attribute of an imported document, e.g. an inline `data:` image. */\n documentAttributeLength: 2_000_000,\n });\n\n /** Strings of a JSON document: content, plus identifiers and keys of every node. */\n static readonly jsonStringBytes =\n DocumentBudget.limits.sourceBytes * 3 + DocumentBudget.limits.totalNodes * 160;\n\n /** UTF-8 length. Read by code unit: megabytes of source are measured on every change. */\n byteLength(value: string): number {\n let bytes = 0;\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code <= 0x7f) bytes += 1;\n else if (code <= 0x7ff) bytes += 2;\n else if (code >= 0xd800 && code <= 0xdbff && this.lowSurrogate(value, index + 1)) {\n bytes += 4;\n index++;\n } else bytes += 3;\n }\n return bytes;\n }\n\n private lowSurrogate(value: string, index: number): boolean {\n const code = value.charCodeAt(index);\n return code >= 0xdc00 && code <= 0xdfff;\n }\n\n assertSource(html: string, css: string): void {\n if (this.byteLength(html) > DocumentBudget.limits.sourceBytes)\n throw new DocumentBudgetError('DOCUMENT_TOO_LARGE');\n if (this.byteLength(css) > DocumentBudget.limits.cssBytes)\n throw new DocumentBudgetError('CSS_TOO_LARGE');\n }\n\n assertInput(data: unknown): void {\n const visiting = new Set<object>();\n const stack: { value: unknown; depth: number; exit: boolean }[] = [\n { value: data, depth: 0, exit: false },\n ];\n let objects = 0;\n let bytes = 0;\n while (stack.length) {\n const frame = stack.pop();\n if (!frame) break;\n if (typeof frame.value === 'string') bytes += this.byteLength(frame.value);\n if (bytes > DocumentBudget.jsonStringBytes)\n throw new DocumentBudgetError('DOCUMENT_TOO_LARGE');\n if (typeof frame.value !== 'object' || frame.value === null) continue;\n if (frame.exit) {\n visiting.delete(frame.value);\n continue;\n }\n if (frame.depth > DocumentBudget.limits.depth * 4)\n throw new DocumentBudgetError('DOCUMENT_TOO_DEEP');\n if (++objects > DocumentBudget.limits.totalNodes * 4)\n throw new DocumentBudgetError('DOCUMENT_TOO_MANY_NODES');\n if (visiting.has(frame.value)) throw new DocumentBudgetError('CYCLIC_DOCUMENT');\n const prototype: unknown = Object.getPrototypeOf(frame.value);\n if (prototype !== Object.prototype && prototype !== Array.prototype && prototype !== null)\n throw new DocumentBudgetError('INVALID_DOCUMENT_SCHEMA');\n visiting.add(frame.value);\n stack.push({ ...frame, exit: true });\n for (const [key, value] of Object.entries(frame.value)) {\n bytes += this.byteLength(key);\n stack.push({ value, depth: frame.depth + 1, exit: false });\n }\n }\n if (bytes > DocumentBudget.jsonStringBytes) throw new DocumentBudgetError('DOCUMENT_TOO_LARGE');\n }\n\n /** White space between tags does not count against the node ceiling. */\n countable(node: { readonly type: string; readonly value?: string }): boolean {\n return node.type !== 'text' || !!node.value?.trim();\n }\n}\n","export type HtmlNodeType = 'element' | 'text' | 'comment' | 'doctype';\n\nexport interface HtmlContentNode {\n readonly type: HtmlNodeType;\n readonly tag?: string;\n readonly value?: string;\n}\n\n/** Structural constraints prevent HTML parsers from silently relocating or dropping nodes. */\nexport class HtmlContentModel {\n private readonly requiredParents: Readonly<Record<string, readonly string[]>> = {\n html: ['#document'],\n head: ['html'],\n body: ['html'],\n td: ['tr'],\n th: ['tr'],\n tr: ['thead', 'tbody', 'tfoot'],\n thead: ['table'],\n tbody: ['table'],\n tfoot: ['table'],\n caption: ['table'],\n colgroup: ['table'],\n col: ['colgroup'],\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n option: ['select', 'optgroup', 'datalist'],\n optgroup: ['select'],\n legend: ['fieldset'],\n summary: ['details'],\n area: ['map'],\n };\n\n private readonly structuralChildren: Readonly<Record<string, readonly string[]>> = {\n html: ['head', 'body'],\n head: ['base', 'link', 'meta', 'style', 'title', 'noscript', 'template'],\n table: ['caption', 'colgroup', 'thead', 'tbody', 'tfoot'],\n colgroup: ['col'],\n thead: ['tr'],\n tbody: ['tr'],\n tfoot: ['tr'],\n tr: ['td', 'th'],\n ul: ['li'],\n ol: ['li'],\n menu: ['li'],\n dl: ['dt', 'dd'],\n select: ['option', 'optgroup'],\n optgroup: ['option'],\n };\n\n /** Parents the HTML parser itself guarantees; anything else it accepts where it was written. */\n private readonly parserParents: Readonly<Record<string, readonly string[]>> = {\n html: ['#document'],\n head: ['html'],\n body: ['html'],\n frameset: ['html', 'frameset'],\n td: ['tr'],\n th: ['tr'],\n tr: ['thead', 'tbody', 'tfoot'],\n thead: ['table'],\n tbody: ['table'],\n tfoot: ['table'],\n caption: ['table'],\n colgroup: ['table'],\n col: ['colgroup'],\n };\n\n /** Children the parser leaves inside these parents instead of moving them elsewhere. */\n private readonly parserChildren: Readonly<Record<string, readonly string[]>> = {\n html: ['head', 'body', 'frameset', 'noframes'],\n head: [\n 'base',\n 'basefont',\n 'bgsound',\n 'link',\n 'meta',\n 'style',\n 'title',\n 'noscript',\n 'noframes',\n 'template',\n 'script',\n ],\n table: [\n 'caption',\n 'colgroup',\n 'thead',\n 'tbody',\n 'tfoot',\n 'script',\n 'style',\n 'template',\n 'input',\n 'form',\n ],\n colgroup: ['col', 'template'],\n thead: ['tr', 'script', 'style', 'template'],\n tbody: ['tr', 'script', 'style', 'template'],\n tfoot: ['tr', 'script', 'style', 'template'],\n tr: ['td', 'th', 'script', 'style', 'template'],\n };\n\n /** HTML elements whose content the tokenizer reads as text, never as markup. */\n private readonly rawText: ReadonlySet<string> = new Set([\n 'script',\n 'style',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript',\n ]);\n\n /**\n * Whether a tree an HTML parser produced may hold this child. It is the integrity rule of\n * a stored document: looser than `accepts`, which governs what editing commands may build.\n */\n parses(parentTag: string | undefined, child: HtmlContentNode): boolean {\n const parent = parentTag?.toLowerCase() ?? '#document';\n if (child.type === 'doctype') return parent === '#document';\n const tag = child.tag?.toLowerCase() ?? '';\n const required = this.parserParents[tag];\n if (required && !required.includes(parent)) return false;\n const expected = this.parserChildren[parent];\n if (!expected) return true;\n return (\n child.type === 'comment' ||\n (child.type === 'text' && !child.value?.trim()) ||\n (child.type === 'element' && expected.includes(tag))\n );\n }\n\n /**\n * Elements whose single text child is their source, written back verbatim: the raw text\n * elements of HTML, `template`, and whole inline `svg` / `math` islands.\n */\n holdsSource(tag: string): boolean {\n const name = tag.toLowerCase();\n return this.rawText.has(name) || this.isSourceIsland(name);\n }\n\n /** Markup kept as an opaque block of source rather than as a subtree. */\n isSourceIsland(tag: string): boolean {\n return ['template', 'svg', 'math'].includes(tag.toLowerCase());\n }\n\n accepts(parentTag: string | undefined, child: HtmlContentNode): boolean {\n const parent = parentTag?.toLowerCase() ?? '#document';\n if (child.type === 'doctype') return parent === '#document';\n const tag = child.tag?.toLowerCase() ?? '';\n const required = this.requiredParents[tag];\n if (required && !required.includes(parent)) return false;\n const expected = this.structuralChildren[parent];\n if (!expected) return true;\n return (\n child.type === 'comment' ||\n (child.type === 'text' && !child.value?.trim()) ||\n (child.type === 'element' && expected.includes(tag))\n );\n }\n\n acceptsChildren(parentTag: string, children: readonly HtmlContentNode[]): boolean {\n return children.every((child) => this.accepts(parentTag, child));\n }\n\n isStructuralContainer(tag: string): boolean {\n return Boolean(this.structuralChildren[tag.toLowerCase()]);\n }\n}\n","import * as v from 'valibot';\nimport { DocumentBudget, DocumentBudgetError } from './budget';\nimport { HtmlContentModel } from './html-content-model';\nimport type { HtmlNodeType } from './html-content-model';\n\nexport type DocumentKind = 'email' | 'page';\nexport type EditorMode = 'visual' | 'html';\n\nexport interface NodeMetadata {\n readonly blockType?: string;\n readonly sourceStart?: number;\n readonly sourceEnd?: number;\n readonly namespace?: string;\n /**\n * How a comment was written: `<!--` for a regular comment, or the opener of the bogus\n * comment the parser read (`<![if !mso]>`, `<?xml ... ?>`, `</3>`). Absent on old documents.\n */\n readonly commentOpener?: CommentOpener;\n}\n\nexport type CommentOpener = '<!--' | '<!' | '<?' | '</';\n\nexport interface DocumentNode {\n readonly id: string;\n readonly type: HtmlNodeType;\n readonly tag?: string;\n readonly value?: string;\n readonly attrs?: Readonly<Record<string, string>>;\n readonly children?: readonly DocumentNode[];\n readonly metadata?: NodeMetadata;\n}\n\nexport interface EditorDocumentData {\n readonly schemaVersion: 1;\n readonly id: string;\n readonly kind: DocumentKind;\n readonly revision: number;\n readonly title: string;\n readonly nodes: readonly DocumentNode[];\n readonly css: string;\n}\n\nexport interface SourceInput {\n readonly html: string;\n readonly css: string;\n}\n\n/**\n * `error` refuses the operation. `warning` tells the author something was removed or\n * rewritten. `info` describes what the document holds and was kept as written.\n */\nexport type DiagnosticSeverity = 'error' | 'warning' | 'info';\n\nexport interface Diagnostic {\n readonly code: string;\n readonly severity: DiagnosticSeverity;\n readonly messageKey: string;\n /** First node the notice refers to, when it still exists in the document. */\n readonly nodeId?: string;\n /** Occurrences grouped under this code; absent means one. */\n readonly count?: number;\n}\n\nexport interface ImportResult {\n readonly document?: EditorDocumentData;\n readonly diagnostics: readonly Diagnostic[];\n /**\n * The validated aggregate `document` was read from, when the codec has it: a policy given it\n * checks the content again without parsing the schema a second time.\n */\n readonly validated?: EditorDocument;\n}\n\nexport const DOCUMENT_LIMITS = DocumentBudget.limits;\n\n/** Every element the HTML parser and serializer treat as void, obsolete ones included. */\nexport const HTML_VOID_ELEMENTS: readonly string[] = Object.freeze([\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'embed',\n 'frame',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nconst metadataSchema = v.strictObject({\n blockType: v.exactOptional(v.pipe(v.string(), v.maxLength(64))),\n sourceStart: v.exactOptional(v.pipe(v.number(), v.integer(), v.minValue(0))),\n sourceEnd: v.exactOptional(v.pipe(v.number(), v.integer(), v.minValue(0))),\n namespace: v.exactOptional(v.pipe(v.string(), v.maxLength(200))),\n commentOpener: v.exactOptional(v.picklist(['<!--', '<!', '<?', '</'])),\n});\n\nexport const DocumentNodeSchema: v.GenericSchema<DocumentNode> = v.lazy(() =>\n v.strictObject({\n id: v.pipe(v.string(), v.minLength(1), v.maxLength(200)),\n type: v.picklist(['element', 'text', 'comment', 'doctype']),\n tag: v.exactOptional(v.pipe(v.string(), v.maxLength(200))),\n value: v.exactOptional(v.pipe(v.string(), v.maxLength(DOCUMENT_LIMITS.sourceBytes))),\n attrs: v.exactOptional(\n v.record(\n v.pipe(v.string(), v.maxLength(200)),\n v.pipe(v.string(), v.maxLength(DOCUMENT_LIMITS.documentAttributeLength)),\n ),\n ),\n children: v.exactOptional(v.array(DocumentNodeSchema)),\n metadata: v.exactOptional(metadataSchema),\n }),\n);\n\nexport const EditorDocumentSchema: v.GenericSchema<EditorDocumentData> = v.strictObject({\n schemaVersion: v.literal(1),\n id: v.pipe(v.string(), v.minLength(1), v.maxLength(200)),\n kind: v.picklist(['email', 'page']),\n revision: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(Number.MAX_SAFE_INTEGER)),\n title: v.pipe(v.string(), v.maxLength(1_000)),\n nodes: v.array(DocumentNodeSchema),\n css: v.pipe(v.string(), v.maxLength(DOCUMENT_LIMITS.cssBytes)),\n});\n\nexport class DocumentValidationError extends Error {\n constructor(readonly code: string) {\n super(code);\n this.name = 'DocumentValidationError';\n }\n}\n\n/** The aggregate owns a validated snapshot. Callers only receive independent copies. */\nexport class EditorDocument {\n readonly #data: EditorDocumentData;\n #bytes: number | undefined;\n\n private constructor(data: EditorDocumentData) {\n this.#data = this.clone(data);\n }\n\n static from(data: unknown): EditorDocument {\n EditorDocument.assertBounded(data);\n const result = v.safeParse(EditorDocumentSchema, data);\n if (!result.success) throw new DocumentValidationError('INVALID_DOCUMENT_SCHEMA');\n EditorDocument.assertTree(result.output.nodes);\n return new EditorDocument({\n ...result.output,\n nodes: EditorDocument.normalizeText(result.output.nodes),\n });\n }\n\n get id(): string {\n return this.#data.id;\n }\n get kind(): DocumentKind {\n return this.#data.kind;\n }\n get revision(): number {\n return this.#data.revision;\n }\n\n snapshot(): EditorDocumentData {\n return this.clone(this.#data);\n }\n\n withChanges(\n change: Partial<Pick<EditorDocumentData, 'title' | 'nodes' | 'css'>>,\n ): EditorDocument {\n return EditorDocument.from({ ...this.#data, ...change, revision: this.#data.revision + 1 });\n }\n\n /** UTF-8 size of the serialized snapshot, for budgets which bound what is retained. */\n serializedBytes(): number {\n this.#bytes ??= new DocumentBudget().byteLength(JSON.stringify(this.#data));\n return this.#bytes;\n }\n\n /** Only the revision changes: the validated tree is not parsed a second time. */\n withRevision(revision: number): EditorDocument {\n if (!Number.isSafeInteger(revision) || revision < 0)\n throw new DocumentValidationError('INVALID_DOCUMENT_SCHEMA');\n return new EditorDocument({ ...this.#data, revision });\n }\n\n private clone(data: EditorDocumentData): EditorDocumentData {\n return structuredClone(data);\n }\n\n private static assertBounded(data: unknown): void {\n try {\n new DocumentBudget().assertInput(data);\n } catch (error: unknown) {\n throw new DocumentValidationError(\n error instanceof DocumentBudgetError ? error.code : 'INVALID_DOCUMENT_SCHEMA',\n );\n }\n }\n\n private static normalizeText(nodes: readonly DocumentNode[]): readonly DocumentNode[] {\n const normalized: DocumentNode[] = [];\n for (const node of nodes) {\n if (node.type === 'text' && node.value === '') continue;\n const previous = normalized.at(-1);\n if (node.type === 'text' && previous?.type === 'text') {\n const value = (previous.value ?? '') + (node.value ?? '');\n if (value.length > DOCUMENT_LIMITS.sourceBytes)\n throw new DocumentValidationError('DOCUMENT_TOO_LARGE');\n normalized[normalized.length - 1] = { id: previous.id, type: 'text', value };\n } else {\n normalized.push(\n node.children ? { ...node, children: this.normalizeText(node.children) } : node,\n );\n }\n }\n return normalized;\n }\n\n private static assertTree(nodes: readonly DocumentNode[]): void {\n const seen = new Set<string>();\n const model = new HtmlContentModel();\n const budget = new DocumentBudget();\n let counted = 0;\n const stack: { node: DocumentNode; depth: number; parent?: string }[] = nodes.map((node) => ({\n node,\n depth: 0,\n }));\n while (stack.length) {\n const frame = stack.pop();\n if (!frame) break;\n if (frame.depth > DOCUMENT_LIMITS.depth)\n throw new DocumentValidationError('DOCUMENT_TOO_DEEP');\n if (seen.has(frame.node.id)) throw new DocumentValidationError('DUPLICATE_NODE_ID');\n seen.add(frame.node.id);\n if (budget.countable(frame.node)) counted++;\n if (counted > DOCUMENT_LIMITS.nodes || seen.size > DOCUMENT_LIMITS.totalNodes)\n throw new DocumentValidationError('DOCUMENT_TOO_MANY_NODES');\n if (!model.parses(frame.parent, frame.node))\n throw new DocumentValidationError('INVALID_HTML_CONTENT_MODEL');\n if (Object.keys(frame.node.attrs ?? {}).length > DOCUMENT_LIMITS.attributesPerNode) {\n throw new DocumentValidationError('TOO_MANY_ATTRIBUTES');\n }\n const attributes = Object.keys(frame.node.attrs ?? {}).map((name) => name.toLowerCase());\n if (new Set(attributes).size !== attributes.length)\n throw new DocumentValidationError('AMBIGUOUS_HTML_ATTRIBUTES');\n if (frame.node.type === 'element') {\n if (!frame.node.tag || frame.node.value !== undefined)\n throw new DocumentValidationError('INVALID_ELEMENT');\n if (\n HTML_VOID_ELEMENTS.includes(frame.node.tag.toLowerCase()) &&\n frame.node.children?.length\n )\n throw new DocumentValidationError('VOID_ELEMENT_CHILDREN');\n // Their content is source text; a subtree there could not be written back as read.\n if (\n model.holdsSource(frame.node.tag) &&\n frame.node.children?.some((child) => child.type !== 'text')\n )\n throw new DocumentValidationError('INVALID_SOURCE_ELEMENT');\n } else if (\n frame.node.tag !== undefined ||\n frame.node.children?.length ||\n frame.node.value === undefined\n ) {\n throw new DocumentValidationError('INVALID_LEAF');\n }\n for (const node of frame.node.children ?? [])\n stack.push({\n node,\n depth: frame.depth + 1,\n ...(frame.node.tag ? { parent: frame.node.tag } : {}),\n });\n }\n }\n}\n","import type { DocumentKind, DocumentNode } from './document';\nimport { HtmlContentModel } from './html-content-model';\n\nexport type BlockType =\n | 'heading'\n | 'text'\n | 'image'\n | 'button'\n | 'section'\n | 'columns'\n | 'divider'\n | 'spacer'\n | 'footer'\n | 'form'\n | 'html';\n\nexport interface BlockProperty {\n readonly name: string;\n readonly labelKey: string;\n readonly kind: 'text' | 'attribute' | 'style';\n}\n\nexport interface BlockDescriptor {\n readonly type: BlockType;\n readonly labelKey: string;\n readonly kinds: readonly DocumentKind[];\n readonly tag: string;\n readonly canContainChildren: boolean;\n readonly properties: readonly BlockProperty[];\n}\n\n/** Properties advertised in the inspector are the same capabilities accepted by commands. */\nconst styleLabels: Readonly<Record<string, string>> = {\n color: 'color',\n 'background-color': 'background',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-weight': 'fontWeight',\n 'line-height': 'lineHeight',\n 'letter-spacing': 'letterSpacing',\n 'text-align': 'alignment',\n padding: 'padding',\n margin: 'margin',\n border: 'border',\n 'border-color': 'borderColor',\n 'border-width': 'borderWidth',\n 'border-style': 'borderStyle',\n 'border-radius': 'radius',\n width: 'width',\n 'max-width': 'maxWidth',\n height: 'height',\n gap: 'gap',\n 'column-gap': 'columnGap',\n 'row-gap': 'rowGap',\n 'grid-template-columns': 'columns',\n 'align-items': 'verticalAlignment',\n 'justify-content': 'horizontalAlignment',\n 'object-fit': 'imageFit',\n};\nconst styleProperties = (names: readonly string[]): readonly BlockProperty[] =>\n names.map((name) => ({\n name,\n kind: 'style',\n labelKey: `properties.${styleLabels[name] ?? name.replaceAll('-', '')}`,\n }));\nconst attributeProperties = (names: readonly string[]): readonly BlockProperty[] =>\n names.map((name) => ({\n name,\n kind: 'attribute',\n labelKey: `properties.${({ src: 'imageUrl', alt: 'alternativeText', href: 'link', 'aria-label': 'accessibleLabel' } as Readonly<Record<string, string>>)[name] ?? name}`,\n }));\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst boxStyles = [\n 'padding',\n 'margin',\n ...sides.flatMap((side) => [`padding-${side}`, `margin-${side}`]),\n 'border',\n 'border-color',\n 'border-width',\n 'border-style',\n 'border-radius',\n 'width',\n 'max-width',\n 'height',\n];\nconst textStyles = [\n 'color',\n 'background-color',\n 'font-family',\n 'font-size',\n 'font-weight',\n 'line-height',\n 'letter-spacing',\n 'text-align',\n ...boxStyles,\n];\nconst containerStyles = [\n 'background-color',\n 'text-align',\n ...boxStyles,\n 'gap',\n 'column-gap',\n 'row-gap',\n 'grid-template-columns',\n 'align-items',\n 'justify-content',\n];\nconst containerProperties: readonly BlockProperty[] = Object.freeze(\n styleProperties(containerStyles).map((property) => Object.freeze(property)),\n);\nconst textProperty: BlockProperty = { name: 'text', labelKey: 'properties.text', kind: 'text' };\nconst textProperties = [\n textProperty,\n ...styleProperties(textStyles),\n ...attributeProperties(['title', 'aria-label']),\n];\nconst inlineTags = new Set([\n 'span',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'a',\n 'br',\n 'small',\n 'sup',\n 'sub',\n 'code',\n]);\nconst richBlockTags = new Set([\n 'p',\n 'ul',\n 'ol',\n 'li',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'hr',\n]);\nconst descriptors: readonly BlockDescriptor[] = [\n {\n type: 'heading',\n labelKey: 'blocks.heading',\n kinds: ['email', 'page'],\n tag: 'h2',\n canContainChildren: false,\n properties: textProperties,\n },\n {\n type: 'text',\n labelKey: 'blocks.text',\n kinds: ['email', 'page'],\n tag: 'p',\n canContainChildren: false,\n properties: textProperties,\n },\n {\n type: 'image',\n labelKey: 'blocks.image',\n kinds: ['email', 'page'],\n tag: 'img',\n canContainChildren: false,\n properties: [\n ...attributeProperties(['src', 'alt', 'width', 'height', 'title', 'aria-label']),\n ...styleProperties([...boxStyles, 'object-fit']),\n ],\n },\n {\n type: 'button',\n labelKey: 'blocks.button',\n kinds: ['email', 'page'],\n tag: 'a',\n canContainChildren: false,\n properties: [...textProperties, ...attributeProperties(['href', 'target', 'rel'])],\n },\n {\n type: 'section',\n labelKey: 'blocks.section',\n kinds: ['email', 'page'],\n tag: 'section',\n canContainChildren: true,\n properties: containerProperties,\n },\n {\n type: 'columns',\n labelKey: 'blocks.columns',\n kinds: ['email', 'page'],\n tag: 'div',\n canContainChildren: true,\n properties: containerProperties,\n },\n {\n type: 'divider',\n labelKey: 'blocks.divider',\n kinds: ['email', 'page'],\n tag: 'hr',\n canContainChildren: false,\n properties: styleProperties([\n 'border',\n 'border-color',\n 'border-width',\n 'border-style',\n 'width',\n 'margin',\n 'padding',\n ]),\n },\n {\n type: 'spacer',\n labelKey: 'blocks.spacer',\n kinds: ['email', 'page'],\n tag: 'div',\n canContainChildren: false,\n properties: styleProperties(['height', 'background-color']),\n },\n {\n type: 'footer',\n labelKey: 'blocks.footer',\n kinds: ['email', 'page'],\n tag: 'footer',\n canContainChildren: false,\n properties: textProperties,\n },\n {\n type: 'form',\n labelKey: 'blocks.form',\n kinds: ['page'],\n tag: 'div',\n canContainChildren: false,\n properties: styleProperties(boxStyles),\n },\n {\n type: 'html',\n labelKey: 'blocks.html',\n kinds: ['email', 'page'],\n tag: 'div',\n canContainChildren: false,\n properties: [],\n },\n];\n\n// Canonical capabilities are shared only after every nested mutable value is frozen.\nfor (const descriptor of descriptors) {\n Object.freeze(descriptor.kinds);\n for (const property of descriptor.properties) Object.freeze(property);\n Object.freeze(descriptor.properties);\n Object.freeze(descriptor);\n}\nObject.freeze(descriptors);\n\n/** Recognition follows actual HTML structure; imported labels do not grant capabilities. */\nexport class BlockCatalog {\n private readonly model = new HtmlContentModel();\n\n descriptors(kind?: DocumentKind): readonly BlockDescriptor[] {\n return structuredClone(\n descriptors.filter((descriptor) => !kind || descriptor.kinds.includes(kind)),\n );\n }\n\n descriptor(type: BlockType): BlockDescriptor {\n const descriptor = descriptors.find((entry) => entry.type === type);\n if (!descriptor) throw new RangeError('UNKNOWN_BLOCK');\n return descriptor;\n }\n\n properties(node: DocumentNode): readonly BlockProperty[] {\n const descriptor = this.recognize(node);\n if (descriptor) return descriptor.properties;\n if (\n this.model.isStructuralContainer(node.tag ?? '') ||\n ['body', 'td', 'th', 'figure', 'details'].includes(node.tag ?? '')\n )\n return containerProperties;\n return [];\n }\n\n acceptsProperty(node: DocumentNode, name: string, kind: BlockProperty['kind']): boolean {\n return this.properties(node).some(\n (property) => property.name === name && property.kind === kind,\n );\n }\n\n recognize(node: DocumentNode): BlockDescriptor | undefined {\n if (node.type !== 'element') return undefined;\n const tag = node.tag?.toLowerCase();\n if (\n tag === 'p' &&\n !this.hasContent(node) &&\n /(?:^|;)\\s*border-(?:top|bottom)\\s*:/i.test(node.attrs?.style ?? '')\n )\n return this.descriptor('divider');\n if (tag && ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) && this.canEditRichText(node))\n return this.descriptor('heading');\n if (\n (tag === 'p' ||\n tag === 'summary' ||\n tag === 'figcaption' ||\n tag === 'blockquote' ||\n tag === 'pre' ||\n tag === 'li' ||\n (inlineTags.has(tag ?? '') && tag !== 'a' && tag !== 'br')) &&\n this.canEditRichText(node)\n )\n return this.descriptor('text');\n if (tag === 'img') return this.descriptor('image');\n if (tag === 'a' && this.canEditRichText(node)) return this.descriptor('button');\n if (tag === 'hr') return this.descriptor('divider');\n if ((tag === 'footer' || node.attrs?.role === 'contentinfo') && this.canEditRichText(node))\n return this.descriptor('footer');\n if (tag === 'div' && node.attrs?.['data-host-slot'] === 'form' && !(node.children ?? []).length)\n return this.descriptor('form');\n if (\n tag === 'div' &&\n !this.hasContent(node) &&\n /(?:^|;)\\s*height\\s*:/i.test(node.attrs?.style ?? '')\n )\n return this.descriptor('spacer');\n if (['div', 'section'].includes(tag ?? '') && this.isColumns(node))\n return this.descriptor('columns');\n if (\n (tag === 'div' || tag === 'td' || tag === 'th') &&\n this.canEditRichText(node) &&\n this.hasContent(node)\n )\n return this.descriptor('text');\n if (\n ['section', 'div', 'article', 'main', 'header', 'footer', 'figure', 'details'].includes(\n tag ?? '',\n )\n )\n return this.descriptor('section');\n return undefined;\n }\n\n canEditText(node: DocumentNode): boolean {\n if (node.type === 'text') return true;\n if (\n node.type !== 'element' ||\n ![\n 'p',\n 'div',\n 'td',\n 'th',\n 'span',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'small',\n 'sup',\n 'sub',\n 'code',\n 'summary',\n 'figcaption',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'a',\n 'footer',\n 'pre',\n ].includes(node.tag ?? '')\n )\n return false;\n return this.validRichText(node.children ?? [], false);\n }\n\n canEditRichText(node: DocumentNode): boolean {\n if (node.type === 'text') return true;\n if (node.type !== 'element') return false;\n return this.richTextAllowsBlocks(node)\n ? this.validRichText(node.children ?? [], true)\n : this.canEditText(node);\n }\n\n acceptsRichText(parent: DocumentNode, children: readonly DocumentNode[]): boolean {\n if (!this.canEditRichText(parent) || parent.type !== 'element') return false;\n if (parent.tag === 'a' && this.hasAnchor(children)) return false;\n return this.validRichText(children, this.richTextAllowsBlocks(parent));\n }\n\n richTextAllowsBlocks(node: DocumentNode): boolean {\n return (\n node.type === 'element' &&\n ['div', 'td', 'th', 'footer', 'blockquote', 'li'].includes(node.tag ?? '')\n );\n }\n\n acceptsChildren(parent: DocumentNode, children: readonly DocumentNode[]): boolean {\n if (\n parent.type !== 'element' ||\n children.some(\n (child) => child.type === 'doctype' || ['html', 'head', 'body'].includes(child.tag ?? ''),\n )\n )\n return false;\n if (!this.model.acceptsChildren(parent.tag ?? '', children)) return false;\n if (\n this.model.isStructuralContainer(parent.tag ?? '') ||\n ['body', 'td', 'th'].includes(parent.tag ?? '')\n )\n return true;\n if (this.canEditRichText(parent) && this.richTextAllowsBlocks(parent))\n return this.validRichText(children, true);\n return this.recognize(parent)?.canContainChildren === true;\n }\n\n acceptsRootChildren(children: readonly DocumentNode[]): boolean {\n return children.every(\n (child) =>\n child.type !== 'doctype' &&\n !['html', 'head', 'body'].includes(child.tag ?? '') &&\n this.model.accepts('body', child),\n );\n }\n\n private validRichText(nodes: readonly DocumentNode[], blockAllowed: boolean): boolean {\n for (const node of nodes) {\n if (node.type === 'text') continue;\n if (node.type !== 'element') return false;\n const tag = node.tag ?? '';\n if (!inlineTags.has(tag) && !(blockAllowed && richBlockTags.has(tag))) return false;\n if (Object.keys(node.attrs ?? {}).some((name) => name.toLowerCase().startsWith('on')))\n return false;\n if (\n (tag === 'ul' || tag === 'ol') &&\n (node.children ?? []).some(\n (child) =>\n !(child.type === 'element' && child.tag === 'li') &&\n !(child.type === 'text' && !child.value?.trim()),\n )\n )\n return false;\n if (!this.validRichText(node.children ?? [], ['li', 'ul', 'ol', 'blockquote'].includes(tag)))\n return false;\n if (tag === 'a' && this.hasAnchor(node.children ?? [])) return false;\n }\n return true;\n }\n\n private isColumns(node: DocumentNode): boolean {\n const style = node.attrs?.style ?? '';\n return (\n /(?:^|;)\\s*display\\s*:\\s*(?:grid|flex)\\s*(?:;|$)/i.test(style) ||\n ((node.attrs?.class ?? '').split(/\\s+/).includes('columns') &&\n (node.children ?? []).filter((child) => child.type === 'element').length > 1)\n );\n }\n\n private hasContent(node: DocumentNode): boolean {\n return (node.children ?? []).some(\n (child) => child.type === 'element' || (child.type === 'text' && !!child.value?.trim()),\n );\n }\n\n private hasAnchor(nodes: readonly DocumentNode[]): boolean {\n return nodes.some((node) => node.tag === 'a' || this.hasAnchor(node.children ?? []));\n }\n\n create(type: BlockType, id: string, kind: DocumentKind): DocumentNode {\n const descriptor = this.descriptor(type);\n if (!descriptor.kinds.includes(kind)) throw new RangeError('BLOCK_NOT_SUPPORTED_FOR_KIND');\n const base: DocumentNode = {\n id,\n type: 'element',\n tag: descriptor.tag,\n metadata: { blockType: type },\n };\n switch (type) {\n case 'heading':\n return { ...base, children: [{ id: `${id}-text`, type: 'text', value: 'Título' }] };\n case 'text':\n return {\n ...base,\n children: [{ id: `${id}-text`, type: 'text', value: 'Escreva seu conteúdo.' }],\n };\n case 'button':\n return {\n ...base,\n attrs: {\n href: '#',\n style:\n 'display:inline-block;padding:12px 24px;background-color:#0f766e;color:#ffffff;text-decoration:none',\n },\n children: [{ id: `${id}-text`, type: 'text', value: 'Saiba mais' }],\n };\n case 'image':\n return { ...base, attrs: { alt: 'Imagem', width: '600' } };\n case 'columns':\n return {\n ...base,\n attrs: { style: 'display:grid;grid-template-columns:1fr 1fr;gap:16px' },\n children: [\n this.create('text', `${id}-left`, kind),\n this.create('text', `${id}-right`, kind),\n ],\n };\n case 'spacer':\n return { ...base, attrs: { role: 'presentation', style: 'height:24px' }, children: [] };\n case 'footer':\n return {\n ...base,\n children: [\n { id: `${id}-text`, type: 'text', value: '{{workspace.name}} · {{unsubscribe_url}}' },\n ],\n };\n case 'form':\n return { ...base, attrs: { 'data-host-slot': 'form' }, children: [] };\n default:\n return { ...base, children: [] };\n }\n }\n}\n","const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n","export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\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)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\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.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\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 (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\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 = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n","export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(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 return null;\n}\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\n/**\n * C1 Unicode control character reference replacements (code points 128–159).\n * Index i gives the replacement for code point 128+i; 0 means \"no replacement\".\n */\nconst c1 = [\n 8364, 0, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, 0,\n 381, 0, 0, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250,\n 339, 0, 382, 376,\n];\n/**\n * True for NUL, UTF-16 surrogates, and values past U+10FFFF.\n * @param codePoint Unicode code point to check.\n */\nfunction isInvalidCodePoint(codePoint) {\n return (codePoint === 0 ||\n (codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) ||\n codePoint > 0x10_ff_ff);\n}\n/**\n * Replace the given code point with U+FFFD if it is NUL (0), a surrogate, or\n * outside the valid Unicode range. Code points in the C1 controls range\n * (128–159) are remapped to their Windows-1252 equivalents, following the\n * HTML spec. All other code points are returned unchanged.\n * @param codePoint Unicode code point to convert.\n */\nexport function replaceCodePoint(codePoint) {\n if (isInvalidCodePoint(codePoint)) {\n return 0xff_fd;\n }\n if (codePoint >= 128 && codePoint <= 159) {\n return c1[codePoint - 128] || codePoint;\n }\n return codePoint;\n}\n/**\n * XML numeric character references are the referenced Unicode code point.\n * Invalid values still become U+FFFD; the HTML Windows-1252 C1 remap is not\n * applied.\n * @see https://www.w3.org/TR/xml/#NT-CharRef\n * @param codePoint Unicode code point to convert.\n */\nexport function replaceCodePointXML(codePoint) {\n return isInvalidCodePoint(codePoint) ? 0xff_fd : codePoint;\n}\n/**\n * Convert the code point of a decoded numeric entity to a string, replacing\n * invalid values.\n *\n * Fast path for plain BMP code points: [1..0x7F] and [0xA0..0xD7FF] pass\n * `replaceCodePoint` unchanged (no NUL, C1 remap, surrogate, or out-of-range\n * handling) and fit a single charCode. 0xd760 = 0xD800 (the first surrogate)\n * - 0xA0.\n * @param codePoint Unicode code point to convert.\n */\nexport function codePointToString(codePoint) {\n return (codePoint - 1) >>> 0 < 0x7f || (codePoint - 0xa0) >>> 0 < 0xd7_60\n ? String.fromCharCode(codePoint)\n : String.fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","/*\n * Inverse of the encoder's SAFE alphabet (0x21..0x7E minus 0x22, 0x24, 0x5C),\n * precomputed once at module load. Entries for excluded chars stay 0 but\n * are never read.\n */\nconst BASE91_INVERSE = /* #__PURE__ */ (() => {\n const table = new Uint8Array(127);\n let code = 0;\n for (let char = 0x21; char <= 0x7e; char++) {\n if (char !== 0x22 && char !== 0x24 && char !== 0x5c) {\n table[char] = code++;\n }\n }\n return table;\n})();\n/**\n * Decode a dictionary-encoded trie string back into its Uint16Array.\n *\n * Stream layout (consumed in this order):\n * 1. dict1 atoms — `dict1AtomCount` uint16 values, delta+RLE encoded.\n * 2. dict2 atoms — `atomCount - dict1AtomCount` values, delta+RLE.\n * 3. dict2 ngrams — `ngramCount - (dictSize - dict1AtomCount)` entries,\n * each a pair of slot codes that resolve to earlier slots.\n * 4. dict1 ngrams — `dictSize - dict1AtomCount` entries, same shape.\n * 5. data — slot codes, each expanding to one or more uint16 values.\n *\n * Codes use a 91-char base (printable ASCII minus `\"`, `$`, `\\`):\n * - char1 < dictSize → 1-char code, slot = char1\n * - char1 ≥ dictSize → 2-char code, slot = dictSize + (char1 - dictSize)*91 + char2\n *\n * Slot index → token kind:\n * [0, A) dict1 atoms (1-char codes)\n * [A, dictSize) dict1 ngrams (1-char codes)\n * [dictSize, dictSize+D) dict2 atoms (2-char codes)\n * [dictSize+D, end) dict2 ngrams (2-char codes)\n *\n * Both atom dicts decode before any ngram, and dict2 ngrams decode before\n * dict1 ngrams. So every ngram entry references slots whose contents are\n * already filled — no forward references to handle.\n *\n * This runs on library import. Flat typed arrays store each slot as either\n * a plain value (`single`, covering every atom) or a range in a shared\n * `pool` (ngrams).\n * @param input Packed trie string.\n * @param resultLength Expected number of uint16 values in the output.\n * @param atomCount Total number of distinct uint16 values in the trie.\n * @param dict1AtomCount Atoms in the 1-char range (`A` above).\n * @param ngramCount Total number of ngram entries (dict1 + dict2).\n * @param dictSize Number of 1-char code slots; the rest of `BASE - dictSize`\n * first-byte values are 2-char codes.\n */\nexport function decodeTrieDict(input, resultLength, atomCount, dict1AtomCount, ngramCount, dictSize) {\n const base = 91;\n const inputLength = input.length;\n // For 2-char codes, slot = char1 * base - twoCharBias + char2.\n const twoCharBias = dictSize * (base - 1);\n let pos = 0;\n /** Read one slot code at `pos` and return its slot index, advancing pos. */\n const readSlotCode = () => {\n const c1 = BASE91_INVERSE[input.charCodeAt(pos++)];\n return c1 < dictSize\n ? c1\n : c1 * base - twoCharBias + BASE91_INVERSE[input.charCodeAt(pos++)];\n };\n const dict2AtomCount = atomCount - dict1AtomCount;\n const slotCount = atomCount + ngramCount;\n /*\n * Per-slot contents: atoms (always a single value) live directly in\n * `single`; ngram slots hold -1 there and expand to\n * `pool[start[slot] .. start[slot] + length[slot])`.\n */\n const single = new Int32Array(slotCount);\n single.fill(-1, dict1AtomCount, dictSize);\n single.fill(-1, dictSize + dict2AtomCount, slotCount);\n const start = new Int32Array(slotCount);\n const length = new Int32Array(slotCount);\n /**\n * Decode `count` ascending uint16 values from a delta+RLE stream into\n * `single[off..off+count)`.\n *\n * code < 89 → delta = code\n * code == 89 → run-length: next char encodes runLength-2; emit `runLength` consecutive +1 values\n * code == 90, next < 90 → escape: delta = 89 + next * BASE + after-next\n * code == 90, next == 90 → double-escape: extra char for very large deltas\n * @param count\n * @param off\n */\n function decodeDelta(count, off) {\n let previous = 0;\n let slot = off;\n const end = off + count;\n while (slot < end) {\n const code = BASE91_INVERSE[input.charCodeAt(pos++)];\n if (code < 89) {\n previous += code;\n single[slot++] = previous;\n }\n else if (code === 89) {\n let runLength = BASE91_INVERSE[input.charCodeAt(pos++)] + 2;\n while (runLength--)\n single[slot++] = ++previous;\n }\n else {\n const next = BASE91_INVERSE[input.charCodeAt(pos++)];\n previous +=\n 89 +\n // eslint-disable-next-line unicorn/prefer-minimal-ternary -- branches read a different number of side-effecting input bytes\n (next < 90\n ? next * base + BASE91_INVERSE[input.charCodeAt(pos++)]\n : BASE91_INVERSE[input.charCodeAt(pos++)] * 8281 +\n BASE91_INVERSE[input.charCodeAt(pos++)] * base +\n BASE91_INVERSE[input.charCodeAt(pos++)]);\n single[slot++] = previous;\n }\n }\n }\n // Streams 1 & 2: atoms decoded into their slot ranges.\n decodeDelta(dict1AtomCount, 0);\n decodeDelta(dict2AtomCount, dictSize);\n /*\n * Streams 3 & 4 are read in two passes: first collect every ngram's two\n * references and derive its expanded length (each ref resolves to an earlier\n * slot, so lengths are already known), which sizes the shared pool.\n * Pool ranges are handed out in decode order, so the second pass fills\n * the pool contiguously with a single write cursor.\n */\n const references = new Int32Array(ngramCount * 2);\n let poolSize = 0;\n let ngramIndex = 0;\n /**\n * Read `count` ngram entries (each = 2 slot-code references) for the slots\n * starting at `startSlot`, recording references and assigning pool ranges.\n * @param count\n * @param startSlot\n */\n function readNgramReferences(count, startSlot) {\n for (let index = 0; index < count; index++) {\n const slot = startSlot + index;\n const a = readSlotCode();\n const b = readSlotCode();\n references[ngramIndex * 2] = a;\n references[ngramIndex * 2 + 1] = b;\n ngramIndex += 1;\n start[slot] = poolSize;\n const entryLength = (single[a] < 0 ? length[a] : 1) +\n (single[b] < 0 ? length[b] : 1);\n length[slot] = entryLength;\n poolSize += entryLength;\n }\n }\n readNgramReferences(ngramCount - dictSize + dict1AtomCount, dictSize + dict2AtomCount);\n readNgramReferences(dictSize - dict1AtomCount, dict1AtomCount);\n // Second pass: concatenate each ngram's two halves into the pool.\n const pool = new Uint16Array(poolSize);\n let write = 0;\n for (let index = 0; index < ngramIndex; index++) {\n for (let half = 0; half < 2; half++) {\n const source = references[index * 2 + half];\n const value = single[source];\n if (value < 0) {\n let read = start[source];\n const readEnd = read + length[source];\n while (read < readEnd)\n pool[write++] = pool[read++];\n }\n else {\n pool[write++] = value;\n }\n }\n }\n // Stream 5: data. Each code expands to its slot's stored values.\n const out = new Uint16Array(resultLength);\n let outIndex = 0;\n while (pos < inputLength) {\n let slot = BASE91_INVERSE[input.charCodeAt(pos++)];\n if (slot >= dictSize) {\n slot =\n slot * base -\n twoCharBias +\n BASE91_INVERSE[input.charCodeAt(pos++)];\n }\n const value = single[slot];\n if (value < 0) {\n let read = start[slot];\n const readEnd = read + length[slot];\n while (read < readEnd)\n out[outIndex++] = pool[read++];\n }\n else {\n out[outIndex++] = value;\n }\n }\n return out;\n}\n//# sourceMappingURL=decode-shared.js.map","// Generated using scripts/write-decode-map.ts\nimport { decodeTrieDict } from \"../internal/decode-shared.js\";\n/** Packed HTML decode trie data. */\nexport const htmlDecodeTree = /* #__PURE__ */ decodeTrieDict(\"!}.&u%}'&}*'~!6*)%&,~!J~!J~%L~y<~!R,~~%Lu~~#GD~~#|)1#%}^%}2%+#.##%##%}&%##%'#%##&%#%#'%#&#%#&#'#%%#&#%##%#)%''%&%#%#'%#%%#%%}%%%#%#&(23#%%#&-%0%('1#(##%#'##+%'*.:1}#%#6-+(%'%%#%%%}#L'2351&('%}&/N'(0(/*-%(%%}#'+&T%7.2}#&%&#%#36/5##%&%%#&#%%#))2%%##%&&'0~!#*+&'%1~!%).'3q?&%'1~!.##%6(~!+%%%(Gw'rT~!E#<nA%#jZ~!H%(~!42##~!*31&~!G%U~#)5~#`3~!J~!Z~%]~%Y~%C~!q~!u~#kz~%#~!6'~!D~!U~!?~#T~!c%~!G#'~%7|~!G~!J~!G&~#pb~(Df}#%}*&}#%##%##%##&#-}&'#'&%#.++}%mI,#,@&(}*%}*'%&##&#%##%}&0}#.},U},%}+%}&%}#%##&}B%(}(%}+%)})%##%#&}&%##%&}<%}>%#%&}*%}(%}9%}/%})%}*%}*%}?&}&%}3%}&*#%})%#%#)}#&#-#+*%E%%'%'#%}#*V##&##I}#&&##%&%#&&Qf%%))w/0+&%#(#.%-''''++++7}>%4'',##1,#%#&%##&#'##&#*#9)%&%}#*}%,#+P(%A&%#'&##wSD',9E00#y#@}(+}&%&>~!#~!X}#*}(&&}(&}(,%}%&#+&}#&}I%#%}%)#(},'%#*}4%%#%}(''}#/##(##),%-##%%)#&}(.}&%#&}%%}*&#%},&&}&%}#%*'#%})%}D&}&%}-&}6&#&}-,%}#%})-(~+`~,=?~I9'9%~!,#%})%})%}@%}?%}(~!?~#<~#pP~#BG~#=1#%K+~#?#~%;)~#A~#mF1~#A'~'X%'~#lR~#N~'N~#r~#m#-~#i'?%#'%~#B%##%,%#~#_%#0%~#]732~,w~2+#:&#%&'0%&>%}#>##F+)#%&&#(+_}4&}-%}(&}@&}O7Fdf0@+/v4}&WU##&/0#&'('B#%}.%}'+#%}#%%&#&%#%##+#&#)#6#'#.},%}c%},%#%##%&#&%#&~#>'*-.%##%##%}#%%}%'~#)D1}#%*&~#_%%'(~#S2%'.}#~#=##*'*-%}&'%'##&&~'E%.#&~#M4}%%##&'%#~#O1##%&#'+~#<B%##%%'%+~#;#@%}#&%#&&%#(~#H1}'%'##&&~#?A}&'~#D#%32}'&&&&~#[}'(#%}'~#;C})&}%%#%~#=&%,3}%'(#%%~#^'#&&)#%'~#Y%-~#d-%'~#^%%&#&&&}#~#b~2t*&'~&(~&@~0%~e~3}%*''0})&}+~!9##-}#%-hD*)1fC#%/&/fB#40~!+#)*4~!+~!K'&:~!/*7~!.#~!H~!L':~%x&~!H#~!*~%1~!I#~!+A~#p'~!F~~#-#~,,(~.Z~!V~%;'B'mq-W~!N~%I%#&&#&}#%},%%}'%}+X#%}#&}(%}'%}<%}#%}%%'}'%}:~![)9@~%>~#UA%-%##&~!C%~!-.9:~!1~!-^2/:a~!y,D*J#-5)/4~%23,~#G~!L1~!0X3`~!2+~!!0-~&E~!W~!o,>Y&]~%cZx_&~#O*9#A#'#+I'%#)~!0B*-5A+-((F&*M#)(-7-5+'-3a5Vi~!Y~!?+[)%3),ERHm~!+:D,VG.+)?fB%%*(%)'(#&80%1'8`K8?`+'Z#&O&'H5#*9)A%%5&3))0%39+.*7#()&&*=4@**L)<'_&*+..;(#*+)./&0#3)%')-8(4ixD(&.}%,('aI:,)%,k2231T)I'#/-W7,/'Q#.'Y24+h')37</31&83##&0#),H(?'&?/1##%#&&#%''-%&&&#(&''&#.-'%#%%(,')*'&#&#'##%(%(#%('#&##%%%%('%#%#%%#%#&%##h>w+v<ayvyvcg.uuhKr}g/v|g>u9i[~>g5uI~=RvdwEg;v/g;uk!!TTSx]@RT!U!#!@VBRUU!'UTe-d0c`e&gSdicedFcrdTaqb.kYcAohdYd@a3e+d}dMdtd.aJ#bqcK`dle/e.e'dwdPdodddjbEb}ogd^ofdpduc6j?l%d{drdqc)d7bacOdQ%T#Y)X.sR[yH>6Vyv3[xwLu>vo'!*.[yBacahoj>6Rew3[xqdZa#!a&#^(X-[yG>6Vyu3[xvg3sEr|g.u/Ri9db0T#^(Xa)!-[y;>6Vylg4wKs{JwNZt3@3r=c4Z([xlg;wKt!cpq's@v7A'*a(a+!-a#[y<3Dt?3Dt'>6Vym3[xmg9rxsNJwLZt4~?r?db1T#`-!(Xa,!0[yS>6Vz%NuQs.g4wKtnJwNZtS@3r>c4Z([y%g;wKtrdga8!a(!#&T*Y-Xa#!a0<or[yc3Dtq>6Vz43[y3JwNZtf@3s!Ju}!%Dti:pm3c_%X#tjB5pkd6q!r]u?voC'*-a.a2!0a&a+[yI3DtI3Ds~3DtH>6Vyw3[xx;:s#~<5pKJwNZtE@3r~d`a)!a2T#a.(!+U.X1[yT3Dt`3Dtv>6Vz&3[y&g9rxwzcxstPu.<rAJwLZtT~?r@dZa%!a.&^*Za(/Reu[ya>6Vz23[y1g3sEr}wkg{NuQRg{ci(U#5@b`~,cg#U(2WnH5wugcRh7dX#T(Y,a'Ta!!a,[yZ<]mj>6Vz,3[y+Pv#5ReZKu+=,%!H}7ABwkaS?Rh:BcW(X#<]mrj:ubv/ARekdg%!(!a.*Ta(Y.X1!#sP>Rl*Dt6[y>>6Vyo3Wf*jOvuumvuRgRJuq*!:9<B@bX~3jVv&v@s@5Re[d/rQt{uAvo&a&a*)a2!,0Wf!3Dt0=Bs'>6Re}3[xy~<5s%JwJZt1~Gs)c;&!#2sJkNuXvzq7rxu,Re8dka4!a8(aEZ+a@Y.X1Xa)[yd=Bs(3DtP>6Vz53[y4cX#X&Re:avRe9~<5s&JwJZtQ~Gs*i^rzvdRg+Jv{%!2sbB@bX}kdga,!Za?&^*T1/!a'Dt+[y6>6Vyf3Wf%g/u;s4hGu6?Rh-JvZ,!c%#&RoX54Rivj7uyvf8RgTKvZB%*!2sGh<vu5Rgq<=C::9bb~#dZ#T&Ta6Y.X*Dt>[y93Wf)coZ(T,6VyifluvRgC@95@B@bX~/hFu34cC#T,k/unq8w8Q5RkUklwQuzunq8w8Q5Rk8d/rJu?v8w9)-&!a0a;a&aIWejg3sEr/h1s<DtDJvyZqY5aws3Jvy!&Wei~Hr1:au5@Bag>23E~5c:Z&bX};kKv?w&unuVu5Rjc;>bs)#~@:Rh.=ay<a]C;b`}Vd6s/t{uAvoaxa()!a,a7%-a#a2Dt,[yF2Wo[>6Vyt3[xuNuPRi&NuPwpi#RoWh?vf8Ri%Jv]!%Ri:KvxD!.'2WeAjZu`q9rxu,Re7woeAg-unLq(qA_/*2Wg_g3u5q^9:4E}/jTrxrzv=Wkkd~0UX#^^Xa-a1a5T&a=U1a'*aEa]!a*aPaA-adok[y54Rn>;:p3~Dp5g9rpsFNvZqjg3uJp4~<5p0Pw;5qlJwNZt*@3p1Pw:5p/Ou!5p2JvG'!6Vye=<qnJvh_[xhg3v,Rh3kOwOw-sDuev/Re^dha[a%!%!a+#Ta7)-5TaCaO!aka!a)sf[yb2>Rl!9ARiq5E}Qg=ucRkBE|oJrJ_@Wk~@Wk{JrJ_@Wk|@WkyJrJ_@Wk}@WkzJvO_[y2g-vMRmiKuYC!)&>Ri;>Ri<@3RkNc](X#@9Rk=g5vuRmhKvDB!+'=]meg3u4Rmgd)#Y'Vz3CARmfd`a+!%T'!+#Ta1Ta6TaM-sTDt9[yA9sYd'%Y#s[[xpj:ueunaXRgEjRq,v-vuqdd2'`#6Rev<32@5>:2<E}5xIo9a*X#Y(;5RePJvD_g>vyRgNj8w)v8<wggs:RgXiZt|vjx,hSq3ah!-(~@:Ro/Ou!5RhWj^v(pyw8unRhUdx-UY#^Ua.a3a70!)%UX1TaDa)'omRiRRhE[y:3Dsz=Br,>6Vyj3[xkg6ruwjcqsrPw;5r*Ku]D'Zt-@3r(~?r.i[vwv]dU1a--U#`a4(g/vsRhPOu!5RhLj:rmu9Wo!~@:wdh@g/vsRiTjXuvvNr}:RhBj^v(pyw8unRn]dz1UYa'a+^Y(!aETZalaRY.Ta?a4[yDJw1!#qLsW>6Vyrfzq-pLflpwRe|Js>%!Dt@3Dt&Jvy_[xs~HrnjMuwpsw'RecKu+D#'!t<~Grl~?rjg5u-x,gwp{ah!-(~@:Rg~Ou!5Rh'jXuvvNr}:Rh#cW#X/c;&!#2sLi[v7u7RgpJv)(!iLrxu,Re6j7v@s@5Se[e7d`aW!Za(a`T.a#!a3!&aDa-!9)Dt_=6s+3[x~~DR|h~DS6avhGun5RkZj3w)v-]mkKunB!&*]kb97R|i<ARk<c:Z(6Vy}Juh'!wziMRoS:F|vkLuauJv5vtvQRh1d='T+Y#VyO~DR|jcF#T'7R|g97R|kJv3'!ay<Rj,Jvh&!:ReXcsa6*a+#a#_aIRf9aLRf?c,Z&Rf5Rf7c.Z&Rf;Rf>cQ#%T'p-Rf8Rf=ct#%'(*!,p,Rf4p+Rf6Rf:Rf<d~'Ua%U*^UYa(!a,-!#a4YaTalaEX0a8a<Weo3Dt/3Dsx=Br93Wen~Dr;~<5p<JwNZt2@3p=Pw:5p;Ou!5r3c7&!#:p>3Ds}KvGB)_6Vyk2sM=<r7x'eovA(!hFu1ARf}cV#X&@r5j6rvwQa^Rf3c=Za'wkghJv__g;unRggA53B9=b^}%j6uduo5Jq;!(hIv%2Re`Ou4ARe_e%a#^^^Xa&!a*a2!&a6YaP!*ad!#a:aE/5Rn?[y@>6Vyp;:pE~DrY~<5pBJwNZt8@3pCh=rt3rWPw:5pAJup_[xoNuPpF9c!#'45pD5ARn)d8#X'X*3@rU72s]h>v<<sSjJpqvewOJq/(!hNw'5ReBk0s2u3w/w'5ReE5@Jq.!a+JQ!&WeU23d(#Y&RjG5]jBk!u7w&u0udARjEe#+^^^Ub#!a2/a`Z(agT1!a-a;|@TaG!aS[yV=Re~fow'RguNuPRe?bz#'>RoUWeL>:Cbb|?JwPZtVg6ruRmzJvD'!6Vz(g/vmRh~Jvy_[y(g9voRgyx*cy(#2>Ri2B9b]~9kIw9u7rluJu3Rg]dI#a%UY'@=p%CAx.gQZ&RhwwygtRm{x5g_Z'+ABqR9Woa=Bp&dV#^*Xa'!&@o{g4v]Rk;Jv{!%Rk[wkkiA5RkiwwfUB=x,fUuqC&*!>RfTg8v0RfV~ARfSd;rJsAuAv9wR'ae+/aO!a@aza/a#[yQ@Wg!2Wemg3sEr0JvB_g>uvReWg2v+Re=KupB_+[y!2AbY~-~Hr2AJwD!(h<~El>h<~El?Kun@+_:9b`}Kg-v/Ri3g;vtwyk_9]k_d=&T#*U.6qh@Ab`|K9:H|CJv[!&3Dtex'fDwC%!Rf[9WlMd[(^X,!a%Z06Vz!@WgBg=v~Rgvg,QRe@awd,#Y+jTv|Q~EfWj]uNr|~FRfXdy#Y&^Ua%!aO.!(a)Ua;=!a@aKap!a-,a!Ta]a[rSa]p?[y82sK=Bq~;:p:~<5p8Pw:5p7d'#Y'Wf(;RnRi[u4w&RgJJvG'!6Vyh=<r#ijuuv/sIKuYD'ZtG@3p9~Gr&d2#`(g<vtRgFj`u5w&rqpxRf2CJuY!+:wfnTOu!5Rg}jNs1ucv&RfwJvA!&3@q|BDcC#T,k/unq8w8Q5RkTklwQuzunq8w8Q5Rk9dga#!a'!a=#a0!:+Tb*b@aO.a4!aba8aFJv^}?!VyR~Dr<g;u%Rn.~<5p[x'e`wNZtR@3p]Pw:5pZhNvjBp.woe_g5u-r4JwF!%DtO3:ooc7&!#:p^3DtpLuGw(!+%)Dtk6Vz#2sd=<r8d'#Y([y#<x3gJt`w@!)%}MRiowzikRij=]ilxAf3,U(#B2Rf#g0v-Rm[ck{`U#]giKv3>)!&6Ri154s,KuGB_%@r68r:dJ|t`#X(9<E|u2@H|rx3gJu?w'!+'1Nu7Reg4=H~+9<wxgY95Rm]xLggZ-`(X}U2:Ri4h<uOawRmsJv__5@bb{jbV~3dka#a'a]!,#a+U=a>b6a3b%!/aKa/)!arwve^VyJ;:pR~DpTg3uJpS~<5pOPw;5qmPw:5pNOu!5pQJvG'!6Vyx=<qoJvA!{~Jup!%@qk7Rn/KvyD!}''[xz;>wkh'?Rh,x8gyt`w5D!&),(SgyccRgztJ@3pPB5p#d'(Y#<]mmifubw&RgoJvE&!82s^JvF&!8Rf,ADb]~;x=h'rNu]vK!,%'*0RnORh)4Rh*AqQg-vaRnNg;wHwkh'ba~4cE#Ta*x3gctyw@'!+%RnFRnD<4Rn@hFvK5RnCxWg[#`&a0Ua()`1Rm75Rg[c]%X#qi8Rg^NvdRj>BwzgZauwji7Rm6A4wgg]d1#&(*,.0a#Rm;Rm<Rm=Rm>Rm?Rm@RmARmBe%#^^^Xaea?aC/b+(,!a+a#!a/!>a&Ta<aKbD!2wphBRnk[yPw}hE|.=Br-3Dtm>6Vy~g6urRf.x,hPrNav!%'RnqRo%Ro#Nu;q[Pw;5r+JwNZtM@3r)d'#Y'Weh;xChL#`&RnmRnoKu}>%(!Rne~Bs-;2wjcussJv+'!aYSO}6@B<5?ba~8LrNvj!.%*ROwungw~ng~:9;Ri^>wtnig;wHRnixDh@|(UZ.x1h@|)!#:2<H|*xHn]#-UX'3Ro)z=iT}6ARns=Bwsn_wpnaRncw]aR(#UXa&Ua*a/=]iPd'#Y&Ro'WnXf{QRm2hNvj]nZd`'T~&1`{|`#9b]{}c:'!#Wl{>@=be}]?cl{{U#:5Abb}Jds#^YaF!a*b4a#a3aPa>&Tb!bH!*a_!Eau?/a&RjY<]gj>6Vz*;:pe~DrZg,QRj1JwNZtX@wihspcJvZ&!VyX9WmOJu|!|N2WmHJvh&!]ht~Bpbcn&T(!#RmQ<s7Nu;padH#X'`+WmJ@>RmKCARhnKup=!)&Wf+:RhqNuPpf9c!#'45pd5AwghpARn(Ls@w!%,)!RmP@Wfe<E|IJva!&WmNg8vsRmLd`*.`#Y'Xa!axRn*]hrA8Rhug5s@rXg8u!RmMd8#X'X*3@rV72smdI*#UY&RmICARho~GsgxVgd)Ta'U-Y&Xa!T#RnEWnA@Wffg1uDRi0hFvK5RnBxGnG&#`%owp)@wsf+bX}Ze-*1!a*^^^Ua|!#a.aq&Ya2!a>.a6!a:aO`aJDtL[y`@Wg#>6Vz12@wzoYRoZNuPRi!NuPRhzg=ucRi,@=b`{Yg=ucRi-ACJvB!&Sh[ebSh]ebi`wUuFRm4Jw2_[y0JvB!.<Ju(!&SoG}6Shd}6<Ju(!&SoH}6She}6Kur@._g5vHRieJvx!{L2G{Kx6gd'T#?Rh82Wi5cZ#X(g1w)Rm5dW-Y(Ta#!a)!#aYa=wnfE=su2>>bU{0j9udv:<svj8uQv-7RgHdE%#^'sq9sp=>Bb_{TJv`!&g/r|snj6v(us5d,#Y(56H}[978H}]Jw5!&g1rushJvB!+j;v{u5?zDhd}6}bj;v{u5?zDhe}6}ce*#`(^^^a[aea!=!a6a*aoXb1a.!aAbL!b>,b'aL!aV@Wf|2Wlg3[y/JwNZt^@3piPw:5pgJunZou3@rsJva&!Vy_g<v~Rm#JvG'!6Vz0=<r{Ju{%!:pj@WfsiXuJu3Rm:JvZ&!WfA~Bph@c4Z&Dtwax5rubx(#:awRk1@d,#Y&RfjRfid1#,Y(@Wfp2Wlrg5s@ryKu[@!,'=]ig9wlk?Rk>g5u-rqJvy'!@9RkQcH(T#=>Ri~@<wkj(Wj(KuZB*!&<7rw@9RkRcH(T#=>Ri}@<wkj)Wj)dg(Ta2Xa9X#`-!a*CARhg@@=I}d9x;c~#X%so=<sj>2@@=aybb}XjWv0Q~EfEj3vLv;<d,#Y(56H}`978H}_dgaPaFa'a/!#a3Y0a_a;a|!1(a7-[yE3[xt;:pJNvZrrg3uJrvJwNZt=@3pIh=rt3rxPw:5pGOu!5rpJvG'!6Vys=<rz@c4Z&Dt(ax5rtJvZ!&~BpH@wsfNg-vaRlNci*U#=<wei<F}a5@Jq.!a*JQ!%@qZ23d(#Y&RjH5]jCk!u7w&u0udARjFd/prq=tyvpaEa(a:.!a1aZ(@@=I}:9wpd%=<sX55w_h}@@=I{t=ay<aU@@=I}T=ay<2@@=I})?C9:9au@9Cb]}DP~=x-fAZ(2Wl1=ay<aU@@=I}>5@d##Y+jTv|vV~EfFj]uNpn~FRfGdgaK!Z2&!a8a-Tb({E!acTbM*!a(DtY[yYd'%Y#sl[y*hHvh>Re5x2c{Z}.j4uCvcawRiMd+#X+_x&d!},<5RkX;2Hzw@x,gavfB-!{CcF&T#Roe;RodwWbBg5urRgaKvHC*_6Vz+<4opieuew&Rmq@d]&Y)X,T#X0Rh}<BqP=4qS9:ReMg/ujReNJw0!/<Jui%!bd{kawwnemRelAxUa?a3#*.&UX(Ya+a/RhvRnQ<o}9Wmtd-#Y&RgSRmw9;Rmxay=Rmyg-vaRmuxEhSrNu,v-voC!%(aR.a(a7+1Ro1>Ro5CE{A9b]{@;5x#eO{:g;urRi+KrNA!%(Ro3>Ro79;Ri_Ku@>{;&!x%gX|{KunA_+g5QRj/g3u5Rj#g>uERj%wio/xRhS&!,!#^1U}wba{8>>@=be}qC@:D5ba{7Ku+A&!}x?ba}t>>@=be}se(aA^^^Uat!b0#{pa+awUazbGa#aLb9bgaWac'a5TbS=Br!d1#`%scp_Jvl!#rT>Re0JvX&!VyN=H{Fcm#U&:pY=ReaJv2&!]h0=]nUJvG'!6Vy|=<r%JrM_=]h2@Wlud'#)U'Wf'b]{i=]h/Jvh!&~BpWg=v]RnMx+ny#'Nu;pVwjnu=]nwxJnx,T#`&Reqwjnt=]nvieu9vrRjLLuYwP(#+!th@wih5pX~Gr'g5v/Rh4KunA'!-CARnP@wwiN:Rm_9x'cvw>!|l=<saKvAA!0&3@q}>w^e1bp#&Re2Re3BDx7gH#T|f5H|eKuZ>!%(:qNAH{]Jv6!+3B2B9=b^{X<5<B92:E{ZLvhwA(a;a%!igQuyRmad+#Y}m@3Rh5d8#X'X*:AqUAHzmaxwbh<aXRnVcF}RT#Nw&cj#U(BWnug/vsRntdka)(a3+.Zb7aYYan1!bVa@Xa}[y^@b[{G=H{+hFu73Rj&Pv#5ReQcK%T#sig1v{Rj'Ku+D#'!t]~Grm~?rkKuMB!01d5#`'Vy.ta3Dtu~Hroc8#'{^45s85AwZbP&!#Rn!wghxWn#KvEA!)&2RlA2RlBx:h|#(T,=]j09Wobz>x]z/@awRoTd+#Y(az]hFhCrm4d,#Y+jTv|Q~EfMj]uNr|~FRfOdCa!Xa9_X#@<plJvf!%b`{(9;Rgwc;.!#2x7cw#T|UDb]|T5Ju={(!=@E{&Jv)&!Ab`{'awJvf!~*>>@=be{#KuY>!+&4Ezyi[ugv&RjIdea+T)#UXa&T-T&a!Rh9auRmW=]kLg5vuRn+g3u4Rn-Ow6ARn,hHus5xNk?#UX(U~)/g8v0RkD~AwkkF?Ri.OuNBwkkA?Ri/d|a2`a*^UYa.!aBTZaTa'Xa;!(!2!-a#b2[yC>6Vyq3[xr2Wi?g1rusVh%s?DtF~<5rbJs;%!DtBfswKtCj[uvuSsEu3RgVx3o:u+wN'*Zt;@3rd~Grh~?rfg8w)Lq)qE&-a%!>bI|`jWv0vV~EfCjTv|vV~Ef@j]uNpn~FRfBcK#T']gWNu7x,k7q4ai(0!hHv8<RhmkMu9vrsBuev/RhlCJvB!,g<v{wchh~@:Rhji[vrv{wchi~@:RhkdS&a5UY#Ta!RgPwwiI5BwciI~@:Rh`x'iJvj'!5]iJPu8Bwch]~@:Rhach)U#h3rp]gLh@t|Ax,hTq3ah!-(~@:Ro0Ou!5RhXj^v(pyw8unRhVd|)`,^UYas!a?/a2Z'a^Ta{Tb7Ta(a#!a,Wf&9sZ3DtAadamov=Bqt3[xig8vsRm~>waiL2b`{QJv*_Ouv2qgj<v]v2BqfdR'X*X#Y-@3qr~Gqv~?p6hHv-]glPup5Lq+q?_%*b_{qF{n9b^{rOu4ARhpKvCD!+&~Bqp:5Dbb}nwoiKl&unuTuBv]v+ueunaXRf0=Jvh!0nKufu8v1w&w7q%w&uHrz:Rgnj5w,uxDJq/(!hNw'5ReCk0s2u3w/w'5ReFd>Za&!*UaA=<wkgsRnSJv^!%Refifw3vyRgOKu_B'!,<]gkiiu:w&Rh<=C@a^<B57@2F{[<B5@aW:=3away9A5aW=<B=C@a^<B57@2F{Ie-#`(^^^bCara.b8aza6!/bZ,!adTbnTbOb+aFaS!aAT9@Wf~2Wli3Dtl2@d,#Y&RfnRfmJwJZtN~GqyJva&!VyMg<v~Rm%iXuJu3Rm9Jv[_=]ih9wlkDRkCd1#`(@Wg>2Wls3cH#T(@<Rj*=>Ri|b~'#23s9h<~El.d'#Y&Dtxi^rzvdRl#d*#U%(o|B2s`hJwSaxRmDKv4B&!1:Rmdd5#`'Vx}to~Hq{x'f1v3(!BA5ba|bJv_&!Wfug1v]ReIdO+U/Y#&G}-8wze=Rh{g1v]ReHg/uQRf/by#)ibQwERl/cH#T(@<Rj+=>Ri{cNu+vlax-!(#a0qa9<Rii2;;bU{H;x<i=&X#Rk`<4wwi=C9H~8xAI(Y#<azRi@45wXI<B9;5bb~7dL(X#Xa(+!aL6Vy{g5QqOau:5au2@ay547EzbxOcU(UX-T#Ta#:Cbb|A?wjh/b_|SOw6ARgtihr}u7Rhy<d1#T)X1@@=I|~=ay<2@@=aybb}Sj3vLv;<d,#Y(56H}A978H}@dGpvs@uAu`vcw9*!aFa+ai%(b!aXa8.a?a[ozWey=sU2@G}Nch&U#Rf_WexKu+D#'!t:~Gr`~?r^j]uNr|~FRg*j^psurwJt|RmcKv)@&!)7Rkv~Br[@wxfO:Rl3co#U'6Rezj_q#vIuavjRltwzeyh@vr5JqD0!>aY?C9:9au@9Cb]}9cl#U*5;5<H||jbuus1ucv&Rfvg1v~d/pppzqFr^a--a~!aMat1(hFv;Wiz@@=Izoj5uuv-7Rix~Cw`fk2WlVcZ#X,k)u3vWs@u2]ktg;wEx'fBq(_2Wg/jTv|vV~EfoJv]!15x'hzqG!(P~EfU~CRl_j6v(us5x4i-#T(2WmZ?C2F|d>Kq<aj1!*jTqIsBv=Wl`~Cw`fi2WlWj`v0u*~>RlR=c>Z,k#u3vWs@u2]kr<c1Z+jTqIsBv=Wla~Cw`fm2WlXdmb3!a{(arZa`bkTa%TbQTa-a9+c'!aM!/[yL=Bqug.w'RifhFvyDRj.g>vgwyk^9]k^Jv3_@WfbAARkhJw2_[x|JvB_wkoIRoKwkoJRoLd'(Y#<]gm=<9<H|yd'%_X#skDtb3awwqkgNulRkgdB#^',9:p'hJwSaxRmEBwVb8@4=H|qLu+w50&!)@3qs~?pU>Awwn;;Rn=c:Z'ARn<=<qwKvC@!/&~BqqJv6!&]eVb^z^xRge'/a%+^`#Sge}6<4Rn3=]n0Pw2>Rn8Jw0!&>Rn:>Rn6cY#a7+!a&=<wkaNw~h3z_c5Z{=wjh#=]nLKv^D!&)Vyz=bW|swYb<WetcG#T(2wxa@qVx@gD#Y&b^|V5JwG&!5bb|pg/w&RgD@x=kHs=uAvn!a%%/'+RmSRh694Ro`g-vaRmRhHv-]mlxCcS#`&ba~.5cD#Ta)P~=d,#Y(56H{>978H{Dd_#{2^Y%_+qbbb{6g3sERhsbU{?dfa.,`a(Xa<!aiX#(55RiG54RiHcI#T'WiU3RiVNvdwtfcRlKNvdd,#Y&RlHRlExQgf.1*^T'X#Sgf}6Wn4=]hfPrk>Rn7Jw0!&>Rn5>Rn9Lunw?&a2!,5<oq@@wqfdRlJj5Q~=d,#Y(~ARfcOuN]fdDKw;ay(}i!547E}j?cI#T(@5bV}iCbV}hdv(^^Tb?a40,b##Tbo!a*bR!a<b|a/!aKai!aU[yK=]o^g:v>ReGJwPZtK<7Rh+h<~El,Pv#5ReR@awwxjCg,ulRjDJv6&!]j!z?aQeeg>w=Sh<eeJw;!&axEzOg,Qosc!#*:wkeJ]eJ>x'h-u(!%Ro.w~h.zPdNZ(X,Ya![x{;9ReY;wkgxRiF:x?ap#Y&RmUg<s2Rkod]+UY0TZ'!a&A9sw<=bczLNvuw{gqzNhJwSaxRmCKuLay!#&s_Rf-55b^{uJvZa!!c%#(55Ri654wmiu5RiuawLu,vp!+}^%b_}Y9;wkgxba}o>A9:=b^}zKuh=a''!3awRk3c*'!#aHRk6c+Z&Rk5Rk4Jv)&!awRjSawd9*`#0?C2@EzMj8u<uJ5RmbjQrquJu3x,k>uq@_+=ayb^|W~ARkEOuN]k@7dhzV^X/X&a-#zRzSb`zXcJzTT#2WkVKvDBzW!%FzY9;5bbzWjQrquJu3Jw3%!b`zU=ayb^zQd:#X(T-a!6Vyywxh}=b]{Jg=u1RiAdGp~qHtzv!w(wA+a+a;<!aJaYai'anasb(=azRmV:Cbb{MLq2vb!%')RjuRjrRjtRjqx3jnqCw3!%')Rk(Rk+Rk&Rk)Lq2vb!%')Rj{RjxRjzRjwLq2vb!%')RjsRjpRjfRjex3jcqCw3!%')Rk'Rk*RjkRjl9<CbbzfOu4ARhxLq2vb!%')RjyRjvRjhRjgx=joq*uKvb!%')+-Rk.Rk%Rj~Rk-Rk#Rj}x=jdq*uKvb!%')+-Rk,Rk!Rj|RjmRjjRjidAq&qKs@uAv8Aa.'*-a@a&0!aM@a5[y73Dsy3Ds|3Dt):wxgI2sHJwJZt.~Gqxwsf0ikrzt}Rl0Jvy_[xj~HqzKv_A|D!&WfP8axRoVcf,U#k(v]v+ueunaXRf1Ju}'!g8u#Ri=jQw!sCunLprq>!,')~<5qeGzq9F{W=c##%s5au:5aU3CBE|;d4#X(D!a&6Vygx(b;#(=]ed?C2F{N<capoq2r[a&!aPa9,'Pw;5s:@@=I|,55w_h|@@=IzcP~=x'fCqB_2Wl2>aU@@=I|1OuNBc1Z+jTqIsBv=Wlc~Cw`fl2WlZ~AcTa%!Z+jTqIsBv=Wlb~Cw`fh2WlYk+uNqJsBv=WlSg,u3dca3#UXaMYa)TaB-=cM|7T#<bI}l5@B932:aV2G{BOuNBJq:|M!5Ezt=<B=C@a^<B57@2F{v>cB{/T#=ay<bI{3Jv6!a.6BKq0ah&+!5E}HP~Ef{978BaU@@=Iza<7d#.Y#978BaU@@=IzH~AJq0!(@@=IzG978BaU@@=IzFe,aU*Y&^^^bvJb,b:bFad!a,c2Ta>aL.bo6!a#CbTa'T#Re{2Wlh2@G{yg6t~Ro_NvdRfticuRQRllJv3&!x&c|zs@Jw3!%RflwpfkRlpKuL;%(!Re<@G|C2GzdhIvuBwgjAg-u0RjAKQB%!(GzZ@G|5NuuRl7d='T+Y#Vy[g<v~Rm!==G|>JvA!)@wma=]m1ifuaw&RmnLs@vT'!|/+[y,g:v>ReTJw1!#qX=x!eC{bLu+wT&)ZtZauq_~Graci&U#F|89:r_Lupvq!.)&2RlG8RfaC=x!eF{_h?rpWlmd&'!#X|&]k::xJey#`'T|+<E|&2@H|%dE#(^,g;u.RiEg6vjRiC9xCkA{O|zY#g=ucRmXKs0@!&*@G|m@awRknJuh!,3d(}gY}eJvj!%Rm):Jw3!%Rm+Rm-Ls0w(&!a(a#@b[|6cZ#X'7RkxWgAOu4ARn'dH'U#Y*Vz-Wm'CARm}d]*#a%^a*T'aK!a<9bV{PC=p*Jw4!&SgxcbB5r]idw(wBRmF7xFkt#&`(Rm/Rm8E|!JuY_9:Rl5=wrgr2:bbxd@xXfB(a*#T+!.X0X1Ta/a'T&RlDRfL>RlyARl9b[z[>RfZ:RlL:RfRwlg/ARl;9;RlxKv,A/!%7s69<74=BA5ba{-8Bde#`a<XaKYa1,a'P~=wxfB2bZ}}?C972@@=I}r8@55B9;5bb}G978B2@@=aybb}3j3vLv;<Jw3&!>Rfk=ayb^}4~Ad1#`*@@=aybb{w2@>==<bbz]dx+UY#^UaF!a9!bB'Ya1.!ajXa#%olRhD[y=3Dt#Ov5BrHKuMB%!(Rf^Wep~HrJwkiQjKr|~FRg)Ku+D#'!t5~GrF~?rDdV)UY,Z/_7RkuG{<~BrBg,rlsO:235B@bX}|d?a1!#`(6Vyn5@d##Y+jTv|vV~EfIj]uNpn~FRfH7Lq2vb1!a9-978BaU@@=Iz9978BbU}#~AJq0!(@@=Iz8978BaU@@=Iz7~AJQ|}!978BbU}!JvkaK!AdUa21-U#`a+(g/vsRn~Ou!5RPj:rmu9WhOjXuvvNr}:RhAj^v(pyw8unRn[kPr}p|u7vwv]RiSBd;pppzq@qHQa?(b.!a.a`@.|xa(hFv;Wiyj5uuv-7Riw~Cw`fg2WlU978BbU|wOuNBJqG!(P~EfD~CRlQcZ#X,k)u3vWs@u2]ksg;wEx'f@q1_2Wg.j]uNpn~FRfqJv]!15x'h{qG!(@@=IzK~CRl^j6v(us5x4i,#T(2WmY?C2F{1>Kq<aj1!*jTqIsBv=Wld~Cw`fj2Wl[j`v0u*~>RlT=c>Z,k#u3vWs@u2]kq<c1Z+jTqIsBv=Wle~Cw`fn2Wl]dn1#c(a(b^a2!b/bAT(bj!aDa7bu,a_a{c0!2T0g:v>ReD2@G{42@G{5~DpM~<5rc=Bx6i>{RT#RnI@zCx]y]z:2Jv[!zr5Awyk]9]k]dD(Y+X#6Vz.g=wKtgwhaCwgmTWj2Lu,w%_+/[y-B;b^xeg3u3Rj-2@bX{*KrJ<!+'@Wg(g?QRlC@Jv`!%b[zIwsfII}8JQ_@w|kW|=Jv(%!AqcOuNBJvEzh!bYzjLs@wP#(0!oy@>RkdJwMZtc3Dtd@BcG#T'9bWxg2@2Fznd*#Y+;2x'c}w<zizixNgwa#Z'U+!/!a'!a+w~g~z6wcn{Rn}wcnzRn|5Rh%=]nJg5vuRmvNvdRlvcprJu}w*az*a#!%.a.'Bot9qT]kj@Wg'ay2Gzv@Jv`!%b[zEwsfHI}1;ck#Ux`<Cbbx_Lu+w!a&0*!wko*wwo,So,}6Juqxf!E}PigQuyRm`d3(`#8>Rn%:A5B;bZ~%KvhCa!a2!x>k7#Uxb@b{#xaRk7Jw0!)>wwhlShl}6>wwhmShm}6CJvB!.x'hhvj{!!5Bwkhhbaz}x'hivjz~!5Bwkhibaz|xEhTrNu,v-vpD!a%&/)a3a.,%Ro2t[CE{)@3re9b]{%wjo09:rgc:Z&Ro6=<riifuaw&RmoKrNA!%(Ro4>Ro89;Ri`dSaL'UYzxZb)7Rka3xRhT&!,!#^1U}vbaz{>>@=be}yC@:D5bazzKu+A&!}{?ba}y>>@=be}wxBh[t`u~vJvr!%a!a()a,a0a4RoC=]o;Ju(!%RoGRhdwjh`=]oAg>w#Ro?g5vuRo=NvdRl|Ku]C.!&;RoEJvB!%RoORoMBx'h[v+_?w~h`}~5?w~hd~!xKh]oiptu-utv.vp!#%&a30a@a'a+(a/aOp(o~p!RoDJu(!%RoHRhewjha=]oBNvdRl}g>w#Ro@g5vuRo>c[#X']o<CauRoRAd-#Y':RkpauRoQKu]C.!&;RoFJvB!%RoNRoPBx'h]v+_?w~ha}t5?w~he}ue!/UbhYacXaW^Tc&a;b:a-c/#b&aja1(!cL+!bKbt!bmcRc9aIc?8[yW3Dtt94Rg`Jv}!&SiRMzBhEebShEMNuPRe>x7gL#TzuwjirRipc<Z&>on;>z=h-MSh.Mwqczx'a7vj&!>Re4@=ResJt__NuPRi*NuPRi)j]uNr|~FRfzKrJ>_+@Wfy@Wf]2WocKrJ<!+'@Wg%g/QRl@@Jv`!&awRl<wsfFIzgLu(w*!.*&ShBMwvhIRhI9;RhNx1hK'!#Sn]Mx1hK~0!#:2<H~7cNu+w7D*'1ZtW>Rn1~?rOc:Z&Rn2=<rQ<7wjh&=BSnLMc]#X(6Vz)w[b=a!U#9wzgMc3#&(RgMRitRis<x,gKt`ax!&+SioM=BSilMc3#&(RgKRinRimKurB,!&SiQMzBhDebShDM6BJQ!(P~Efx978B2@@=I}WLrJw!!,a*&@G}O@9wkibRid@@x'fKwC!&SlDMSfLMjUv~Q~EfKKv3@a+!(hFv-]mpx/hYZ(C5RiWz<o/MwkhY?So/M@x,gbvfB*&!SgEM:SoeeehFu3:Rgbda(,^TZa)X/7Sg[eb:2RgI~BrMC@wgkc:wwkcRerx3h(uUvK!&*,SnOM4Sh*MArRg;wHRh(x=h;rJvPwI!a4',a'0@Wg&=BSh/Mg>w=Rh=g3w*wwgGRgGcW(X#;Sg}M2Gzk@Jv`!&awRl=wsfGIz`dKZ*T'Y-:RhR7RhQg5u-p`j6v(us5d,#Y+~Awkia?RicOuNBwkibba}Ld6p~tyu_vbAa'a+!a/'a3aEa8a!>Sh,ebJv{!&Sh@ebSaReb9;SgwebNuPRi(NvdRl)NuPRi'hHu^<Rm^Jvv_@Wl(g;u1Si/ebKu'B&!*Sh?eb@Wl'z@aPeb95Si.ebcpputyvjB)!,&a+0a%ShAMWeK@G}C@WfJ9;RhMwvhH9w{ia}ix,hJvRA1(!zAn[MRhHx1hJ~*!#hFv(BSn[MBJQ!(@@=I~'978B2@@=I}2db.Ua<'X}+T#a0XaG2G}E;wkg|wuh!Rh!x,hZu,@)!&So0MVy)C5RiXACJvB!&5RiY5RiZg8w)cG}*T#2@bU}=KsA>(!a.3wkhZba~(x,h^u(A!&(SoCMRhb5Bz=h[eb?w~hb~6x,h_u(A!&(SoDMRhc5Bz=h]eb?w~hc~6e)aA1T#T,^^^c-bMb&blcPaP(a/!0!bA=b5c@a(!bfbrc#2afwmhARnjwchORnp2Wlf3DtsNvdRl-2@wpa<]m0bx(#:awRk2@Jw3!%RfhwpfgRlnKQB%!(G{V@G|'NuuRl6d='T+Y#VyUg<v~Rl~==G|<Jv+'!aYShC}6@B<5?ba~8@Jw3'!g2QRljhLrpWlOd+#Y'g.w'rIg>w*wgj@g-u0Rj@Lu+wT&)ZtUauq]~GrGci&U#F|39:rELrNvj!.%*RhCwunfw~nf~:9;Ri]>wtnhg;wHRnhx3hDs@v~!/+'@Wfr@9RkSNu&Rlo=@<5GzoKs0@_+@Wl+@awRkmJuh!-3d(}pY#qWJvj!%Rm(:Jw3!%Rm,Rm*de&!1U-U#`)Re;@G|.@9Ri82@wjfvRlq=@<5GzpLvOvr!).&2RlF8Rf`C=x!eE{.Jw3_g2QRlkhLrpWlPde(!#U{s,UXa*Ta'[y'g:v>ReS;x0PZ&RnlRnn~HrKJw1}f!=x!eB|2w]aP(#Xa&a*Ta.Ua2a7=]iOd'#Y&Ro&WnWg;u.RiDg6vjRiBNvdRlzhNvj]nYJuW_2Wm3x)kFze{9d])!a.!,Y01!#&aC!a3RndC=ox~BrC@2b^{pg,rlse7x'ksuq!%Rm.E{xidw(wBRmGx9o+)X#wwo-So-}69:Rl4@xSf@a#XZ'X)X,Ta(/ARl8b[xc>RfY:RlI:RfQwlg.ARl:9;Rlwdn'#^XafaQa1X1TaHTa)@b[{zcZ#X'7RkwWg@Ou4ARn&x)kG#{,g7u/RkGdH'U#Y*Vz'Wm&CARm|bx#(A]gUbUzJj9Q~=d,#Y(56H}l978H{U7d,0#U*2>ABb_xZ978BbU{e~AJQ{g!978BbU{hxMh?ad{oUYZ.x1h?{l!#:2<H{mx3n[t{vl!,&a%3Ro(z=iS}6ARnr=Bwsn^wvn`Rnbd`*T}B0!#^X'BG{c9b]{a>>@=be}F?JvS!&BG{d7BG}(Bde#`a1X,Ya@!a'P~=wxf@2bZ}I56B2@@=aybb}08@55B9;5bb}<j3vLv;<Jw3&!>Rfg=ayb^}&OuNBKuLA!)a!P~=x#fD{f2@>==<bbzl?C972@@=Ix^d6rSu,v7w*C(0a)a6#B+a%!sQ[y?3Dt%3[xn~<5rLOu!5p@Ku+D#'!t7~GrP~?rNKvlaya7'!h+v-5qMg=t|cd,U#5AAaa5Abb{S@52B5@a[@52B5Gx[iXueu;d<#`a(!/549C;ag>23ExY5@Dah89b^~689Jv)!~2b[~1Lv'w(%*!a#bX|aPrmawRe]keu7uhv-q6rxu,q`xTo]/a5aU!bNaDXbi!b-!ao!b<bwA!#5@B932:aV2G|:d-)Y#hJrL>RhG<7@C5<H|_=Cau:5aj5@B932:bJ|ng>vIbs)#?C2F|9jPv0w.vISh-MKvUaz(.!9ABbb|[5;5<H|Eg>unwfh;9:4E|YjQsBt|vjx'hYq3!(?C2F|J:2<BaY?C2F|GOu!5x,g|p{ah!-(?C2F|c9:4E|OjXuvvNr}:Rh&i[w*t|cd+U#jJvsu)vsSn~Mkfrmu9p}u7vwv]So!McW#Xa!ax5@A5aY:5;5<H|>kJv~vYrquJu3x4ib#T)2@SmZM?C2F|Bj:rmu9@xPhI(a*a#U#`a3-5Abb|L~@:RhK9:4E|0@52B5G|#C::aY?C2F|-:2<BaY?C2F|.5Jvk!a)javYrquJu3x4ia#T)2@SmYM?C2F|HAxPhH(!a#U#`a*-5Abb|4~@:RhJ9:4E|R@52B5G|F:2<BaY?C2F|Sc^#Xa2j=Qq5CJvB!-g<v{z;hhM?C2F|Zi[vrv{z;hiM?C2F|XKsA>!a)-g<v{z;h[eb?C2F|]i[vrv{z;h]eb?C2F|^iZu.vix,hZq3ah!.(?C2F|QOu!5ShXM:2<BaY?C2F|P\", 13_494, 2713, 49, 25, 61);\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\n/** Packed XML decode trie data. */\nexport const xmlDecodeTree = /* #__PURE__ */ new Uint16Array([\n 512, 26_465, 29_036, 7, 0, 2, 4, 116, 24_638, 116, 24_636, 8693, 29_807,\n 24_610, 621, 1, 0, 0, 3, 112, 24_614, 111, 115, 24_615,\n]);\n//# sourceMappingURL=decode-data-xml.js.map","/**\n * Bit flags & masks for the binary trie encoding used for entity decoding.\n *\n * The trie is a flat `Uint16Array`. Every node starts with one header word:\n *\n * 15..14 VALUE_LENGTH Number of words the value occupies, +1.\n * 0 = no value; 1 = value inline in bits 12..0;\n * 2/3 = value in the 1/2 words after the header.\n * 13 FLAG13 If VALUE_LENGTH > 0: semicolon required (\"strict\"\n * entity; `;` is never stored as a branch).\n * If VALUE_LENGTH == 0: this node is a compact run.\n * 12..7 BRANCH_LENGTH Number of branches (or run length for runs).\n * 6..0 JUMP_TABLE Jump-table offset / single-branch char / first\n * run char (see below).\n *\n * Branch data follows the header and any value words. Its shape is selected\n * by (JUMP_TABLE, BRANCH_LENGTH) in the header:\n *\n * Single branch JUMP_TABLE = the only child's char, BRANCH_LENGTH = 0.\n * No branch words; the child node follows immediately.\n * Jump table JUMP_TABLE = first covered char (> 0), BRANCH_LENGTH =\n * table length. One word per covered char: 0 = no branch,\n * otherwise the child's offset from the END of the table,\n * +1 (so 0 stays the no-branch sentinel).\n * Dictionary JUMP_TABLE = 0, BRANCH_LENGTH = number of branches.\n * ceil(n/2) words of sorted keys packed two per word\n * (low byte first), then n pointer words storing the\n * child's offset from the END of the branch data.\n * Compact run VALUE_LENGTH = 0, FLAG13 set. BRANCH_LENGTH = run\n * length (3..63), JUMP_TABLE = first char; remaining run\n * chars packed two per word after the header. The target\n * node follows the packed words immediately.\n *\n * Pointers are end-relative (rather than relative to the pointer's own\n * position) because that makes the common \"child encoded right after the\n * branch data\" case a small constant, which compresses far better. Offsets\n * to already-encoded (shared) nodes wrap via uint16 modulo arithmetic; the\n * decoder masks navigation results with `& 0xff_ff` to match.\n */\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"FLAG13\"] = 8192] = \"FLAG13\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 8064] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n /** Bits 12..0: the inline value of a VALUE_LENGTH = 1 header word. */\n BinTrieFlags[BinTrieFlags[\"VALUE_MASK\"] = 8191] = \"VALUE_MASK\";\n})(BinTrieFlags || (BinTrieFlags = {}));\n//# sourceMappingURL=bin-trie-flags.js.map","import { codePointToString, replaceCodePoint, replaceCodePointXML, } from \"./decode-codepoint.js\";\nimport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { BinTrieFlags } from \"./internal/bin-trie-flags.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"AMP\"] = 38] = \"AMP\";\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b10_0000;\n/*\n * `parseNumericEntity` packs its two results into one 32-bit integer:\n * `(consumed << CONSUMED_SHIFT) | codePoint`. The 21-bit code point field\n * fits any valid Unicode value (max 0x10FFFF, clamped before packing); the\n * consumed count excludes `&` and gets the remaining 11 bits. Extract it\n * with `>>>` so the topmost bit isn't treated as a sign.\n *\n * Plain consts rather than a `const enum`: with `isolatedModules`, enum\n * member reads compile to runtime property loads.\n */\nconst CONSUMED_SHIFT = 21;\nconst CODE_POINT_MASK = 0x1f_ff_ff;\n/**\n * Reserved consumed field for counts of at least 2047 characters after `&`.\n * The true count is in `longNumericConsumed`.\n */\nconst CONSUMED_OVERFLOW = 0x7_ff;\n/**\n * Side channel for numeric entities of at least 2048 characters including\n * `&`. Set by `parseNumericEntity` when its consumed count reaches the\n * reserved value `CONSUMED_OVERFLOW`; callers read the true count from here.\n * A module-level slot avoids a tuple allocation on the hot path.\n */\nlet longNumericConsumed = 0;\n/**\n * Extract the consumed count from a `parseNumericEntity` packed result,\n * recovering the true length from `longNumericConsumed` when the packed\n * field contains the sentinel. Read it before the next `parseNumericEntity`\n * call, which may overwrite the side channel. This helper owns that protocol.\n * @param packed Packed result of `parseNumericEntity`.\n */\nfunction unpackConsumed(packed) {\n const consumed = packed >>> CONSUMED_SHIFT;\n return consumed === CONSUMED_OVERFLOW ? longNumericConsumed : consumed;\n}\n/**\n * Unsigned subtraction trick: (code - lo) >>> 0 wraps negatives to large\n * values, so a single `<=` covers the entire [lo..hi] range check.\n * @param code Code point to check.\n */\nfunction isNumber(code) {\n return (code - CharCodes.ZERO) >>> 0 <= 9;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code | TO_LOWER_BIT) - CharCodes.LOWER_A) >>> 0 <= 5; // F - a\n}\nfunction isAlpha(code) {\n return ((code | TO_LOWER_BIT) - CharCodes.LOWER_A) >>> 0 <= 25; // Z - a\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n * @param code Code point to check.\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAlpha(code) || isNumber(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\n/**\n * Decoding mode for named entities.\n */\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n decodeTree;\n emitCodePoint;\n errors;\n /** The current state of the decoder. */\n state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n consumed = 1;\n /**\n * The result of the entity.\n *\n * For named entities: the trie index of the best legacy match so far\n * (0 = none). For numeric entities: the accumulated code point.\n */\n result = 0;\n /** The current index in the decode tree. */\n treeIndex = 0;\n /**\n * Characters consumed since the last recorded legacy match, plus one.\n * Invariant at the top of the `stateNamedEntity` loop: `excess` equals\n * the number of unrecorded consumed characters + 1.\n */\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive (read via destructuring)\n excess = 1;\n /** The mode in which the decoder is operating. */\n decodeMode = DecodingMode.Strict;\n /** The number of characters that have been consumed in the current run. */\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive\n runConsumed = 0;\n constructor(\n /** The predefined HTML or XML decode tree. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For named entities that decode to multiple code points, this will\n * be called multiple times, with the second codepoint, and the same\n * `consumed` value.\n * @param codepoint The decoded codepoint.\n * @param consumed The number of characters consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n }\n /**\n * Resets the instance to make it reusable.\n * @param decodeMode Entity decoding mode to use.\n */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n this.runConsumed = 0;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the non-streaming `decodeWithTrie`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n default: {\n // NamedEntity — the only remaining state.\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n // eslint-disable-next-line unicorn/consistent-class-member-order\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML\n * spec. Digit parsing matches the hex loop in `parseNumericEntity`.\n * The accumulated value is preserved for numeric validation callbacks.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const inputLength = input.length;\n // Local accumulators; flushed before any exit (see stateNamedEntity).\n let { result } = this;\n let { consumed } = this;\n while (offset < inputLength) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n // Convert hex digit to value (0-15); 'a'/'A' -> 10.\n const digit = char <= CharCodes.NINE\n ? char - CharCodes.ZERO\n : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;\n result = result * 16 + digit;\n consumed += 1;\n offset += 1;\n }\n else {\n this.result = result;\n this.consumed = consumed;\n return this.emitNumericEntity(char, 3);\n }\n }\n this.result = result;\n this.consumed = consumed;\n return -1; // Incomplete entity\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML\n * spec. Digit parsing matches the decimal loop in `parseNumericEntity`.\n * The accumulated value is preserved for numeric validation callbacks.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const inputLength = input.length;\n // Local accumulators; flushed before any exit (see stateNamedEntity).\n let { result } = this;\n let { consumed } = this;\n while (offset < inputLength) {\n const digit = input.charCodeAt(offset) - CharCodes.ZERO;\n if (digit >>> 0 > 9) {\n this.result = result;\n this.consumed = consumed;\n return this.emitNumericEntity(digit + CharCodes.ZERO, 2);\n }\n result = result * 10 + digit;\n consumed += 1;\n offset += 1;\n }\n this.result = result;\n this.consumed = consumed;\n return -1; // Incomplete entity\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((this.decodeTree === xmlDecodeTree\n ? replaceCodePointXML\n : replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Flush locally-tracked walk state back to the fields, then emit the\n * recorded legacy match or reject (cold path — at most once per\n * entity). Called after failed navigation (leaf node, branch miss, or\n * compact-run mismatch). In attribute mode, reject if no legacy was\n * recorded at the current node, if we descended past it, or if the\n * pending input character is an invalid attribute terminator.\n * @param consumed Locally-tracked consumed count.\n * @param excess Locally-tracked excess count.\n * @param char Pending input character (may be the mismatching char).\n * @param valueLength Value length at the current trie node.\n */\n flushAndEmitLegacyOrReject(consumed, excess, char, valueLength) {\n this.consumed = consumed;\n this.excess = excess;\n return this.result === 0 ||\n (this.decodeMode === DecodingMode.Attribute &&\n (valueLength === 0 ||\n excess > 1 ||\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n const inputLength = input.length;\n const isStrict = this.decodeMode === DecodingMode.Strict;\n /*\n * Local copies of the resumable walk state avoid per-character\n * field writes. They are flushed back to the fields\n * on every exit (chunk end, and before any emit helper that reads\n * them). `this.result` is only written at the (rare) record points,\n * so it stays a direct field write.\n *\n * Legacy-match recording happens in two idempotent places: at the\n * loop top when sitting on a value node, and in the chunk-end\n * epilogue (so `end()` sees matches that land exactly on a chunk\n * boundary). Recording applies `consumed += excess - 1; excess = 1`,\n * which is a no-op when repeated — the loop-top invariant is\n * `excess` = unrecorded consumed characters + 1.\n */\n let { treeIndex } = this;\n let { excess } = this;\n let { consumed } = this;\n let current = decodeTree[treeIndex];\n while (offset < inputLength) {\n /*\n * Descend through value-less jump-table nodes (including the\n * single-branch encoding) inline, mirroring `decodeWithTrie`:\n * this avoids a `determineBranch` call per level for the\n * dominant node shape — including the root on the first write.\n */\n while ((current &\n (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===\n 0 &&\n (current & BinTrieFlags.JUMP_TABLE) !== 0) {\n const char = input.charCodeAt(offset);\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n if (branchCount === 0) {\n // Single branch encoded inline in the jump offset bits.\n if (char !== jumpOffset) {\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);\n }\n treeIndex += 1;\n }\n else {\n const slot = char - jumpOffset;\n if (slot >>> 0 >= branchCount) {\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);\n }\n const stored = decodeTree[treeIndex + 1 + slot];\n if (stored === 0) {\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);\n }\n // End-relative: branch data ends at treeIndex+1+branchCount.\n treeIndex = (treeIndex + branchCount + stored) & 0xff_ff;\n }\n current = decodeTree[treeIndex];\n offset += 1;\n excess += 1;\n /*\n * `charCodeAt` past the end returns NaN, which would alias\n * to slot 0 after `>>> 0` — bail out explicitly.\n */\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n if (offset >= inputLength)\n break;\n }\n if (offset >= inputLength)\n break;\n // Handle compact runs (resumable across chunks).\n if ((current &\n (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===\n BinTrieFlags.FLAG13) {\n const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 3..63 */\n let { runConsumed } = this;\n // If we are starting a run, check the first char.\n if (runConsumed === 0) {\n const char = input.charCodeAt(offset);\n if (char !== (current & BinTrieFlags.JUMP_TABLE)) {\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);\n }\n offset += 1;\n excess += 1;\n runConsumed = 1;\n }\n // Check remaining characters in the run (packed two per uint16 word).\n while (runConsumed < runLength) {\n if (offset >= inputLength) {\n this.treeIndex = treeIndex;\n this.excess = excess;\n this.consumed = consumed;\n this.runConsumed = runConsumed;\n return -1;\n }\n const charIndexInPacked = runConsumed - 1;\n const packedWord = decodeTree[treeIndex + 1 + (charIndexInPacked >> 1)];\n const expectedChar = (packedWord >> ((charIndexInPacked & 1) << 3)) & 0xff;\n const char = input.charCodeAt(offset);\n if (char !== expectedChar) {\n this.runConsumed = 0;\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);\n }\n offset += 1;\n excess += 1;\n runConsumed += 1;\n }\n this.runConsumed = 0;\n treeIndex += 1 + (runLength >> 1);\n current = decodeTree[treeIndex];\n // Loop top handles the landed-on node (record/emit/branch).\n continue;\n }\n // Header plus out-of-line value words; 0 means no value.\n const valueLength = current >>> 14;\n const char = input.charCodeAt(offset);\n if (valueLength !== 0) {\n // Record a legacy match (FLAG13 clear = semicolon optional).\n if (!isStrict && (current & BinTrieFlags.FLAG13) === 0) {\n this.result = treeIndex;\n consumed += excess - 1;\n excess = 1;\n }\n /*\n * Implicit semicolon handling: emit immediately. Covers both\n * strict (FLAG13 set) and legacy entities — neither stores\n * an explicit `;` branch in the trie.\n */\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(treeIndex, valueLength, consumed + excess);\n }\n /*\n * `valueLength === 1` packs the codepoint into the header\n * word's low 13 bits, where branch metadata also lives. Skip\n * the branch lookup on leaves so those value bits aren't\n * reinterpreted as branch offsets.\n */\n if (valueLength === 1) {\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, valueLength);\n }\n }\n // Value-bearing or dictionary node: dispatch through determineBranch.\n const next = determineBranch(decodeTree, current, treeIndex + (valueLength || 1), char);\n if (next < 0) {\n return this.flushAndEmitLegacyOrReject(consumed, excess, char, valueLength);\n }\n treeIndex = next;\n current = decodeTree[treeIndex];\n offset += 1;\n excess += 1;\n }\n /*\n * Chunk exhausted. Record a legacy match we may be sitting on, so a\n * subsequent `end()` emits it, then persist the walk state.\n */\n if (!isStrict &&\n current >>> 14 !== 0 &&\n (current & BinTrieFlags.FLAG13) === 0) {\n this.result = treeIndex;\n consumed += excess - 1;\n excess = 1;\n }\n this.treeIndex = treeIndex;\n this.excess = excess;\n this.consumed = consumed;\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n const { result, decodeTree } = this;\n const valueLength = decodeTree[result] >>> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n this.errors?.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n * @param result The index of the entity in the decode tree.\n * @param valueLength Encoded value length (header plus any value words).\n * @param consumed The number of characters consumed.\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & BinTrieFlags.VALUE_MASK\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // Emit the second UTF-16 code unit.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n * @returns The number of characters consumed.\n */\n end() {\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n default: {\n // EntityStart or unknown — return 0.\n return 0;\n }\n }\n }\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * See `BinTrieFlags` for the branch-data layouts handled here.\n * @param decodeTree The trie.\n * @param current The current node's header word.\n * @param nodeIndex Index of the node's first branch-data word (the header\n * plus any value words have been skipped by the caller).\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch or jump table (jumpOffset encodes the first/only char code).\n if (jumpOffset) {\n if (branchCount === 0) {\n // Single branch encoded inline in the jump offset bits.\n return char === jumpOffset ? nodeIndex : -1;\n }\n /*\n * Jump table: branchCount consecutive slots starting at jumpOffset.\n * Unsigned comparison handles both < 0 and >= branchCount in one check.\n */\n const slot = char - jumpOffset;\n if (slot >>> 0 >= branchCount)\n return -1;\n const stored = decodeTree[nodeIndex + slot];\n /*\n * 0 = empty slot (no branch); otherwise the child's offset from the\n * end of the branch array, +1 (end-relative pointers compress\n * better). `& 0xff_ff` mirrors the encoder's uint16 wrap for\n * backreferences to already-encoded nodes.\n */\n return stored === 0\n ? -1\n : (nodeIndex + branchCount + stored - 1) & 0xff_ff;\n }\n /*\n * Case 2: Packed dictionary. Linear scan — over 90% of dict nodes have\n * <= 4 branches in the HTML trie, where the constant-factor savings\n * dominate over binary search's asymptotic edge.\n */\n if (branchCount === 0)\n return -1;\n const packedKeySlots = (branchCount + 1) >> 1;\n const branchEnd = nodeIndex + packedKeySlots + branchCount;\n for (let index = 0; index < branchCount; index++) {\n const packed = decodeTree[nodeIndex + (index >> 1)];\n const key = (packed >> ((index & 1) << 3)) & 0xff;\n if (key === char) {\n const pointerIndex = nodeIndex + packedKeySlots + index;\n // Pointers are relative to the end of the branch data.\n return (branchEnd + decodeTree[pointerIndex]) & 0xff_ff;\n }\n // Keys are sorted; if we've passed `char`, no match is possible.\n if (key > char)\n return -1;\n }\n return -1;\n}\n/**\n * Read the decoded value from a trie node.\n * @param decodeTree The trie.\n * @param nodeIndex The index of the node.\n * @param valueLength The length of the value (1, 2, or 3).\n * @returns The decoded string.\n */\nfunction readTrieValue(decodeTree, nodeIndex, valueLength) {\n if (valueLength === 1) {\n return String.fromCharCode(decodeTree[nodeIndex] & BinTrieFlags.VALUE_MASK);\n }\n if (valueLength === 2) {\n return String.fromCharCode(decodeTree[nodeIndex + 1]);\n }\n return String.fromCharCode(decodeTree[nodeIndex + 1], decodeTree[nodeIndex + 2]);\n}\n/**\n * Parse a numeric entity (`&#DDD;` or `&#xHHH;`).\n *\n * Encodes the result as `(consumed << CONSUMED_SHIFT) | codepoint` (see\n * the packing comment at the top of the file; overlong entities spill\n * their length into `longNumericConsumed`). Returns 0 when no digits were\n * found.\n *\n * This is the sync counterpart of the streaming\n * `EntityDecoder#stateNumericDecimal` / `#stateNumericHex`. Digit parsing\n * matches those methods; only this packed result needs a value clamp.\n * @param input The input string.\n * @param numberStart Index of the `#` character.\n * @param inputLength Cached `input.length`.\n */\nfunction parseNumericEntity(input, numberStart, inputLength) {\n let offset = numberStart + 1; // Skip \"#\"\n let cp = 0;\n let digitStart = offset;\n /*\n * Separate decimal and hexadecimal loops: each multiplies by a constant\n * and runs a single digit test, instead of a per-character base check.\n */\n if (offset < inputLength &&\n (input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n offset += 1;\n digitStart = offset;\n while (offset < inputLength) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n cp = cp * 16 + (char - CharCodes.ZERO);\n }\n else if (isHexadecimalCharacter(char)) {\n cp = cp * 16 + ((char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10);\n }\n else {\n break;\n }\n offset += 1;\n }\n }\n else {\n while (offset < inputLength) {\n const digit = input.charCodeAt(offset) - CharCodes.ZERO;\n if (digit >>> 0 > 9)\n break;\n cp = cp * 10 + digit;\n offset += 1;\n }\n }\n if (offset === digitStart)\n return 0;\n // Include the semicolon in consumed when present.\n if (offset < inputLength && input.charCodeAt(offset) === CharCodes.SEMI) {\n offset += 1;\n }\n /*\n * Clamp out-of-range values to 0x110000 so they fit the 21-bit field\n * and decode to U+FFFD. Lengths at or above CONSUMED_OVERFLOW use the\n * side channel described with the packing constants.\n */\n if (cp > 0x10_ff_ff)\n cp = 0x11_00_00;\n let consumed = offset - numberStart;\n if (consumed >= CONSUMED_OVERFLOW) {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- deliberate side channel, see `longNumericConsumed`\n longNumericConsumed = consumed;\n consumed = CONSUMED_OVERFLOW;\n }\n return (consumed << CONSUMED_SHIFT) | cp;\n}\n/**\n * Decode all entities in `input` using the HTML trie.\n *\n * Hard-wired to `htmlDecodeTree`: the inline root navigation below assumes\n * the HTML root's jump-table shape, so this must not be generalized to\n * other tries (the XML trie's dictionary root would silently match no\n * entities — `decodeXML` has its own hand-coded fast path instead).\n * @param input The string to decode.\n * @param isStrict Only match semicolon-terminated entities.\n * @param isAttribute Whether to apply attribute-specific parsing rules (disallowing certain non-semicolon terminators).\n * @returns The decoded string.\n */\nfunction decodeWithTrie(input, isStrict, isAttribute) {\n const decodeTree = htmlDecodeTree;\n // Fast path: no entities at all — return input without any allocation.\n let offset = input.indexOf(\"&\");\n if (offset < 0)\n return input;\n const inputLength = input.length;\n /*\n * `chunkStart` marks the start of the next pending slice. Rejected\n * entities don't advance it, so consecutive rejections are stitched\n * into a single `slice` once a real match (or end of input) is hit.\n */\n let chunkStart = 0;\n let result = \"\";\n /*\n * Root navigation fields, hoisted out of the per-entity loop. The HTML\n * root is a multi-branch jump-table covering [A-Za-z]; see the inline\n * first-iteration comment below.\n */\n const root = decodeTree[0];\n const rootJumpOffset = root & BinTrieFlags.JUMP_TABLE;\n const rootBranchCount = (root & BinTrieFlags.BRANCH_LENGTH) >> 7;\n do {\n const entityStart = offset + 1;\n // Quick check: entity names must start with [A-Za-z], numeric with #.\n const firstChar = input.charCodeAt(entityStart);\n let consumed;\n let value;\n if (firstChar === CharCodes.NUM) {\n const packed = parseNumericEntity(input, entityStart, inputLength);\n consumed = unpackConsumed(packed);\n // In strict mode, require semicolon termination.\n if (isStrict &&\n consumed > 0 &&\n input.charCodeAt(entityStart + consumed - 1) !== CharCodes.SEMI) {\n consumed = 0;\n }\n value =\n consumed === 0\n ? \"\"\n : codePointToString(packed & CODE_POINT_MASK);\n }\n else if (isAlpha(firstChar)) {\n consumed = 0;\n value = \"\";\n /*\n * The generator guarantees a jump-table root. Consume the first\n * character directly, then walk from its child.\n */\n const rootSlotIndex = firstChar - rootJumpOffset;\n let nodeIndex;\n if (rootSlotIndex >>> 0 < rootBranchCount) {\n const stored = decodeTree[1 + rootSlotIndex];\n nodeIndex =\n stored === 0 ? -1 : (rootBranchCount + stored) & 0xff_ff;\n }\n else {\n nodeIndex = -1;\n }\n /*\n * Best legacy (no-semicolon) match so far, as trie coordinates.\n * Deferring `readTrieValue` to the end avoids allocating a\n * string for matches that longer matches supersede.\n */\n let bestNodeIndex = 0;\n let bestValueLength = 0;\n let current = nodeIndex < 0 ? 0 : decodeTree[nodeIndex];\n let index = entityStart + 1;\n /*\n * Walk the trie from the root child. The `trie` label lets the\n * inner descent and compact-run loops abandon the entity (and\n * fall through to the legacy/reject handling) directly.\n */\n trie: while (index < inputLength) {\n /*\n * Inline value-less jump tables and single branches. A miss\n * falls through to the recorded legacy match or rejection.\n */\n while (\n // Value-less, non-run node with a nonzero jump offset.\n (current &\n (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===\n 0 &&\n (current & BinTrieFlags.JUMP_TABLE) !== 0) {\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n if (branchCount === 0) {\n // Single branch encoded inline in the jump offset bits.\n if (input.charCodeAt(index) !== jumpOffset)\n break trie;\n nodeIndex += 1;\n }\n else {\n const slot = input.charCodeAt(index) - jumpOffset;\n if (slot >>> 0 >= branchCount)\n break trie;\n const stored = decodeTree[nodeIndex + 1 + slot];\n if (stored === 0)\n break trie;\n // End-relative: branch data ends at nodeIndex+1+branchCount.\n nodeIndex =\n (nodeIndex + branchCount + stored) & 0xff_ff;\n }\n current = decodeTree[nodeIndex];\n index += 1;\n /*\n * `charCodeAt` past the end returns NaN, which would\n * alias to slot 0 after `>>> 0` — bail out explicitly.\n */\n if (index >= inputLength)\n break trie;\n }\n // FLAG13 without a value marks a compact run.\n if ((current &\n (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===\n BinTrieFlags.FLAG13) {\n const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n // Check first char (stored in JUMP_TABLE bits).\n if (input.charCodeAt(index) !==\n (current & BinTrieFlags.JUMP_TABLE)) {\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n break;\n }\n index += 1;\n // Check remaining characters (packed two per uint16 word).\n const remaining = runLength - 1;\n let wordIndex = nodeIndex + 1;\n let charIndexInPacked = 0;\n /*\n * Process pairs: read one packed word, compare low byte then high byte.\n * No explicit bounds check needed — charCodeAt returns NaN for OOB,\n * which never equals an integer, so the mismatch break fires naturally.\n */\n for (; charIndexInPacked + 1 < remaining; charIndexInPacked += 2) {\n const packed = decodeTree[wordIndex];\n if (input.charCodeAt(index) !== (packed & 0xff))\n break trie;\n index += 1;\n if (input.charCodeAt(index) !== ((packed >> 8) & 0xff))\n break trie;\n index += 1;\n wordIndex += 1;\n }\n // Handle odd trailing char.\n if (charIndexInPacked < remaining) {\n if (input.charCodeAt(index) !==\n (decodeTree[wordIndex] & 0xff))\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n break;\n index += 1;\n }\n nodeIndex += 1 + (runLength >> 1);\n current = decodeTree[nodeIndex];\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n continue;\n }\n // Header plus out-of-line value words; 0 means no value.\n const valueLength = current >>> 14;\n const char = input.charCodeAt(index);\n /*\n * Check current node for a value before navigating.\n * This handles both: (a) values reached via compact runs on the\n * previous iteration, and (b) values at regular branch targets.\n */\n if (valueLength !== 0) {\n // If char is `;`, emit immediately.\n if (char === CharCodes.SEMI) {\n consumed = index - entityStart + 1;\n // Inline leaves carry the value in the low 13 bits.\n value =\n valueLength === 1\n ? String.fromCharCode(current & BinTrieFlags.VALUE_MASK)\n : readTrieValue(decodeTree, nodeIndex, valueLength);\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n break;\n }\n // Record non-terminated (legacy) match (FLAG13 clear = semicolon optional).\n if (!isStrict && (current & BinTrieFlags.FLAG13) === 0) {\n consumed = index - entityStart;\n bestNodeIndex = nodeIndex;\n bestValueLength = valueLength;\n }\n /*\n * A valueLength of 1 means the value is packed inline in the header\n * word — these are always leaf nodes with no branches, so we can\n * stop walking the trie.\n */\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n if (valueLength === 1)\n break;\n }\n // Navigate to the next node (valueLength || 1: skip past value words, minimum 1 for header).\n const next = determineBranch(decodeTree, current, nodeIndex + (valueLength || 1), char);\n // eslint-disable-next-line unicorn/no-break-in-nested-loop\n if (next < 0)\n break;\n nodeIndex = next;\n current = decodeTree[nodeIndex];\n index += 1;\n }\n /*\n * Post-loop: if the semicolon path didn't set value,\n * check for a final legacy match. The last navigation may\n * have landed on a legacy node whose value hasn't been\n * recorded yet (loop exited before the top-of-loop check\n * could run).\n */\n if (value === \"\") {\n const finalVL = current >>> 14;\n if (finalVL !== 0 &&\n !isStrict &&\n (current & BinTrieFlags.FLAG13) === 0) {\n consumed = index - entityStart;\n bestNodeIndex = nodeIndex;\n bestValueLength = finalVL;\n }\n if (consumed > 0) {\n value = readTrieValue(decodeTree, bestNodeIndex, bestValueLength);\n }\n }\n }\n else {\n consumed = 0;\n value = \"\";\n }\n /*\n * The attribute end-char rule (HTML spec §13.2.5.73) only applies to\n * unterminated *named* references. Semicolon-terminated entities and\n * numeric entities are always accepted, matching EntityDecoder behavior.\n *\n * When `attribute` is false (the common case), short-circuit skips all\n * the unterminated-named checks entirely.\n */\n if (consumed === 0 ||\n (isAttribute &&\n firstChar !== CharCodes.NUM &&\n input.charCodeAt(entityStart + consumed - 1) !==\n CharCodes.SEMI &&\n entityStart + consumed < inputLength &&\n isEntityInAttributeInvalidEnd(input.charCodeAt(entityStart + consumed)))) {\n // Rejected: leave `&` in the pending chunk, scan past it.\n offset = entityStart;\n }\n else {\n if (chunkStart < offset) {\n result += input.slice(chunkStart, offset);\n }\n result += value;\n offset = chunkStart = entityStart + consumed;\n }\n /*\n * Adjacent entities (`&x;&y;`) are common in entity-dense input;\n * checking the single character at `offset` first skips the\n * `indexOf` call (and its per-call overhead) for that case.\n */\n if (input.charCodeAt(offset) !== CharCodes.AMP) {\n offset = input.indexOf(\"&\", offset);\n }\n } while (offset >= 0);\n return result + input.slice(chunkStart);\n}\n/**\n * Decodes an HTML string.\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return decodeWithTrie(htmlString, mode === DecodingMode.Strict, mode === DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string in an attribute.\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return decodeWithTrie(htmlAttribute, false, true);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return decodeWithTrie(htmlString, true, false);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * Uses a hand-coded fast path for the 5 XML named entities (amp, lt, gt,\n * quot, apos) plus numeric entities, bypassing the trie entirely.\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n let offset = xmlString.indexOf(\"&\");\n if (offset < 0)\n return xmlString;\n let lastIndex = 0;\n let result = \"\";\n do {\n const start = offset + 1;\n let consumed = 0;\n let value = \"\";\n const c1 = xmlString.charCodeAt(start);\n if (c1 === CharCodes.NUM) {\n const packed = parseNumericEntity(xmlString, start, xmlString.length);\n consumed = unpackConsumed(packed);\n // XML is always strict — require semicolon.\n if (consumed === 0 ||\n xmlString.charCodeAt(start + consumed - 1) !== CharCodes.SEMI) {\n consumed = 0;\n }\n else {\n const codePoint = packed & CODE_POINT_MASK;\n // Nonzero BMP values below the surrogate range need no replacement.\n value =\n (codePoint - 1) >>> 0 < 0xd7_ff\n ? String.fromCharCode(codePoint)\n : String.fromCodePoint(replaceCodePointXML(codePoint));\n }\n }\n else {\n /* eslint-disable unicorn/no-break-in-nested-loop -- Keep XML name dispatch inline with the decode loop. */\n switch (c1) {\n // &lt; / &gt;\n case 0x6c:\n case 0x67: {\n if (xmlString.charCodeAt(start + 1) === 0x74 &&\n xmlString.charCodeAt(start + 2) === CharCodes.SEMI) {\n consumed = 3;\n value = c1 === 0x6c ? \"<\" : \">\";\n }\n break;\n }\n // &amp; / &apos;\n case 0x61: {\n const c2 = xmlString.charCodeAt(start + 1);\n if (c2 === 0x6d &&\n xmlString.charCodeAt(start + 2) === 0x70 &&\n xmlString.charCodeAt(start + 3) === CharCodes.SEMI) {\n consumed = 4;\n value = \"&\";\n }\n else if (c2 === 0x70 &&\n xmlString.charCodeAt(start + 2) === 0x6f &&\n xmlString.charCodeAt(start + 3) === 0x73 &&\n xmlString.charCodeAt(start + 4) === CharCodes.SEMI) {\n consumed = 5;\n value = \"'\";\n }\n break;\n }\n // &quot;\n case 0x71: {\n if (xmlString.charCodeAt(start + 1) === 0x75 &&\n xmlString.charCodeAt(start + 2) === 0x6f &&\n xmlString.charCodeAt(start + 3) === 0x74 &&\n xmlString.charCodeAt(start + 4) === CharCodes.SEMI) {\n consumed = 5;\n value = '\"';\n }\n break;\n }\n }\n /* eslint-enable unicorn/no-break-in-nested-loop */\n }\n if (consumed > 0) {\n if (lastIndex < offset)\n result += xmlString.slice(lastIndex, offset);\n result += value;\n offset = lastIndex = start + consumed;\n }\n else {\n offset = start;\n }\n /*\n * Adjacent entities (`&x;&y;`) are common in entity-dense input;\n * checking the single character at `lastIndex` first skips the\n * `indexOf` call (and its per-call overhead) for that case.\n */\n offset =\n xmlString.charCodeAt(offset) === CharCodes.AMP\n ? offset\n : xmlString.indexOf(\"&\", offset);\n } while (offset >= 0);\n return result + xmlString.slice(lastIndex);\n}\nexport { replaceCodePoint, replaceCodePointXML, } from \"./decode-codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\n//# sourceMappingURL=decode.js.map","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\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 isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (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, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n // OPTIMIZATION: Use String.fromCharCode for BMP characters (< 0x10000) which is faster\n // than String.fromCodePoint. Characters outside BMP are rare in HTML.\n this._appendCharToCurrentCharacterToken(type, cp < 65536 ? String.fromCharCode(cp) : String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups 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(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\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 token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n","import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n if (this.current && this.currentTagId !== undefined) {\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(Math.max(targetIdx, 0));\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== undefined &&\n this.currentTagId !== exclusionId &&\n IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\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, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex !== -1) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx === -1) {\n this.entries.length = 0;\n }\n else {\n this.entries.splice(0, markerIdx + 1);\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n","import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n","import { DOCUMENT_MODE } from './html.js';\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';\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];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new 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: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//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(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}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\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}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\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}\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 return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode =\n !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\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 /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \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 closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n currentTagId !== undefined &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const 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 //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return (this.fosterParentingEnabled &&\n this.openElements.currentTagId !== undefined &&\n this._isElementCausesFosterParenting(this.openElements.currentTagId));\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(Math.max(idx, 0));\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the 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 const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\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 p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\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;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\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}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\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 = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\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}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\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}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n p.openElements.currentTagId !== undefined &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n","/**\n * Get the named reference for an XML special character or U+00A0.\n * @param char Code unit matched by one of the escape regexes.\n */\nfunction getEscape(char) {\n return char === 34\n ? \"&quot;\"\n : char === 38\n ? \"&amp;\"\n : char === 39\n ? \"&apos;\"\n : char === 60\n ? \"&lt;\"\n : char === 62\n ? \"&gt;\"\n : \"&nbsp;\";\n}\n/**\n * Read a code point at a given index.\n * @param input String to read the code point from.\n * @param index Current read position in the input string.\n * @returns The code point at `index`, or `undefined` if `index` is out of range.\n * @deprecated Use `String.prototype.codePointAt` directly instead; this export\n * will be removed in the next major.\n */\nexport const getCodePoint = (input, index) => input.codePointAt(index);\n/**\n * Bitset for ASCII characters that need to be escaped in XML.\n */\nexport const XML_BITSET_VALUE = 0x50_00_00_c4; // 32..63 -> 34 (\"),38 (&),39 ('),60 (<),62 (>)\n/**\n * Matches exactly the characters `encodeXML` escapes: the five XML special\n * characters plus every non-ASCII code unit (lone surrogates included — no\n * `u` flag). Kept in sync with `XML_BITSET_VALUE`.\n *\n * Shared with `encodeNonAsciiHTML` in `encode.ts`. Because the regex is\n * stateful (`g` flag), every call site must set `lastIndex` before use.\n */\n// eslint-disable-next-line unicorn/prefer-unicode-code-point-escapes -- the `\\u{...}` form requires the `u` flag, which we deliberately omit so lone surrogates match by code unit\nexport const xmlEncodeRegex = /[\"&'<>\\u0080-\\uFFFF]/g;\n/**\n * Whether `code` (a UTF-16 code unit) is escaped by {@link encodeXML}: a\n * non-ASCII unit, or one of the five XML specials flagged in\n * `XML_BITSET_VALUE` (which is only meaningful for code units 32-63).\n * @param code Code unit to test.\n */\nfunction isXmlEscapable(code) {\n return (code >= 0x80 ||\n (code >= 32 && code < 64 && ((XML_BITSET_VALUE >>> code) & 1) === 1));\n}\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 numeric hexadecimal reference\n * (eg. `&#xfc;`) will be used.\n * @param input Input string to encode.\n */\nexport function encodeXML(input) {\n const { length } = input;\n let out;\n let last = 0;\n let index = 0;\n while (index < length) {\n const char = input.charCodeAt(index);\n /*\n * Find the next character to escape: scan a short window inline\n * (escapable characters cluster in markup-heavy input), then fall\n * back to the regex, which skips clean spans in native code.\n */\n if (!isXmlEscapable(char)) {\n const bound = Math.min(index + 32, length);\n let next = index + 1;\n while (next < bound && !isXmlEscapable(input.charCodeAt(next))) {\n next++;\n }\n if (next < bound) {\n index = next;\n continue;\n }\n if (next >= length)\n break;\n xmlEncodeRegex.lastIndex = next;\n if (!xmlEncodeRegex.test(input))\n break;\n index = xmlEncodeRegex.lastIndex - 1;\n continue;\n }\n if (out === undefined)\n out = input.substring(0, index);\n else if (last !== index)\n out += input.substring(last, index);\n if (char < 64) {\n // Known replacement\n out += getEscape(char);\n last = index += 1;\n continue;\n }\n // Non-ASCII: encode as numeric entity (handle surrogate pair)\n const cp = input.codePointAt(index);\n out += `&#x${cp.toString(16)};`;\n if (cp !== char)\n index++; // Skip trailing surrogate\n last = index += 1;\n }\n if (out === undefined)\n return input;\n if (last < length)\n out += input.substr(last);\n return out;\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Escape `data` using `re`, mapping each matched character to its entity.\n * Every match is one UTF-16 code unit, so its index is `lastIndex - 1`.\n * @param re Global regex matching exactly the characters to escape\n * (`\"`, `&`, `'`, `<`, `>`, `\\u00A0` at most).\n * @param data String to escape.\n */\nfunction escapeWithRegex(re, data) {\n re.lastIndex = 0;\n if (!re.test(data))\n return data;\n let out = \"\";\n let last = 0;\n do {\n const index = re.lastIndex - 1;\n if (last !== index)\n out += data.substring(last, index);\n const char = data.charCodeAt(index);\n out += getEscape(char);\n last = index + 1;\n } while (re.test(data));\n return out + data.substring(last);\n}\nconst xmlEscapeRegex = /[\"&'<>]/g;\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n * @param data String to escape.\n */\nexport function escapeUTF8(data) {\n return escapeWithRegex(xmlEscapeRegex, data);\n}\nconst attributeEscapeRegex = /[\"&\\u{A0}]/gu;\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n * @param data String to escape.\n */\nexport function escapeAttribute(data) {\n return escapeWithRegex(attributeEscapeRegex, data);\n}\nconst textEscapeRegex = /[&<>\\u{A0}]/gu;\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n * @param data String to escape.\n */\nexport function escapeText(data) {\n return escapeWithRegex(textEscapeRegex, data);\n}\n//# sourceMappingURL=escape.js.map","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n","import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n","const EOF = 0;\n\n// https://drafts.csswg.org/css-syntax-3/\n// § 4.2. Definitions\n\n// digit\n// A code point between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9).\nexport function isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n\n// hex digit\n// A digit, or a code point between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F),\n// or a code point between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f).\nexport function isHexDigit(code) {\n return (\n isDigit(code) || // 0 .. 9\n (code >= 0x0041 && code <= 0x0046) || // A .. F\n (code >= 0x0061 && code <= 0x0066) // a .. f\n );\n}\n\n// uppercase letter\n// A code point between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z).\nexport function isUppercaseLetter(code) {\n return code >= 0x0041 && code <= 0x005A;\n}\n\n// lowercase letter\n// A code point between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z).\nexport function isLowercaseLetter(code) {\n return code >= 0x0061 && code <= 0x007A;\n}\n\n// letter\n// An uppercase letter or a lowercase letter.\nexport function isLetter(code) {\n return isUppercaseLetter(code) || isLowercaseLetter(code);\n}\n\n// non-ASCII code point\n// A code point with a value equal to or greater than U+0080 <control>.\n//\n// 2024-09-02: The latest spec narrows the range for non-ASCII characters (see https://github.com/csstree/csstree/issues/188).\n// However, all modern browsers support a wider range, and strictly following the latest spec could result\n// in some CSS being parsed incorrectly, even though it works in the browser. Therefore, this function adheres\n// to the previous, broader definition of non-ASCII characters.\nexport function isNonAscii(code) {\n return code >= 0x0080;\n}\n\n// name-start code point\n// A letter, a non-ASCII code point, or U+005F LOW LINE (_).\nexport function isNameStart(code) {\n return isLetter(code) || isNonAscii(code) || code === 0x005F;\n}\n\n// name code point\n// A name-start code point, a digit, or U+002D HYPHEN-MINUS (-).\nexport function isName(code) {\n return isNameStart(code) || isDigit(code) || code === 0x002D;\n}\n\n// non-printable code point\n// A code point between U+0000 NULL and U+0008 BACKSPACE, or U+000B LINE TABULATION,\n// or a code point between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, or U+007F DELETE.\nexport function isNonPrintable(code) {\n return (\n (code >= 0x0000 && code <= 0x0008) ||\n (code === 0x000B) ||\n (code >= 0x000E && code <= 0x001F) ||\n (code === 0x007F)\n );\n}\n\n// newline\n// U+000A LINE FEED. Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are not included in this definition,\n// as they are converted to U+000A LINE FEED during preprocessing.\n// TODO: we doesn't do a preprocessing, so check a code point for U+000D CARRIAGE RETURN and U+000C FORM FEED\nexport function isNewline(code) {\n return code === 0x000A || code === 0x000D || code === 0x000C;\n}\n\n// whitespace\n// A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE.\nexport function isWhiteSpace(code) {\n return isNewline(code) || code === 0x0020 || code === 0x0009;\n}\n\n// § 4.3.8. Check if two code points are a valid escape\nexport function isValidEscape(first, second) {\n // If the first code point is not U+005C REVERSE SOLIDUS (\\), return false.\n if (first !== 0x005C) {\n return false;\n }\n\n // Otherwise, if the second code point is a newline or EOF, return false.\n if (isNewline(second) || second === EOF) {\n return false;\n }\n\n // Otherwise, return true.\n return true;\n}\n\n// § 4.3.9. Check if three code points would start an identifier\nexport function isIdentifierStart(first, second, third) {\n // Look at the first code point:\n\n // U+002D HYPHEN-MINUS\n if (first === 0x002D) {\n // If the second code point is a name-start code point or a U+002D HYPHEN-MINUS,\n // or the second and third code points are a valid escape, return true. Otherwise, return false.\n return (\n isNameStart(second) ||\n second === 0x002D ||\n isValidEscape(second, third)\n );\n }\n\n // name-start code point\n if (isNameStart(first)) {\n // Return true.\n return true;\n }\n\n // U+005C REVERSE SOLIDUS (\\)\n if (first === 0x005C) {\n // If the first and second code points are a valid escape, return true. Otherwise, return false.\n return isValidEscape(first, second);\n }\n\n // anything else\n // Return false.\n return false;\n}\n\n// § 4.3.10. Check if three code points would start a number\nexport function isNumberStart(first, second, third) {\n // Look at the first code point:\n\n // U+002B PLUS SIGN (+)\n // U+002D HYPHEN-MINUS (-)\n if (first === 0x002B || first === 0x002D) {\n // If the second code point is a digit, return true.\n if (isDigit(second)) {\n return 2;\n }\n\n // Otherwise, if the second code point is a U+002E FULL STOP (.)\n // and the third code point is a digit, return true.\n // Otherwise, return false.\n return second === 0x002E && isDigit(third) ? 3 : 0;\n }\n\n // U+002E FULL STOP (.)\n if (first === 0x002E) {\n // If the second code point is a digit, return true. Otherwise, return false.\n return isDigit(second) ? 2 : 0;\n }\n\n // digit\n if (isDigit(first)) {\n // Return true.\n return 1;\n }\n\n // anything else\n // Return false.\n return 0;\n}\n\n//\n// Misc\n//\n\n// detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark)\nexport function isBOM(code) {\n // UTF-16BE\n if (code === 0xFEFF) {\n return 1;\n }\n\n // UTF-16LE\n if (code === 0xFFFE) {\n return 1;\n }\n\n return 0;\n}\n\n// Fast code category\n// Only ASCII code points has a special meaning, that's why we define a maps for 0..127 codes only\nconst CATEGORY = new Array(0x80);\nexport const EofCategory = 0x80;\nexport const WhiteSpaceCategory = 0x82;\nexport const DigitCategory = 0x83;\nexport const NameStartCategory = 0x84;\nexport const NonPrintableCategory = 0x85;\n\nfor (let i = 0; i < CATEGORY.length; i++) {\n CATEGORY[i] =\n isWhiteSpace(i) && WhiteSpaceCategory ||\n isDigit(i) && DigitCategory ||\n isNameStart(i) && NameStartCategory ||\n isNonPrintable(i) && NonPrintableCategory ||\n i || EofCategory;\n}\n\nexport function charCodeCategory(code) {\n return code < 0x80 ? CATEGORY[code] : NameStartCategory;\n}\n","import {\n isDigit,\n isHexDigit,\n isUppercaseLetter,\n isName,\n isWhiteSpace,\n isValidEscape\n} from './char-code-definitions.js';\n\nfunction getCharCode(source, offset) {\n return offset < source.length ? source.charCodeAt(offset) : 0;\n}\n\nexport function getNewlineLength(source, offset, code) {\n if (code === 13 /* \\r */ && getCharCode(source, offset + 1) === 10 /* \\n */) {\n return 2;\n }\n\n return 1;\n}\n\nexport function cmpChar(testStr, offset, referenceCode) {\n let code = testStr.charCodeAt(offset);\n\n // code.toLowerCase() for A..Z\n if (isUppercaseLetter(code)) {\n code = code | 32;\n }\n\n return code === referenceCode;\n}\n\nexport function cmpStr(testStr, start, end, referenceStr) {\n if (end - start !== referenceStr.length) {\n return false;\n }\n\n if (start < 0 || end > testStr.length) {\n return false;\n }\n\n for (let i = start; i < end; i++) {\n const referenceCode = referenceStr.charCodeAt(i - start);\n let testCode = testStr.charCodeAt(i);\n\n // testCode.toLowerCase() for A..Z\n if (isUppercaseLetter(testCode)) {\n testCode = testCode | 32;\n }\n\n if (testCode !== referenceCode) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function findWhiteSpaceStart(source, offset) {\n for (; offset >= 0; offset--) {\n if (!isWhiteSpace(source.charCodeAt(offset))) {\n break;\n }\n }\n\n return offset + 1;\n}\n\nexport function findWhiteSpaceEnd(source, offset) {\n for (; offset < source.length; offset++) {\n if (!isWhiteSpace(source.charCodeAt(offset))) {\n break;\n }\n }\n\n return offset;\n}\n\nexport function findDecimalNumberEnd(source, offset) {\n for (; offset < source.length; offset++) {\n if (!isDigit(source.charCodeAt(offset))) {\n break;\n }\n }\n\n return offset;\n}\n\n// § 4.3.7. Consume an escaped code point\nexport function consumeEscaped(source, offset) {\n // It assumes that the U+005C REVERSE SOLIDUS (\\) has already been consumed and\n // that the next input code point has already been verified to be part of a valid escape.\n offset += 2;\n\n // hex digit\n if (isHexDigit(getCharCode(source, offset - 1))) {\n // Consume as many hex digits as possible, but no more than 5.\n // Note that this means 1-6 hex digits have been consumed in total.\n for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) {\n if (!isHexDigit(getCharCode(source, offset))) {\n break;\n }\n }\n\n // If the next input code point is whitespace, consume it as well.\n const code = getCharCode(source, offset);\n if (isWhiteSpace(code)) {\n offset += getNewlineLength(source, offset, code);\n }\n }\n\n return offset;\n}\n\n// §4.3.11. Consume a name\n// Note: This algorithm does not do the verification of the first few code points that are necessary\n// to ensure the returned code points would constitute an <ident-token>. If that is the intended use,\n// ensure that the stream starts with an identifier before calling this algorithm.\nexport function consumeName(source, offset) {\n // Let result initially be an empty string.\n // Repeatedly consume the next input code point from the stream:\n for (; offset < source.length; offset++) {\n const code = source.charCodeAt(offset);\n\n // name code point\n if (isName(code)) {\n // Append the code point to result.\n continue;\n }\n\n // the stream starts with a valid escape\n if (isValidEscape(code, getCharCode(source, offset + 1))) {\n // Consume an escaped code point. Append the returned code point to result.\n offset = consumeEscaped(source, offset) - 1;\n continue;\n }\n\n // anything else\n // Reconsume the current input code point. Return result.\n break;\n }\n\n return offset;\n}\n\n// §4.3.12. Consume a number\nexport function consumeNumber(source, offset) {\n let code = source.charCodeAt(offset);\n\n // 2. If the next input code point is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-),\n // consume it and append it to repr.\n if (code === 0x002B || code === 0x002D) {\n code = source.charCodeAt(offset += 1);\n }\n\n // 3. While the next input code point is a digit, consume it and append it to repr.\n if (isDigit(code)) {\n offset = findDecimalNumberEnd(source, offset + 1);\n code = source.charCodeAt(offset);\n }\n\n // 4. If the next 2 input code points are U+002E FULL STOP (.) followed by a digit, then:\n if (code === 0x002E && isDigit(source.charCodeAt(offset + 1))) {\n // 4.1 Consume them.\n // 4.2 Append them to repr.\n offset += 2;\n\n // 4.3 Set type to \"number\".\n // TODO\n\n // 4.4 While the next input code point is a digit, consume it and append it to repr.\n\n offset = findDecimalNumberEnd(source, offset);\n }\n\n // 5. If the next 2 or 3 input code points are U+0045 LATIN CAPITAL LETTER E (E)\n // or U+0065 LATIN SMALL LETTER E (e), ... , followed by a digit, then:\n if (cmpChar(source, offset, 101 /* e */)) {\n let sign = 0;\n code = source.charCodeAt(offset + 1);\n\n // ... optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+) ...\n if (code === 0x002D || code === 0x002B) {\n sign = 1;\n code = source.charCodeAt(offset + 2);\n }\n\n // ... followed by a digit\n if (isDigit(code)) {\n // 5.1 Consume them.\n // 5.2 Append them to repr.\n\n // 5.3 Set type to \"number\".\n // TODO\n\n // 5.4 While the next input code point is a digit, consume it and append it to repr.\n offset = findDecimalNumberEnd(source, offset + 1 + sign + 1);\n }\n }\n\n return offset;\n}\n\n// § 4.3.14. Consume the remnants of a bad url\n// ... its sole use is to consume enough of the input stream to reach a recovery point\n// where normal tokenizing can resume.\nexport function consumeBadUrlRemnants(source, offset) {\n // Repeatedly consume the next input code point from the stream:\n for (; offset < source.length; offset++) {\n const code = source.charCodeAt(offset);\n\n // U+0029 RIGHT PARENTHESIS ())\n // EOF\n if (code === 0x0029) {\n // Return.\n offset++;\n break;\n }\n\n if (isValidEscape(code, getCharCode(source, offset + 1))) {\n // Consume an escaped code point.\n // Note: This allows an escaped right parenthesis (\"\\)\") to be encountered\n // without ending the <bad-url-token>. This is otherwise identical to\n // the \"anything else\" clause.\n offset = consumeEscaped(source, offset);\n }\n }\n\n return offset;\n}\n\n// § 4.3.7. Consume an escaped code point\n// Note: This algorithm assumes that escaped is valid without leading U+005C REVERSE SOLIDUS (\\)\nexport function decodeEscaped(escaped) {\n // Single char escaped that's not a hex digit\n if (escaped.length === 1 && !isHexDigit(escaped.charCodeAt(0))) {\n return escaped[0];\n }\n\n // Interpret the hex digits as a hexadecimal number.\n let code = parseInt(escaped, 16);\n\n if (\n (code === 0) || // If this number is zero,\n (code >= 0xD800 && code <= 0xDFFF) || // or is for a surrogate,\n (code > 0x10FFFF) // or is greater than the maximum allowed code point\n ) {\n // ... return U+FFFD REPLACEMENT CHARACTER\n code = 0xFFFD;\n }\n\n // Otherwise, return the code point with that value.\n return String.fromCodePoint(code);\n}\n","export default [\n 'EOF-token',\n 'ident-token',\n 'function-token',\n 'at-keyword-token',\n 'hash-token',\n 'string-token',\n 'bad-string-token',\n 'url-token',\n 'bad-url-token',\n 'delim-token',\n 'number-token',\n 'percentage-token',\n 'dimension-token',\n 'whitespace-token',\n 'CDO-token',\n 'CDC-token',\n 'colon-token',\n 'semicolon-token',\n 'comma-token',\n '[-token',\n ']-token',\n '(-token',\n ')-token',\n '{-token',\n '}-token',\n 'comment-token'\n];\n","const MIN_SIZE = 16 * 1024;\n\nexport function adoptBuffer(buffer = null, size) {\n if (buffer === null || buffer.length < size) {\n return new Uint32Array(Math.max(size + 1024, MIN_SIZE));\n }\n\n return buffer;\n};\n","import { adoptBuffer } from './adopt-buffer.js';\nimport { isBOM } from './char-code-definitions.js';\n\nconst N = 10;\nconst F = 12;\nconst R = 13;\n\nfunction computeLinesAndColumns(host) {\n const source = host.source;\n const sourceLength = source.length;\n const startOffset = source.length > 0 ? isBOM(source.charCodeAt(0)) : 0;\n const lines = adoptBuffer(host.lines, sourceLength);\n const columns = adoptBuffer(host.columns, sourceLength);\n let line = host.startLine;\n let column = host.startColumn;\n\n for (let i = startOffset; i < sourceLength; i++) {\n const code = source.charCodeAt(i);\n\n lines[i] = line;\n columns[i] = column++;\n\n if (code === N || code === R || code === F) {\n if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {\n i++;\n lines[i] = line;\n columns[i] = column;\n }\n\n line++;\n column = 1;\n }\n }\n\n lines[sourceLength] = line;\n columns[sourceLength] = column;\n\n host.lines = lines;\n host.columns = columns;\n host.computed = true;\n}\n\nexport class OffsetToLocation {\n constructor(source, startOffset, startLine, startColumn) {\n this.setSource(source, startOffset, startLine, startColumn);\n this.lines = null;\n this.columns = null;\n }\n setSource(source = '', startOffset = 0, startLine = 1, startColumn = 1) {\n this.source = source;\n this.startOffset = startOffset;\n this.startLine = startLine;\n this.startColumn = startColumn;\n this.computed = false;\n }\n getLocation(offset, filename) {\n if (!this.computed) {\n computeLinesAndColumns(this);\n }\n\n return {\n source: filename,\n offset: this.startOffset + offset,\n line: this.lines[offset],\n column: this.columns[offset]\n };\n }\n getLocationRange(start, end, filename) {\n if (!this.computed) {\n computeLinesAndColumns(this);\n }\n\n return {\n source: filename,\n start: {\n offset: this.startOffset + start,\n line: this.lines[start],\n column: this.columns[start]\n },\n end: {\n offset: this.startOffset + end,\n line: this.lines[end],\n column: this.columns[end]\n }\n };\n }\n};\n","import { adoptBuffer } from './adopt-buffer.js';\nimport { cmpStr } from './utils.js';\nimport tokenNames from './names.js';\nimport {\n WhiteSpace,\n Comment,\n Delim,\n EOF,\n Function as FunctionToken,\n LeftParenthesis,\n RightParenthesis,\n LeftSquareBracket,\n RightSquareBracket,\n LeftCurlyBracket,\n RightCurlyBracket\n} from './types.js';\n\nconst OFFSET_MASK = 0x00FFFFFF;\nconst TYPE_SHIFT = 24;\nconst BLOCK_OPEN_TOKEN = 1;\nconst BLOCK_CLOSE_TOKEN = 2;\nconst balancePair = new Uint8Array(32); // 32b of memory ought to be enough for anyone (any number of tokens)\nbalancePair[FunctionToken] = RightParenthesis;\nbalancePair[LeftParenthesis] = RightParenthesis;\nbalancePair[LeftSquareBracket] = RightSquareBracket;\nbalancePair[LeftCurlyBracket] = RightCurlyBracket;\n\nconst blockTokens = new Uint8Array(32);\nblockTokens[FunctionToken] = BLOCK_OPEN_TOKEN;\nblockTokens[LeftParenthesis] = BLOCK_OPEN_TOKEN;\nblockTokens[LeftSquareBracket] = BLOCK_OPEN_TOKEN;\nblockTokens[LeftCurlyBracket] = BLOCK_OPEN_TOKEN;\nblockTokens[RightParenthesis] = BLOCK_CLOSE_TOKEN;\nblockTokens[RightSquareBracket] = BLOCK_CLOSE_TOKEN;\nblockTokens[RightCurlyBracket] = BLOCK_CLOSE_TOKEN;\n\nfunction boundIndex(index, min, max) {\n return index < min ? min : index > max ? max : index;\n}\n\nexport class TokenStream {\n constructor(source, tokenize) {\n this.setSource(source, tokenize);\n }\n reset() {\n this.eof = false;\n this.tokenIndex = -1;\n this.tokenType = 0;\n this.tokenStart = this.firstCharOffset;\n this.tokenEnd = this.firstCharOffset;\n }\n setSource(source = '', tokenize = () => {}) {\n source = String(source || '');\n\n const sourceLength = source.length;\n const offsetAndType = adoptBuffer(this.offsetAndType, source.length + 1); // +1 because of eof-token\n const balance = adoptBuffer(this.balance, source.length + 1);\n let tokenCount = 0;\n let firstCharOffset = -1;\n let balanceCloseType = 0;\n let balanceStart = source.length;\n\n // capture buffers\n this.offsetAndType = null;\n this.balance = null;\n balance.fill(0);\n\n tokenize(source, (type, start, end) => {\n const index = tokenCount++;\n\n // type & offset\n offsetAndType[index] = (type << TYPE_SHIFT) | end;\n\n if (firstCharOffset === -1) {\n firstCharOffset = start;\n }\n\n // balance\n balance[index] = balanceStart;\n\n if (type === balanceCloseType) {\n const prevBalanceStart = balance[balanceStart];\n\n // set reference to balance end for a block opener\n balance[balanceStart] = index;\n\n // pop state\n balanceStart = prevBalanceStart;\n balanceCloseType = balancePair[offsetAndType[prevBalanceStart] >> TYPE_SHIFT];\n } else if (this.isBlockOpenerTokenType(type)) { // check for FunctionToken, <(-token>, <[-token> and <{-token>\n // push state\n balanceStart = index;\n balanceCloseType = balancePair[type];\n }\n });\n\n // finalize buffers\n offsetAndType[tokenCount] = (EOF << TYPE_SHIFT) | sourceLength; // <EOF-token>\n balance[tokenCount] = tokenCount; // prevents false positive balance match with any token\n\n // reverse references from balance start to end\n // tokens\n // token: a ( [ b c ] d e ) {\n // index: 0 1 2 3 4 5 6 7 8 9\n // before\n // balance: 0 8 5 2 2 2 1 1 1 0\n // - > > < < < < < < -\n // after\n // balance: 9 8 5 5 5 2 8 8 1 9\n // > > > > > < > > < >\n for (let i = 0; i < tokenCount; i++) {\n const balanceStart = balance[i];\n\n if (balanceStart <= i) {\n const balanceEnd = balance[balanceStart];\n\n if (balanceEnd !== i) {\n balance[i] = balanceEnd;\n }\n } else if (balanceStart > tokenCount) {\n balance[i] = tokenCount;\n }\n }\n\n // balance[0] = tokenCount;\n\n this.source = source;\n this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset;\n this.tokenCount = tokenCount;\n this.offsetAndType = offsetAndType;\n this.balance = balance;\n\n this.reset();\n this.next();\n }\n\n lookupType(offset) {\n offset += this.tokenIndex;\n\n if (offset < this.tokenCount) {\n return this.offsetAndType[offset] >> TYPE_SHIFT;\n }\n\n return EOF;\n }\n lookupTypeNonSC(idx) {\n for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {\n const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;\n\n if (tokenType !== WhiteSpace && tokenType !== Comment) {\n if (idx-- === 0) {\n return tokenType;\n }\n }\n }\n\n return EOF;\n }\n lookupOffset(offset) {\n offset += this.tokenIndex;\n\n if (offset < this.tokenCount) {\n return this.offsetAndType[offset - 1] & OFFSET_MASK;\n }\n\n return this.source.length;\n }\n lookupOffsetNonSC(idx) {\n for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {\n const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;\n\n if (tokenType !== WhiteSpace && tokenType !== Comment) {\n if (idx-- === 0) {\n return offset - this.tokenIndex;\n }\n }\n }\n\n return EOF;\n }\n lookupValue(offset, referenceStr) {\n offset += this.tokenIndex;\n\n if (offset < this.tokenCount) {\n return cmpStr(\n this.source,\n this.offsetAndType[offset - 1] & OFFSET_MASK,\n this.offsetAndType[offset] & OFFSET_MASK,\n referenceStr\n );\n }\n\n return false;\n }\n getTokenStart(tokenIndex) {\n if (tokenIndex === this.tokenIndex) {\n return this.tokenStart;\n }\n\n if (tokenIndex > 0) {\n return tokenIndex < this.tokenCount\n ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK\n : this.offsetAndType[this.tokenCount] & OFFSET_MASK;\n }\n\n return this.firstCharOffset;\n }\n getTokenEnd(tokenIndex) {\n if (tokenIndex === this.tokenIndex) {\n return this.tokenEnd;\n }\n\n return this.offsetAndType[boundIndex(tokenIndex, 0, this.tokenCount)] & OFFSET_MASK;\n }\n getTokenType(tokenIndex) {\n if (tokenIndex === this.tokenIndex) {\n return this.tokenType;\n }\n\n return this.offsetAndType[boundIndex(tokenIndex, 0, this.tokenCount)] >> TYPE_SHIFT;\n }\n substrToCursor(start) {\n return this.source.substring(start, this.tokenStart);\n }\n\n isBlockOpenerTokenType(tokenType) {\n return blockTokens[tokenType] === BLOCK_OPEN_TOKEN;\n }\n isBlockCloserTokenType(tokenType) {\n return blockTokens[tokenType] === BLOCK_CLOSE_TOKEN;\n }\n getBlockTokenPairIndex(tokenIndex) {\n const type = this.getTokenType(tokenIndex);\n\n if (blockTokens[type] === 1) {\n // block open token\n const pairIndex = this.balance[tokenIndex];\n const closeType = this.getTokenType(pairIndex);\n\n return balancePair[type] === closeType ? pairIndex : -1;\n } else if (blockTokens[type] === 2) {\n // block close token\n const pairIndex = this.balance[tokenIndex];\n const openType = this.getTokenType(pairIndex);\n\n return balancePair[openType] === type ? pairIndex : -1;\n }\n\n return -1;\n }\n isBalanceEdge(tokenIndex) {\n return this.balance[this.tokenIndex] < tokenIndex;\n }\n\n isDelim(code, offset) {\n if (offset) {\n return (\n this.lookupType(offset) === Delim &&\n this.source.charCodeAt(this.lookupOffset(offset)) === code\n );\n }\n\n return (\n this.tokenType === Delim &&\n this.source.charCodeAt(this.tokenStart) === code\n );\n }\n\n skip(tokenCount) {\n let next = this.tokenIndex + tokenCount;\n\n if (next < this.tokenCount) {\n this.tokenIndex = next;\n this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_SHIFT;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.tokenIndex = this.tokenCount;\n this.next();\n }\n }\n next() {\n let next = this.tokenIndex + 1;\n\n if (next < this.tokenCount) {\n this.tokenIndex = next;\n this.tokenStart = this.tokenEnd;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_SHIFT;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.eof = true;\n this.tokenIndex = this.tokenCount;\n this.tokenType = EOF;\n this.tokenStart = this.tokenEnd = this.source.length;\n }\n }\n skipSC() {\n while (this.tokenType === WhiteSpace || this.tokenType === Comment) {\n this.next();\n }\n }\n skipUntilBalanced(startToken, stopConsume) {\n let cursor = startToken;\n let balanceEnd = 0;\n let offset = 0;\n\n loop:\n for (; cursor < this.tokenCount; cursor++) {\n balanceEnd = this.balance[cursor];\n\n // stop scanning on balance edge that points to offset before start token\n if (balanceEnd < startToken) {\n break loop;\n }\n\n offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset;\n\n // check stop condition\n switch (stopConsume(this.source.charCodeAt(offset))) {\n case 1: // just stop\n break loop;\n\n case 2: // stop & included\n cursor++;\n break loop;\n\n default:\n // fast forward to the end of balanced block for an open block tokens\n if (this.isBlockOpenerTokenType(this.offsetAndType[cursor] >> TYPE_SHIFT)) {\n cursor = balanceEnd;\n }\n }\n }\n\n this.skip(cursor - this.tokenIndex);\n }\n\n forEachToken(fn) {\n for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) {\n const start = offset;\n const item = this.offsetAndType[i];\n const end = item & OFFSET_MASK;\n const type = item >> TYPE_SHIFT;\n\n offset = end;\n\n fn(type, start, end, i);\n }\n }\n dump() {\n const tokens = new Array(this.tokenCount);\n\n this.forEachToken((type, start, end, index) => {\n tokens[index] = {\n idx: index,\n type: tokenNames[type],\n chunk: this.source.substring(start, end),\n balance: this.balance[index]\n };\n });\n\n return tokens;\n }\n};\n","import * as TYPE from './types.js';\nimport {\n isNewline,\n isName,\n isValidEscape,\n isNumberStart,\n isIdentifierStart,\n isBOM,\n charCodeCategory,\n WhiteSpaceCategory,\n DigitCategory,\n NameStartCategory,\n NonPrintableCategory\n} from './char-code-definitions.js';\nimport {\n cmpStr,\n getNewlineLength,\n findWhiteSpaceEnd,\n consumeEscaped,\n consumeName,\n consumeNumber,\n consumeBadUrlRemnants\n} from './utils.js';\n\nexport function tokenize(source, onToken) {\n function getCharCode(offset) {\n return offset < sourceLength ? source.charCodeAt(offset) : 0;\n }\n\n // § 4.3.3. Consume a numeric token\n function consumeNumericToken() {\n // Consume a number and let number be the result.\n offset = consumeNumber(source, offset);\n\n // If the next 3 input code points would start an identifier, then:\n if (isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) {\n // Create a <dimension-token> with the same value and type flag as number, and a unit set initially to the empty string.\n // Consume a name. Set the <dimension-token>’s unit to the returned value.\n // Return the <dimension-token>.\n type = TYPE.Dimension;\n offset = consumeName(source, offset);\n return;\n }\n\n // Otherwise, if the next input code point is U+0025 PERCENTAGE SIGN (%), consume it.\n if (getCharCode(offset) === 0x0025) {\n // Create a <percentage-token> with the same value as number, and return it.\n type = TYPE.Percentage;\n offset++;\n return;\n }\n\n // Otherwise, create a <number-token> with the same value and type flag as number, and return it.\n type = TYPE.Number;\n }\n\n // § 4.3.4. Consume an ident-like token\n function consumeIdentLikeToken() {\n const nameStartOffset = offset;\n\n // Consume a name, and let string be the result.\n offset = consumeName(source, offset);\n\n // If string’s value is an ASCII case-insensitive match for \"url\",\n // and the next input code point is U+0028 LEFT PARENTHESIS ((), consume it.\n if (cmpStr(source, nameStartOffset, offset, 'url') && getCharCode(offset) === 0x0028) {\n // While the next two input code points are whitespace, consume the next input code point.\n offset = findWhiteSpaceEnd(source, offset + 1);\n\n // If the next one or two input code points are U+0022 QUOTATION MARK (\"), U+0027 APOSTROPHE ('),\n // or whitespace followed by U+0022 QUOTATION MARK (\") or U+0027 APOSTROPHE ('),\n // then create a <function-token> with its value set to string and return it.\n if (getCharCode(offset) === 0x0022 ||\n getCharCode(offset) === 0x0027) {\n type = TYPE.Function;\n offset = nameStartOffset + 4;\n return;\n }\n\n // Otherwise, consume a url token, and return it.\n consumeUrlToken();\n return;\n }\n\n // Otherwise, if the next input code point is U+0028 LEFT PARENTHESIS ((), consume it.\n // Create a <function-token> with its value set to string and return it.\n if (getCharCode(offset) === 0x0028) {\n type = TYPE.Function;\n offset++;\n return;\n }\n\n // Otherwise, create an <ident-token> with its value set to string and return it.\n type = TYPE.Ident;\n }\n\n // § 4.3.5. Consume a string token\n function consumeStringToken(endingCodePoint) {\n // This algorithm may be called with an ending code point, which denotes the code point\n // that ends the string. If an ending code point is not specified,\n // the current input code point is used.\n if (!endingCodePoint) {\n endingCodePoint = getCharCode(offset++);\n }\n\n // Initially create a <string-token> with its value set to the empty string.\n type = TYPE.String;\n\n // Repeatedly consume the next input code point from the stream:\n for (; offset < source.length; offset++) {\n const code = source.charCodeAt(offset);\n\n switch (charCodeCategory(code)) {\n // ending code point\n case endingCodePoint:\n // Return the <string-token>.\n offset++;\n return;\n\n // EOF\n // case EofCategory:\n // This is a parse error. Return the <string-token>.\n // return;\n\n // newline\n case WhiteSpaceCategory:\n if (isNewline(code)) {\n // This is a parse error. Reconsume the current input code point,\n // create a <bad-string-token>, and return it.\n offset += getNewlineLength(source, offset, code);\n type = TYPE.BadString;\n return;\n }\n break;\n\n // U+005C REVERSE SOLIDUS (\\)\n case 0x005C:\n // If the next input code point is EOF, do nothing.\n if (offset === source.length - 1) {\n break;\n }\n\n const nextCode = getCharCode(offset + 1);\n\n // Otherwise, if the next input code point is a newline, consume it.\n if (isNewline(nextCode)) {\n offset += getNewlineLength(source, offset + 1, nextCode);\n } else if (isValidEscape(code, nextCode)) {\n // Otherwise, (the stream starts with a valid escape) consume\n // an escaped code point and append the returned code point to\n // the <string-token>’s value.\n offset = consumeEscaped(source, offset) - 1;\n }\n break;\n\n // anything else\n // Append the current input code point to the <string-token>’s value.\n }\n }\n }\n\n // § 4.3.6. Consume a url token\n // Note: This algorithm assumes that the initial \"url(\" has already been consumed.\n // This algorithm also assumes that it’s being called to consume an \"unquoted\" value, like url(foo).\n // A quoted value, like url(\"foo\"), is parsed as a <function-token>. Consume an ident-like token\n // automatically handles this distinction; this algorithm shouldn’t be called directly otherwise.\n function consumeUrlToken() {\n // Initially create a <url-token> with its value set to the empty string.\n type = TYPE.Url;\n\n // Consume as much whitespace as possible.\n offset = findWhiteSpaceEnd(source, offset);\n\n // Repeatedly consume the next input code point from the stream:\n for (; offset < source.length; offset++) {\n const code = source.charCodeAt(offset);\n\n switch (charCodeCategory(code)) {\n // U+0029 RIGHT PARENTHESIS ())\n case 0x0029:\n // Return the <url-token>.\n offset++;\n return;\n\n // EOF\n // case EofCategory:\n // This is a parse error. Return the <url-token>.\n // return;\n\n // whitespace\n case WhiteSpaceCategory:\n // Consume as much whitespace as possible.\n offset = findWhiteSpaceEnd(source, offset);\n\n // If the next input code point is U+0029 RIGHT PARENTHESIS ()) or EOF,\n // consume it and return the <url-token>\n // (if EOF was encountered, this is a parse error);\n if (getCharCode(offset) === 0x0029 || offset >= source.length) {\n if (offset < source.length) {\n offset++;\n }\n return;\n }\n\n // otherwise, consume the remnants of a bad url, create a <bad-url-token>,\n // and return it.\n offset = consumeBadUrlRemnants(source, offset);\n type = TYPE.BadUrl;\n return;\n\n // U+0022 QUOTATION MARK (\")\n // U+0027 APOSTROPHE (')\n // U+0028 LEFT PARENTHESIS (()\n // non-printable code point\n case 0x0022:\n case 0x0027:\n case 0x0028:\n case NonPrintableCategory:\n // This is a parse error. Consume the remnants of a bad url,\n // create a <bad-url-token>, and return it.\n offset = consumeBadUrlRemnants(source, offset);\n type = TYPE.BadUrl;\n return;\n\n // U+005C REVERSE SOLIDUS (\\)\n case 0x005C:\n // If the stream starts with a valid escape, consume an escaped code point and\n // append the returned code point to the <url-token>’s value.\n if (isValidEscape(code, getCharCode(offset + 1))) {\n offset = consumeEscaped(source, offset) - 1;\n break;\n }\n\n // Otherwise, this is a parse error. Consume the remnants of a bad url,\n // create a <bad-url-token>, and return it.\n offset = consumeBadUrlRemnants(source, offset);\n type = TYPE.BadUrl;\n return;\n\n // anything else\n // Append the current input code point to the <url-token>’s value.\n }\n }\n }\n\n // ensure source is a string\n source = String(source || '');\n\n const sourceLength = source.length;\n let start = isBOM(getCharCode(0));\n let offset = start;\n let type;\n\n // https://drafts.csswg.org/css-syntax-3/#consume-token\n // § 4.3.1. Consume a token\n while (offset < sourceLength) {\n const code = source.charCodeAt(offset);\n\n switch (charCodeCategory(code)) {\n // whitespace\n case WhiteSpaceCategory:\n // Consume as much whitespace as possible. Return a <whitespace-token>.\n type = TYPE.WhiteSpace;\n offset = findWhiteSpaceEnd(source, offset + 1);\n break;\n\n // U+0022 QUOTATION MARK (\")\n case 0x0022:\n // Consume a string token and return it.\n consumeStringToken();\n break;\n\n // U+0023 NUMBER SIGN (#)\n case 0x0023:\n // If the next input code point is a name code point or the next two input code points are a valid escape, then:\n if (isName(getCharCode(offset + 1)) || isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) {\n // Create a <hash-token>.\n type = TYPE.Hash;\n\n // If the next 3 input code points would start an identifier, set the <hash-token>’s type flag to \"id\".\n // if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {\n // // TODO: set id flag\n // }\n\n // Consume a name, and set the <hash-token>’s value to the returned string.\n offset = consumeName(source, offset + 1);\n\n // Return the <hash-token>.\n } else {\n // Otherwise, return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n\n break;\n\n // U+0027 APOSTROPHE (')\n case 0x0027:\n // Consume a string token and return it.\n consumeStringToken();\n break;\n\n // U+0028 LEFT PARENTHESIS (()\n case 0x0028:\n // Return a <(-token>.\n type = TYPE.LeftParenthesis;\n offset++;\n break;\n\n // U+0029 RIGHT PARENTHESIS ())\n case 0x0029:\n // Return a <)-token>.\n type = TYPE.RightParenthesis;\n offset++;\n break;\n\n // U+002B PLUS SIGN (+)\n case 0x002B:\n // If the input stream starts with a number, ...\n if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n // ... reconsume the current input code point, consume a numeric token, and return it.\n consumeNumericToken();\n } else {\n // Otherwise, return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n break;\n\n // U+002C COMMA (,)\n case 0x002C:\n // Return a <comma-token>.\n type = TYPE.Comma;\n offset++;\n break;\n\n // U+002D HYPHEN-MINUS (-)\n case 0x002D:\n // If the input stream starts with a number, reconsume the current input code point, consume a numeric token, and return it.\n if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n consumeNumericToken();\n } else {\n // Otherwise, if the next 2 input code points are U+002D HYPHEN-MINUS U+003E GREATER-THAN SIGN (->), consume them and return a <CDC-token>.\n if (getCharCode(offset + 1) === 0x002D &&\n getCharCode(offset + 2) === 0x003E) {\n type = TYPE.CDC;\n offset = offset + 3;\n } else {\n // Otherwise, if the input stream starts with an identifier, ...\n if (isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n // ... reconsume the current input code point, consume an ident-like token, and return it.\n consumeIdentLikeToken();\n } else {\n // Otherwise, return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n }\n }\n break;\n\n // U+002E FULL STOP (.)\n case 0x002E:\n // If the input stream starts with a number, ...\n if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n // ... reconsume the current input code point, consume a numeric token, and return it.\n consumeNumericToken();\n } else {\n // Otherwise, return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n\n break;\n\n // U+002F SOLIDUS (/)\n case 0x002F:\n // If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*),\n if (getCharCode(offset + 1) === 0x002A) {\n // ... consume them and all following code points up to and including the first U+002A ASTERISK (*)\n // followed by a U+002F SOLIDUS (/), or up to an EOF code point.\n type = TYPE.Comment;\n offset = source.indexOf('*/', offset + 2);\n offset = offset === -1 ? source.length : offset + 2;\n } else {\n type = TYPE.Delim;\n offset++;\n }\n break;\n\n // U+003A COLON (:)\n case 0x003A:\n // Return a <colon-token>.\n type = TYPE.Colon;\n offset++;\n break;\n\n // U+003B SEMICOLON (;)\n case 0x003B:\n // Return a <semicolon-token>.\n type = TYPE.Semicolon;\n offset++;\n break;\n\n // U+003C LESS-THAN SIGN (<)\n case 0x003C:\n // If the next 3 input code points are U+0021 EXCLAMATION MARK U+002D HYPHEN-MINUS U+002D HYPHEN-MINUS (!--), ...\n if (getCharCode(offset + 1) === 0x0021 &&\n getCharCode(offset + 2) === 0x002D &&\n getCharCode(offset + 3) === 0x002D) {\n // ... consume them and return a <CDO-token>.\n type = TYPE.CDO;\n offset = offset + 4;\n } else {\n // Otherwise, return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n\n break;\n\n // U+0040 COMMERCIAL AT (@)\n case 0x0040:\n // If the next 3 input code points would start an identifier, ...\n if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {\n // ... consume a name, create an <at-keyword-token> with its value set to the returned value, and return it.\n type = TYPE.AtKeyword;\n offset = consumeName(source, offset + 1);\n } else {\n // Otherwise, return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n\n break;\n\n // U+005B LEFT SQUARE BRACKET ([)\n case 0x005B:\n // Return a <[-token>.\n type = TYPE.LeftSquareBracket;\n offset++;\n break;\n\n // U+005C REVERSE SOLIDUS (\\)\n case 0x005C:\n // If the input stream starts with a valid escape, ...\n if (isValidEscape(code, getCharCode(offset + 1))) {\n // ... reconsume the current input code point, consume an ident-like token, and return it.\n consumeIdentLikeToken();\n } else {\n // Otherwise, this is a parse error. Return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n break;\n\n // U+005D RIGHT SQUARE BRACKET (])\n case 0x005D:\n // Return a <]-token>.\n type = TYPE.RightSquareBracket;\n offset++;\n break;\n\n // U+007B LEFT CURLY BRACKET ({)\n case 0x007B:\n // Return a <{-token>.\n type = TYPE.LeftCurlyBracket;\n offset++;\n break;\n\n // U+007D RIGHT CURLY BRACKET (})\n case 0x007D:\n // Return a <}-token>.\n type = TYPE.RightCurlyBracket;\n offset++;\n break;\n\n // digit\n case DigitCategory:\n // Reconsume the current input code point, consume a numeric token, and return it.\n consumeNumericToken();\n break;\n\n // name-start code point\n case NameStartCategory:\n // Reconsume the current input code point, consume an ident-like token, and return it.\n consumeIdentLikeToken();\n break;\n\n // EOF\n // case EofCategory:\n // Return an <EOF-token>.\n // break;\n\n // anything else\n default:\n // Return a <delim-token> with its value set to the current input code point.\n type = TYPE.Delim;\n offset++;\n }\n\n // put token to stream\n onToken(type, start, start = offset);\n }\n}\n\nexport * from './types.js';\nexport * as tokenTypes from './types.js';\nexport { default as tokenNames } from './names.js';\nexport * from './char-code-definitions.js';\nexport * from './utils.js';\nexport * from './OffsetToLocation.js';\nexport * from './TokenStream.js';\n","//\n// list\n// ┌──────┐\n// ┌──────────────┼─head │\n// │ │ tail─┼──────────────┐\n// │ └──────┘ │\n// ▼ ▼\n// item item item item\n// ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐\n// null ◀──┼─prev │◀───┼─prev │◀───┼─prev │◀───┼─prev │\n// │ next─┼───▶│ next─┼───▶│ next─┼───▶│ next─┼──▶ null\n// ├──────┤ ├──────┤ ├──────┤ ├──────┤\n// │ data │ │ data │ │ data │ │ data │\n// └──────┘ └──────┘ └──────┘ └──────┘\n//\n\nlet releasedCursors = null;\n\nexport class List {\n static createItem(data) {\n return {\n prev: null,\n next: null,\n data\n };\n }\n\n constructor() {\n this.head = null;\n this.tail = null;\n this.cursor = null;\n }\n createItem(data) {\n return List.createItem(data);\n }\n\n // cursor helpers\n allocateCursor(prev, next) {\n let cursor;\n\n if (releasedCursors !== null) {\n cursor = releasedCursors;\n releasedCursors = releasedCursors.cursor;\n cursor.prev = prev;\n cursor.next = next;\n cursor.cursor = this.cursor;\n } else {\n cursor = {\n prev,\n next,\n cursor: this.cursor\n };\n }\n\n this.cursor = cursor;\n\n return cursor;\n }\n releaseCursor() {\n const { cursor } = this;\n\n this.cursor = cursor.cursor;\n cursor.prev = null;\n cursor.next = null;\n cursor.cursor = releasedCursors;\n releasedCursors = cursor;\n }\n updateCursors(prevOld, prevNew, nextOld, nextNew) {\n let { cursor } = this;\n\n while (cursor !== null) {\n if (cursor.prev === prevOld) {\n cursor.prev = prevNew;\n }\n\n if (cursor.next === nextOld) {\n cursor.next = nextNew;\n }\n\n cursor = cursor.cursor;\n }\n }\n *[Symbol.iterator]() {\n for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n yield cursor.data;\n }\n }\n\n // getters\n get size() {\n let size = 0;\n\n for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n size++;\n }\n\n return size;\n }\n get isEmpty() {\n return this.head === null;\n }\n get first() {\n return this.head && this.head.data;\n }\n get last() {\n return this.tail && this.tail.data;\n }\n\n // convertors\n fromArray(array) {\n let cursor = null;\n this.head = null;\n\n for (let data of array) {\n const item = List.createItem(data);\n\n if (cursor !== null) {\n cursor.next = item;\n } else {\n this.head = item;\n }\n\n item.prev = cursor;\n cursor = item;\n }\n\n this.tail = cursor;\n return this;\n }\n toArray() {\n return [...this];\n }\n toJSON() {\n return [...this];\n }\n\n // array-like methods\n forEach(fn, thisArg = this) {\n // push cursor\n const cursor = this.allocateCursor(null, this.head);\n\n while (cursor.next !== null) {\n const item = cursor.next;\n cursor.next = item.next;\n fn.call(thisArg, item.data, item, this);\n }\n\n // pop cursor\n this.releaseCursor();\n }\n forEachRight(fn, thisArg = this) {\n // push cursor\n const cursor = this.allocateCursor(this.tail, null);\n\n while (cursor.prev !== null) {\n const item = cursor.prev;\n cursor.prev = item.prev;\n fn.call(thisArg, item.data, item, this);\n }\n\n // pop cursor\n this.releaseCursor();\n }\n reduce(fn, initialValue, thisArg = this) {\n // push cursor\n let cursor = this.allocateCursor(null, this.head);\n let acc = initialValue;\n let item;\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n acc = fn.call(thisArg, acc, item.data, item, this);\n }\n\n // pop cursor\n this.releaseCursor();\n\n return acc;\n }\n reduceRight(fn, initialValue, thisArg = this) {\n // push cursor\n let cursor = this.allocateCursor(this.tail, null);\n let acc = initialValue;\n let item;\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n acc = fn.call(thisArg, acc, item.data, item, this);\n }\n\n // pop cursor\n this.releaseCursor();\n\n return acc;\n }\n some(fn, thisArg = this) {\n for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n if (fn.call(thisArg, cursor.data, cursor, this)) {\n return true;\n }\n }\n\n return false;\n }\n map(fn, thisArg = this) {\n const result = new List();\n\n for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n result.appendData(fn.call(thisArg, cursor.data, cursor, this));\n }\n\n return result;\n }\n filter(fn, thisArg = this) {\n const result = new List();\n\n for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n if (fn.call(thisArg, cursor.data, cursor, this)) {\n result.appendData(cursor.data);\n }\n }\n\n return result;\n }\n\n nextUntil(start, fn, thisArg = this) {\n if (start === null) {\n return;\n }\n\n // push cursor\n const cursor = this.allocateCursor(null, start);\n\n while (cursor.next !== null) {\n const item = cursor.next;\n cursor.next = item.next;\n if (fn.call(thisArg, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n this.releaseCursor();\n }\n prevUntil(start, fn, thisArg = this) {\n if (start === null) {\n return;\n }\n\n // push cursor\n const cursor = this.allocateCursor(start, null);\n\n while (cursor.prev !== null) {\n const item = cursor.prev;\n cursor.prev = item.prev;\n if (fn.call(thisArg, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n this.releaseCursor();\n }\n\n // mutation\n clear() {\n this.head = null;\n this.tail = null;\n }\n copy() {\n const result = new List();\n\n for (let data of this) {\n result.appendData(data);\n }\n\n return result;\n }\n prepend(item) {\n // head\n // ^\n // item\n this.updateCursors(null, item, this.head, item);\n\n // insert to the beginning of the list\n if (this.head !== null) {\n // new item <- first item\n this.head.prev = item;\n // new item -> first item\n item.next = this.head;\n } else {\n // if list has no head, then it also has no tail\n // in this case tail points to the new item\n this.tail = item;\n }\n\n // head always points to new item\n this.head = item;\n return this;\n }\n prependData(data) {\n return this.prepend(List.createItem(data));\n }\n append(item) {\n return this.insert(item);\n }\n appendData(data) {\n return this.insert(List.createItem(data));\n }\n insert(item, before = null) {\n if (before !== null) {\n // prev before\n // ^\n // item\n this.updateCursors(before.prev, item, before, item);\n\n if (before.prev === null) {\n // insert to the beginning of list\n if (this.head !== before) {\n throw new Error('before doesn\\'t belong to list');\n }\n // since head points to before therefore list doesn't empty\n // no need to check tail\n this.head = item;\n before.prev = item;\n item.next = before;\n this.updateCursors(null, item);\n } else {\n // insert between two items\n before.prev.next = item;\n item.prev = before.prev;\n before.prev = item;\n item.next = before;\n }\n } else {\n // tail\n // ^\n // item\n this.updateCursors(this.tail, item, null, item);\n\n // insert to the ending of the list\n if (this.tail !== null) {\n // last item -> new item\n this.tail.next = item;\n // last item <- new item\n item.prev = this.tail;\n } else {\n // if list has no tail, then it also has no head\n // in this case head points to new item\n this.head = item;\n }\n\n // tail always points to new item\n this.tail = item;\n }\n\n return this;\n }\n insertData(data, before) {\n return this.insert(List.createItem(data), before);\n }\n remove(item) {\n // item\n // ^\n // prev next\n this.updateCursors(item, item.prev, item, item.next);\n\n if (item.prev !== null) {\n item.prev.next = item.next;\n } else {\n if (this.head !== item) {\n throw new Error('item doesn\\'t belong to list');\n }\n\n this.head = item.next;\n }\n\n if (item.next !== null) {\n item.next.prev = item.prev;\n } else {\n if (this.tail !== item) {\n throw new Error('item doesn\\'t belong to list');\n }\n\n this.tail = item.prev;\n }\n\n item.prev = null;\n item.next = null;\n\n return item;\n }\n push(data) {\n this.insert(List.createItem(data));\n }\n pop() {\n return this.tail !== null ? this.remove(this.tail) : null;\n }\n unshift(data) {\n this.prepend(List.createItem(data));\n }\n shift() {\n return this.head !== null ? this.remove(this.head) : null;\n }\n prependList(list) {\n return this.insertList(list, this.head);\n }\n appendList(list) {\n return this.insertList(list);\n }\n insertList(list, before) {\n // ignore empty lists\n if (list.head === null) {\n return this;\n }\n\n if (before !== undefined && before !== null) {\n this.updateCursors(before.prev, list.tail, before, list.head);\n\n // insert in the middle of dist list\n if (before.prev !== null) {\n // before.prev <-> list.head\n before.prev.next = list.head;\n list.head.prev = before.prev;\n } else {\n this.head = list.head;\n }\n\n before.prev = list.tail;\n list.tail.next = before;\n } else {\n this.updateCursors(this.tail, list.tail, null, list.head);\n\n // insert to end of the list\n if (this.tail !== null) {\n // if destination list has a tail, then it also has a head,\n // but head doesn't change\n // dest tail -> source head\n this.tail.next = list.head;\n // dest tail <- source head\n list.head.prev = this.tail;\n } else {\n // if list has no a tail, then it also has no a head\n // in this case points head to new item\n this.head = list.head;\n }\n\n // tail always start point to new item\n this.tail = list.tail;\n }\n\n list.head = null;\n list.tail = null;\n return this;\n }\n replace(oldItem, newItemOrList) {\n if ('head' in newItemOrList) {\n this.insertList(newItemOrList, oldItem);\n } else {\n this.insert(newItemOrList, oldItem);\n }\n\n this.remove(oldItem);\n }\n}\n","export function createCustomError(name, message) {\n // use Object.create(), because some VMs prevent setting line/column otherwise\n // (iOS Safari 10 even throws an exception)\n const error = Object.create(SyntaxError.prototype);\n const errorStack = new Error();\n\n return Object.assign(error, {\n name,\n message,\n get stack() {\n return (errorStack.stack || '').replace(/^(.+\\n){1,3}/, `${name}: ${message}\\n`);\n }\n });\n};\n","import { createCustomError } from '../utils/create-custom-error.js';\n\nconst MAX_LINE_LENGTH = 100;\nconst OFFSET_CORRECTION = 60;\nconst TAB_REPLACEMENT = ' ';\n\nfunction sourceFragment({ source, line, column, baseLine, baseColumn }, extraLines) {\n function processLines(start, end) {\n return lines\n .slice(start, end)\n .map((line, idx) =>\n String(start + idx + 1).padStart(maxNumLength) + ' |' + line\n ).join('\\n');\n }\n\n const prelines = '\\n'.repeat(Math.max(baseLine - 1, 0));\n const precolumns = ' '.repeat(Math.max(baseColumn - 1, 0));\n const lines = (prelines + precolumns + source).split(/\\r\\n?|\\n|\\f/);\n const startLine = Math.max(1, line - extraLines) - 1;\n const endLine = Math.min(line + extraLines, lines.length + 1);\n const maxNumLength = Math.max(4, String(endLine).length) + 1;\n let cutLeft = 0;\n\n // column correction according to replaced tab before column\n column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\\t/g) || []).length;\n\n if (column > MAX_LINE_LENGTH) {\n cutLeft = column - OFFSET_CORRECTION + 3;\n column = OFFSET_CORRECTION - 2;\n }\n\n for (let i = startLine; i <= endLine; i++) {\n if (i >= 0 && i < lines.length) {\n lines[i] = lines[i].replace(/\\t/g, TAB_REPLACEMENT);\n lines[i] =\n (cutLeft > 0 && lines[i].length > cutLeft ? '\\u2026' : '') +\n lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) +\n (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\\u2026' : '');\n }\n }\n\n return [\n processLines(startLine, line),\n new Array(column + maxNumLength + 2).join('-') + '^',\n processLines(line, endLine)\n ].filter(Boolean)\n .join('\\n')\n .replace(/^(\\s+\\d+\\s+\\|\\n)+/, '')\n .replace(/\\n(\\s+\\d+\\s+\\|)+$/, '');\n}\n\nexport function SyntaxError(message, source, offset, line, column, baseLine = 1, baseColumn = 1) {\n const error = Object.assign(createCustomError('SyntaxError', message), {\n source,\n offset,\n line,\n column,\n sourceFragment(extraLines) {\n return sourceFragment({ source, line, column, baseLine, baseColumn }, isNaN(extraLines) ? 0 : extraLines);\n },\n get formattedMessage() {\n return (\n `Parse error: ${message}\\n` +\n sourceFragment({ source, line, column, baseLine, baseColumn }, 2)\n );\n }\n });\n\n return error;\n}\n","import { WhiteSpace, Comment } from '../tokenizer/index.js';\n\nexport function readSequence(recognizer) {\n const children = this.createList();\n let space = false;\n const context = {\n recognizer\n };\n\n while (!this.eof) {\n switch (this.tokenType) {\n case Comment:\n this.next();\n continue;\n\n case WhiteSpace:\n space = true;\n this.next();\n continue;\n }\n\n let child = recognizer.getNode.call(this, context);\n\n if (child === undefined) {\n break;\n }\n\n if (space) {\n if (recognizer.onWhiteSpace) {\n recognizer.onWhiteSpace.call(this, child, children, context);\n }\n space = false;\n }\n\n children.push(child);\n }\n\n if (space && recognizer.onWhiteSpace) {\n recognizer.onWhiteSpace.call(this, null, children, context);\n }\n\n return children;\n};\n","import { List } from '../utils/List.js';\nimport { SyntaxError } from './SyntaxError.js';\nimport {\n tokenize,\n OffsetToLocation,\n TokenStream,\n tokenNames,\n\n consumeNumber,\n findWhiteSpaceStart,\n cmpChar,\n cmpStr,\n\n WhiteSpace,\n Comment,\n Ident,\n Function as FunctionToken,\n Url,\n Hash,\n Percentage,\n Number as NumberToken\n} from '../tokenizer/index.js';\nimport { readSequence } from './sequence.js';\n\nconst NOOP = () => {};\nconst EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)\nconst NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)\nconst SEMICOLON = 0x003B; // U+003B SEMICOLON (;)\nconst LEFTCURLYBRACKET = 0x007B; // U+007B LEFT CURLY BRACKET ({)\nconst NULL = 0;\n\nconst arrayMethods = {\n createList() {\n return [];\n },\n createSingleNodeList(node) {\n return [node];\n },\n getFirstListNode(list) {\n return list && list[0] || null;\n },\n getLastListNode(list) {\n return list && list.length > 0 ? list[list.length - 1] : null;\n }\n};\n\nconst listMethods = {\n createList() {\n return new List();\n },\n createSingleNodeList(node) {\n return new List().appendData(node);\n },\n getFirstListNode(list) {\n return list && list.first;\n },\n getLastListNode(list) {\n return list && list.last;\n }\n};\n\nfunction createParseContext(name) {\n return function() {\n return this[name]();\n };\n}\n\nfunction fetchParseValues(dict) {\n const result = Object.create(null);\n\n for (const name of Object.keys(dict)) {\n const item = dict[name];\n const fn = item.parse || item;\n\n if (fn) {\n result[name] = fn;\n }\n }\n\n return result;\n}\n\nfunction processConfig(config) {\n const parseConfig = {\n context: Object.create(null),\n features: Object.assign(Object.create(null), config.features),\n scope: Object.assign(Object.create(null), config.scope),\n atrule: fetchParseValues(config.atrule),\n pseudo: fetchParseValues(config.pseudo),\n node: fetchParseValues(config.node)\n };\n\n for (const [name, context] of Object.entries(config.parseContext)) {\n switch (typeof context) {\n case 'function':\n parseConfig.context[name] = context;\n break;\n\n case 'string':\n parseConfig.context[name] = createParseContext(context);\n break;\n }\n }\n\n return {\n config: parseConfig,\n ...parseConfig,\n ...parseConfig.node\n };\n}\n\nexport function createParser(config) {\n let source = '';\n let filename = '<unknown>';\n let needPositions = false;\n let onParseError = NOOP;\n let onParseErrorThrow = false;\n\n const locationMap = new OffsetToLocation();\n const parser = Object.assign(new TokenStream(), processConfig(config || {}), {\n parseAtrulePrelude: true,\n parseRulePrelude: true,\n parseValue: true,\n parseCustomProperty: false,\n\n readSequence,\n\n consumeUntilBalanceEnd: () => 0,\n consumeUntilLeftCurlyBracket(code) {\n return code === LEFTCURLYBRACKET ? 1 : 0;\n },\n consumeUntilLeftCurlyBracketOrSemicolon(code) {\n return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0;\n },\n consumeUntilExclamationMarkOrSemicolon(code) {\n return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0;\n },\n consumeUntilSemicolonIncluded(code) {\n return code === SEMICOLON ? 2 : 0;\n },\n\n createList: NOOP,\n createSingleNodeList: NOOP,\n getFirstListNode: NOOP,\n getLastListNode: NOOP,\n\n parseWithFallback(consumer, fallback) {\n const startIndex = this.tokenIndex;\n\n try {\n return consumer.call(this);\n } catch (e) {\n if (onParseErrorThrow) {\n throw e;\n }\n\n this.skip(startIndex - this.tokenIndex);\n const fallbackNode = fallback.call(this);\n\n onParseErrorThrow = true;\n onParseError(e, fallbackNode);\n onParseErrorThrow = false;\n\n return fallbackNode;\n }\n },\n\n lookupNonWSType(offset) {\n let type;\n\n do {\n type = this.lookupType(offset++);\n if (type !== WhiteSpace && type !== Comment) {\n return type;\n }\n } while (type !== NULL);\n\n return NULL;\n },\n\n charCodeAt(offset) {\n return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0;\n },\n substring(offsetStart, offsetEnd) {\n return source.substring(offsetStart, offsetEnd);\n },\n substrToCursor(start) {\n return this.source.substring(start, this.tokenStart);\n },\n\n cmpChar(offset, charCode) {\n return cmpChar(source, offset, charCode);\n },\n cmpStr(offsetStart, offsetEnd, str) {\n return cmpStr(source, offsetStart, offsetEnd, str);\n },\n\n consume(tokenType) {\n const start = this.tokenStart;\n\n this.eat(tokenType);\n\n return this.substrToCursor(start);\n },\n consumeFunctionName() {\n const name = source.substring(this.tokenStart, this.tokenEnd - 1);\n\n this.eat(FunctionToken);\n\n return name;\n },\n consumeNumber(type) {\n const number = source.substring(this.tokenStart, consumeNumber(source, this.tokenStart));\n\n this.eat(type);\n\n return number;\n },\n\n eat(tokenType) {\n if (this.tokenType !== tokenType) {\n const tokenName = tokenNames[tokenType].slice(0, -6).replace(/-/g, ' ').replace(/^./, m => m.toUpperCase());\n let message = `${/[[\\](){}]/.test(tokenName) ? `\"${tokenName}\"` : tokenName} is expected`;\n let offset = this.tokenStart;\n\n // tweak message and offset\n switch (tokenType) {\n case Ident:\n // when identifier is expected but there is a function or url\n if (this.tokenType === FunctionToken || this.tokenType === Url) {\n offset = this.tokenEnd - 1;\n message = 'Identifier is expected but function found';\n } else {\n message = 'Identifier is expected';\n }\n break;\n\n case Hash:\n if (this.isDelim(NUMBERSIGN)) {\n this.next();\n offset++;\n message = 'Name is expected';\n }\n break;\n\n case Percentage:\n if (this.tokenType === NumberToken) {\n offset = this.tokenEnd;\n message = 'Percent sign is expected';\n }\n break;\n }\n\n this.error(message, offset);\n }\n\n this.next();\n },\n eatIdent(name) {\n if (this.tokenType !== Ident || this.lookupValue(0, name) === false) {\n this.error(`Identifier \"${name}\" is expected`);\n }\n\n this.next();\n },\n eatDelim(code) {\n if (!this.isDelim(code)) {\n this.error(`Delim \"${String.fromCharCode(code)}\" is expected`);\n }\n\n this.next();\n },\n\n getLocation(start, end) {\n if (needPositions) {\n return locationMap.getLocationRange(\n start,\n end,\n filename\n );\n }\n\n return null;\n },\n getLocationFromList(list) {\n if (needPositions) {\n const head = this.getFirstListNode(list);\n const tail = this.getLastListNode(list);\n return locationMap.getLocationRange(\n head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart,\n tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart,\n filename\n );\n }\n\n return null;\n },\n\n error(message, offset) {\n const location = typeof offset !== 'undefined' && offset < source.length\n ? locationMap.getLocation(offset)\n : this.eof\n ? locationMap.getLocation(findWhiteSpaceStart(source, source.length - 1))\n : locationMap.getLocation(this.tokenStart);\n\n throw new SyntaxError(\n message || 'Unexpected input',\n source,\n location.offset,\n location.line,\n location.column,\n locationMap.startLine,\n locationMap.startColumn\n );\n }\n });\n const createTokenIterateAPI = () => ({\n filename,\n source,\n tokenCount: parser.tokenCount,\n\n getTokenType: (index) =>\n parser.getTokenType(index),\n getTokenTypeName: (index) =>\n tokenNames[parser.getTokenType(index)],\n getTokenStart: (index) =>\n parser.getTokenStart(index),\n getTokenEnd: (index) =>\n parser.getTokenEnd(index),\n getTokenValue: (index) =>\n parser.source.substring(parser.getTokenStart(index), parser.getTokenEnd(index)),\n\n substring: (start, end) =>\n parser.source.substring(start, end),\n\n balance: parser.balance.subarray(0, parser.tokenCount + 1),\n isBlockOpenerTokenType: parser.isBlockOpenerTokenType,\n isBlockCloserTokenType: parser.isBlockCloserTokenType,\n getBlockTokenPairIndex: (index) =>\n parser.getBlockTokenPairIndex(index),\n\n getLocation: (offset) =>\n locationMap.getLocation(offset, filename),\n getRangeLocation: (start, end) =>\n locationMap.getLocationRange(start, end, filename)\n });\n\n const parse = function(source_, options) {\n source = source_;\n options = options || {};\n\n parser.setSource(source, tokenize);\n locationMap.setSource(\n source,\n options.offset,\n options.line,\n options.column\n );\n\n filename = options.filename || '<unknown>';\n needPositions = Boolean(options.positions);\n onParseError = typeof options.onParseError === 'function' ? options.onParseError : NOOP;\n onParseErrorThrow = false;\n\n parser.parseAtrulePrelude = 'parseAtrulePrelude' in options ? Boolean(options.parseAtrulePrelude) : true;\n parser.parseRulePrelude = 'parseRulePrelude' in options ? Boolean(options.parseRulePrelude) : true;\n parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true;\n parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false;\n\n const { context = 'default', list = true, onComment, onToken } = options;\n\n if (context in parser.context === false) {\n throw new Error('Unknown context `' + context + '`');\n }\n\n Object.assign(parser, list ? listMethods : arrayMethods);\n\n if (Array.isArray(onToken)) {\n parser.forEachToken((type, start, end) => {\n onToken.push({ type, start, end });\n });\n } else if (typeof onToken === 'function') {\n parser.forEachToken(onToken.bind(createTokenIterateAPI()));\n }\n\n if (typeof onComment === 'function') {\n parser.forEachToken((type, start, end) => {\n if (type === Comment) {\n const loc = parser.getLocation(start, end);\n const value = cmpStr(source, end - 2, end, '*/')\n ? source.slice(start + 2, end - 2)\n : source.slice(start + 2, end);\n\n onComment(value, loc);\n }\n });\n }\n\n const ast = parser.context[context].call(parser, options);\n\n if (!parser.eof) {\n parser.error();\n }\n\n return ast;\n };\n\n return Object.assign(parse, {\n SyntaxError,\n config: parser.config\n });\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\nvar MAX_CACHED_INPUTS = 32;\n\n/**\n * Takes some function `f(input) -> result` and returns a memoized version of\n * `f`.\n *\n * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The\n * memoization is a dumb-simple, linear least-recently-used cache.\n */\nfunction lruMemoize(f) {\n var cache = [];\n\n return function(input) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].input === input) {\n var temp = cache[0];\n cache[0] = cache[i];\n cache[i] = temp;\n return cache[0].result;\n }\n }\n\n var result = f(input);\n\n cache.unshift({\n input,\n result,\n });\n\n if (cache.length > MAX_CACHED_INPUTS) {\n cache.pop();\n }\n\n return result;\n };\n}\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nvar normalize = lruMemoize(function normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n // Split the path into parts between `/` characters. This is much faster than\n // using `.split(/\\/+/g)`.\n var parts = [];\n var start = 0;\n var i = 0;\n while (true) {\n start = i;\n i = path.indexOf(\"/\", start);\n if (i === -1) {\n parts.push(path.slice(start));\n break;\n } else {\n parts.push(path.slice(start, i));\n while (i < path.length && path[i] === \"/\") {\n i++;\n }\n }\n }\n\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n});\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\nfunction compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {\n var cmp\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n }));\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n if (this._validateMapping(generated, original, source, name) === false) {\n return;\n }\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n var message = 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n\n if (this._ignoreInvalidMapping) {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message);\n }\n return false;\n } else {\n throw new Error(message);\n }\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n var message = 'Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n });\n\n if (this._ignoreInvalidMapping) {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message);\n }\n return false;\n } else {\n throw new Error(message)\n }\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n // One ';' per skipped line. Build large gaps with a single flat\n // string: appending ';' one by one creates a rope node per line, which\n // can exhaust the heap for a big gap (CVE-2026-93749).\n var lineDelta = mapping.generatedLine - previousGeneratedLine;\n next += lineDelta === 1 ? ';' : ';'.repeat(lineDelta);\n previousGeneratedLine = mapping.generatedLine;\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","import { SourceMapGenerator } from 'source-map-js/lib/source-map-generator.js';\n\nconst trackNodes = new Set(['Atrule', 'Selector', 'Declaration']);\n\nexport function generateSourceMap(handlers) {\n const map = new SourceMapGenerator();\n const generated = {\n line: 1,\n column: 0\n };\n const original = {\n line: 0, // should be zero to add first mapping\n column: 0\n };\n const activatedGenerated = {\n line: 1,\n column: 0\n };\n const activatedMapping = {\n generated: activatedGenerated\n };\n let line = 1;\n let column = 0;\n let sourceMappingActive = false;\n\n const origHandlersNode = handlers.node;\n handlers.node = function(node) {\n if (node.loc && node.loc.start && trackNodes.has(node.type)) {\n const nodeLine = node.loc.start.line;\n const nodeColumn = node.loc.start.column - 1;\n\n if (original.line !== nodeLine ||\n original.column !== nodeColumn) {\n original.line = nodeLine;\n original.column = nodeColumn;\n\n generated.line = line;\n generated.column = column;\n\n if (sourceMappingActive) {\n sourceMappingActive = false;\n if (generated.line !== activatedGenerated.line ||\n generated.column !== activatedGenerated.column) {\n map.addMapping(activatedMapping);\n }\n }\n\n sourceMappingActive = true;\n map.addMapping({\n source: node.loc.source,\n original,\n generated\n });\n }\n }\n\n origHandlersNode.call(this, node);\n\n if (sourceMappingActive && trackNodes.has(node.type)) {\n activatedGenerated.line = line;\n activatedGenerated.column = column;\n }\n };\n\n const origHandlersEmit = handlers.emit;\n handlers.emit = function(value, type, auto) {\n for (let i = 0; i < value.length; i++) {\n if (value.charCodeAt(i) === 10) { // \\n\n line++;\n column = 0;\n } else {\n column++;\n }\n }\n\n origHandlersEmit(value, type, auto);\n };\n\n const origHandlersResult = handlers.result;\n handlers.result = function() {\n if (sourceMappingActive) {\n map.addMapping(activatedMapping);\n }\n\n return {\n css: origHandlersResult(),\n map\n };\n };\n\n return handlers;\n};\n","import {\n Delim,\n Ident,\n Function as FunctionToken,\n Url,\n BadUrl,\n AtKeyword,\n Hash,\n Percentage,\n Dimension,\n Number as NumberToken,\n String as StringToken,\n Colon,\n LeftParenthesis,\n RightParenthesis,\n CDC\n} from '../tokenizer/index.js';\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\n\n// code:\n// 0xxxxxxx x0000000 - char code (0x80 for non-ASCII) or delim value\n// 00000000 0xxxxxx0 - token type (0 for delim, 1 for token)\n// 00000000 0000000x - reserved for carriage emit flag (0 for no space, 1 for space)\nconst code = (type, value) => {\n if (type === Delim) {\n type = value;\n }\n\n if (typeof type === 'string') {\n type = Math.min(type.charCodeAt(0), 0x80) << 6; // replace non-ASCII with 0x80\n }\n\n return type << 1;\n};\n\n// https://www.w3.org/TR/css-syntax-3/#serialization\n// The only requirement for serialization is that it must \"round-trip\" with parsing,\n// that is, parsing the stylesheet must produce the same data structures as parsing,\n// serializing, and parsing again, except for consecutive <whitespace-token>s,\n// which may be collapsed into a single token.\n\nconst specPairs = [\n [Ident, Ident],\n [Ident, FunctionToken],\n [Ident, Url],\n [Ident, BadUrl],\n [Ident, '-'],\n [Ident, NumberToken],\n [Ident, Percentage],\n [Ident, Dimension],\n [Ident, CDC],\n [Ident, LeftParenthesis],\n\n [AtKeyword, Ident],\n [AtKeyword, FunctionToken],\n [AtKeyword, Url],\n [AtKeyword, BadUrl],\n [AtKeyword, '-'],\n [AtKeyword, NumberToken],\n [AtKeyword, Percentage],\n [AtKeyword, Dimension],\n [AtKeyword, CDC],\n\n [Hash, Ident],\n [Hash, FunctionToken],\n [Hash, Url],\n [Hash, BadUrl],\n [Hash, '-'],\n [Hash, NumberToken],\n [Hash, Percentage],\n [Hash, Dimension],\n [Hash, CDC],\n\n [Dimension, Ident],\n [Dimension, FunctionToken],\n [Dimension, Url],\n [Dimension, BadUrl],\n [Dimension, '-'],\n [Dimension, NumberToken],\n [Dimension, Percentage],\n [Dimension, Dimension],\n [Dimension, CDC],\n\n ['#', Ident],\n ['#', FunctionToken],\n ['#', Url],\n ['#', BadUrl],\n ['#', '-'],\n ['#', NumberToken],\n ['#', Percentage],\n ['#', Dimension],\n ['#', CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n ['-', Ident],\n ['-', FunctionToken],\n ['-', Url],\n ['-', BadUrl],\n ['-', '-'],\n ['-', NumberToken],\n ['-', Percentage],\n ['-', Dimension],\n ['-', CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n [NumberToken, Ident],\n [NumberToken, FunctionToken],\n [NumberToken, Url],\n [NumberToken, BadUrl],\n [NumberToken, NumberToken],\n [NumberToken, Percentage],\n [NumberToken, Dimension],\n [NumberToken, '%'],\n [NumberToken, CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n ['@', Ident],\n ['@', FunctionToken],\n ['@', Url],\n ['@', BadUrl],\n ['@', '-'],\n ['@', CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n ['.', NumberToken],\n ['.', Percentage],\n ['.', Dimension],\n\n ['+', NumberToken],\n ['+', Percentage],\n ['+', Dimension],\n\n ['/', '*']\n];\n// validate with scripts/generate-safe\nconst safePairs = specPairs.concat([\n [Ident, Hash],\n\n [Dimension, Hash],\n\n [Hash, Hash],\n\n [AtKeyword, LeftParenthesis],\n [AtKeyword, StringToken],\n [AtKeyword, Colon],\n\n [Percentage, Percentage],\n [Percentage, Dimension],\n [Percentage, FunctionToken],\n [Percentage, '-'],\n\n [RightParenthesis, Ident],\n [RightParenthesis, FunctionToken],\n [RightParenthesis, Percentage],\n [RightParenthesis, Dimension],\n [RightParenthesis, Hash],\n [RightParenthesis, '-']\n]);\n\nfunction createMap(pairs) {\n const isWhiteSpaceRequired = new Set(\n pairs.map(([prev, next]) => (code(prev) << 16 | code(next)))\n );\n\n return function(prevCode, type, value) {\n const nextCode = code(type, value);\n const nextCharCode = value.charCodeAt(0);\n const emitWs =\n (nextCharCode === HYPHENMINUS &&\n type !== Ident &&\n type !== FunctionToken &&\n type !== CDC) ||\n (nextCharCode === PLUSSIGN)\n ? isWhiteSpaceRequired.has((prevCode & 0xFFFE) << 16 | nextCharCode << 7)\n : isWhiteSpaceRequired.has((prevCode & 0xFFFE) << 16 | nextCode);\n\n return nextCode | emitWs;\n };\n}\n\nexport const spec = createMap(specPairs);\nexport const safe = createMap(safePairs);\n","import { tokenize, Delim, WhiteSpace } from '../tokenizer/index.js';\nimport { generateSourceMap } from './sourceMap.js';\nimport * as tokenBefore from './token-before.js';\n\nconst REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\n\nfunction processChildren(node, delimeter) {\n if (typeof delimeter === 'function') {\n let prev = null;\n\n node.children.forEach(node => {\n if (prev !== null) {\n delimeter.call(this, prev);\n }\n\n this.node(node);\n prev = node;\n });\n\n return;\n }\n\n node.children.forEach(this.node, this);\n}\n\nexport function createGenerator(config) {\n const types = new Map();\n\n for (let [name, item] of Object.entries(config.node)) {\n const fn = item.generate || item;\n\n if (typeof fn === 'function') {\n types.set(name, item.generate || item);\n }\n }\n\n return function(node, options) {\n let buffer = '';\n let prevCode = 0;\n let handlers = {\n node(node) {\n if (types.has(node.type)) {\n types.get(node.type).call(publicApi, node);\n } else {\n throw new Error('Unknown node type: ' + node.type);\n }\n },\n tokenBefore: tokenBefore.safe,\n token(type, value, suppressAutoWhiteSpace) {\n prevCode = this.tokenBefore(prevCode, type, value);\n\n if (!suppressAutoWhiteSpace && prevCode & 1) {\n this.emit(' ', WhiteSpace, true);\n }\n\n this.emit(value, type, false);\n\n if (type === Delim && value.charCodeAt(0) === REVERSESOLIDUS) {\n this.emit('\\n', WhiteSpace, true);\n }\n },\n emit(value) {\n buffer += value;\n },\n result() {\n return buffer;\n }\n };\n\n if (options) {\n if (typeof options.decorator === 'function') {\n handlers = options.decorator(handlers);\n }\n\n if (options.sourceMap) {\n handlers = generateSourceMap(handlers);\n }\n\n if (options.mode in tokenBefore) {\n handlers.tokenBefore = tokenBefore[options.mode];\n }\n }\n\n const publicApi = {\n node: (node) => handlers.node(node),\n children: processChildren,\n token: (type, value) => handlers.token(type, value),\n tokenize: (raw) =>\n tokenize(raw, (type, start, end) => {\n handlers.token(\n type,\n raw.slice(start, end),\n start !== 0 // suppress auto whitespace for internal value tokens\n );\n })\n };\n\n handlers.node(node);\n\n return handlers.result();\n };\n};\n","import { List } from '../utils/List.js';\n\nexport function createConvertor(walk) {\n return {\n fromPlainObject(ast) {\n walk(ast, {\n enter(node) {\n if (node.children && node.children instanceof List === false) {\n node.children = new List().fromArray(node.children);\n }\n }\n });\n\n return ast;\n },\n toPlainObject(ast) {\n walk(ast, {\n leave(node) {\n if (node.children && node.children instanceof List) {\n node.children = node.children.toArray();\n }\n }\n });\n\n return ast;\n }\n };\n};\n","const { hasOwnProperty } = Object.prototype;\nconst noop = function() {};\n\nfunction ensureFunction(value) {\n return typeof value === 'function' ? value : noop;\n}\n\nfunction invokeForType(fn, type) {\n return function(node, item, list) {\n if (node.type === type) {\n fn.call(this, node, item, list);\n }\n };\n}\n\nfunction getWalkersFromStructure(name, nodeType) {\n const structure = nodeType.structure;\n const walkers = [];\n\n for (const key in structure) {\n if (hasOwnProperty.call(structure, key) === false) {\n continue;\n }\n\n let fieldTypes = structure[key];\n const walker = {\n name: key,\n type: false,\n nullable: false\n };\n\n if (!Array.isArray(fieldTypes)) {\n fieldTypes = [fieldTypes];\n }\n\n for (const fieldType of fieldTypes) {\n if (fieldType === null) {\n walker.nullable = true;\n } else if (typeof fieldType === 'string') {\n walker.type = 'node';\n } else if (Array.isArray(fieldType)) {\n walker.type = 'list';\n }\n }\n\n if (walker.type) {\n walkers.push(walker);\n }\n }\n\n if (walkers.length) {\n return {\n context: nodeType.walkContext,\n fields: walkers\n };\n }\n\n return null;\n}\n\nfunction getTypesFromConfig(config) {\n const types = {};\n\n for (const name in config.node) {\n if (hasOwnProperty.call(config.node, name)) {\n const nodeType = config.node[name];\n\n if (!nodeType.structure) {\n throw new Error('Missed `structure` field in `' + name + '` node type definition');\n }\n\n types[name] = getWalkersFromStructure(name, nodeType);\n }\n }\n\n return types;\n}\n\nfunction createTypeIterator(config, reverse) {\n const fields = config.fields.slice();\n const contextName = config.context;\n const useContext = typeof contextName === 'string';\n\n if (reverse) {\n fields.reverse();\n }\n\n return function(node, context, walk, walkReducer) {\n let prevContextValue;\n\n if (useContext) {\n prevContextValue = context[contextName];\n context[contextName] = node;\n }\n\n for (const field of fields) {\n const ref = node[field.name];\n\n if (!field.nullable || ref) {\n if (field.type === 'list') {\n const breakWalk = reverse\n ? ref.reduceRight(walkReducer, false)\n : ref.reduce(walkReducer, false);\n\n if (breakWalk) {\n return true;\n }\n } else if (walk(ref)) {\n return true;\n }\n }\n }\n\n if (useContext) {\n context[contextName] = prevContextValue;\n }\n };\n}\n\nfunction createFastTraveralMap({\n StyleSheet,\n Atrule,\n Rule,\n Block,\n DeclarationList\n}) {\n return {\n Atrule: {\n StyleSheet,\n Atrule,\n Rule,\n Block\n },\n Rule: {\n StyleSheet,\n Atrule,\n Rule,\n Block\n },\n Declaration: {\n StyleSheet,\n Atrule,\n Rule,\n Block,\n DeclarationList\n }\n };\n}\n\nexport function createWalker(config) {\n const types = getTypesFromConfig(config);\n const iteratorsNatural = {};\n const iteratorsReverse = {};\n const breakWalk = Symbol('break-walk');\n const skipNode = Symbol('skip-node');\n\n for (const name in types) {\n if (hasOwnProperty.call(types, name) && types[name] !== null) {\n iteratorsNatural[name] = createTypeIterator(types[name], false);\n iteratorsReverse[name] = createTypeIterator(types[name], true);\n }\n }\n\n const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural);\n const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse);\n\n const walk = function(root, options) {\n function walkNode(node, item, list) {\n const enterRet = enter.call(context, node, item, list);\n\n if (enterRet === breakWalk) {\n return true;\n }\n\n if (enterRet === skipNode) {\n return false;\n }\n\n if (iterators.hasOwnProperty(node.type)) {\n if (iterators[node.type](node, context, walkNode, walkReducer)) {\n return true;\n }\n }\n\n if (leave.call(context, node, item, list) === breakWalk) {\n return true;\n }\n\n return false;\n }\n\n let enter = noop;\n let leave = noop;\n let iterators = iteratorsNatural;\n let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list);\n const context = {\n break: breakWalk,\n skip: skipNode,\n\n root,\n stylesheet: null,\n atrule: null,\n atrulePrelude: null,\n rule: null,\n selector: null,\n block: null,\n declaration: null,\n function: null\n };\n\n if (typeof options === 'function') {\n enter = options;\n } else if (options) {\n enter = ensureFunction(options.enter);\n leave = ensureFunction(options.leave);\n\n if (options.reverse) {\n iterators = iteratorsReverse;\n }\n\n if (options.visit) {\n if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) {\n iterators = options.reverse\n ? fastTraversalIteratorsReverse[options.visit]\n : fastTraversalIteratorsNatural[options.visit];\n } else if (!types.hasOwnProperty(options.visit)) {\n throw new Error('Bad value `' + options.visit + '` for `visit` option (should be: ' + Object.keys(types).sort().join(', ') + ')');\n }\n\n enter = invokeForType(enter, options.visit);\n leave = invokeForType(leave, options.visit);\n }\n }\n\n if (enter === noop && leave === noop) {\n throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\\'t a function');\n }\n\n walkNode(root);\n };\n\n walk.break = breakWalk;\n walk.skip = skipNode;\n\n walk.find = function(ast, fn) {\n let found = null;\n\n walk(ast, function(node, item, list) {\n if (fn.call(this, node, item, list)) {\n found = node;\n return breakWalk;\n }\n });\n\n return found;\n };\n\n walk.findLast = function(ast, fn) {\n let found = null;\n\n walk(ast, {\n reverse: true,\n enter(node, item, list) {\n if (fn.call(this, node, item, list)) {\n found = node;\n return breakWalk;\n }\n }\n });\n\n return found;\n };\n\n walk.findAll = function(ast, fn) {\n const found = [];\n\n walk(ast, function(node, item, list) {\n if (fn.call(this, node, item, list)) {\n found.push(node);\n }\n });\n\n return found;\n };\n\n return walk;\n};\n","function noop(value) {\n return value;\n}\n\nfunction generateMultiplier(multiplier) {\n const { min, max, comma } = multiplier;\n\n if (min === 0 && max === 0) {\n return comma ? '#?' : '*';\n }\n\n if (min === 0 && max === 1) {\n return '?';\n }\n\n if (min === 1 && max === 0) {\n return comma ? '#' : '+';\n }\n\n if (min === 1 && max === 1) {\n return '';\n }\n\n return (\n (comma ? '#' : '') +\n (min === max\n ? '{' + min + '}'\n : '{' + min + ',' + (max !== 0 ? max : '') + '}'\n )\n );\n}\n\nfunction generateTypeOpts(node) {\n switch (node.type) {\n case 'Range':\n return (\n ' [' +\n (node.min === null ? '-∞' : node.min) +\n ',' +\n (node.max === null ? '∞' : node.max) +\n ']'\n );\n\n default:\n throw new Error('Unknown node type `' + node.type + '`');\n }\n}\n\nfunction generateSequence(node, decorate, forceBraces, compact) {\n const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' ';\n const result = node.terms\n .map(term => internalGenerate(term, decorate, forceBraces, compact))\n .join(combinator);\n\n if (node.explicit || forceBraces) {\n return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]');\n }\n\n return result;\n}\n\nfunction internalGenerate(node, decorate, forceBraces, compact) {\n let result;\n\n switch (node.type) {\n case 'Group':\n result =\n generateSequence(node, decorate, forceBraces, compact) +\n (node.disallowEmpty ? '!' : '');\n break;\n\n case 'Multiplier':\n // return since node is a composition\n return (\n internalGenerate(node.term, decorate, forceBraces, compact) +\n decorate(generateMultiplier(node), node)\n );\n\n case 'Boolean':\n result = '<boolean-expr[' + internalGenerate(node.term, decorate, forceBraces, compact) + ']>';\n break;\n\n case 'Type':\n result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>';\n break;\n\n case 'Property':\n result = '<\\'' + node.name + '\\'>';\n break;\n\n case 'Keyword':\n result = node.name;\n break;\n\n case 'AtKeyword':\n result = '@' + node.name;\n break;\n\n case 'Function':\n result = node.name + '(';\n break;\n\n case 'String':\n case 'Token':\n result = node.value;\n break;\n\n case 'Comma':\n result = ',';\n break;\n\n default:\n throw new Error('Unknown node type `' + node.type + '`');\n }\n\n return decorate(result, node);\n}\n\nexport function generate(node, options) {\n let decorate = noop;\n let forceBraces = false;\n let compact = false;\n\n if (typeof options === 'function') {\n decorate = options;\n } else if (options) {\n forceBraces = Boolean(options.forceBraces);\n compact = Boolean(options.compact);\n if (typeof options.decorate === 'function') {\n decorate = options.decorate;\n }\n }\n\n return internalGenerate(node, decorate, forceBraces, compact);\n};\n","import { createCustomError } from '../utils/create-custom-error.js';\nimport { generate } from '../definition-syntax/generate.js';\n\nconst defaultLoc = { offset: 0, line: 1, column: 1 };\n\nfunction locateMismatch(matchResult, node) {\n const tokens = matchResult.tokens;\n const longestMatch = matchResult.longestMatch;\n const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null;\n const badNode = mismatchNode !== node ? mismatchNode : null;\n let mismatchOffset = 0;\n let mismatchLength = 0;\n let entries = 0;\n let css = '';\n let start;\n let end;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i].value;\n\n if (i === longestMatch) {\n mismatchLength = token.length;\n mismatchOffset = css.length;\n }\n\n if (badNode !== null && tokens[i].node === badNode) {\n if (i <= longestMatch) {\n entries++;\n } else {\n entries = 0;\n }\n }\n\n css += token;\n }\n\n if (longestMatch === tokens.length || entries > 1) { // last\n start = fromLoc(badNode || node, 'end') || buildLoc(defaultLoc, css);\n end = buildLoc(start);\n } else {\n start = fromLoc(badNode, 'start') ||\n buildLoc(fromLoc(node, 'start') || defaultLoc, css.slice(0, mismatchOffset));\n end = fromLoc(badNode, 'end') ||\n buildLoc(start, css.substr(mismatchOffset, mismatchLength));\n }\n\n return {\n css,\n mismatchOffset,\n mismatchLength,\n start,\n end\n };\n}\n\nfunction fromLoc(node, point) {\n const value = node && node.loc && node.loc[point];\n\n if (value) {\n return 'line' in value ? buildLoc(value) : value;\n }\n\n return null;\n}\n\nfunction buildLoc({ offset, line, column }, extra) {\n const loc = {\n offset,\n line,\n column\n };\n\n if (extra) {\n const lines = extra.split(/\\n|\\r\\n?|\\f/);\n\n loc.offset += extra.length;\n loc.line += lines.length - 1;\n loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1;\n }\n\n return loc;\n}\n\nexport const SyntaxReferenceError = function(type, referenceName) {\n const error = createCustomError(\n 'SyntaxReferenceError',\n type + (referenceName ? ' `' + referenceName + '`' : '')\n );\n\n error.reference = referenceName;\n\n return error;\n};\n\nexport const SyntaxMatchError = function(message, syntax, node, matchResult) {\n const error = createCustomError('SyntaxMatchError', message);\n const {\n css,\n mismatchOffset,\n mismatchLength,\n start,\n end\n } = locateMismatch(matchResult, node);\n\n error.rawMessage = message;\n error.syntax = syntax ? generate(syntax) : '<generic>';\n error.css = css;\n error.mismatchOffset = mismatchOffset;\n error.mismatchLength = mismatchLength;\n error.message = message + '\\n' +\n ' syntax: ' + error.syntax + '\\n' +\n ' value: ' + (css || '<empty string>') + '\\n' +\n ' --------' + new Array(error.mismatchOffset + 1).join('-') + '^';\n\n Object.assign(error, start);\n error.loc = {\n source: (node && node.loc && node.loc.source) || '<unknown>',\n start,\n end\n };\n\n return error;\n};\n","const keywords = new Map();\nconst properties = new Map();\nconst HYPHENMINUS = 45; // '-'.charCodeAt()\n\nexport const keyword = getKeywordDescriptor;\nexport const property = getPropertyDescriptor;\nexport const vendorPrefix = getVendorPrefix;\nexport function isCustomProperty(str, offset) {\n offset = offset || 0;\n\n return str.length - offset >= 2 &&\n str.charCodeAt(offset) === HYPHENMINUS &&\n str.charCodeAt(offset + 1) === HYPHENMINUS;\n}\n\nfunction getVendorPrefix(str, offset) {\n offset = offset || 0;\n\n // verdor prefix should be at least 3 chars length\n if (str.length - offset >= 3) {\n // vendor prefix starts with hyper minus following non-hyper minus\n if (str.charCodeAt(offset) === HYPHENMINUS &&\n str.charCodeAt(offset + 1) !== HYPHENMINUS) {\n // vendor prefix should contain a hyper minus at the ending\n const secondDashIndex = str.indexOf('-', offset + 2);\n\n if (secondDashIndex !== -1) {\n return str.substring(offset, secondDashIndex + 1);\n }\n }\n }\n\n return '';\n}\n\nfunction getKeywordDescriptor(keyword) {\n if (keywords.has(keyword)) {\n return keywords.get(keyword);\n }\n\n const name = keyword.toLowerCase();\n let descriptor = keywords.get(name);\n\n if (descriptor === undefined) {\n const custom = isCustomProperty(name, 0);\n const vendor = !custom ? getVendorPrefix(name, 0) : '';\n descriptor = Object.freeze({\n basename: name.substr(vendor.length),\n name,\n prefix: vendor,\n vendor,\n custom\n });\n }\n\n keywords.set(keyword, descriptor);\n\n return descriptor;\n}\n\nfunction getPropertyDescriptor(property) {\n if (properties.has(property)) {\n return properties.get(property);\n }\n\n let name = property;\n let hack = property[0];\n\n if (hack === '/') {\n hack = property[1] === '/' ? '//' : '/';\n } else if (hack !== '_' &&\n hack !== '*' &&\n hack !== '$' &&\n hack !== '#' &&\n hack !== '+' &&\n hack !== '&') {\n hack = '';\n }\n\n const custom = isCustomProperty(name, hack.length);\n\n // re-use result when possible (the same as for lower case)\n if (!custom) {\n name = name.toLowerCase();\n if (properties.has(name)) {\n const descriptor = properties.get(name);\n properties.set(property, descriptor);\n return descriptor;\n }\n }\n\n const vendor = !custom ? getVendorPrefix(name, hack.length) : '';\n const prefix = name.substr(0, hack.length + vendor.length);\n const descriptor = Object.freeze({\n basename: name.substr(prefix.length),\n name: name.substr(hack.length),\n hack,\n vendor,\n prefix,\n custom\n });\n\n properties.set(property, descriptor);\n\n return descriptor;\n}\n","// https://drafts.csswg.org/css-cascade-5/\nexport const cssWideKeywords = [\n 'initial',\n 'inherit',\n 'unset',\n 'revert',\n 'revert-layer'\n];\n","import {\n isDigit,\n cmpChar,\n Delim,\n WhiteSpace,\n Comment,\n Ident,\n Number as NumberToken,\n Dimension\n} from '../tokenizer/index.js';\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst N = 0x006E; // U+006E LATIN SMALL LETTER N (n)\nconst DISALLOW_SIGN = true;\nconst ALLOW_SIGN = false;\n\nfunction isDelim(token, code) {\n return token !== null && token.type === Delim && token.value.charCodeAt(0) === code;\n}\n\nfunction skipSC(token, offset, getNextToken) {\n while (token !== null && (token.type === WhiteSpace || token.type === Comment)) {\n token = getNextToken(++offset);\n }\n\n return offset;\n}\n\nfunction checkInteger(token, valueOffset, disallowSign, offset) {\n if (!token) {\n return 0;\n }\n\n const code = token.value.charCodeAt(valueOffset);\n\n if (code === PLUSSIGN || code === HYPHENMINUS) {\n if (disallowSign) {\n // Number sign is not allowed\n return 0;\n }\n valueOffset++;\n }\n\n for (; valueOffset < token.value.length; valueOffset++) {\n if (!isDigit(token.value.charCodeAt(valueOffset))) {\n // Integer is expected\n return 0;\n }\n }\n\n return offset + 1;\n}\n\n// ... <signed-integer>\n// ... ['+' | '-'] <signless-integer>\nfunction consumeB(token, offset_, getNextToken) {\n let sign = false;\n let offset = skipSC(token, offset_, getNextToken);\n\n token = getNextToken(offset);\n\n if (token === null) {\n return offset_;\n }\n\n if (token.type !== NumberToken) {\n if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) {\n sign = true;\n offset = skipSC(getNextToken(++offset), offset, getNextToken);\n token = getNextToken(offset);\n\n if (token === null || token.type !== NumberToken) {\n return 0;\n }\n } else {\n return offset_;\n }\n }\n\n if (!sign) {\n const code = token.value.charCodeAt(0);\n if (code !== PLUSSIGN && code !== HYPHENMINUS) {\n // Number sign is expected\n return 0;\n }\n }\n\n return checkInteger(token, sign ? 0 : 1, sign, offset);\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nexport default function anPlusB(token, getNextToken) {\n /* eslint-disable brace-style*/\n let offset = 0;\n\n if (!token) {\n return 0;\n }\n\n // <integer>\n if (token.type === NumberToken) {\n return checkInteger(token, 0, ALLOW_SIGN, offset); // b\n }\n\n // -n\n // -n <signed-integer>\n // -n ['+' | '-'] <signless-integer>\n // -n- <signless-integer>\n // <dashndashdigit-ident>\n else if (token.type === Ident && token.value.charCodeAt(0) === HYPHENMINUS) {\n // expect 1st char is N\n if (!cmpChar(token.value, 1, N)) {\n return 0;\n }\n\n switch (token.value.length) {\n // -n\n // -n <signed-integer>\n // -n ['+' | '-'] <signless-integer>\n case 2:\n return consumeB(getNextToken(++offset), offset, getNextToken);\n\n // -n- <signless-integer>\n case 3:\n if (token.value.charCodeAt(2) !== HYPHENMINUS) {\n return 0;\n }\n\n offset = skipSC(getNextToken(++offset), offset, getNextToken);\n token = getNextToken(offset);\n\n return checkInteger(token, 0, DISALLOW_SIGN, offset);\n\n // <dashndashdigit-ident>\n default:\n if (token.value.charCodeAt(2) !== HYPHENMINUS) {\n return 0;\n }\n\n return checkInteger(token, 3, DISALLOW_SIGN, offset);\n }\n }\n\n // '+'? n\n // '+'? n <signed-integer>\n // '+'? n ['+' | '-'] <signless-integer>\n // '+'? n- <signless-integer>\n // '+'? <ndashdigit-ident>\n else if (token.type === Ident || (isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === Ident)) {\n // just ignore a plus\n if (token.type !== Ident) {\n token = getNextToken(++offset);\n }\n\n if (token === null || !cmpChar(token.value, 0, N)) {\n return 0;\n }\n\n switch (token.value.length) {\n // '+'? n\n // '+'? n <signed-integer>\n // '+'? n ['+' | '-'] <signless-integer>\n case 1:\n return consumeB(getNextToken(++offset), offset, getNextToken);\n\n // '+'? n- <signless-integer>\n case 2:\n if (token.value.charCodeAt(1) !== HYPHENMINUS) {\n return 0;\n }\n\n offset = skipSC(getNextToken(++offset), offset, getNextToken);\n token = getNextToken(offset);\n\n return checkInteger(token, 0, DISALLOW_SIGN, offset);\n\n // '+'? <ndashdigit-ident>\n default:\n if (token.value.charCodeAt(1) !== HYPHENMINUS) {\n return 0;\n }\n\n return checkInteger(token, 2, DISALLOW_SIGN, offset);\n }\n }\n\n // <ndashdigit-dimension>\n // <ndash-dimension> <signless-integer>\n // <n-dimension>\n // <n-dimension> <signed-integer>\n // <n-dimension> ['+' | '-'] <signless-integer>\n else if (token.type === Dimension) {\n let code = token.value.charCodeAt(0);\n let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0;\n let i = sign;\n\n for (; i < token.value.length; i++) {\n if (!isDigit(token.value.charCodeAt(i))) {\n break;\n }\n }\n\n if (i === sign) {\n // Integer is expected\n return 0;\n }\n\n if (!cmpChar(token.value, i, N)) {\n return 0;\n }\n\n // <n-dimension>\n // <n-dimension> <signed-integer>\n // <n-dimension> ['+' | '-'] <signless-integer>\n if (i + 1 === token.value.length) {\n return consumeB(getNextToken(++offset), offset, getNextToken);\n } else {\n if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) {\n return 0;\n }\n\n // <ndash-dimension> <signless-integer>\n if (i + 2 === token.value.length) {\n offset = skipSC(getNextToken(++offset), offset, getNextToken);\n token = getNextToken(offset);\n\n return checkInteger(token, 0, DISALLOW_SIGN, offset);\n }\n // <ndashdigit-dimension>\n else {\n return checkInteger(token, i + 2, DISALLOW_SIGN, offset);\n }\n }\n }\n\n return 0;\n};\n","import {\n isHexDigit,\n cmpChar,\n Ident,\n Delim,\n Number as NumberToken,\n Dimension\n} from '../tokenizer/index.js';\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)\nconst U = 0x0075; // U+0075 LATIN SMALL LETTER U (u)\n\nfunction isDelim(token, code) {\n return token !== null && token.type === Delim && token.value.charCodeAt(0) === code;\n}\n\nfunction startsWith(token, code) {\n return token.value.charCodeAt(0) === code;\n}\n\nfunction hexSequence(token, offset, allowDash) {\n let hexlen = 0;\n\n for (let pos = offset; pos < token.value.length; pos++) {\n const code = token.value.charCodeAt(pos);\n\n if (code === HYPHENMINUS && allowDash && hexlen !== 0) {\n hexSequence(token, offset + hexlen + 1, false);\n return 6; // dissallow following question marks\n }\n\n if (!isHexDigit(code)) {\n return 0; // not a hex digit\n }\n\n if (++hexlen > 6) {\n return 0; // too many hex digits\n };\n }\n\n return hexlen;\n}\n\nfunction withQuestionMarkSequence(consumed, length, getNextToken) {\n if (!consumed) {\n return 0; // nothing consumed\n }\n\n while (isDelim(getNextToken(length), QUESTIONMARK)) {\n if (++consumed > 6) {\n return 0; // too many question marks\n }\n\n length++;\n }\n\n return length;\n}\n\n// https://drafts.csswg.org/css-syntax/#urange\n// Informally, the <urange> production has three forms:\n// U+0001\n// Defines a range consisting of a single code point, in this case the code point \"1\".\n// U+0001-00ff\n// Defines a range of codepoints between the first and the second value, in this case\n// the range between \"1\" and \"ff\" (255 in decimal) inclusive.\n// U+00??\n// Defines a range of codepoints where the \"?\" characters range over all hex digits,\n// in this case defining the same as the value U+0000-00ff.\n// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat \"?\" as a hexadecimal digit).\n//\n// <urange> =\n// u '+' <ident-token> '?'* |\n// u <dimension-token> '?'* |\n// u <number-token> '?'* |\n// u <number-token> <dimension-token> |\n// u <number-token> <number-token> |\n// u '+' '?'+\nexport default function urange(token, getNextToken) {\n let length = 0;\n\n // should start with `u` or `U`\n if (token === null || token.type !== Ident || !cmpChar(token.value, 0, U)) {\n return 0;\n }\n\n token = getNextToken(++length);\n if (token === null) {\n return 0;\n }\n\n // u '+' <ident-token> '?'*\n // u '+' '?'+\n if (isDelim(token, PLUSSIGN)) {\n token = getNextToken(++length);\n if (token === null) {\n return 0;\n }\n\n if (token.type === Ident) {\n // u '+' <ident-token> '?'*\n return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken);\n }\n\n if (isDelim(token, QUESTIONMARK)) {\n // u '+' '?'+\n return withQuestionMarkSequence(1, ++length, getNextToken);\n }\n\n // Hex digit or question mark is expected\n return 0;\n }\n\n // u <number-token> '?'*\n // u <number-token> <dimension-token>\n // u <number-token> <number-token>\n if (token.type === NumberToken) {\n const consumedHexLength = hexSequence(token, 1, true);\n if (consumedHexLength === 0) {\n return 0;\n }\n\n token = getNextToken(++length);\n if (token === null) {\n // u <number-token> <eof>\n return length;\n }\n\n if (token.type === Dimension || token.type === NumberToken) {\n // u <number-token> <dimension-token>\n // u <number-token> <number-token>\n if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) {\n return 0;\n }\n\n return length + 1;\n }\n\n // u <number-token> '?'*\n return withQuestionMarkSequence(consumedHexLength, length, getNextToken);\n }\n\n // u <dimension-token> '?'*\n if (token.type === Dimension) {\n return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken);\n }\n\n return 0;\n};\n","import { cssWideKeywords } from './generic-const.js';\nimport anPlusB from './generic-an-plus-b.js';\nimport urange from './generic-urange.js';\nimport {\n isIdentifierStart,\n isHexDigit,\n isDigit,\n cmpStr,\n consumeNumber,\n\n Ident,\n Function as FunctionToken,\n AtKeyword,\n Hash,\n String as StringToken,\n BadString,\n Url,\n BadUrl,\n Delim,\n Number as NumberToken,\n Percentage,\n Dimension,\n WhiteSpace,\n CDO,\n CDC,\n Colon,\n Semicolon,\n Comma,\n LeftSquareBracket,\n RightSquareBracket,\n LeftParenthesis,\n RightParenthesis,\n LeftCurlyBracket,\n RightCurlyBracket\n} from '../tokenizer/index.js';\n\n// CSS mathematical functions categorized by return type behavior\n// See: https://www.w3.org/TR/css-values-4/#math\n\n// Calculation functions that return different types depending on input\nconst calcFunctionNames = [\n 'calc(',\n '-moz-calc(',\n '-webkit-calc('\n];\n\n// Comparison functions that return different types depending on input\nconst comparisonFunctionNames = [\n 'min(',\n 'max(',\n 'clamp('\n];\n\n// Functions that return a stepped value, i.e. a value that is rounded to the nearest step\nconst steppedValueFunctionNames = [\n 'round(',\n 'mod(',\n 'rem('\n];\n\n// Trigonometrical functions that return a <number>\nconst trigNumberFunctionNames = [\n 'sin(',\n 'cos(',\n 'tan('\n];\n\n// Trigonometrical functions that return a <angle>\nconst trigAngleFunctionNames = [\n 'asin(',\n 'acos(',\n 'atan(',\n 'atan2('\n];\n\n// Other functions that return a <number>\nconst otherNumberFunctionNames = [\n 'pow(',\n 'sqrt(',\n 'log(',\n 'exp(',\n 'sign('\n];\n\n// Exponential functions that return a <number> or <dimension> or <percentage>\nconst expNumberDimensionPercentageFunctionNames = [\n 'hypot('\n];\n\n// Return the same type as the input\nconst signFunctionNames = [\n 'abs('\n];\n\nconst numberFunctionNames = [\n ...calcFunctionNames,\n ...comparisonFunctionNames,\n ...steppedValueFunctionNames,\n ...trigNumberFunctionNames,\n ...otherNumberFunctionNames,\n ...expNumberDimensionPercentageFunctionNames,\n ...signFunctionNames\n];\n\nconst percentageFunctionNames = [\n ...calcFunctionNames,\n ...comparisonFunctionNames,\n ...steppedValueFunctionNames,\n ...expNumberDimensionPercentageFunctionNames,\n ...signFunctionNames\n];\n\nconst dimensionFunctionNames = [\n ...calcFunctionNames,\n ...comparisonFunctionNames,\n ...steppedValueFunctionNames,\n ...trigAngleFunctionNames,\n ...expNumberDimensionPercentageFunctionNames,\n ...signFunctionNames\n];\n\nconst balancePair = new Map([\n [FunctionToken, RightParenthesis],\n [LeftParenthesis, RightParenthesis],\n [LeftSquareBracket, RightSquareBracket],\n [LeftCurlyBracket, RightCurlyBracket]\n]);\n\n// safe char code getter\nfunction charCodeAt(str, index) {\n return index < str.length ? str.charCodeAt(index) : 0;\n}\n\nfunction eqStr(actual, expected) {\n return cmpStr(actual, 0, actual.length, expected);\n}\n\nfunction eqStrAny(actual, expected) {\n for (let i = 0; i < expected.length; i++) {\n if (eqStr(actual, expected[i])) {\n return true;\n }\n }\n\n return false;\n}\n\n// IE postfix hack, i.e. 123\\0 or 123px\\9\nfunction isPostfixIeHack(str, offset) {\n if (offset !== str.length - 2) {\n return false;\n }\n\n return (\n charCodeAt(str, offset) === 0x005C && // U+005C REVERSE SOLIDUS (\\)\n isDigit(charCodeAt(str, offset + 1))\n );\n}\n\nfunction outOfRange(opts, value, numEnd) {\n if (opts && opts.type === 'Range') {\n const num = Number(\n numEnd !== undefined && numEnd !== value.length\n ? value.substr(0, numEnd)\n : value\n );\n\n if (isNaN(num)) {\n return true;\n }\n\n // FIXME: when opts.min is a string it's a dimension, skip a range validation\n // for now since it requires a type covertation which is not implmented yet\n if (opts.min !== null && num < opts.min && typeof opts.min !== 'string') {\n return true;\n }\n\n // FIXME: when opts.max is a string it's a dimension, skip a range validation\n // for now since it requires a type covertation which is not implmented yet\n if (opts.max !== null && num > opts.max && typeof opts.max !== 'string') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction consumeFunction(token, getNextToken) {\n let balanceCloseType = 0;\n let balanceStash = [];\n let length = 0;\n\n // balanced token consuming\n scan:\n do {\n switch (token.type) {\n case RightCurlyBracket:\n case RightParenthesis:\n case RightSquareBracket:\n if (token.type !== balanceCloseType) {\n break scan;\n }\n\n balanceCloseType = balanceStash.pop();\n\n if (balanceStash.length === 0) {\n length++;\n break scan;\n }\n\n break;\n\n case FunctionToken:\n case LeftParenthesis:\n case LeftSquareBracket:\n case LeftCurlyBracket:\n balanceStash.push(balanceCloseType);\n balanceCloseType = balancePair.get(token.type);\n break;\n }\n\n length++;\n } while (token = getNextToken(length));\n\n return length;\n}\n\n\n// TODO: implement\n// can be used wherever <length>, <frequency>, <angle>, <time>, <percentage>, <number>, or <integer> values are allowed\n// https://drafts.csswg.org/css-values/#calc-notation\nfunction math(next, functionNames) {\n return function(token, getNextToken, opts) {\n if (token === null) {\n return 0;\n }\n\n if (token.type === FunctionToken && eqStrAny(token.value, functionNames)) {\n return consumeFunction(token, getNextToken);\n }\n\n return next(token, getNextToken, opts);\n };\n}\n\nfunction tokenType(expectedTokenType) {\n return function(token) {\n if (token === null || token.type !== expectedTokenType) {\n return 0;\n }\n\n return 1;\n };\n}\n\n// =========================\n// Complex types\n//\n\n// https://drafts.csswg.org/css-values-4/#custom-idents\n// 4.2. Author-defined Identifiers: the <custom-ident> type\n// Some properties accept arbitrary author-defined identifiers as a component value.\n// This generic data type is denoted by <custom-ident>, and represents any valid CSS identifier\n// that would not be misinterpreted as a pre-defined keyword in that property’s value definition.\n//\n// See also: https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident\nfunction customIdent(token) {\n if (token === null || token.type !== Ident) {\n return 0;\n }\n\n const name = token.value.toLowerCase();\n\n // The CSS-wide keywords are not valid <custom-ident>s\n if (eqStrAny(name, cssWideKeywords)) {\n return 0;\n }\n\n // The default keyword is reserved and is also not a valid <custom-ident>\n if (eqStr(name, 'default')) {\n return 0;\n }\n\n // TODO: ignore property specific keywords (as described https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident)\n // Specifications using <custom-ident> must specify clearly what other keywords\n // are excluded from <custom-ident>, if any—for example by saying that any pre-defined keywords\n // in that property’s value definition are excluded. Excluded keywords are excluded\n // in all ASCII case permutations.\n\n return 1;\n}\n\n// https://drafts.csswg.org/css-values-4/#dashed-idents\n// The <dashed-ident> production is a <custom-ident>, with all the case-sensitivity that implies,\n// with the additional restriction that it must start with two dashes (U+002D HYPHEN-MINUS).\nfunction dashedIdent(token) {\n if (token === null || token.type !== Ident) {\n return 0;\n }\n\n // ... must start with two dashes (U+002D HYPHEN-MINUS)\n if (charCodeAt(token.value, 0) !== 0x002D || charCodeAt(token.value, 1) !== 0x002D) {\n return 0;\n }\n\n return 1;\n}\n\n// https://drafts.csswg.org/css-variables/#typedef-custom-property-name\n// A custom property is any property whose name starts with two dashes (U+002D HYPHEN-MINUS), like --foo.\n// The <custom-property-name> production corresponds to this: it’s defined as any <dashed-ident>\n// (a valid identifier that starts with two dashes), except -- itself, which is reserved for future use by CSS.\nfunction customPropertyName(token) {\n // ... it’s defined as any <dashed-ident>\n if (!dashedIdent(token)) {\n return 0;\n }\n\n // ... except -- itself, which is reserved for future use by CSS\n if (token.value === '--') {\n return 0;\n }\n\n return 1;\n}\n\n// https://drafts.csswg.org/css-color-4/#hex-notation\n// The syntax of a <hex-color> is a <hash-token> token whose value consists of 3, 4, 6, or 8 hexadecimal digits.\n// In other words, a hex color is written as a hash character, \"#\", followed by some number of digits 0-9 or\n// letters a-f (the case of the letters doesn’t matter - #00ff00 is identical to #00FF00).\nfunction hexColor(token) {\n if (token === null || token.type !== Hash) {\n return 0;\n }\n\n const length = token.value.length;\n\n // valid values (length): #rgb (4), #rgba (5), #rrggbb (7), #rrggbbaa (9)\n if (length !== 4 && length !== 5 && length !== 7 && length !== 9) {\n return 0;\n }\n\n for (let i = 1; i < length; i++) {\n if (!isHexDigit(charCodeAt(token.value, i))) {\n return 0;\n }\n }\n\n return 1;\n}\n\nfunction idSelector(token) {\n if (token === null || token.type !== Hash) {\n return 0;\n }\n\n if (!isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) {\n return 0;\n }\n\n return 1;\n}\n\n// https://drafts.csswg.org/css-syntax/#any-value\n// It represents the entirety of what a valid declaration can have as its value.\nfunction declarationValue(token, getNextToken) {\n if (!token) {\n return 0;\n }\n\n let balanceCloseType = 0;\n let balanceStash = [];\n let length = 0;\n\n // The <declaration-value> production matches any sequence of one or more tokens,\n // so long as the sequence does not contain ...\n scan:\n do {\n switch (token.type) {\n // ... <bad-string-token>, <bad-url-token>,\n case BadString:\n case BadUrl:\n break scan;\n\n // ... unmatched <)-token>, <]-token>, or <}-token>,\n case RightCurlyBracket:\n case RightParenthesis:\n case RightSquareBracket:\n if (token.type !== balanceCloseType) {\n break scan;\n }\n\n balanceCloseType = balanceStash.pop();\n break;\n\n // ... or top-level <semicolon-token> tokens\n case Semicolon:\n if (balanceCloseType === 0) {\n break scan;\n }\n\n break;\n\n // ... or <delim-token> tokens with a value of \"!\"\n case Delim:\n if (balanceCloseType === 0 && token.value === '!') {\n break scan;\n }\n\n break;\n\n case FunctionToken:\n case LeftParenthesis:\n case LeftSquareBracket:\n case LeftCurlyBracket:\n balanceStash.push(balanceCloseType);\n balanceCloseType = balancePair.get(token.type);\n break;\n }\n\n length++;\n } while (token = getNextToken(length));\n\n return length;\n}\n\n// https://drafts.csswg.org/css-syntax/#any-value\n// The <any-value> production is identical to <declaration-value>, but also\n// allows top-level <semicolon-token> tokens and <delim-token> tokens\n// with a value of \"!\". It represents the entirety of what valid CSS can be in any context.\nfunction anyValue(token, getNextToken) {\n if (!token) {\n return 0;\n }\n\n let balanceCloseType = 0;\n let balanceStash = [];\n let length = 0;\n\n // The <any-value> production matches any sequence of one or more tokens,\n // so long as the sequence ...\n scan:\n do {\n switch (token.type) {\n // ... does not contain <bad-string-token>, <bad-url-token>,\n case BadString:\n case BadUrl:\n break scan;\n\n // ... unmatched <)-token>, <]-token>, or <}-token>,\n case RightCurlyBracket:\n case RightParenthesis:\n case RightSquareBracket:\n if (token.type !== balanceCloseType) {\n break scan;\n }\n\n balanceCloseType = balanceStash.pop();\n break;\n\n case FunctionToken:\n case LeftParenthesis:\n case LeftSquareBracket:\n case LeftCurlyBracket:\n balanceStash.push(balanceCloseType);\n balanceCloseType = balancePair.get(token.type);\n break;\n }\n\n length++;\n } while (token = getNextToken(length));\n\n return length;\n}\n\n// =========================\n// Dimensions\n//\n\nfunction dimension(type) {\n if (type) {\n type = new Set(type);\n }\n\n return function(token, getNextToken, opts) {\n if (token === null || token.type !== Dimension) {\n return 0;\n }\n\n const numberEnd = consumeNumber(token.value, 0);\n\n // check unit\n if (type !== null) {\n // check for IE postfix hack, i.e. 123px\\0 or 123px\\9\n const reverseSolidusOffset = token.value.indexOf('\\\\', numberEnd);\n const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset)\n ? token.value.substr(numberEnd)\n : token.value.substring(numberEnd, reverseSolidusOffset);\n\n if (type.has(unit.toLowerCase()) === false) {\n return 0;\n }\n }\n\n // check range if specified\n if (outOfRange(opts, token.value, numberEnd)) {\n return 0;\n }\n\n return 1;\n };\n}\n\n// =========================\n// Percentage\n//\n\n// §5.5. Percentages: the <percentage> type\n// https://drafts.csswg.org/css-values-4/#percentages\nfunction percentage(token, getNextToken, opts) {\n // ... corresponds to the <percentage-token> production\n if (token === null || token.type !== Percentage) {\n return 0;\n }\n\n // check range if specified\n if (outOfRange(opts, token.value, token.value.length - 1)) {\n return 0;\n }\n\n return 1;\n}\n\n// =========================\n// Numeric\n//\n\n// https://drafts.csswg.org/css-values-4/#numbers\n// The value <zero> represents a literal number with the value 0. Expressions that merely\n// evaluate to a <number> with the value 0 (for example, calc(0)) do not match <zero>;\n// only literal <number-token>s do.\nfunction zero(next) {\n if (typeof next !== 'function') {\n next = function() {\n return 0;\n };\n }\n\n return function(token, getNextToken, opts) {\n if (token !== null && token.type === NumberToken) {\n if (Number(token.value) === 0) {\n return 1;\n }\n }\n\n return next(token, getNextToken, opts);\n };\n}\n\n// § 5.3. Real Numbers: the <number> type\n// https://drafts.csswg.org/css-values-4/#numbers\n// Number values are denoted by <number>, and represent real numbers, possibly with a fractional component.\n// ... It corresponds to the <number-token> production\nfunction number(token, getNextToken, opts) {\n if (token === null) {\n return 0;\n }\n\n const numberEnd = consumeNumber(token.value, 0);\n const isNumber = numberEnd === token.value.length;\n if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) {\n return 0;\n }\n\n // check range if specified\n if (outOfRange(opts, token.value, numberEnd)) {\n return 0;\n }\n\n return 1;\n}\n\n// §5.2. Integers: the <integer> type\n// https://drafts.csswg.org/css-values-4/#integers\nfunction integer(token, getNextToken, opts) {\n // ... corresponds to a subset of the <number-token> production\n if (token === null || token.type !== NumberToken) {\n return 0;\n }\n\n // The first digit of an integer may be immediately preceded by `-` or `+` to indicate the integer’s sign.\n let i = charCodeAt(token.value, 0) === 0x002B || // U+002B PLUS SIGN (+)\n charCodeAt(token.value, 0) === 0x002D ? 1 : 0; // U+002D HYPHEN-MINUS (-)\n\n // When written literally, an integer is one or more decimal digits 0 through 9 ...\n for (; i < token.value.length; i++) {\n if (!isDigit(charCodeAt(token.value, i))) {\n return 0;\n }\n }\n\n // check range if specified\n if (outOfRange(opts, token.value, i)) {\n return 0;\n }\n\n return 1;\n}\n\n// token types\nexport const tokenTypes = {\n 'ident-token': tokenType(Ident),\n 'function-token': tokenType(FunctionToken),\n 'at-keyword-token': tokenType(AtKeyword),\n 'hash-token': tokenType(Hash),\n 'string-token': tokenType(StringToken),\n 'bad-string-token': tokenType(BadString),\n 'url-token': tokenType(Url),\n 'bad-url-token': tokenType(BadUrl),\n 'delim-token': tokenType(Delim),\n 'number-token': tokenType(NumberToken),\n 'percentage-token': tokenType(Percentage),\n 'dimension-token': tokenType(Dimension),\n 'whitespace-token': tokenType(WhiteSpace),\n 'CDO-token': tokenType(CDO),\n 'CDC-token': tokenType(CDC),\n 'colon-token': tokenType(Colon),\n 'semicolon-token': tokenType(Semicolon),\n 'comma-token': tokenType(Comma),\n '[-token': tokenType(LeftSquareBracket),\n ']-token': tokenType(RightSquareBracket),\n '(-token': tokenType(LeftParenthesis),\n ')-token': tokenType(RightParenthesis),\n '{-token': tokenType(LeftCurlyBracket),\n '}-token': tokenType(RightCurlyBracket)\n};\n\n// token production types\nexport const productionTypes = {\n // token type aliases\n 'string': tokenType(StringToken),\n 'ident': tokenType(Ident),\n\n // percentage\n 'percentage': math(percentage, percentageFunctionNames),\n\n // numeric\n 'zero': zero(),\n 'number': math(number, numberFunctionNames),\n 'integer': math(integer, numberFunctionNames),\n\n // complex types\n 'custom-ident': customIdent,\n 'dashed-ident': dashedIdent,\n 'custom-property-name': customPropertyName,\n 'hex-color': hexColor,\n 'id-selector': idSelector, // element( <id-selector> )\n 'an-plus-b': anPlusB,\n 'urange': urange,\n 'declaration-value': declarationValue,\n 'any-value': anyValue\n};\n\nexport const unitGroups = [\n 'length',\n 'angle',\n 'time',\n 'frequency',\n 'resolution',\n 'flex',\n 'decibel',\n 'semitones'\n];\n\n// dimensions types depend on units set\nexport function createDemensionTypes(units) {\n const {\n angle,\n decibel,\n frequency,\n flex,\n length,\n resolution,\n semitones,\n time\n } = units || {};\n\n return {\n 'dimension': math(dimension(null), dimensionFunctionNames),\n 'angle': math(dimension(angle), dimensionFunctionNames),\n 'decibel': math(dimension(decibel), dimensionFunctionNames),\n 'frequency': math(dimension(frequency), dimensionFunctionNames),\n 'flex': math(dimension(flex), dimensionFunctionNames),\n 'length': math(zero(dimension(length)), dimensionFunctionNames),\n 'resolution': math(dimension(resolution), dimensionFunctionNames),\n 'semitones': math(dimension(semitones), dimensionFunctionNames),\n 'time': math(dimension(time), dimensionFunctionNames)\n };\n}\n\n// The <attr-unit> production matches any identifier that is an ASCII case-insensitive\n// match for the name of a CSS dimension unit, such as px, or the <delim-token> %.\nfunction createAttrUnit(units) {\n const unitSet = new Set();\n\n for (const group of unitGroups) {\n if (Array.isArray(units[group])) {\n for (const unit of units[group]) {\n unitSet.add(unit.toLowerCase());\n }\n }\n }\n\n return function attrUnit(token) {\n if (token === null) {\n return 0;\n }\n\n if (token.type === Delim && token.value === '%') {\n return 1;\n }\n\n if (token.type === Ident && unitSet.has(token.value.toLowerCase())) {\n return 1;\n }\n\n return 0;\n };\n}\n\nexport function createGenericTypes(units) {\n return {\n ...tokenTypes,\n ...productionTypes,\n ...createDemensionTypes(units),\n 'attr-unit': createAttrUnit(units)\n };\n};\n","export const length = [\n // absolute length units https://www.w3.org/TR/css-values-3/#lengths\n 'cm', 'mm', 'q', 'in', 'pt', 'pc', 'px',\n // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths\n 'em', 'rem',\n 'ex', 'rex',\n 'cap', 'rcap',\n 'ch', 'rch',\n 'ic', 'ric',\n 'lh', 'rlh',\n // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths\n 'vw', 'svw', 'lvw', 'dvw',\n 'vh', 'svh', 'lvh', 'dvh',\n 'vi', 'svi', 'lvi', 'dvi',\n 'vb', 'svb', 'lvb', 'dvb',\n 'vmin', 'svmin', 'lvmin', 'dvmin',\n 'vmax', 'svmax', 'lvmax', 'dvmax',\n // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths\n 'cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax'\n];\nexport const angle = ['deg', 'grad', 'rad', 'turn']; // https://www.w3.org/TR/css-values-3/#angles\nexport const time = ['s', 'ms']; // https://www.w3.org/TR/css-values-3/#time\nexport const frequency = ['hz', 'khz']; // https://www.w3.org/TR/css-values-3/#frequency\nexport const resolution = ['dpi', 'dpcm', 'dppx', 'x']; // https://www.w3.org/TR/css-values-3/#resolution\nexport const flex = ['fr']; // https://drafts.csswg.org/css-grid/#fr-unit\nexport const decibel = ['db']; // https://www.w3.org/TR/css3-speech/#mixing-props-voice-volume\nexport const semitones = ['st']; // https://www.w3.org/TR/css3-speech/#voice-props-voice-pitch\n","import { createCustomError } from '../utils/create-custom-error.js';\n\nexport function SyntaxError(message, input, offset) {\n return Object.assign(createCustomError('SyntaxError', message), {\n input,\n offset,\n rawMessage: message,\n message: message + '\\n' +\n ' ' + input + '\\n' +\n '--' + new Array((offset || input.length) + 1).join('-') + '^'\n });\n};\n","import { SyntaxError } from './SyntaxError.js';\n\nconst TAB = 9;\nconst N = 10;\nconst F = 12;\nconst R = 13;\nconst SPACE = 32;\nconst NAME_CHAR = new Uint8Array(128).map((_, idx) =>\n /[a-zA-Z0-9\\-]/.test(String.fromCharCode(idx)) ? 1 : 0\n);\n\nexport class Scanner {\n constructor(str) {\n this.str = str;\n this.pos = 0;\n }\n\n charCodeAt(pos) {\n return pos < this.str.length ? this.str.charCodeAt(pos) : 0;\n }\n charCode() {\n return this.charCodeAt(this.pos);\n }\n isNameCharCode(code = this.charCode()) {\n return code < 128 && NAME_CHAR[code] === 1;\n }\n nextCharCode() {\n return this.charCodeAt(this.pos + 1);\n }\n nextNonWsCode(pos) {\n return this.charCodeAt(this.findWsEnd(pos));\n }\n skipWs() {\n this.pos = this.findWsEnd(this.pos);\n }\n findWsEnd(pos) {\n for (; pos < this.str.length; pos++) {\n const code = this.str.charCodeAt(pos);\n if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {\n break;\n }\n }\n\n return pos;\n }\n substringToPos(end) {\n return this.str.substring(this.pos, this.pos = end);\n }\n eat(code) {\n if (this.charCode() !== code) {\n this.error('Expect `' + String.fromCharCode(code) + '`');\n }\n\n this.pos++;\n }\n peek() {\n return this.pos < this.str.length ? this.str.charAt(this.pos++) : '';\n }\n error(message) {\n throw new SyntaxError(message, this.str, this.pos);\n }\n\n scanSpaces() {\n return this.substringToPos(this.findWsEnd(this.pos));\n }\n scanWord() {\n let end = this.pos;\n\n for (; end < this.str.length; end++) {\n const code = this.str.charCodeAt(end);\n if (code >= 128 || NAME_CHAR[code] === 0) {\n break;\n }\n }\n\n if (this.pos === end) {\n this.error('Expect a keyword');\n }\n\n return this.substringToPos(end);\n }\n scanNumber() {\n let end = this.pos;\n\n for (; end < this.str.length; end++) {\n const code = this.str.charCodeAt(end);\n\n if (code < 48 || code > 57) {\n break;\n }\n }\n\n if (this.pos === end) {\n this.error('Expect a number');\n }\n\n return this.substringToPos(end);\n }\n scanString() {\n const end = this.str.indexOf('\\'', this.pos + 1);\n\n if (end === -1) {\n this.pos = this.str.length;\n this.error('Expect an apostrophe');\n }\n\n return this.substringToPos(end + 1);\n }\n};\n","import { Scanner } from './scanner.js';\n\nconst TAB = 9;\nconst N = 10;\nconst F = 12;\nconst R = 13;\nconst SPACE = 32;\nconst EXCLAMATIONMARK = 33; // !\nconst NUMBERSIGN = 35; // #\nconst AMPERSAND = 38; // &\nconst APOSTROPHE = 39; // '\nconst LEFTPARENTHESIS = 40; // (\nconst RIGHTPARENTHESIS = 41; // )\nconst ASTERISK = 42; // *\nconst PLUSSIGN = 43; // +\nconst COMMA = 44; // ,\nconst HYPERMINUS = 45; // -\nconst LESSTHANSIGN = 60; // <\nconst GREATERTHANSIGN = 62; // >\nconst QUESTIONMARK = 63; // ?\nconst COMMERCIALAT = 64; // @\nconst LEFTSQUAREBRACKET = 91; // [\nconst RIGHTSQUAREBRACKET = 93; // ]\nconst LEFTCURLYBRACKET = 123; // {\nconst VERTICALLINE = 124; // |\nconst RIGHTCURLYBRACKET = 125; // }\nconst INFINITY = 8734; // ∞\nconst COMBINATOR_PRECEDENCE = {\n ' ': 1,\n '&&': 2,\n '||': 3,\n '|': 4\n};\n\nfunction readMultiplierRange(scanner) {\n let min = null;\n let max = null;\n\n scanner.eat(LEFTCURLYBRACKET);\n scanner.skipWs();\n\n min = scanner.scanNumber(scanner);\n scanner.skipWs();\n\n if (scanner.charCode() === COMMA) {\n scanner.pos++;\n scanner.skipWs();\n\n if (scanner.charCode() !== RIGHTCURLYBRACKET) {\n max = scanner.scanNumber(scanner);\n scanner.skipWs();\n }\n } else {\n max = min;\n }\n\n scanner.eat(RIGHTCURLYBRACKET);\n\n return {\n min: Number(min),\n max: max ? Number(max) : 0\n };\n}\n\nfunction readMultiplier(scanner) {\n let range = null;\n let comma = false;\n\n switch (scanner.charCode()) {\n case ASTERISK:\n scanner.pos++;\n\n range = {\n min: 0,\n max: 0\n };\n\n break;\n\n case PLUSSIGN:\n scanner.pos++;\n\n range = {\n min: 1,\n max: 0\n };\n\n break;\n\n case QUESTIONMARK:\n scanner.pos++;\n\n range = {\n min: 0,\n max: 1\n };\n\n break;\n\n case NUMBERSIGN:\n scanner.pos++;\n\n comma = true;\n\n if (scanner.charCode() === LEFTCURLYBRACKET) {\n range = readMultiplierRange(scanner);\n } else if (scanner.charCode() === QUESTIONMARK) {\n // https://www.w3.org/TR/css-values-4/#component-multipliers\n // > the # and ? multipliers may be stacked as #?\n // In this case just treat \"#?\" as a single multiplier\n // { min: 0, max: 0, comma: true }\n scanner.pos++;\n range = {\n min: 0,\n max: 0\n };\n } else {\n range = {\n min: 1,\n max: 0\n };\n }\n\n break;\n\n case LEFTCURLYBRACKET:\n range = readMultiplierRange(scanner);\n break;\n\n default:\n return null;\n }\n\n return {\n type: 'Multiplier',\n comma,\n min: range.min,\n max: range.max,\n term: null\n };\n}\n\nfunction maybeMultiplied(scanner, node) {\n const multiplier = readMultiplier(scanner);\n\n if (multiplier !== null) {\n multiplier.term = node;\n\n // https://www.w3.org/TR/css-values-4/#component-multipliers\n // > The + and # multipliers may be stacked as +#;\n // Represent \"+#\" as nested multipliers:\n // { ...<multiplier #>,\n // term: {\n // ...<multipler +>,\n // term: node\n // }\n // }\n if (scanner.charCode() === NUMBERSIGN &&\n scanner.charCodeAt(scanner.pos - 1) === PLUSSIGN) {\n return maybeMultiplied(scanner, multiplier);\n }\n\n // https://www.w3.org/TR/css-values-4/#component-multipliers\n // > the # and ? multipliers, {A} and ? multipliers, and {A,B} and ? multipliers\n // > may be stacked as #?, {A}?, and {A,B}?, respectively\n // Represent \"{}?\" as nested multipliers as well as \"+#\".\n // The \"#?\" case is already handled above, in maybeMultiplied()\n if (scanner.charCode() === QUESTIONMARK &&\n scanner.charCodeAt(scanner.pos - 1) === RIGHTCURLYBRACKET) {\n return maybeMultiplied(scanner, multiplier);\n }\n\n return multiplier;\n }\n\n return node;\n}\n\nfunction maybeToken(scanner) {\n const ch = scanner.peek();\n\n if (ch === '') {\n return null;\n }\n\n return maybeMultiplied(scanner, {\n type: 'Token',\n value: ch\n });\n}\n\nfunction readProperty(scanner) {\n let name;\n\n scanner.eat(LESSTHANSIGN);\n scanner.eat(APOSTROPHE);\n\n name = scanner.scanWord();\n\n scanner.eat(APOSTROPHE);\n scanner.eat(GREATERTHANSIGN);\n\n return maybeMultiplied(scanner, {\n type: 'Property',\n name\n });\n}\n\n// https://drafts.csswg.org/css-values-3/#numeric-ranges\n// 4.1. Range Restrictions and Range Definition Notation\n//\n// Range restrictions can be annotated in the numeric type notation using CSS bracketed\n// range notation—[min,max]—within the angle brackets, after the identifying keyword,\n// indicating a closed range between (and including) min and max.\n// For example, <integer [0, 10]> indicates an integer between 0 and 10, inclusive.\nfunction readTypeRange(scanner) {\n // use null for Infinity to make AST format JSON serializable/deserializable\n let min = null; // -Infinity\n let max = null; // Infinity\n let sign = 1;\n\n scanner.eat(LEFTSQUAREBRACKET);\n\n if (scanner.charCode() === HYPERMINUS) {\n scanner.peek();\n sign = -1;\n }\n\n if (sign == -1 && scanner.charCode() === INFINITY) {\n scanner.peek();\n } else {\n min = sign * Number(scanner.scanNumber(scanner));\n\n if (scanner.isNameCharCode()) {\n min += scanner.scanWord();\n }\n }\n\n scanner.skipWs();\n scanner.eat(COMMA);\n scanner.skipWs();\n\n if (scanner.charCode() === INFINITY) {\n scanner.peek();\n } else {\n sign = 1;\n\n if (scanner.charCode() === HYPERMINUS) {\n scanner.peek();\n sign = -1;\n }\n\n max = sign * Number(scanner.scanNumber(scanner));\n\n if (scanner.isNameCharCode()) {\n max += scanner.scanWord();\n }\n }\n\n scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'Range',\n min,\n max\n };\n}\n\nfunction readType(scanner) {\n let name;\n let opts = null;\n\n scanner.eat(LESSTHANSIGN);\n name = scanner.scanWord();\n\n // https://drafts.csswg.org/css-values-5/#boolean\n if (name === 'boolean-expr') {\n scanner.eat(LEFTSQUAREBRACKET);\n\n const implicitGroup = readImplicitGroup(scanner, RIGHTSQUAREBRACKET);\n\n scanner.eat(RIGHTSQUAREBRACKET);\n scanner.eat(GREATERTHANSIGN);\n\n return maybeMultiplied(scanner, {\n type: 'Boolean',\n term: implicitGroup.terms.length === 1\n ? implicitGroup.terms[0]\n : implicitGroup\n });\n }\n\n if (scanner.charCode() === LEFTPARENTHESIS &&\n scanner.nextCharCode() === RIGHTPARENTHESIS) {\n scanner.pos += 2;\n name += '()';\n }\n\n if (scanner.charCodeAt(scanner.findWsEnd(scanner.pos)) === LEFTSQUAREBRACKET) {\n scanner.skipWs();\n opts = readTypeRange(scanner);\n }\n\n scanner.eat(GREATERTHANSIGN);\n\n return maybeMultiplied(scanner, {\n type: 'Type',\n name,\n opts\n });\n}\n\nfunction readKeywordOrFunction(scanner) {\n const name = scanner.scanWord();\n\n if (scanner.charCode() === LEFTPARENTHESIS) {\n scanner.pos++;\n\n return {\n type: 'Function',\n name\n };\n }\n\n return maybeMultiplied(scanner, {\n type: 'Keyword',\n name\n });\n}\n\nfunction regroupTerms(terms, combinators) {\n function createGroup(terms, combinator) {\n return {\n type: 'Group',\n terms,\n combinator,\n disallowEmpty: false,\n explicit: false\n };\n }\n\n let combinator;\n\n combinators = Object.keys(combinators)\n .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);\n\n while (combinators.length > 0) {\n combinator = combinators.shift();\n\n let i = 0;\n let subgroupStart = 0;\n\n for (; i < terms.length; i++) {\n const term = terms[i];\n\n if (term.type === 'Combinator') {\n if (term.value === combinator) {\n if (subgroupStart === -1) {\n subgroupStart = i - 1;\n }\n terms.splice(i, 1);\n i--;\n } else {\n if (subgroupStart !== -1 && i - subgroupStart > 1) {\n terms.splice(\n subgroupStart,\n i - subgroupStart,\n createGroup(terms.slice(subgroupStart, i), combinator)\n );\n i = subgroupStart + 1;\n }\n subgroupStart = -1;\n }\n }\n }\n\n if (subgroupStart !== -1 && combinators.length) {\n terms.splice(\n subgroupStart,\n i - subgroupStart,\n createGroup(terms.slice(subgroupStart, i), combinator)\n );\n }\n }\n\n return combinator;\n}\n\nfunction readImplicitGroup(scanner, stopCharCode = -1) {\n const combinators = Object.create(null);\n const terms = [];\n let prevToken = null;\n let prevTokenPos = scanner.pos;\n let prevTokenIsFunction = false;\n\n while (scanner.charCode() !== stopCharCode) {\n let token = prevTokenIsFunction\n ? readImplicitGroup(scanner, RIGHTPARENTHESIS)\n : peek(scanner);\n\n if (!token) {\n break;\n }\n\n if (token.type === 'Spaces') {\n continue;\n }\n\n if (prevTokenIsFunction) {\n if (token.terms.length === 0) {\n prevTokenIsFunction = false;\n continue;\n }\n\n if (token.combinator === ' ') {\n while (token.terms.length > 1) {\n combinators[' '] = true; // a b\n terms.push({\n type: 'Combinator',\n value: ' '\n }, token.terms.shift());\n }\n\n token = token.terms[0];\n }\n }\n\n if (token.type === 'Combinator') {\n // check for combinator in group beginning and double combinator sequence\n if (prevToken === null || prevToken.type === 'Combinator') {\n scanner.pos = prevTokenPos;\n scanner.error('Unexpected combinator');\n }\n\n combinators[token.value] = true;\n } else if (prevToken !== null && prevToken.type !== 'Combinator') {\n combinators[' '] = true; // a b\n terms.push({\n type: 'Combinator',\n value: ' '\n });\n }\n\n terms.push(token);\n prevToken = token;\n prevTokenPos = scanner.pos;\n prevTokenIsFunction = token.type === 'Function';\n }\n\n // check for combinator in group ending\n if (prevToken !== null && prevToken.type === 'Combinator') {\n scanner.pos -= prevTokenPos;\n scanner.error('Unexpected combinator');\n }\n\n return {\n type: 'Group',\n terms,\n combinator: regroupTerms(terms, combinators) || ' ',\n disallowEmpty: false,\n explicit: false\n };\n}\n\nfunction readGroup(scanner) {\n let result;\n\n scanner.eat(LEFTSQUAREBRACKET);\n result = readImplicitGroup(scanner, RIGHTSQUAREBRACKET);\n scanner.eat(RIGHTSQUAREBRACKET);\n\n result.explicit = true;\n\n if (scanner.charCode() === EXCLAMATIONMARK) {\n scanner.pos++;\n result.disallowEmpty = true;\n }\n\n return result;\n}\n\nfunction peek(scanner) {\n let code = scanner.charCode();\n\n switch (code) {\n case RIGHTSQUAREBRACKET:\n // don't eat, stop scan a group\n break;\n\n case LEFTSQUAREBRACKET:\n return maybeMultiplied(scanner, readGroup(scanner));\n\n case LESSTHANSIGN:\n return scanner.nextCharCode() === APOSTROPHE\n ? readProperty(scanner)\n : readType(scanner);\n\n case VERTICALLINE:\n return {\n type: 'Combinator',\n value: scanner.substringToPos(\n scanner.pos + (scanner.nextCharCode() === VERTICALLINE ? 2 : 1)\n )\n };\n\n case AMPERSAND:\n scanner.pos++;\n scanner.eat(AMPERSAND);\n\n return {\n type: 'Combinator',\n value: '&&'\n };\n\n case COMMA:\n scanner.pos++;\n return {\n type: 'Comma'\n };\n\n case APOSTROPHE:\n return maybeMultiplied(scanner, {\n type: 'String',\n value: scanner.scanString()\n });\n\n case SPACE:\n case TAB:\n case N:\n case R:\n case F:\n return {\n type: 'Spaces',\n value: scanner.scanSpaces()\n };\n\n case COMMERCIALAT:\n code = scanner.nextCharCode();\n\n if (scanner.isNameCharCode(code)) {\n scanner.pos++;\n return {\n type: 'AtKeyword',\n name: scanner.scanWord()\n };\n }\n\n return maybeToken(scanner);\n\n case ASTERISK:\n case PLUSSIGN:\n case QUESTIONMARK:\n case NUMBERSIGN:\n case EXCLAMATIONMARK:\n // prohibited tokens (used as a multiplier start)\n break;\n\n case LEFTCURLYBRACKET:\n // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting\n // check next char isn't a number, because it's likely a disjoined multiplier\n code = scanner.nextCharCode();\n\n if (code < 48 || code > 57) {\n return maybeToken(scanner);\n }\n\n break;\n\n default:\n if (scanner.isNameCharCode(code)) {\n return readKeywordOrFunction(scanner);\n }\n\n return maybeToken(scanner);\n }\n}\n\nexport function parse(source) {\n const scanner = new Scanner(source);\n const result = readImplicitGroup(scanner);\n\n if (scanner.pos !== source.length) {\n scanner.error('Unexpected input');\n }\n\n // reduce redundant groups with single group term\n if (result.terms.length === 1 && result.terms[0].type === 'Group') {\n return result.terms[0];\n }\n\n return result;\n};\n","const noop = function() {};\n\nfunction ensureFunction(value) {\n return typeof value === 'function' ? value : noop;\n}\n\nexport function walk(node, options, context) {\n function walk(node) {\n enter.call(context, node);\n\n switch (node.type) {\n case 'Group':\n node.terms.forEach(walk);\n break;\n\n case 'Multiplier':\n case 'Boolean':\n walk(node.term);\n break;\n\n case 'Type':\n case 'Property':\n case 'Keyword':\n case 'AtKeyword':\n case 'Function':\n case 'String':\n case 'Token':\n case 'Comma':\n break;\n\n default:\n throw new Error('Unknown type: ' + node.type);\n }\n\n leave.call(context, node);\n }\n\n let enter = noop;\n let leave = noop;\n\n if (typeof options === 'function') {\n enter = options;\n } else if (options) {\n enter = ensureFunction(options.enter);\n leave = ensureFunction(options.leave);\n }\n\n if (enter === noop && leave === noop) {\n throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\\'t a function');\n }\n\n walk(node, context);\n};\n","import { tokenize } from '../tokenizer/index.js';\n\nconst astToTokens = {\n decorator(handlers) {\n const tokens = [];\n let curNode = null;\n\n return {\n ...handlers,\n node(node) {\n const tmp = curNode;\n curNode = node;\n handlers.node.call(this, node);\n curNode = tmp;\n },\n emit(value, type, auto) {\n tokens.push({\n type,\n value,\n node: auto ? null : curNode\n });\n },\n result() {\n return tokens;\n }\n };\n }\n};\n\nfunction stringToTokens(str) {\n const tokens = [];\n\n tokenize(str, (type, start, end) =>\n tokens.push({\n type,\n value: str.slice(start, end),\n node: null\n })\n );\n\n return tokens;\n}\n\nexport default function(value, syntax) {\n if (typeof value === 'string') {\n return stringToTokens(value);\n }\n\n return syntax.generate(value, astToTokens);\n};\n","import { parse } from '../definition-syntax/parse.js';\n\nexport const MATCH = { type: 'Match' };\nexport const MISMATCH = { type: 'Mismatch' };\nexport const DISALLOW_EMPTY = { type: 'DisallowEmpty' };\n\nconst LEFTPARENTHESIS = 40; // (\nconst RIGHTPARENTHESIS = 41; // )\n\nfunction createCondition(match, thenBranch, elseBranch) {\n // reduce node count\n if (thenBranch === MATCH && elseBranch === MISMATCH) {\n return match;\n }\n\n if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) {\n return match;\n }\n\n if (match.type === 'If' && match.else === MISMATCH && thenBranch === MATCH) {\n thenBranch = match.then;\n match = match.match;\n }\n\n return {\n type: 'If',\n match,\n then: thenBranch,\n else: elseBranch\n };\n}\n\nfunction isFunctionType(name) {\n return (\n name.length > 2 &&\n name.charCodeAt(name.length - 2) === LEFTPARENTHESIS &&\n name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS\n );\n}\n\nfunction isEnumCapatible(term) {\n return (\n term.type === 'Keyword' ||\n term.type === 'AtKeyword' ||\n term.type === 'Function' ||\n term.type === 'Type' && isFunctionType(term.name)\n );\n}\n\nfunction groupNode(terms, combinator = ' ', explicit = false) {\n return {\n type: 'Group',\n terms,\n combinator,\n disallowEmpty: false,\n explicit\n };\n}\n\nfunction replaceTypeInGraph(node, replacements, visited = new Set()) {\n if (!visited.has(node)) {\n visited.add(node);\n\n switch (node.type) {\n case 'If':\n node.match = replaceTypeInGraph(node.match, replacements, visited);\n node.then = replaceTypeInGraph(node.then, replacements, visited);\n node.else = replaceTypeInGraph(node.else, replacements, visited);\n break;\n\n case 'Type':\n return replacements[node.name] || node;\n }\n }\n\n return node;\n}\n\nfunction buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) {\n switch (combinator) {\n case ' ': {\n // Juxtaposing components means that all of them must occur, in the given order.\n //\n // a b c\n // =\n // match a\n // then match b\n // then match c\n // then MATCH\n // else MISMATCH\n // else MISMATCH\n // else MISMATCH\n let result = MATCH;\n\n for (let i = terms.length - 1; i >= 0; i--) {\n const term = terms[i];\n\n result = createCondition(\n term,\n result,\n MISMATCH\n );\n };\n\n return result;\n }\n\n case '|': {\n // A bar (|) separates two or more alternatives: exactly one of them must occur.\n //\n // a | b | c\n // =\n // match a\n // then MATCH\n // else match b\n // then MATCH\n // else match c\n // then MATCH\n // else MISMATCH\n\n let result = MISMATCH;\n let map = null;\n\n for (let i = terms.length - 1; i >= 0; i--) {\n let term = terms[i];\n\n // reduce sequence of keywords into a Enum\n if (isEnumCapatible(term)) {\n if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) {\n map = Object.create(null);\n result = createCondition(\n {\n type: 'Enum',\n map\n },\n MATCH,\n result\n );\n }\n\n if (map !== null) {\n const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase();\n if (key in map === false) {\n map[key] = term;\n continue;\n }\n }\n }\n\n map = null;\n\n // create a new conditonal node\n result = createCondition(\n term,\n MATCH,\n result\n );\n };\n\n return result;\n }\n\n case '&&': {\n // A double ampersand (&&) separates two or more components,\n // all of which must occur, in any order.\n\n // Use MatchOnce for groups with a large number of terms,\n // since &&-groups produces at least N!-node trees\n if (terms.length > 5) {\n return {\n type: 'MatchOnce',\n terms,\n all: true\n };\n }\n\n // Use a combination tree for groups with small number of terms\n //\n // a && b && c\n // =\n // match a\n // then [b && c]\n // else match b\n // then [a && c]\n // else match c\n // then [a && b]\n // else MISMATCH\n //\n // a && b\n // =\n // match a\n // then match b\n // then MATCH\n // else MISMATCH\n // else match b\n // then match a\n // then MATCH\n // else MISMATCH\n // else MISMATCH\n let result = MISMATCH;\n\n for (let i = terms.length - 1; i >= 0; i--) {\n const term = terms[i];\n let thenClause;\n\n if (terms.length > 1) {\n thenClause = buildGroupMatchGraph(\n combinator,\n terms.filter(function(newGroupTerm) {\n return newGroupTerm !== term;\n }),\n false\n );\n } else {\n thenClause = MATCH;\n }\n\n result = createCondition(\n term,\n thenClause,\n result\n );\n };\n\n return result;\n }\n\n case '||': {\n // A double bar (||) separates two or more options:\n // one or more of them must occur, in any order.\n\n // Use MatchOnce for groups with a large number of terms,\n // since ||-groups produces at least N!-node trees\n if (terms.length > 5) {\n return {\n type: 'MatchOnce',\n terms,\n all: false\n };\n }\n\n // Use a combination tree for groups with small number of terms\n //\n // a || b || c\n // =\n // match a\n // then [b || c]\n // else match b\n // then [a || c]\n // else match c\n // then [a || b]\n // else MISMATCH\n //\n // a || b\n // =\n // match a\n // then match b\n // then MATCH\n // else MATCH\n // else match b\n // then match a\n // then MATCH\n // else MATCH\n // else MISMATCH\n let result = atLeastOneTermMatched ? MATCH : MISMATCH;\n\n for (let i = terms.length - 1; i >= 0; i--) {\n const term = terms[i];\n let thenClause;\n\n if (terms.length > 1) {\n thenClause = buildGroupMatchGraph(\n combinator,\n terms.filter(function(newGroupTerm) {\n return newGroupTerm !== term;\n }),\n true\n );\n } else {\n thenClause = MATCH;\n }\n\n result = createCondition(\n term,\n thenClause,\n result\n );\n };\n\n return result;\n }\n }\n}\n\nfunction buildMultiplierMatchGraph(node) {\n let result = MATCH;\n let matchTerm = buildMatchGraphInternal(node.term);\n\n if (node.max === 0) {\n // disable repeating of empty match to prevent infinite loop\n matchTerm = createCondition(\n matchTerm,\n DISALLOW_EMPTY,\n MISMATCH\n );\n\n // an occurrence count is not limited, make a cycle;\n // to collect more terms on each following matching mismatch\n result = createCondition(\n matchTerm,\n null, // will be a loop\n MISMATCH\n );\n\n result.then = createCondition(\n MATCH,\n MATCH,\n result // make a loop\n );\n\n if (node.comma) {\n result.then.else = createCondition(\n { type: 'Comma', syntax: node },\n result,\n MISMATCH\n );\n }\n } else {\n // create a match node chain for [min .. max] interval with optional matches\n for (let i = node.min || 1; i <= node.max; i++) {\n if (node.comma && result !== MATCH) {\n result = createCondition(\n { type: 'Comma', syntax: node },\n result,\n MISMATCH\n );\n }\n\n result = createCondition(\n matchTerm,\n createCondition(\n MATCH,\n MATCH,\n result\n ),\n MISMATCH\n );\n }\n }\n\n if (node.min === 0) {\n // allow zero match\n result = createCondition(\n MATCH,\n MATCH,\n result\n );\n } else {\n // create a match node chain to collect [0 ... min - 1] required matches\n for (let i = 0; i < node.min - 1; i++) {\n if (node.comma && result !== MATCH) {\n result = createCondition(\n { type: 'Comma', syntax: node },\n result,\n MISMATCH\n );\n }\n\n result = createCondition(\n matchTerm,\n result,\n MISMATCH\n );\n }\n }\n\n return result;\n}\n\nfunction buildMatchGraphInternal(node) {\n if (typeof node === 'function') {\n return {\n type: 'Generic',\n fn: node\n };\n }\n\n switch (node.type) {\n case 'Group': {\n let result = buildGroupMatchGraph(\n node.combinator,\n node.terms.map(buildMatchGraphInternal),\n false\n );\n\n if (node.disallowEmpty) {\n result = createCondition(\n result,\n DISALLOW_EMPTY,\n MISMATCH\n );\n }\n\n return result;\n }\n\n case 'Multiplier':\n return buildMultiplierMatchGraph(node);\n\n // https://drafts.csswg.org/css-values-5/#boolean\n case 'Boolean': {\n const term = buildMatchGraphInternal(node.term);\n // <boolean-expr[ <test> ]> = not <boolean-expr-group> | <boolean-expr-group> [ [ and <boolean-expr-group> ]* | [ or <boolean-expr-group> ]* ]\n const matchNode = buildMatchGraphInternal(groupNode([\n groupNode([\n { type: 'Keyword', name: 'not' },\n { type: 'Type', name: '!boolean-group' }\n ]),\n groupNode([\n { type: 'Type', name: '!boolean-group' },\n groupNode([\n { type: 'Multiplier', comma: false, min: 0, max: 0, term: groupNode([\n { type: 'Keyword', name: 'and' },\n { type: 'Type', name: '!boolean-group' }\n ]) },\n { type: 'Multiplier', comma: false, min: 0, max: 0, term: groupNode([\n { type: 'Keyword', name: 'or' },\n { type: 'Type', name: '!boolean-group' }\n ]) }\n ], '|')\n ])\n ], '|'));\n // <boolean-expr-group> = <test> | ( <boolean-expr[ <test> ]> ) | <general-enclosed>\n const booleanGroup = buildMatchGraphInternal(\n groupNode([\n { type: 'Type', name: '!term' },\n groupNode([\n { type: 'Token', value: '(' },\n { type: 'Type', name: '!self' },\n { type: 'Token', value: ')' }\n ]),\n { type: 'Type', name: 'general-enclosed' }\n ], '|')\n );\n\n replaceTypeInGraph(booleanGroup, { '!term': term, '!self': matchNode });\n replaceTypeInGraph(matchNode, { '!boolean-group': booleanGroup });\n\n return matchNode;\n }\n\n case 'Type':\n case 'Property':\n return {\n type: node.type,\n name: node.name,\n syntax: node\n };\n\n case 'Keyword':\n return {\n type: node.type,\n name: node.name.toLowerCase(),\n syntax: node\n };\n\n case 'AtKeyword':\n return {\n type: node.type,\n name: '@' + node.name.toLowerCase(),\n syntax: node\n };\n\n case 'Function':\n return {\n type: node.type,\n name: node.name.toLowerCase() + '(',\n syntax: node\n };\n\n case 'String':\n // convert a one char length String to a Token\n if (node.value.length === 3) {\n return {\n type: 'Token',\n value: node.value.charAt(1),\n syntax: node\n };\n }\n\n // otherwise use it as is\n return {\n type: node.type,\n value: node.value.substr(1, node.value.length - 2).replace(/\\\\'/g, '\\''),\n syntax: node\n };\n\n case 'Token':\n return {\n type: node.type,\n value: node.value,\n syntax: node\n };\n\n case 'Comma':\n return {\n type: node.type,\n syntax: node\n };\n\n default:\n throw new Error('Unknown node type:', node.type);\n }\n}\n\nexport function buildMatchGraph(syntaxTree, ref) {\n if (typeof syntaxTree === 'string') {\n syntaxTree = parse(syntaxTree);\n }\n\n return {\n type: 'MatchGraph',\n match: buildMatchGraphInternal(syntaxTree),\n syntax: ref || null,\n source: syntaxTree\n };\n}\n","import { MATCH, MISMATCH, DISALLOW_EMPTY } from './match-graph.js';\nimport * as TYPE from '../tokenizer/types.js';\n\nconst { hasOwnProperty } = Object.prototype;\nconst STUB = 0;\nconst TOKEN = 1;\nconst OPEN_SYNTAX = 2;\nconst CLOSE_SYNTAX = 3;\n\nconst EXIT_REASON_MATCH = 'Match';\nconst EXIT_REASON_MISMATCH = 'Mismatch';\nconst EXIT_REASON_ITERATION_LIMIT = 'Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)';\n\nconst ITERATION_LIMIT = 15000;\nexport let totalIterationCount = 0;\n\nfunction reverseList(list) {\n let prev = null;\n let next = null;\n let item = list;\n\n while (item !== null) {\n next = item.prev;\n item.prev = prev;\n prev = item;\n item = next;\n }\n\n return prev;\n}\n\nfunction areStringsEqualCaseInsensitive(testStr, referenceStr) {\n if (testStr.length !== referenceStr.length) {\n return false;\n }\n\n for (let i = 0; i < testStr.length; i++) {\n const referenceCode = referenceStr.charCodeAt(i);\n let testCode = testStr.charCodeAt(i);\n\n // testCode.toLowerCase() for U+0041 LATIN CAPITAL LETTER A (A) .. U+005A LATIN CAPITAL LETTER Z (Z).\n if (testCode >= 0x0041 && testCode <= 0x005A) {\n testCode = testCode | 32;\n }\n\n if (testCode !== referenceCode) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isContextEdgeDelim(token) {\n if (token.type !== TYPE.Delim) {\n return false;\n }\n\n // Fix matching for unicode-range: U+30??, U+FF00-FF9F\n // Probably we need to check out previous match instead\n return token.value !== '?';\n}\n\nfunction isCommaContextStart(token) {\n if (token === null) {\n return true;\n }\n\n return (\n token.type === TYPE.Comma ||\n token.type === TYPE.Function ||\n token.type === TYPE.LeftParenthesis ||\n token.type === TYPE.LeftSquareBracket ||\n token.type === TYPE.LeftCurlyBracket ||\n isContextEdgeDelim(token)\n );\n}\n\nfunction isCommaContextEnd(token) {\n if (token === null) {\n return true;\n }\n\n return (\n token.type === TYPE.RightParenthesis ||\n token.type === TYPE.RightSquareBracket ||\n token.type === TYPE.RightCurlyBracket ||\n (token.type === TYPE.Delim && token.value === '/')\n );\n}\n\nfunction internalMatch(tokens, state, syntaxes) {\n function moveToNextToken() {\n do {\n tokenIndex++;\n token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;\n } while (token !== null && (token.type === TYPE.WhiteSpace || token.type === TYPE.Comment));\n }\n\n function getNextToken(offset) {\n const nextIndex = tokenIndex + offset;\n\n return nextIndex < tokens.length ? tokens[nextIndex] : null;\n }\n\n function stateSnapshotFromSyntax(nextState, prev) {\n return {\n nextState,\n matchStack,\n syntaxStack,\n thenStack,\n tokenIndex,\n prev\n };\n }\n\n function pushThenStack(nextState) {\n thenStack = {\n nextState,\n matchStack,\n syntaxStack,\n prev: thenStack\n };\n }\n\n function pushElseStack(nextState) {\n elseStack = stateSnapshotFromSyntax(nextState, elseStack);\n }\n\n function addTokenToMatch() {\n matchStack = {\n type: TOKEN,\n syntax: state.syntax,\n token,\n prev: matchStack\n };\n\n moveToNextToken();\n syntaxStash = null;\n\n if (tokenIndex > longestMatch) {\n longestMatch = tokenIndex;\n }\n }\n\n function openSyntax() {\n syntaxStack = {\n syntax: state.syntax,\n opts: state.syntax.opts || (syntaxStack !== null && syntaxStack.opts) || null,\n prev: syntaxStack\n };\n\n matchStack = {\n type: OPEN_SYNTAX,\n syntax: state.syntax,\n token: matchStack.token,\n prev: matchStack\n };\n }\n\n function closeSyntax() {\n if (matchStack.type === OPEN_SYNTAX) {\n matchStack = matchStack.prev;\n } else {\n matchStack = {\n type: CLOSE_SYNTAX,\n syntax: syntaxStack.syntax,\n token: matchStack.token,\n prev: matchStack\n };\n }\n\n syntaxStack = syntaxStack.prev;\n }\n\n let syntaxStack = null;\n let thenStack = null;\n let elseStack = null;\n\n // null – stashing allowed, nothing stashed\n // false – stashing disabled, nothing stashed\n // anithing else – fail stashable syntaxes, some syntax stashed\n let syntaxStash = null;\n\n let iterationCount = 0; // count iterations and prevent infinite loop\n let exitReason = null;\n\n let token = null;\n let tokenIndex = -1;\n let longestMatch = 0;\n let matchStack = {\n type: STUB,\n syntax: null,\n token: null,\n prev: null\n };\n\n moveToNextToken();\n\n while (exitReason === null && ++iterationCount < ITERATION_LIMIT) {\n // function mapList(list, fn) {\n // const result = [];\n // while (list) {\n // result.unshift(fn(list));\n // list = list.prev;\n // }\n // return result;\n // }\n // console.log('--\\n',\n // '#' + iterationCount,\n // require('util').inspect({\n // match: mapList(matchStack, x => x.type === TOKEN ? x.token && x.token.value : x.syntax ? ({ [OPEN_SYNTAX]: '<', [CLOSE_SYNTAX]: '</' }[x.type] || x.type) + '!' + x.syntax.name : null),\n // token: token && token.value,\n // tokenIndex,\n // syntax: syntax.type + (syntax.id ? ' #' + syntax.id : '')\n // }, { depth: null })\n // );\n switch (state.type) {\n case 'Match':\n if (thenStack === null) {\n // turn to MISMATCH when some tokens left unmatched\n if (token !== null) {\n // doesn't mismatch if just one token left and it's an IE hack\n if (tokenIndex !== tokens.length - 1 || (token.value !== '\\\\0' && token.value !== '\\\\9')) {\n state = MISMATCH;\n break;\n }\n }\n\n // break the main loop, return a result - MATCH\n exitReason = EXIT_REASON_MATCH;\n break;\n }\n\n // go to next syntax (`then` branch)\n state = thenStack.nextState;\n\n // check match is not empty\n if (state === DISALLOW_EMPTY) {\n if (thenStack.matchStack === matchStack) {\n state = MISMATCH;\n break;\n } else {\n state = MATCH;\n }\n }\n\n // close syntax if needed\n while (thenStack.syntaxStack !== syntaxStack) {\n closeSyntax();\n }\n\n // pop stack\n thenStack = thenStack.prev;\n break;\n\n case 'Mismatch':\n // when some syntax is stashed\n if (syntaxStash !== null && syntaxStash !== false) {\n // there is no else branches or a branch reduce match stack\n if (elseStack === null || tokenIndex > elseStack.tokenIndex) {\n // restore state from the stash\n elseStack = syntaxStash;\n syntaxStash = false; // disable stashing\n }\n } else if (elseStack === null) {\n // no else branches -> break the main loop\n // return a result - MISMATCH\n exitReason = EXIT_REASON_MISMATCH;\n break;\n }\n\n // go to next syntax (`else` branch)\n state = elseStack.nextState;\n\n // restore all the rest stack states\n thenStack = elseStack.thenStack;\n syntaxStack = elseStack.syntaxStack;\n matchStack = elseStack.matchStack;\n tokenIndex = elseStack.tokenIndex;\n token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;\n\n // pop stack\n elseStack = elseStack.prev;\n break;\n\n case 'MatchGraph':\n state = state.match;\n break;\n\n case 'If':\n // IMPORTANT: else stack push must go first,\n // since it stores the state of thenStack before changes\n if (state.else !== MISMATCH) {\n pushElseStack(state.else);\n }\n\n if (state.then !== MATCH) {\n pushThenStack(state.then);\n }\n\n state = state.match;\n break;\n\n case 'MatchOnce':\n state = {\n type: 'MatchOnceBuffer',\n syntax: state,\n index: 0,\n mask: 0\n };\n break;\n\n case 'MatchOnceBuffer': {\n const terms = state.syntax.terms;\n\n if (state.index === terms.length) {\n // no matches at all or it's required all terms to be matched\n if (state.mask === 0 || state.syntax.all) {\n state = MISMATCH;\n break;\n }\n\n // a partial match is ok\n state = MATCH;\n break;\n }\n\n // all terms are matched\n if (state.mask === (1 << terms.length) - 1) {\n state = MATCH;\n break;\n }\n\n for (; state.index < terms.length; state.index++) {\n const matchFlag = 1 << state.index;\n\n if ((state.mask & matchFlag) === 0) {\n // IMPORTANT: else stack push must go first,\n // since it stores the state of thenStack before changes\n pushElseStack(state);\n pushThenStack({\n type: 'AddMatchOnce',\n syntax: state.syntax,\n mask: state.mask | matchFlag\n });\n\n // match\n state = terms[state.index++];\n break;\n }\n }\n break;\n }\n\n case 'AddMatchOnce':\n state = {\n type: 'MatchOnceBuffer',\n syntax: state.syntax,\n index: 0,\n mask: state.mask\n };\n break;\n\n case 'Enum':\n if (token !== null) {\n let name = token.value.toLowerCase();\n\n // drop \\0 and \\9 hack from keyword name\n if (name.indexOf('\\\\') !== -1) {\n name = name.replace(/\\\\[09].*$/, '');\n }\n\n if (hasOwnProperty.call(state.map, name)) {\n state = state.map[name];\n break;\n }\n }\n\n state = MISMATCH;\n break;\n\n case 'Generic': {\n const opts = syntaxStack !== null ? syntaxStack.opts : null;\n const lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts));\n\n if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) {\n while (tokenIndex < lastTokenIndex) {\n addTokenToMatch();\n }\n\n state = MATCH;\n } else {\n state = MISMATCH;\n }\n\n break;\n }\n\n case 'Type':\n case 'Property': {\n const syntaxDict = state.type === 'Type' ? 'types' : 'properties';\n const dictSyntax = hasOwnProperty.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null;\n\n if (!dictSyntax || !dictSyntax.match) {\n throw new Error(\n 'Bad syntax reference: ' +\n (state.type === 'Type'\n ? '<' + state.name + '>'\n : '<\\'' + state.name + '\\'>')\n );\n }\n\n // stash a syntax for types with low priority\n if (syntaxStash !== false && token !== null && state.type === 'Type') {\n const lowPriorityMatching =\n // https://drafts.csswg.org/css-values-4/#custom-idents\n // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production\n // can only claim the keyword if no other unfulfilled production can claim it.\n (state.name === 'custom-ident' && token.type === TYPE.Ident) ||\n\n // https://drafts.csswg.org/css-values-4/#lengths\n // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height),\n // it must parse as a <number>\n (state.name === 'length' && token.value === '0');\n\n if (lowPriorityMatching) {\n if (syntaxStash === null) {\n syntaxStash = stateSnapshotFromSyntax(state, elseStack);\n }\n\n state = MISMATCH;\n break;\n }\n }\n\n openSyntax();\n state = dictSyntax.matchRef || dictSyntax.match;\n break;\n }\n\n case 'Keyword': {\n const name = state.name;\n\n if (token !== null) {\n let keywordName = token.value;\n\n // drop \\0 and \\9 hack from keyword name\n if (keywordName.indexOf('\\\\') !== -1) {\n keywordName = keywordName.replace(/\\\\[09].*$/, '');\n }\n\n if (areStringsEqualCaseInsensitive(keywordName, name)) {\n addTokenToMatch();\n state = MATCH;\n break;\n }\n }\n\n state = MISMATCH;\n break;\n }\n\n case 'AtKeyword':\n case 'Function':\n if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) {\n addTokenToMatch();\n state = MATCH;\n break;\n }\n\n state = MISMATCH;\n break;\n\n case 'Token':\n if (token !== null && token.value === state.value) {\n addTokenToMatch();\n state = MATCH;\n break;\n }\n\n state = MISMATCH;\n break;\n\n case 'Comma':\n if (token !== null && token.type === TYPE.Comma) {\n if (isCommaContextStart(matchStack.token)) {\n state = MISMATCH;\n } else {\n addTokenToMatch();\n state = isCommaContextEnd(token) ? MISMATCH : MATCH;\n }\n } else {\n state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? MATCH : MISMATCH;\n }\n\n break;\n\n case 'String':\n let string = '';\n let lastTokenIndex = tokenIndex;\n\n for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) {\n string += tokens[lastTokenIndex].value;\n }\n\n if (areStringsEqualCaseInsensitive(string, state.value)) {\n while (tokenIndex < lastTokenIndex) {\n addTokenToMatch();\n }\n\n state = MATCH;\n } else {\n state = MISMATCH;\n }\n\n break;\n\n default:\n throw new Error('Unknown node type: ' + state.type);\n }\n }\n\n totalIterationCount += iterationCount;\n\n switch (exitReason) {\n case null:\n console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations');\n exitReason = EXIT_REASON_ITERATION_LIMIT;\n matchStack = null;\n break;\n\n case EXIT_REASON_MATCH:\n while (syntaxStack !== null) {\n closeSyntax();\n }\n break;\n\n default:\n matchStack = null;\n }\n\n return {\n tokens,\n reason: exitReason,\n iterations: iterationCount,\n match: matchStack,\n longestMatch\n };\n}\n\nexport function matchAsList(tokens, matchGraph, syntaxes) {\n const matchResult = internalMatch(tokens, matchGraph, syntaxes || {});\n\n if (matchResult.match !== null) {\n let item = reverseList(matchResult.match).prev;\n\n matchResult.match = [];\n\n while (item !== null) {\n switch (item.type) {\n case OPEN_SYNTAX:\n case CLOSE_SYNTAX:\n matchResult.match.push({\n type: item.type,\n syntax: item.syntax\n });\n break;\n\n default:\n matchResult.match.push({\n token: item.token.value,\n node: item.token.node\n });\n break;\n }\n\n item = item.prev;\n }\n }\n\n return matchResult;\n}\n\nexport function matchAsTree(tokens, matchGraph, syntaxes) {\n const matchResult = internalMatch(tokens, matchGraph, syntaxes || {});\n\n if (matchResult.match === null) {\n return matchResult;\n }\n\n let item = matchResult.match;\n let host = matchResult.match = {\n syntax: matchGraph.syntax || null,\n match: []\n };\n const hostStack = [host];\n\n // revert a list and start with 2nd item since 1st is a stub item\n item = reverseList(item).prev;\n\n // build a tree\n while (item !== null) {\n switch (item.type) {\n case OPEN_SYNTAX:\n host.match.push(host = {\n syntax: item.syntax,\n match: []\n });\n hostStack.push(host);\n break;\n\n case CLOSE_SYNTAX:\n hostStack.pop();\n host = hostStack[hostStack.length - 1];\n break;\n\n default:\n host.match.push({\n syntax: item.syntax || null,\n token: item.token.value,\n node: item.token.node\n });\n }\n\n item = item.prev;\n }\n\n return matchResult;\n}\n","export function getTrace(node) {\n function shouldPutToTrace(syntax) {\n if (syntax === null) {\n return false;\n }\n\n return (\n syntax.type === 'Type' ||\n syntax.type === 'Property' ||\n syntax.type === 'Keyword'\n );\n }\n\n function hasMatch(matchNode) {\n if (Array.isArray(matchNode.match)) {\n // use for-loop for better perfomance\n for (let i = 0; i < matchNode.match.length; i++) {\n if (hasMatch(matchNode.match[i])) {\n if (shouldPutToTrace(matchNode.syntax)) {\n result.unshift(matchNode.syntax);\n }\n\n return true;\n }\n }\n } else if (matchNode.node === node) {\n result = shouldPutToTrace(matchNode.syntax)\n ? [matchNode.syntax]\n : [];\n\n return true;\n }\n\n return false;\n }\n\n let result = null;\n\n if (this.matched !== null) {\n hasMatch(this.matched);\n }\n\n return result;\n}\n\nexport function isType(node, type) {\n return testNode(this, node, match => match.type === 'Type' && match.name === type);\n}\n\nexport function isProperty(node, property) {\n return testNode(this, node, match => match.type === 'Property' && match.name === property);\n}\n\nexport function isKeyword(node) {\n return testNode(this, node, match => match.type === 'Keyword');\n}\n\nfunction testNode(match, node, fn) {\n const trace = getTrace.call(match, node);\n\n if (trace === null) {\n return false;\n }\n\n return trace.some(fn);\n}\n","import { List } from '../utils/List.js';\n\nfunction getFirstMatchNode(matchNode) {\n if ('node' in matchNode) {\n return matchNode.node;\n }\n\n return getFirstMatchNode(matchNode.match[0]);\n}\n\nfunction getLastMatchNode(matchNode) {\n if ('node' in matchNode) {\n return matchNode.node;\n }\n\n return getLastMatchNode(matchNode.match[matchNode.match.length - 1]);\n}\n\nexport function matchFragments(lexer, ast, match, type, name) {\n function findFragments(matchNode) {\n if (matchNode.syntax !== null &&\n matchNode.syntax.type === type &&\n matchNode.syntax.name === name) {\n const start = getFirstMatchNode(matchNode);\n const end = getLastMatchNode(matchNode);\n\n lexer.syntax.walk(ast, function(node, item, list) {\n if (node === start) {\n const nodes = new List();\n\n do {\n nodes.appendData(item.data);\n\n if (item.data === end) {\n break;\n }\n\n item = item.next;\n } while (item !== null);\n\n fragments.push({\n parent: list,\n nodes\n });\n }\n });\n }\n\n if (Array.isArray(matchNode.match)) {\n matchNode.match.forEach(findFragments);\n }\n }\n\n const fragments = [];\n\n if (match.matched !== null) {\n findFragments(match.matched);\n }\n\n return fragments;\n}\n","import { List } from '../utils/List.js';\n\nconst { hasOwnProperty } = Object.prototype;\n\nfunction isValidNumber(value) {\n // Number.isInteger(value) && value >= 0\n return (\n typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value &&\n value >= 0\n );\n}\n\nfunction isValidLocation(loc) {\n return (\n Boolean(loc) &&\n isValidNumber(loc.offset) &&\n isValidNumber(loc.line) &&\n isValidNumber(loc.column)\n );\n}\n\nfunction createNodeStructureChecker(type, fields) {\n return function checkNode(node, warn) {\n if (!node || node.constructor !== Object) {\n return warn(node, 'Type of node should be an Object');\n }\n\n for (let key in node) {\n let valid = true;\n\n if (hasOwnProperty.call(node, key) === false) {\n continue;\n }\n\n if (key === 'type') {\n if (node.type !== type) {\n warn(node, 'Wrong node type `' + node.type + '`, expected `' + type + '`');\n }\n } else if (key === 'loc') {\n if (node.loc === null) {\n continue;\n } else if (node.loc && node.loc.constructor === Object) {\n if (typeof node.loc.source !== 'string') {\n key += '.source';\n } else if (!isValidLocation(node.loc.start)) {\n key += '.start';\n } else if (!isValidLocation(node.loc.end)) {\n key += '.end';\n } else {\n continue;\n }\n }\n\n valid = false;\n } else if (fields.hasOwnProperty(key)) {\n valid = false;\n\n for (let i = 0; !valid && i < fields[key].length; i++) {\n const fieldType = fields[key][i];\n\n switch (fieldType) {\n case String:\n valid = typeof node[key] === 'string';\n break;\n\n case Boolean:\n valid = typeof node[key] === 'boolean';\n break;\n\n case null:\n valid = node[key] === null;\n break;\n\n default:\n if (typeof fieldType === 'string') {\n valid = node[key] && node[key].type === fieldType;\n } else if (Array.isArray(fieldType)) {\n valid = node[key] instanceof List;\n }\n }\n }\n } else {\n warn(node, 'Unknown field `' + key + '` for ' + type + ' node type');\n }\n\n if (!valid) {\n warn(node, 'Bad value for `' + type + '.' + key + '`');\n }\n }\n\n for (const key in fields) {\n if (hasOwnProperty.call(fields, key) &&\n hasOwnProperty.call(node, key) === false) {\n warn(node, 'Field `' + type + '.' + key + '` is missed');\n }\n }\n };\n}\n\nfunction genTypesList(fieldTypes, path) {\n const docsTypes = [];\n\n for (let i = 0; i < fieldTypes.length; i++) {\n const fieldType = fieldTypes[i];\n if (fieldType === String || fieldType === Boolean) {\n docsTypes.push(fieldType.name.toLowerCase());\n } else if (fieldType === null) {\n docsTypes.push('null');\n } else if (typeof fieldType === 'string') {\n docsTypes.push(fieldType);\n } else if (Array.isArray(fieldType)) {\n docsTypes.push('List<' + (genTypesList(fieldType, path) || 'any') + '>'); // TODO: use type enum\n } else {\n throw new Error('Wrong value `' + fieldType + '` in `' + path + '` structure definition');\n }\n }\n\n return docsTypes.join(' | ');\n}\n\nfunction processStructure(name, nodeType) {\n const structure = nodeType.structure;\n const fields = {\n type: String,\n loc: true\n };\n const docs = {\n type: '\"' + name + '\"'\n };\n\n for (const key in structure) {\n if (hasOwnProperty.call(structure, key) === false) {\n continue;\n }\n\n const fieldTypes = fields[key] = Array.isArray(structure[key])\n ? structure[key].slice()\n : [structure[key]];\n\n docs[key] = genTypesList(fieldTypes, name + '.' + key);\n }\n\n return {\n docs,\n check: createNodeStructureChecker(name, fields)\n };\n}\n\nexport function getStructureFromConfig(config) {\n const structure = {};\n\n if (config.node) {\n for (const name in config.node) {\n if (hasOwnProperty.call(config.node, name)) {\n const nodeType = config.node[name];\n\n if (nodeType.structure) {\n structure[name] = processStructure(name, nodeType);\n } else {\n throw new Error('Missed `structure` field in `' + name + '` node type definition');\n }\n }\n }\n }\n\n return structure;\n};\n","import { SyntaxReferenceError, SyntaxMatchError } from './error.js';\nimport * as names from '../utils/names.js';\nimport { cssWideKeywords } from './generic-const.js';\nimport { createGenericTypes } from './generic.js';\nimport * as units from './units.js';\nimport { parse, generate, walk } from '../definition-syntax/index.js';\nimport prepareTokens from './prepare-tokens.js';\nimport { buildMatchGraph } from './match-graph.js';\nimport { matchAsTree } from './match.js';\nimport * as trace from './trace.js';\nimport { matchFragments } from './search.js';\nimport { getStructureFromConfig } from './structure.js';\n\nfunction dumpMapSyntax(map, compact, syntaxAsAst) {\n const result = {};\n\n for (const name in map) {\n if (map[name].syntax) {\n result[name] = syntaxAsAst\n ? map[name].syntax\n : generate(map[name].syntax, { compact });\n }\n }\n\n return result;\n}\n\nfunction dumpAtruleMapSyntax(map, compact, syntaxAsAst) {\n const result = {};\n\n for (const [name, atrule] of Object.entries(map)) {\n result[name] = {\n prelude: atrule.prelude && (\n syntaxAsAst\n ? atrule.prelude.syntax\n : generate(atrule.prelude.syntax, { compact })\n ),\n descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)\n };\n }\n\n return result;\n}\n\nfunction valueHasVar(tokens) {\n for (let i = 0; i < tokens.length; i++) {\n if (tokens[i].value.toLowerCase() === 'var(') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction syntaxHasTopLevelCommaMultiplier(syntax) {\n const singleTerm = syntax.terms[0];\n\n return (\n syntax.explicit === false &&\n syntax.terms.length === 1 &&\n singleTerm.type === 'Multiplier' &&\n singleTerm.comma === true\n );\n}\n\nfunction buildMatchResult(matched, error, iterations) {\n return {\n matched,\n iterations,\n error,\n ...trace\n };\n}\n\nfunction matchSyntax(lexer, syntax, value, useCssWideKeywords) {\n const tokens = prepareTokens(value, lexer.syntax);\n let result;\n\n if (valueHasVar(tokens)) {\n return buildMatchResult(null, new Error('Matching for a tree with var() is not supported'));\n }\n\n if (useCssWideKeywords) {\n result = matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer);\n }\n\n if (!useCssWideKeywords || !result.match) {\n result = matchAsTree(tokens, syntax.match, lexer);\n if (!result.match) {\n return buildMatchResult(\n null,\n new SyntaxMatchError(result.reason, syntax.syntax, value, result),\n result.iterations\n );\n }\n }\n\n return buildMatchResult(result.match, null, result.iterations);\n}\n\nexport class Lexer {\n constructor(config, syntax, structure) {\n this.cssWideKeywords = cssWideKeywords;\n this.syntax = syntax;\n this.generic = false;\n this.units = { ...units };\n this.atrules = Object.create(null);\n this.properties = Object.create(null);\n this.types = Object.create(null);\n this.structure = structure || getStructureFromConfig(config);\n\n if (config) {\n if (config.cssWideKeywords) {\n this.cssWideKeywords = config.cssWideKeywords;\n }\n\n if (config.units) {\n for (const group of Object.keys(units)) {\n if (Array.isArray(config.units[group])) {\n this.units[group] = config.units[group];\n }\n }\n }\n\n if (config.types) {\n for (const [name, type] of Object.entries(config.types)) {\n this.addType_(name, type);\n }\n }\n\n if (config.generic) {\n this.generic = true;\n for (const [name, value] of Object.entries(createGenericTypes(this.units))) {\n this.addType_(name, value);\n }\n }\n\n if (config.atrules) {\n for (const [name, atrule] of Object.entries(config.atrules)) {\n this.addAtrule_(name, atrule);\n }\n }\n\n if (config.properties) {\n for (const [name, property] of Object.entries(config.properties)) {\n this.addProperty_(name, property);\n }\n }\n }\n\n this.cssWideKeywordsSyntax = buildMatchGraph(this.cssWideKeywords.join(' | '));\n }\n\n checkStructure(ast) {\n function collectWarning(node, message) {\n warns.push({ node, message });\n }\n\n const structure = this.structure;\n const warns = [];\n\n this.syntax.walk(ast, function(node) {\n if (structure.hasOwnProperty(node.type)) {\n structure[node.type].check(node, collectWarning);\n } else {\n collectWarning(node, 'Unknown node type `' + node.type + '`');\n }\n });\n\n return warns.length ? warns : false;\n }\n\n createDescriptor(syntax, type, name, parent = null) {\n const ref = {\n type,\n name\n };\n const descriptor = {\n type,\n name,\n parent,\n serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'),\n syntax: null,\n match: null,\n matchRef: null // used for properties when a syntax referenced as <'property'> in other syntax definitions\n };\n\n if (typeof syntax === 'function') {\n descriptor.match = buildMatchGraph(syntax, ref);\n } else {\n if (typeof syntax === 'string') {\n // lazy parsing on first access\n Object.defineProperty(descriptor, 'syntax', {\n get() {\n Object.defineProperty(descriptor, 'syntax', {\n value: parse(syntax)\n });\n\n return descriptor.syntax;\n }\n });\n } else {\n descriptor.syntax = syntax;\n }\n\n // lazy graph build on first access\n Object.defineProperty(descriptor, 'match', {\n get() {\n Object.defineProperty(descriptor, 'match', {\n value: buildMatchGraph(descriptor.syntax, ref)\n });\n\n return descriptor.match;\n }\n });\n\n if (type === 'Property') {\n Object.defineProperty(descriptor, 'matchRef', {\n get() {\n const syntax = descriptor.syntax;\n const value = syntaxHasTopLevelCommaMultiplier(syntax)\n ? buildMatchGraph({\n ...syntax,\n terms: [syntax.terms[0].term]\n }, ref)\n : null;\n\n Object.defineProperty(descriptor, 'matchRef', {\n value\n });\n\n return value;\n }\n });\n }\n }\n\n return descriptor;\n }\n addAtrule_(name, syntax) {\n if (!syntax) {\n return;\n }\n\n this.atrules[name] = {\n type: 'Atrule',\n name: name,\n prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null,\n descriptors: syntax.descriptors\n ? Object.keys(syntax.descriptors).reduce(\n (map, descName) => {\n map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name);\n return map;\n },\n Object.create(null)\n )\n : null\n };\n }\n addProperty_(name, syntax) {\n if (!syntax) {\n return;\n }\n\n this.properties[name] = this.createDescriptor(syntax, 'Property', name);\n }\n addType_(name, syntax) {\n if (!syntax) {\n return;\n }\n\n this.types[name] = this.createDescriptor(syntax, 'Type', name);\n }\n\n checkAtruleName(atruleName) {\n if (!this.getAtrule(atruleName)) {\n return new SyntaxReferenceError('Unknown at-rule', '@' + atruleName);\n }\n }\n checkAtrulePrelude(atruleName, prelude) {\n const error = this.checkAtruleName(atruleName);\n\n if (error) {\n return error;\n }\n\n const atrule = this.getAtrule(atruleName);\n\n if (!atrule.prelude && prelude) {\n return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude');\n }\n\n if (atrule.prelude && !prelude) {\n if (!matchSyntax(this, atrule.prelude, '', false).matched) {\n return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude');\n }\n }\n }\n checkAtruleDescriptorName(atruleName, descriptorName) {\n const error = this.checkAtruleName(atruleName);\n\n if (error) {\n return error;\n }\n\n const atrule = this.getAtrule(atruleName);\n const descriptor = names.keyword(descriptorName);\n\n if (!atrule.descriptors) {\n return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors');\n }\n\n if (!atrule.descriptors[descriptor.name] &&\n !atrule.descriptors[descriptor.basename]) {\n return new SyntaxReferenceError('Unknown at-rule descriptor', descriptorName);\n }\n }\n checkPropertyName(propertyName) {\n if (!this.getProperty(propertyName)) {\n return new SyntaxReferenceError('Unknown property', propertyName);\n }\n }\n\n matchAtrulePrelude(atruleName, prelude) {\n const error = this.checkAtrulePrelude(atruleName, prelude);\n\n if (error) {\n return buildMatchResult(null, error);\n }\n\n const atrule = this.getAtrule(atruleName);\n\n if (!atrule.prelude) {\n return buildMatchResult(null, null);\n }\n\n return matchSyntax(this, atrule.prelude, prelude || '', false);\n }\n matchAtruleDescriptor(atruleName, descriptorName, value) {\n const error = this.checkAtruleDescriptorName(atruleName, descriptorName);\n\n if (error) {\n return buildMatchResult(null, error);\n }\n\n const atrule = this.getAtrule(atruleName);\n const descriptor = names.keyword(descriptorName);\n\n return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);\n }\n matchDeclaration(node) {\n if (node.type !== 'Declaration') {\n return buildMatchResult(null, new Error('Not a Declaration node'));\n }\n\n return this.matchProperty(node.property, node.value);\n }\n matchProperty(propertyName, value) {\n // don't match syntax for a custom property at the moment\n if (names.property(propertyName).custom) {\n return buildMatchResult(null, new Error('Lexer matching doesn\\'t applicable for custom properties'));\n }\n\n const error = this.checkPropertyName(propertyName);\n\n if (error) {\n return buildMatchResult(null, error);\n }\n\n return matchSyntax(this, this.getProperty(propertyName), value, true);\n }\n matchType(typeName, value) {\n const typeSyntax = this.getType(typeName);\n\n if (!typeSyntax) {\n return buildMatchResult(null, new SyntaxReferenceError('Unknown type', typeName));\n }\n\n return matchSyntax(this, typeSyntax, value, false);\n }\n match(syntax, value) {\n if (typeof syntax !== 'string' && (!syntax || !syntax.type)) {\n return buildMatchResult(null, new SyntaxReferenceError('Bad syntax'));\n }\n\n if (typeof syntax === 'string' || !syntax.match) {\n syntax = this.createDescriptor(syntax, 'Type', 'anonymous');\n }\n\n return matchSyntax(this, syntax, value, false);\n }\n\n findValueFragments(propertyName, value, type, name) {\n return matchFragments(this, value, this.matchProperty(propertyName, value), type, name);\n }\n findDeclarationValueFragments(declaration, type, name) {\n return matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);\n }\n findAllFragments(ast, type, name) {\n const result = [];\n\n this.syntax.walk(ast, {\n visit: 'Declaration',\n enter: (declaration) => {\n result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));\n }\n });\n\n return result;\n }\n\n getAtrule(atruleName, fallbackBasename = true) {\n const atrule = names.keyword(atruleName);\n const atruleEntry = atrule.vendor && fallbackBasename\n ? this.atrules[atrule.name] || this.atrules[atrule.basename]\n : this.atrules[atrule.name];\n\n return atruleEntry || null;\n }\n getAtrulePrelude(atruleName, fallbackBasename = true) {\n const atrule = this.getAtrule(atruleName, fallbackBasename);\n\n return atrule && atrule.prelude || null;\n }\n getAtruleDescriptor(atruleName, name) {\n return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators\n ? this.atrules[atruleName].declarators[name] || null\n : null;\n }\n getProperty(propertyName, fallbackBasename = true) {\n const property = names.property(propertyName);\n const propertyEntry = property.vendor && fallbackBasename\n ? this.properties[property.name] || this.properties[property.basename]\n : this.properties[property.name];\n\n return propertyEntry || null;\n }\n getType(name) {\n return hasOwnProperty.call(this.types, name) ? this.types[name] : null;\n }\n\n validate() {\n function syntaxRef(name, isType) {\n return isType ? `<${name}>` : `<'${name}'>`;\n }\n\n function validate(syntax, name, broken, descriptor) {\n if (broken.has(name)) {\n return broken.get(name);\n }\n\n broken.set(name, false);\n if (descriptor.syntax !== null) {\n walk(descriptor.syntax, function(node) {\n if (node.type !== 'Type' && node.type !== 'Property') {\n return;\n }\n\n const map = node.type === 'Type' ? syntax.types : syntax.properties;\n const brokenMap = node.type === 'Type' ? brokenTypes : brokenProperties;\n\n if (!hasOwnProperty.call(map, node.name)) {\n errors.push(`${syntaxRef(name, broken === brokenTypes)} used missed syntax definition ${syntaxRef(node.name, node.type === 'Type')}`);\n broken.set(name, true);\n } else if (validate(syntax, node.name, brokenMap, map[node.name])) {\n errors.push(`${syntaxRef(name, broken === brokenTypes)} used broken syntax definition ${syntaxRef(node.name, node.type === 'Type')}`);\n broken.set(name, true);\n }\n }, this);\n }\n }\n\n const errors = [];\n let brokenTypes = new Map();\n let brokenProperties = new Map();\n\n for (const key in this.types) {\n validate(this, key, brokenTypes, this.types[key]);\n }\n\n for (const key in this.properties) {\n validate(this, key, brokenProperties, this.properties[key]);\n }\n\n const brokenTypesArray = [...brokenTypes.keys()].filter(name => brokenTypes.get(name));\n const brokenPropertiesArray = [...brokenProperties.keys()].filter(name => brokenProperties.get(name));\n\n if (brokenTypesArray.length || brokenPropertiesArray.length) {\n return {\n errors,\n types: brokenTypesArray,\n properties: brokenPropertiesArray\n };\n }\n\n return null;\n }\n dump(syntaxAsAst, pretty) {\n return {\n generic: this.generic,\n cssWideKeywords: this.cssWideKeywords,\n units: this.units,\n types: dumpMapSyntax(this.types, !pretty, syntaxAsAst),\n properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst),\n atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst)\n };\n }\n toString() {\n return JSON.stringify(this.dump());\n }\n};\n","function appendOrSet(a, b) {\n if (typeof b === 'string' && /^\\s*\\|/.test(b)) {\n return typeof a === 'string'\n ? a + b\n : b.replace(/^\\s*\\|\\s*/, '');\n }\n\n return b || null;\n}\n\nfunction extractProps(obj, props) {\n const result = Object.create(null);\n\n for (const prop of Object.keys(obj)) {\n if (props.includes(prop)) {\n result[prop] = obj[prop];\n }\n }\n\n return result;\n}\n\nfunction mergeDicts(base, ext, fields) {\n const result = { ...base };\n\n for (const [key, props] of Object.entries(ext)) {\n result[key] = {\n ...result[key],\n ...fields ? extractProps(props, fields) : props\n };\n }\n\n return result;\n}\n\nexport default function mix(dest, src) {\n const result = { ...dest };\n\n for (const [prop, value] of Object.entries(src)) {\n switch (prop) {\n case 'generic':\n result[prop] = Boolean(value);\n break;\n\n case 'cssWideKeywords':\n result[prop] = dest[prop]\n ? [...dest[prop], ...value]\n : value || [];\n break;\n\n case 'units':\n result[prop] = { ...dest[prop] };\n for (const [name, patch] of Object.entries(value)) {\n result[prop][name] = Array.isArray(patch) ? patch : [];\n }\n break;\n\n case 'atrules':\n result[prop] = { ...dest[prop] };\n\n for (const [name, atrule] of Object.entries(value)) {\n const exists = result[prop][name] || {};\n const current = result[prop][name] = {\n prelude: exists.prelude || null,\n descriptors: {\n ...exists.descriptors\n }\n };\n\n if (!atrule) {\n continue;\n }\n\n current.prelude = atrule.prelude\n ? appendOrSet(current.prelude, atrule.prelude)\n : current.prelude || null;\n\n for (const [descriptorName, descriptorValue] of Object.entries(atrule.descriptors || {})) {\n current.descriptors[descriptorName] = descriptorValue\n ? appendOrSet(current.descriptors[descriptorName], descriptorValue)\n : null;\n }\n\n if (!Object.keys(current.descriptors).length) {\n current.descriptors = null;\n }\n }\n break;\n\n case 'types':\n case 'properties':\n result[prop] = { ...dest[prop] };\n for (const [name, syntax] of Object.entries(value)) {\n result[prop][name] = appendOrSet(result[prop][name], syntax);\n }\n break;\n\n case 'parseContext':\n result[prop] = {\n ...dest[prop],\n ...value\n };\n break;\n\n case 'scope':\n case 'features':\n result[prop] = mergeDicts(dest[prop], value);\n break;\n\n case 'atrule':\n case 'pseudo':\n result[prop] = mergeDicts(dest[prop], value, ['parse']);\n break;\n\n case 'node':\n result[prop] = mergeDicts(dest[prop], value, ['name', 'structure', 'parse', 'generate', 'walkContext']);\n break;\n }\n }\n\n return result;\n}\n","import { tokenize } from '../tokenizer/index.js';\nimport { createParser } from '../parser/create.js';\nimport { createGenerator } from '../generator/create.js';\nimport { createConvertor } from '../convertor/create.js';\nimport { createWalker } from '../walker/create.js';\nimport { Lexer } from '../lexer/Lexer.js';\nimport mix from './config/mix.js';\n\nfunction createSyntax(config) {\n const parse = createParser(config);\n const walk = createWalker(config);\n const generate = createGenerator(config);\n const { fromPlainObject, toPlainObject } = createConvertor(walk);\n\n const syntax = {\n lexer: null,\n createLexer: config => new Lexer(config, syntax, syntax.lexer.structure),\n\n tokenize,\n parse,\n generate,\n\n walk,\n find: walk.find,\n findLast: walk.findLast,\n findAll: walk.findAll,\n\n fromPlainObject,\n toPlainObject,\n\n fork(extension) {\n const base = mix({}, config); // copy of config\n\n return createSyntax(\n typeof extension === 'function'\n ? extension(base) // TODO: remove Object.assign as second parameter\n : mix(base, extension)\n );\n }\n };\n\n syntax.lexer = new Lexer({\n generic: config.generic,\n cssWideKeywords: config.cssWideKeywords,\n units: config.units,\n types: config.types,\n atrules: config.atrules,\n properties: config.properties,\n node: config.node\n }, syntax);\n\n return syntax;\n};\n\nexport default config => createSyntax(mix({}, config));\n","export default {\n \"generic\": true,\n \"cssWideKeywords\": [\n \"initial\",\n \"inherit\",\n \"unset\",\n \"revert\",\n \"revert-layer\"\n ],\n \"units\": {\n \"angle\": [\n \"deg\",\n \"grad\",\n \"rad\",\n \"turn\"\n ],\n \"decibel\": [\n \"db\"\n ],\n \"flex\": [\n \"fr\"\n ],\n \"frequency\": [\n \"hz\",\n \"khz\"\n ],\n \"length\": [\n \"cm\",\n \"mm\",\n \"q\",\n \"in\",\n \"pt\",\n \"pc\",\n \"px\",\n \"em\",\n \"rem\",\n \"ex\",\n \"rex\",\n \"cap\",\n \"rcap\",\n \"ch\",\n \"rch\",\n \"ic\",\n \"ric\",\n \"lh\",\n \"rlh\",\n \"vw\",\n \"svw\",\n \"lvw\",\n \"dvw\",\n \"vh\",\n \"svh\",\n \"lvh\",\n \"dvh\",\n \"vi\",\n \"svi\",\n \"lvi\",\n \"dvi\",\n \"vb\",\n \"svb\",\n \"lvb\",\n \"dvb\",\n \"vmin\",\n \"svmin\",\n \"lvmin\",\n \"dvmin\",\n \"vmax\",\n \"svmax\",\n \"lvmax\",\n \"dvmax\",\n \"cqw\",\n \"cqh\",\n \"cqi\",\n \"cqb\",\n \"cqmin\",\n \"cqmax\"\n ],\n \"resolution\": [\n \"dpi\",\n \"dpcm\",\n \"dppx\",\n \"x\"\n ],\n \"semitones\": [\n \"st\"\n ],\n \"time\": [\n \"s\",\n \"ms\"\n ]\n },\n \"types\": {\n \"abs()\": \"abs( <calc-sum> )\",\n \"absolute-size\": \"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large\",\n \"acos()\": \"acos( <calc-sum> )\",\n \"alpha-value\": \"<number>|<percentage>\",\n \"an+b\": \"odd|even|<integer>|<n-dimension>|'+'? † n|-n|<ndashdigit-dimension>|'+'? † <ndashdigit-ident>|<dashndashdigit-ident>|<n-dimension> <signed-integer>|'+'? † n <signed-integer>|-n <signed-integer>|<ndash-dimension> <signless-integer>|'+'? † n- <signless-integer>|-n- <signless-integer>|<n-dimension> ['+'|'-'] <signless-integer>|'+'? † n ['+'|'-'] <signless-integer>|-n ['+'|'-'] <signless-integer>\",\n \"anchor()\": \"anchor( <anchor-name>?&&<anchor-side> , <length-percentage>? )\",\n \"anchor-name\": \"<dashed-ident>\",\n \"anchor-side\": \"inside|outside|top|left|right|bottom|start|end|self-start|self-end|<percentage>|center\",\n \"anchor-size\": \"width|height|block|inline|self-block|self-inline\",\n \"anchor-size()\": \"anchor-size( [<anchor-name>||<anchor-size>]? , <length-percentage>? )\",\n \"angle-percentage\": \"<angle>|<percentage>\",\n \"angular-color-hint\": \"<angle-percentage>|<zero>\",\n \"angular-color-stop\": \"<color> <color-stop-angle>?\",\n \"angular-color-stop-list\": \"<angular-color-stop> , [<angular-color-hint>? , <angular-color-stop>]#?\",\n \"animateable-feature\": \"scroll-position|contents|<custom-ident>\",\n \"animation-action\": \"none|play|play-once|play-forwards|play-backwards|pause|reset|replay\",\n \"asin()\": \"asin( <calc-sum> )\",\n \"atan()\": \"atan( <calc-sum> )\",\n \"atan2()\": \"atan2( <calc-sum> , <calc-sum> )\",\n \"attachment\": \"scroll|fixed|local\",\n \"attr()\": \"attr( <attr-name> <attr-type>? , <declaration-value>? )\",\n \"attr-matcher\": \"['~'|'|'|'^'|'$'|'*']? '='\",\n \"attr-modifier\": \"i|s\",\n \"attr-type\": \"type( <syntax> )|raw-string|number|<attr-unit>\",\n \"attribute-selector\": \"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'\",\n \"auto-repeat\": \"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )\",\n \"auto-track-list\": \"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?\",\n \"axis\": \"block|inline|x|y\",\n \"baseline-position\": \"[first|last]? baseline\",\n \"basic-shape\": \"<inset()>|<xywh()>|<rect()>|<circle()>|<ellipse()>|<polygon()>|<path()>\",\n \"basic-shape-rect\": \"<inset()>|<rect()>|<xywh()>\",\n \"bg-clip\": \"<visual-box>|border-area|text\",\n \"bg-image\": \"<image>|none\",\n \"bg-layer\": \"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<visual-box>||<visual-box>\",\n \"bg-position\": \"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]\",\n \"bg-size\": \"[<length-percentage [0,∞]>|auto]{1,2}|cover|contain\",\n \"blend-mode\": \"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity\",\n \"blur()\": \"blur( <length>? )\",\n \"brightness()\": \"brightness( [<number>|<percentage>]? )\",\n \"calc()\": \"calc( <calc-sum> )\",\n \"calc-constant\": \"e|pi|infinity|-infinity|NaN\",\n \"calc-product\": \"<calc-value> ['*' <calc-value>|'/' <number>]*\",\n \"calc-size()\": \"calc-size( <calc-size-basis> , <calc-sum> )\",\n \"calc-size-basis\": \"<intrinsic-size-keyword>|<calc-size()>|any|<calc-sum>\",\n \"calc-sum\": \"<calc-product> [['+'|'-'] <calc-product>]*\",\n \"calc-value\": \"<number>|<dimension>|<percentage>|<calc-constant>|( <calc-sum> )\",\n \"cf-final-image\": \"<image>|<color>\",\n \"cf-mixing-image\": \"<percentage>?&&<image>\",\n \"circle()\": \"circle( <radial-size>? [at <position>]? )\",\n \"clamp()\": \"clamp( <calc-sum>#{3} )\",\n \"class-selector\": \"'.' <ident-token>\",\n \"clip-source\": \"<url>\",\n \"color\": \"<color-base>|currentColor|<system-color>|<device-cmyk()>|<light-dark()>|<-non-standard-color>\",\n \"color()\": \"color( <colorspace-params> [/ [<alpha-value>|none]]? )\",\n \"color-base\": \"<hex-color>|<color-function>|<named-color>|<color-mix()>|transparent\",\n \"color-function\": \"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<oklab()>|<oklch()>|<color()>\",\n \"color-interpolation-method\": \"in [<rectangular-color-space>|<polar-color-space> <hue-interpolation-method>?|<custom-color-space>]\",\n \"color-mix()\": \"color-mix( <color-interpolation-method> , [<color>&&<percentage [0,100]>?]#{2} )\",\n \"color-stop\": \"<color-stop-length>|<color-stop-angle>\",\n \"color-stop-angle\": \"[<angle-percentage>|<zero>]{1,2}\",\n \"color-stop-length\": \"<length-percentage>{1,2}\",\n \"color-stop-list\": \"<linear-color-stop> , [<linear-color-hint>? , <linear-color-stop>]#?\",\n \"colorspace-params\": \"[<predefined-rgb-params>|<xyz-params>]\",\n \"combinator\": \"'>'|'+'|'~'|['|' '|']\",\n \"common-lig-values\": \"[common-ligatures|no-common-ligatures]\",\n \"compat-auto\": \"searchfield|textarea|checkbox|radio|menulist|listbox|meter|progress-bar|button\",\n \"compat-special\": \"textfield|menulist-button\",\n \"complex-selector\": \"<complex-selector-unit> [<combinator>? <complex-selector-unit>]*\",\n \"complex-selector-list\": \"<complex-selector>#\",\n \"composite-style\": \"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor\",\n \"compositing-operator\": \"add|subtract|intersect|exclude\",\n \"compound-selector\": \"[<type-selector>? <subclass-selector>*]!\",\n \"compound-selector-list\": \"<compound-selector>#\",\n \"conic-gradient()\": \"conic-gradient( [<conic-gradient-syntax>] )\",\n \"conic-gradient-syntax\": \"[[[from [<angle>|<zero>]]? [at <position>]?]||<color-interpolation-method>]? , <angular-color-stop-list>\",\n \"container-condition\": \"not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]\",\n \"container-name\": \"<custom-ident>\",\n \"container-query\": \"not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]\",\n \"content-distribution\": \"space-between|space-around|space-evenly|stretch\",\n \"content-list\": \"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+\",\n \"content-position\": \"center|start|end|flex-start|flex-end\",\n \"content-replacement\": \"<image>\",\n \"contextual-alt-values\": \"[contextual|no-contextual]\",\n \"contrast()\": \"contrast( [<number>|<percentage>]? )\",\n \"coord-box\": \"content-box|padding-box|border-box|fill-box|stroke-box|view-box\",\n \"corner-shape-value\": \"round|scoop|bevel|notch|square|squircle|<superellipse()>\",\n \"cos()\": \"cos( <calc-sum> )\",\n \"counter\": \"<counter()>|<counters()>\",\n \"counter()\": \"counter( <counter-name> , <counter-style>? )\",\n \"counter-name\": \"<custom-ident>\",\n \"counter-style\": \"<counter-style-name>|symbols( )\",\n \"counter-style-name\": \"<custom-ident>\",\n \"counters()\": \"counters( <counter-name> , <string> , <counter-style>? )\",\n \"cross-fade()\": \"cross-fade( <cf-mixing-image> , <cf-final-image>? )\",\n \"cubic-bezier()\": \"cubic-bezier( [<number [0,1]> , <number>]#{2} )\",\n \"cubic-bezier-easing-function\": \"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )\",\n \"cursor-predefined\": \"auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing\",\n \"custom-color-space\": \"<dashed-ident>\",\n \"custom-params\": \"<dashed-ident> [<number>|<percentage>|none]+\",\n \"dasharray\": \"[[<length-percentage>|<number>]+]#\",\n \"dashndashdigit-ident\": \"<ident-token>\",\n \"deprecated-system-color\": \"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonHighlight|ButtonShadow|CaptionText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText\",\n \"discretionary-lig-values\": \"[discretionary-ligatures|no-discretionary-ligatures]\",\n \"display-box\": \"contents|none\",\n \"display-inside\": \"flow|flow-root|table|flex|grid|ruby\",\n \"display-internal\": \"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container\",\n \"display-legacy\": \"inline-block|inline-list-item|inline-table|inline-flex|inline-grid\",\n \"display-listitem\": \"<display-outside>?&&[flow|flow-root]?&&list-item\",\n \"display-outside\": \"block|inline|run-in\",\n \"drop-shadow()\": \"drop-shadow( [<color>?&&<length>{2,3}] )\",\n \"dynamic-range-limit-mix()\": \"dynamic-range-limit-mix( [<'dynamic-range-limit'>&&<percentage [0,100]>]#{2,} )\",\n \"easing-function\": \"<linear-easing-function>|<cubic-bezier-easing-function>|<step-easing-function>\",\n \"east-asian-variant-values\": \"[jis78|jis83|jis90|jis04|simplified|traditional]\",\n \"east-asian-width-values\": \"[full-width|proportional-width]\",\n \"element()\": \"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )\",\n \"ellipse()\": \"ellipse( <radial-size>? [at <position>]? )\",\n \"env()\": \"env( <custom-ident> , <declaration-value>? )\",\n \"exp()\": \"exp( <calc-sum> )\",\n \"explicit-track-list\": \"[<line-names>? <track-size>]+ <line-names>?\",\n \"family-name\": \"<string>|<custom-ident>+\",\n \"feature-tag-value\": \"<string> [<integer>|on|off]?\",\n \"feature-type\": \"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation\",\n \"feature-value-block\": \"<feature-type> '{' <feature-value-declaration-list> '}'\",\n \"feature-value-block-list\": \"<feature-value-block>+\",\n \"feature-value-declaration\": \"<custom-ident> : <integer>+ ;\",\n \"feature-value-declaration-list\": \"<feature-value-declaration>\",\n \"feature-value-name\": \"<custom-ident>\",\n \"filter-function\": \"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>\",\n \"filter-value-list\": \"[<filter-function>|<url>]+\",\n \"final-bg-layer\": \"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<visual-box>||<visual-box>||<'background-color'>\",\n \"fit-content()\": \"fit-content( <length-percentage [0,∞]> )\",\n \"fixed-breadth\": \"<length-percentage>\",\n \"fixed-repeat\": \"repeat( [<integer [1,∞]>] , [<line-names>? <fixed-size>]+ <line-names>? )\",\n \"fixed-size\": \"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )\",\n \"font-stretch-absolute\": \"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>\",\n \"font-variant-css2\": \"normal|small-caps\",\n \"font-weight-absolute\": \"normal|bold|<number [1,1000]>\",\n \"font-width-css3\": \"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded\",\n \"form-control-identifier\": \"select\",\n \"frequency-percentage\": \"<frequency>|<percentage>\",\n \"generic-complete\": \"serif|sans-serif|system-ui|cursive|fantasy|math|monospace\",\n \"general-enclosed\": \"[<function-token> <any-value>? )]|[( <any-value>? )]\",\n \"generic-family\": \"<generic-script-specific>|<generic-complete>|<generic-incomplete>|<-non-standard-generic-family>\",\n \"generic-incomplete\": \"ui-serif|ui-sans-serif|ui-monospace|ui-rounded\",\n \"geometry-box\": \"<shape-box>|fill-box|stroke-box|view-box\",\n \"gradient\": \"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>\",\n \"grayscale()\": \"grayscale( [<number>|<percentage>]? )\",\n \"grid-line\": \"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]\",\n \"historical-lig-values\": \"[historical-ligatures|no-historical-ligatures]\",\n \"hsl()\": \"hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )|hsl( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )\",\n \"hsla()\": \"hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )|hsla( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )\",\n \"hue\": \"<number>|<angle>\",\n \"hue-interpolation-method\": \"[shorter|longer|increasing|decreasing] hue\",\n \"hue-rotate()\": \"hue-rotate( [<angle>|<zero>]? )\",\n \"hwb()\": \"hwb( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )\",\n \"hypot()\": \"hypot( <calc-sum># )\",\n \"image\": \"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>\",\n \"image()\": \"image( <image-tags>? [<image-src>? , <color>?]! )\",\n \"image-set()\": \"image-set( <image-set-option># )\",\n \"image-set-option\": \"[<image>|<string>] [<resolution>||type( <string> )]\",\n \"image-src\": \"<url>|<string>\",\n \"image-tags\": \"ltr|rtl\",\n \"inflexible-breadth\": \"<length-percentage>|min-content|max-content|auto\",\n \"inset()\": \"inset( <length-percentage>{1,4} [round <'border-radius'>]? )\",\n \"invert()\": \"invert( [<number>|<percentage>]? )\",\n \"keyframe-block\": \"<keyframe-selector># { <declaration-list> }\",\n \"keyframe-selector\": \"from|to|<percentage [0,100]>|<timeline-range-name> <percentage>\",\n \"keyframes-name\": \"<custom-ident>|<string>\",\n \"lab()\": \"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )\",\n \"layer()\": \"layer( <layer-name> )\",\n \"layer-name\": \"<ident> ['.' <ident>]*\",\n \"lch()\": \"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )\",\n \"leader()\": \"leader( <leader-type> )\",\n \"leader-type\": \"dotted|solid|space|<string>\",\n \"length-percentage\": \"<length>|<percentage>\",\n \"light-dark()\": \"light-dark( <color> , <color> )\",\n \"line-name-list\": \"[<line-names>|<name-repeat>]+\",\n \"line-names\": \"'[' <custom-ident>* ']'\",\n \"line-style\": \"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset\",\n \"line-width\": \"<length>|thin|medium|thick\",\n \"linear()\": \"linear( [<number>&&<percentage>{0,2}]# )\",\n \"linear-color-hint\": \"<length-percentage>\",\n \"linear-color-stop\": \"<color> <color-stop-length>?\",\n \"linear-easing-function\": \"linear|<linear()>\",\n \"linear-gradient()\": \"linear-gradient( [<linear-gradient-syntax>] )\",\n \"linear-gradient-syntax\": \"[[<angle>|<zero>|to <side-or-corner>]||<color-interpolation-method>]? , <color-stop-list>\",\n \"log()\": \"log( <calc-sum> , <calc-sum>? )\",\n \"mask-layer\": \"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>\",\n \"mask-position\": \"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?\",\n \"mask-reference\": \"none|<image>|<mask-source>\",\n \"mask-source\": \"<url>\",\n \"masking-mode\": \"alpha|luminance|match-source\",\n \"matrix()\": \"matrix( <number>#{6} )\",\n \"matrix3d()\": \"matrix3d( <number>#{16} )\",\n \"max()\": \"max( <calc-sum># )\",\n \"media-and\": \"<media-in-parens> [and <media-in-parens>]+\",\n \"media-condition\": \"<media-not>|<media-and>|<media-or>|<media-in-parens>\",\n \"media-condition-without-or\": \"<media-not>|<media-and>|<media-in-parens>\",\n \"media-feature\": \"( [<mf-plain>|<mf-boolean>|<mf-range>] )\",\n \"media-in-parens\": \"( <media-condition> )|<media-feature>|<general-enclosed>\",\n \"media-not\": \"not <media-in-parens>\",\n \"media-or\": \"<media-in-parens> [or <media-in-parens>]+\",\n \"media-query\": \"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?\",\n \"media-query-list\": \"<media-query>#\",\n \"media-type\": \"<ident>\",\n \"mf-boolean\": \"<mf-name>\",\n \"mf-name\": \"<ident>\",\n \"mf-plain\": \"<mf-name> : <mf-value>\",\n \"mf-range\": \"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>\",\n \"mf-value\": \"<number>|<dimension>|<ident>|<ratio>\",\n \"min()\": \"min( <calc-sum># )\",\n \"minmax()\": \"minmax( [<length-percentage>|min-content|max-content|auto] , [<length-percentage>|<flex>|min-content|max-content|auto] )\",\n \"mod()\": \"mod( <calc-sum> , <calc-sum> )\",\n \"n-dimension\": \"<dimension-token>\",\n \"name-repeat\": \"repeat( [<integer [1,∞]>|auto-fill] , <line-names>+ )\",\n \"named-color\": \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\",\n \"namespace-prefix\": \"<ident>\",\n \"ndash-dimension\": \"<dimension-token>\",\n \"ndashdigit-dimension\": \"<dimension-token>\",\n \"ndashdigit-ident\": \"<ident-token>\",\n \"ns-prefix\": \"[<ident-token>|'*']? '|'\",\n \"number-percentage\": \"<number>|<percentage>\",\n \"numeric-figure-values\": \"[lining-nums|oldstyle-nums]\",\n \"numeric-fraction-values\": \"[diagonal-fractions|stacked-fractions]\",\n \"numeric-spacing-values\": \"[proportional-nums|tabular-nums]\",\n \"offset-path\": \"<ray()>|<url>|<basic-shape>\",\n \"oklab()\": \"oklab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )\",\n \"oklch()\": \"oklch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )\",\n \"opacity()\": \"opacity( [<number>|<percentage>]? )\",\n \"opacity-value\": \"<number>|<percentage>\",\n \"outline-line-style\": \"none|dotted|dashed|solid|double|groove|ridge|inset|outset\",\n \"outline-radius\": \"<length>|<percentage>\",\n \"overflow-position\": \"unsafe|safe\",\n \"page-body\": \"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>\",\n \"page-margin-box\": \"<page-margin-box-type> '{' <declaration-list> '}'\",\n \"page-margin-box-type\": \"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom\",\n \"page-selector\": \"<pseudo-page>+|<ident> <pseudo-page>*\",\n \"page-selector-list\": \"[<page-selector>#]?\",\n \"page-size\": \"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger\",\n \"paint\": \"none|<color>|<url> [none|<color>]?|context-fill|context-stroke\",\n \"paint()\": \"paint( <ident> , <declaration-value>? )\",\n \"paint-box\": \"<visual-box>|fill-box|stroke-box\",\n \"palette-identifier\": \"<dashed-ident>\",\n \"palette-mix()\": \"palette-mix( <color-interpolation-method> , [[normal|light|dark|<palette-identifier>|<palette-mix()>]&&<percentage [0,100]>?]#{2} )\",\n \"path()\": \"path( <'fill-rule'>? , <string> )\",\n \"perspective()\": \"perspective( [<length [0,∞]>|none] )\",\n \"polar-color-space\": \"hsl|hwb|lch|oklch\",\n \"polygon()\": \"polygon( <'fill-rule'>? , [<length-percentage> <length-percentage>]# )\",\n \"position\": \"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]\",\n \"position-area\": \"[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|center|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|center|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]\",\n \"pow()\": \"pow( <calc-sum> , <calc-sum> )\",\n \"predefined-rgb\": \"srgb|srgb-linear|display-p3|display-p3-linear|a98-rgb|prophoto-rgb|rec2020\",\n \"predefined-rgb-params\": \"<predefined-rgb> [<number>|<percentage>|none]{3}\",\n \"pseudo-class-selector\": \"':' <ident-token>|':' <function-token> <any-value> ')'\",\n \"pseudo-element-selector\": \"':' <pseudo-class-selector>|<legacy-pseudo-element-selector>\",\n \"pseudo-page\": \": [left|right|first|blank]\",\n \"query-in-parens\": \"( <container-condition> )|( <size-feature> )|style( <style-query> )|<general-enclosed>\",\n \"quote\": \"open-quote|close-quote|no-open-quote|no-close-quote\",\n \"radial-extent\": \"closest-corner|closest-side|farthest-corner|farthest-side\",\n \"radial-gradient()\": \"radial-gradient( [<radial-gradient-syntax>] )\",\n \"radial-gradient-syntax\": \"[[[<radial-shape>||<radial-size>]? [at <position>]?]||<color-interpolation-method>]? , <color-stop-list>\",\n \"radial-shape\": \"circle|ellipse\",\n \"radial-size\": \"<radial-extent>|<length [0,∞]>|<length-percentage [0,∞]>{2}\",\n \"ratio\": \"<number [0,∞]> [/ <number [0,∞]>]?\",\n \"ray()\": \"ray( <angle>&&<ray-size>?&&contain?&&[at <position>]? )\",\n \"ray-size\": \"closest-side|closest-corner|farthest-side|farthest-corner|sides\",\n \"rect()\": \"rect( [<length-percentage>|auto]{4} [round <'border-radius'>]? )\",\n \"rectangular-color-space\": \"srgb|srgb-linear|display-p3|display-p3-linear|a98-rgb|prophoto-rgb|rec2020|lab|oklab|xyz|xyz-d50|xyz-d65\",\n \"relative-selector\": \"<combinator>? <complex-selector>\",\n \"relative-selector-list\": \"<relative-selector>#\",\n \"relative-size\": \"larger|smaller\",\n \"rem()\": \"rem( <calc-sum> , <calc-sum> )\",\n \"repeat-style\": \"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}\",\n \"repeating-conic-gradient()\": \"repeating-conic-gradient( [<conic-gradient-syntax>] )\",\n \"repeating-linear-gradient()\": \"repeating-linear-gradient( [<linear-gradient-syntax>] )\",\n \"repeating-radial-gradient()\": \"repeating-radial-gradient( [<radial-gradient-syntax>] )\",\n \"reversed-counter-name\": \"reversed( <counter-name> )\",\n \"rgb()\": \"rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )|rgb( [<number>|<percentage>|none]{3} [/ [<alpha-value>|none]]? )\",\n \"rgba()\": \"rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )|rgba( [<number>|<percentage>|none]{3} [/ [<alpha-value>|none]]? )\",\n \"rotate()\": \"rotate( [<angle>|<zero>] )\",\n \"rotate3d()\": \"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )\",\n \"rotateX()\": \"rotateX( [<angle>|<zero>] )\",\n \"rotateY()\": \"rotateY( [<angle>|<zero>] )\",\n \"rotateZ()\": \"rotateZ( [<angle>|<zero>] )\",\n \"round()\": \"round( <rounding-strategy>? , <calc-sum> , <calc-sum> )\",\n \"rounding-strategy\": \"nearest|up|down|to-zero\",\n \"saturate()\": \"saturate( [<number>|<percentage>]? )\",\n \"scale()\": \"scale( [<number>|<percentage>]#{1,2} )\",\n \"scale3d()\": \"scale3d( [<number>|<percentage>]#{3} )\",\n \"scaleX()\": \"scaleX( [<number>|<percentage>] )\",\n \"scaleY()\": \"scaleY( [<number>|<percentage>] )\",\n \"scaleZ()\": \"scaleZ( [<number>|<percentage>] )\",\n \"scope-end\": \"<forgiving-selector-list>\",\n \"scope-start\": \"<forgiving-selector-list>\",\n \"scroll()\": \"scroll( [<scroller>||<axis>]? )\",\n \"scroller\": \"root|nearest|self\",\n \"scroll-state-feature\": \"<media-query-list>\",\n \"scroll-state-in-parens\": \"( <scroll-state-query> )|( <scroll-state-feature> )|<general-enclosed>\",\n \"scroll-state-query\": \"not <scroll-state-in-parens>|<scroll-state-in-parens> [[and <scroll-state-in-parens>]*|[or <scroll-state-in-parens>]*]|<scroll-state-feature>\",\n \"selector-list\": \"<complex-selector-list>\",\n \"self-position\": \"center|start|end|self-start|self-end|flex-start|flex-end\",\n \"sepia()\": \"sepia( [<number>|<percentage>]? )\",\n \"shadow\": \"inset?&&<length>{2,4}&&<color>?\",\n \"shadow-t\": \"[<length>{2,3}&&<color>?]\",\n \"shape\": \"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )\",\n \"shape-box\": \"<visual-box>|margin-box\",\n \"side-or-corner\": \"[left|right]||[top|bottom]\",\n \"sign()\": \"sign( <calc-sum> )\",\n \"signed-integer\": \"<number-token>\",\n \"signless-integer\": \"<number-token>\",\n \"sin()\": \"sin( <calc-sum> )\",\n \"single-animation\": \"<'animation-duration'>||<easing-function>||<'animation-delay'>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]||<single-animation-timeline>\",\n \"single-animation-composition\": \"replace|add|accumulate\",\n \"single-animation-direction\": \"normal|reverse|alternate|alternate-reverse\",\n \"single-animation-fill-mode\": \"none|forwards|backwards|both\",\n \"single-animation-iteration-count\": \"infinite|<number>\",\n \"single-animation-play-state\": \"running|paused\",\n \"single-animation-timeline\": \"auto|none|<dashed-ident>|<scroll()>|<view()>\",\n \"single-transition\": \"[none|<single-transition-property>]||<time>||<easing-function>||<time>||<transition-behavior-value>\",\n \"single-transition-property\": \"all|<custom-ident>\",\n \"size\": \"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}\",\n \"size-feature\": \"<mf-plain>|<mf-boolean>|<mf-range>\",\n \"skew()\": \"skew( [<angle>|<zero>] , [<angle>|<zero>]? )\",\n \"skewX()\": \"skewX( [<angle>|<zero>] )\",\n \"skewY()\": \"skewY( [<angle>|<zero>] )\",\n \"sqrt()\": \"sqrt( <calc-sum> )\",\n \"step-position\": \"jump-start|jump-end|jump-none|jump-both|start|end\",\n \"step-easing-function\": \"step-start|step-end|<steps()>\",\n \"steps()\": \"steps( <integer> , <step-position>? )\",\n \"style-feature\": \"<declaration>\",\n \"style-in-parens\": \"( <style-condition> )|( <style-feature> )|<general-enclosed>\",\n \"style-query\": \"<style-condition>|<style-feature>\",\n \"subclass-selector\": \"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>\",\n \"superellipse()\": \"superellipse( [<number>|infinity|-infinity] )\",\n \"supports-condition\": \"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*\",\n \"supports-decl\": \"( <declaration> )\",\n \"supports-feature\": \"<supports-decl>|<supports-selector-fn>\",\n \"supports-in-parens\": \"( <supports-condition> )|<supports-feature>|<general-enclosed>\",\n \"supports-selector-fn\": \"selector( <complex-selector> )\",\n \"symbol\": \"<string>|<image>|<custom-ident>\",\n \"symbols()\": \"symbols( <symbols-type>? [<string>|<image>]+ )\",\n \"symbols-type\": \"cyclic|numeric|alphabetic|symbolic|fixed\",\n \"system-color\": \"AccentColor|AccentColorText|ActiveText|ButtonBorder|ButtonFace|ButtonText|Canvas|CanvasText|Field|FieldText|GrayText|Highlight|HighlightText|LinkText|Mark|MarkText|SelectedItem|SelectedItemText|VisitedText\",\n \"system-family-name\": \"caption|icon|menu|message-box|small-caption|status-bar\",\n \"tan()\": \"tan( <calc-sum> )\",\n \"target\": \"<target-counter()>|<target-counters()>|<target-text()>\",\n \"target-counter()\": \"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )\",\n \"target-counters()\": \"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )\",\n \"target-text()\": \"target-text( [<string>|<url>] , [content|before|after|first-letter]? )\",\n \"text-edge\": \"[text|cap|ex|ideographic|ideographic-ink] [text|alphabetic|ideographic|ideographic-ink]?\",\n \"time-percentage\": \"<time>|<percentage>\",\n \"timeline-range-name\": \"cover|contain|entry|exit|entry-crossing|exit-crossing\",\n \"track-breadth\": \"<length-percentage>|<flex>|min-content|max-content|auto\",\n \"track-list\": \"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?\",\n \"track-repeat\": \"repeat( [<integer [1,∞]>] , [<line-names>? <track-size>]+ <line-names>? )\",\n \"track-size\": \"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( <length-percentage> )\",\n \"transform-function\": \"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>\",\n \"transform-list\": \"<transform-function>+\",\n \"transition-behavior-value\": \"normal|allow-discrete\",\n \"translate()\": \"translate( <length-percentage> , <length-percentage>? )\",\n \"translate3d()\": \"translate3d( <length-percentage> , <length-percentage> , <length> )\",\n \"translateX()\": \"translateX( <length-percentage> )\",\n \"translateY()\": \"translateY( <length-percentage> )\",\n \"translateZ()\": \"translateZ( <length> )\",\n \"try-size\": \"most-width|most-height|most-block-size|most-inline-size\",\n \"try-tactic\": \"flip-block||flip-inline||flip-start\",\n \"type-or-unit\": \"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%\",\n \"type-selector\": \"<wq-name>|<ns-prefix>? '*'\",\n \"var()\": \"var( <custom-property-name> , <declaration-value>? )\",\n \"view()\": \"view( [<axis>||<'view-timeline-inset'>]? )\",\n \"viewport-length\": \"auto|<length-percentage>\",\n \"visual-box\": \"content-box|padding-box|border-box\",\n \"wq-name\": \"<ns-prefix>? <ident-token>\",\n \"xywh()\": \"xywh( <length-percentage>{2} <length-percentage [0,∞]>{2} [round <'border-radius'>]? )\",\n \"xyz\": \"xyz|xyz-d50|xyz-d65\",\n \"xyz-params\": \"<xyz-space> [<number>|<percentage>|none]{3}\",\n \"-legacy-gradient\": \"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>\",\n \"-legacy-linear-gradient\": \"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )\",\n \"-legacy-repeating-linear-gradient\": \"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )\",\n \"-legacy-linear-gradient-arguments\": \"[<angle>|<side-or-corner>]? , <color-stop-list>\",\n \"-legacy-radial-gradient\": \"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )\",\n \"-legacy-repeating-radial-gradient\": \"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )\",\n \"-legacy-radial-gradient-arguments\": \"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>\",\n \"-legacy-radial-gradient-size\": \"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover\",\n \"-legacy-radial-gradient-shape\": \"circle|ellipse\",\n \"-non-standard-font\": \"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body\",\n \"-non-standard-color\": \"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text\",\n \"-non-standard-image-rendering\": \"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast\",\n \"-non-standard-overflow\": \"overlay|-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable\",\n \"-non-standard-size\": \"intrinsic|min-intrinsic|-webkit-fill-available|-webkit-fit-content|-webkit-min-content|-webkit-max-content|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content\",\n \"-webkit-gradient()\": \"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )\",\n \"-webkit-gradient-color-stop\": \"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )\",\n \"-webkit-gradient-point\": \"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]\",\n \"-webkit-gradient-radius\": \"<length>|<percentage>\",\n \"-webkit-gradient-type\": \"linear|radial\",\n \"-webkit-mask-box-repeat\": \"repeat|stretch|round\",\n \"-ms-filter-function-list\": \"<-ms-filter-function>+\",\n \"-ms-filter-function\": \"<-ms-filter-function-progid>|<-ms-filter-function-legacy>\",\n \"-ms-filter-function-progid\": \"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]\",\n \"-ms-filter-function-legacy\": \"<ident-token>|<function-token> <any-value>? )\",\n \"age\": \"child|young|old\",\n \"attr-name\": \"<wq-name>\",\n \"attr-fallback\": \"<any-value>\",\n \"autospace\": \"no-autospace|[ideograph-alpha||ideograph-numeric||punctuation]||[insert|replace]\",\n \"bottom\": \"<length>|auto\",\n \"generic-voice\": \"[<age>? <gender> <integer>?]\",\n \"gender\": \"male|female|neutral\",\n \"generic-script-specific\": \"generic( kai )|generic( fangsong )|generic( nastaliq )\",\n \"-non-standard-generic-family\": \"-apple-system|BlinkMacSystemFont\",\n \"intrinsic-size-keyword\": \"min-content|max-content|fit-content\",\n \"left\": \"<length>|auto\",\n \"device-cmyk()\": \"<legacy-device-cmyk-syntax>|<modern-device-cmyk-syntax>\",\n \"legacy-device-cmyk-syntax\": \"device-cmyk( <number>#{4} )\",\n \"modern-device-cmyk-syntax\": \"device-cmyk( <cmyk-component>{4} [/ [<alpha-value>|none]]? )\",\n \"cmyk-component\": \"<number>|<percentage>|none\",\n \"color-space\": \"<rectangular-color-space>|<polar-color-space>|<custom-color-space>\",\n \"right\": \"<length>|auto\",\n \"forgiving-selector-list\": \"<complex-real-selector-list>\",\n \"forgiving-relative-selector-list\": \"<relative-real-selector-list>\",\n \"complex-real-selector-list\": \"<complex-real-selector>#\",\n \"simple-selector-list\": \"<simple-selector>#\",\n \"relative-real-selector-list\": \"<relative-real-selector>#\",\n \"complex-selector-unit\": \"[<compound-selector>? <pseudo-compound-selector>*]!\",\n \"complex-real-selector\": \"<compound-selector> [<combinator>? <compound-selector>]*\",\n \"relative-real-selector\": \"<combinator>? <complex-real-selector>\",\n \"pseudo-compound-selector\": \"<pseudo-element-selector> <pseudo-class-selector>*\",\n \"simple-selector\": \"<type-selector>|<subclass-selector>\",\n \"legacy-pseudo-element-selector\": \"':' [before|after|first-line|first-letter]\",\n \"svg-length\": \"<percentage>|<length>|<number>\",\n \"svg-writing-mode\": \"lr-tb|rl-tb|tb-rl|lr|rl|tb\",\n \"top\": \"<length>|auto\",\n \"x\": \"<number>\",\n \"y\": \"<number>\",\n \"declaration\": \"<ident-token> : <declaration-value>? ['!' important]?\",\n \"declaration-list\": \"[<declaration>? ';']* <declaration>?\",\n \"url\": \"url( <string> <url-modifier>* )|<url-token>\",\n \"url-modifier\": \"<ident>|<function-token> <any-value> )\",\n \"number-zero-one\": \"<number [0,1]>\",\n \"number-one-or-greater\": \"<number [1,∞]>\",\n \"xyz-space\": \"xyz|xyz-d50|xyz-d65\",\n \"style-condition\": \"not <style-in-parens>|<style-in-parens> [[and <style-in-parens>]*|[or <style-in-parens>]*]\",\n \"-non-standard-display\": \"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box\",\n \"inset-area\": \"[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]\",\n \"syntax\": \"'*'|<syntax-component> [<syntax-combinator> <syntax-component>]*|<syntax-string>\",\n \"syntax-component\": \"<syntax-single-component> <syntax-multiplier>?|'<' transform-list '>'\",\n \"syntax-single-component\": \"'<' <syntax-type-name> '>'|<ident>\",\n \"syntax-type-name\": \"angle|color|custom-ident|image|integer|length|length-percentage|number|percentage|resolution|string|time|url|transform-function\",\n \"syntax-combinator\": \"'|'\",\n \"syntax-multiplier\": \"'#'|'+'\",\n \"syntax-string\": \"<string>\"\n },\n \"properties\": {\n \"--*\": \"<declaration-value>\",\n \"-ms-accelerator\": \"false|true\",\n \"-ms-block-progression\": \"tb|rl|bt|lr\",\n \"-ms-content-zoom-chaining\": \"none|chained\",\n \"-ms-content-zoom-limit\": \"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>\",\n \"-ms-content-zoom-limit-max\": \"<percentage>\",\n \"-ms-content-zoom-limit-min\": \"<percentage>\",\n \"-ms-content-zoom-snap\": \"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>\",\n \"-ms-content-zoom-snap-points\": \"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )\",\n \"-ms-content-zoom-snap-type\": \"none|proximity|mandatory\",\n \"-ms-content-zooming\": \"none|zoom\",\n \"-ms-filter\": \"<string>\",\n \"-ms-flow-from\": \"[none|<custom-ident>]#\",\n \"-ms-flow-into\": \"[none|<custom-ident>]#\",\n \"-ms-grid-columns\": \"none|<track-list>|<auto-track-list>\",\n \"-ms-grid-rows\": \"none|<track-list>|<auto-track-list>\",\n \"-ms-high-contrast-adjust\": \"auto|none\",\n \"-ms-hyphenate-limit-chars\": \"auto|<integer>{1,3}\",\n \"-ms-hyphenate-limit-lines\": \"no-limit|<integer>\",\n \"-ms-hyphenate-limit-zone\": \"<percentage>|<length>\",\n \"-ms-ime-align\": \"auto|after\",\n \"-ms-overflow-style\": \"auto|none|scrollbar|-ms-autohiding-scrollbar\",\n \"-ms-scroll-chaining\": \"chained|none\",\n \"-ms-scroll-limit\": \"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>\",\n \"-ms-scroll-limit-x-max\": \"auto|<length>\",\n \"-ms-scroll-limit-x-min\": \"<length>\",\n \"-ms-scroll-limit-y-max\": \"auto|<length>\",\n \"-ms-scroll-limit-y-min\": \"<length>\",\n \"-ms-scroll-rails\": \"none|railed\",\n \"-ms-scroll-snap-points-x\": \"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )\",\n \"-ms-scroll-snap-points-y\": \"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )\",\n \"-ms-scroll-snap-type\": \"none|proximity|mandatory\",\n \"-ms-scroll-snap-x\": \"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>\",\n \"-ms-scroll-snap-y\": \"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>\",\n \"-ms-scroll-translation\": \"none|vertical-to-horizontal\",\n \"-ms-scrollbar-3dlight-color\": \"<color>\",\n \"-ms-scrollbar-arrow-color\": \"<color>\",\n \"-ms-scrollbar-base-color\": \"<color>\",\n \"-ms-scrollbar-darkshadow-color\": \"<color>\",\n \"-ms-scrollbar-face-color\": \"<color>\",\n \"-ms-scrollbar-highlight-color\": \"<color>\",\n \"-ms-scrollbar-shadow-color\": \"<color>\",\n \"-ms-scrollbar-track-color\": \"<color>\",\n \"-ms-text-autospace\": \"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\",\n \"-ms-touch-select\": \"grippers|none\",\n \"-ms-user-select\": \"none|element|text\",\n \"-ms-wrap-flow\": \"auto|both|start|end|maximum|clear\",\n \"-ms-wrap-margin\": \"<length>\",\n \"-ms-wrap-through\": \"wrap|none\",\n \"-moz-appearance\": \"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized\",\n \"-moz-binding\": \"<url>|none\",\n \"-moz-border-bottom-colors\": \"<color>+|none\",\n \"-moz-border-left-colors\": \"<color>+|none\",\n \"-moz-border-right-colors\": \"<color>+|none\",\n \"-moz-border-top-colors\": \"<color>+|none\",\n \"-moz-context-properties\": \"none|[fill|fill-opacity|stroke|stroke-opacity]#\",\n \"-moz-float-edge\": \"border-box|content-box|margin-box|padding-box\",\n \"-moz-force-broken-image-icon\": \"0|1\",\n \"-moz-orient\": \"inline|block|horizontal|vertical\",\n \"-moz-outline-radius\": \"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?\",\n \"-moz-outline-radius-bottomleft\": \"<outline-radius>\",\n \"-moz-outline-radius-bottomright\": \"<outline-radius>\",\n \"-moz-outline-radius-topleft\": \"<outline-radius>\",\n \"-moz-outline-radius-topright\": \"<outline-radius>\",\n \"-moz-stack-sizing\": \"ignore|stretch-to-fit\",\n \"-moz-text-blink\": \"none|blink\",\n \"-moz-user-focus\": \"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none\",\n \"-moz-user-input\": \"auto|none|enabled|disabled\",\n \"-moz-user-modify\": \"read-only|read-write|write-only\",\n \"-moz-window-dragging\": \"drag|no-drag\",\n \"-moz-window-shadow\": \"default|menu|tooltip|sheet|none\",\n \"-webkit-appearance\": \"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button\",\n \"-webkit-border-before\": \"<'border-width'>||<'border-style'>||<color>\",\n \"-webkit-border-before-color\": \"<color>\",\n \"-webkit-border-before-style\": \"<'border-style'>\",\n \"-webkit-border-before-width\": \"<'border-width'>\",\n \"-webkit-box-reflect\": \"[above|below|right|left]? <length>? <image>?\",\n \"-webkit-line-clamp\": \"none|<integer>\",\n \"-webkit-mask\": \"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<visual-box>|border|padding|content|text]||[<visual-box>|border|padding|content]]#\",\n \"-webkit-mask-attachment\": \"<attachment>#\",\n \"-webkit-mask-clip\": \"[<coord-box>|no-clip|border|padding|content|text]#\",\n \"-webkit-mask-composite\": \"<composite-style>#\",\n \"-webkit-mask-image\": \"<mask-reference>#\",\n \"-webkit-mask-origin\": \"[<coord-box>|border|padding|content]#\",\n \"-webkit-mask-position\": \"<position>#\",\n \"-webkit-mask-position-x\": \"[<length-percentage>|left|center|right]#\",\n \"-webkit-mask-position-y\": \"[<length-percentage>|top|center|bottom]#\",\n \"-webkit-mask-repeat\": \"<repeat-style>#\",\n \"-webkit-mask-repeat-x\": \"repeat|no-repeat|space|round\",\n \"-webkit-mask-repeat-y\": \"repeat|no-repeat|space|round\",\n \"-webkit-mask-size\": \"<bg-size>#\",\n \"-webkit-overflow-scrolling\": \"auto|touch\",\n \"-webkit-tap-highlight-color\": \"<color>\",\n \"-webkit-text-fill-color\": \"<color>\",\n \"-webkit-text-stroke\": \"<length>||<color>\",\n \"-webkit-text-stroke-color\": \"<color>\",\n \"-webkit-text-stroke-width\": \"<length>\",\n \"-webkit-touch-callout\": \"default|none\",\n \"-webkit-user-modify\": \"read-only|read-write|read-write-plaintext-only\",\n \"-webkit-user-select\": \"auto|none|text|all\",\n \"accent-color\": \"auto|<color>\",\n \"align-content\": \"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>\",\n \"align-items\": \"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]|anchor-center\",\n \"align-self\": \"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>|anchor-center\",\n \"align-tracks\": \"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#\",\n \"alignment-baseline\": \"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical\",\n \"all\": \"initial|inherit|unset|revert|revert-layer\",\n \"anchor-name\": \"none|<dashed-ident>#\",\n \"anchor-scope\": \"none|all|<dashed-ident>#\",\n \"animation\": \"<single-animation>#\",\n \"animation-composition\": \"<single-animation-composition>#\",\n \"animation-delay\": \"<time>#\",\n \"animation-direction\": \"<single-animation-direction>#\",\n \"animation-duration\": \"[auto|<time [0s,∞]>]#\",\n \"animation-fill-mode\": \"<single-animation-fill-mode>#\",\n \"animation-iteration-count\": \"<single-animation-iteration-count>#\",\n \"animation-name\": \"[none|<keyframes-name>]#\",\n \"animation-play-state\": \"<single-animation-play-state>#\",\n \"animation-range\": \"[<'animation-range-start'> <'animation-range-end'>?]#\",\n \"animation-range-end\": \"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#\",\n \"animation-range-start\": \"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#\",\n \"animation-timeline\": \"<single-animation-timeline>#\",\n \"animation-timing-function\": \"<easing-function>#\",\n \"animation-trigger\": \"[none|[<dashed-ident> <animation-action>+]+]#\",\n \"appearance\": \"none|auto|<compat-auto>|<compat-special>\",\n \"aspect-ratio\": \"auto||<ratio>\",\n \"backdrop-filter\": \"none|<filter-value-list>\",\n \"backface-visibility\": \"visible|hidden\",\n \"background\": \"<bg-layer>#? , <final-bg-layer>\",\n \"background-attachment\": \"<attachment>#\",\n \"background-blend-mode\": \"<blend-mode>#\",\n \"background-clip\": \"<bg-clip>#\",\n \"background-color\": \"<color>\",\n \"background-image\": \"<bg-image>#\",\n \"background-origin\": \"<visual-box>#\",\n \"background-position\": \"<bg-position>#\",\n \"background-position-x\": \"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#\",\n \"background-position-y\": \"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#\",\n \"background-repeat\": \"<repeat-style>#\",\n \"background-size\": \"<bg-size>#\",\n \"baseline-shift\": \"baseline|sub|super|<svg-length>\",\n \"baseline-source\": \"auto|first|last\",\n \"block-size\": \"<'width'>\",\n \"border\": \"<line-width>||<line-style>||<color>\",\n \"border-block\": \"<'border-block-start'>\",\n \"border-block-color\": \"<'border-top-color'>{1,2}\",\n \"border-block-end\": \"<'border-top-width'>||<'border-top-style'>||<color>\",\n \"border-block-end-color\": \"<'border-top-color'>\",\n \"border-block-end-style\": \"<'border-top-style'>\",\n \"border-block-end-width\": \"<'border-top-width'>\",\n \"border-block-start\": \"<'border-top-width'>||<'border-top-style'>||<color>\",\n \"border-block-start-color\": \"<'border-top-color'>\",\n \"border-block-start-style\": \"<'border-top-style'>\",\n \"border-block-start-width\": \"<'border-top-width'>\",\n \"border-block-style\": \"<'border-top-style'>{1,2}\",\n \"border-block-width\": \"<'border-top-width'>{1,2}\",\n \"border-bottom\": \"<line-width>||<line-style>||<color>\",\n \"border-bottom-color\": \"<'border-top-color'>\",\n \"border-bottom-left-radius\": \"<length-percentage [0,∞]>{1,2}\",\n \"border-bottom-right-radius\": \"<length-percentage [0,∞]>{1,2}\",\n \"border-bottom-style\": \"<line-style>\",\n \"border-bottom-width\": \"<line-width>\",\n \"border-collapse\": \"separate|collapse\",\n \"border-color\": \"<color>{1,4}\",\n \"border-end-end-radius\": \"<'border-top-left-radius'>\",\n \"border-end-start-radius\": \"<'border-top-left-radius'>\",\n \"border-image\": \"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>\",\n \"border-image-outset\": \"[<length [0,∞]>|<number [0,∞]>]{1,4}\",\n \"border-image-repeat\": \"[stretch|repeat|round|space]{1,2}\",\n \"border-image-slice\": \"[<number [0,∞]>|<percentage [0,∞]>]{1,4}&&fill?\",\n \"border-image-source\": \"none|<image>\",\n \"border-image-width\": \"[<length-percentage [0,∞]>|<number [0,∞]>|auto]{1,4}\",\n \"border-inline\": \"<'border-block-start'>\",\n \"border-inline-color\": \"<'border-top-color'>{1,2}\",\n \"border-inline-end\": \"<'border-top-width'>||<'border-top-style'>||<color>\",\n \"border-inline-end-color\": \"<'border-top-color'>\",\n \"border-inline-end-style\": \"<'border-top-style'>\",\n \"border-inline-end-width\": \"<'border-top-width'>\",\n \"border-inline-start\": \"<'border-top-width'>||<'border-top-style'>||<color>\",\n \"border-inline-start-color\": \"<'border-top-color'>\",\n \"border-inline-start-style\": \"<'border-top-style'>\",\n \"border-inline-start-width\": \"<'border-top-width'>\",\n \"border-inline-style\": \"<'border-top-style'>{1,2}\",\n \"border-inline-width\": \"<'border-top-width'>{1,2}\",\n \"border-left\": \"<line-width>||<line-style>||<color>\",\n \"border-left-color\": \"<color>\",\n \"border-left-style\": \"<line-style>\",\n \"border-left-width\": \"<line-width>\",\n \"border-radius\": \"<length-percentage [0,∞]>{1,4} [/ <length-percentage [0,∞]>{1,4}]?\",\n \"border-right\": \"<line-width>||<line-style>||<color>\",\n \"border-right-color\": \"<color>\",\n \"border-right-style\": \"<line-style>\",\n \"border-right-width\": \"<line-width>\",\n \"border-spacing\": \"<length>{1,2}\",\n \"border-start-end-radius\": \"<'border-top-left-radius'>\",\n \"border-start-start-radius\": \"<'border-top-left-radius'>\",\n \"border-style\": \"<line-style>{1,4}\",\n \"border-top\": \"<line-width>||<line-style>||<color>\",\n \"border-top-color\": \"<color>\",\n \"border-top-left-radius\": \"<length-percentage [0,∞]>{1,2}\",\n \"border-top-right-radius\": \"<length-percentage [0,∞]>{1,2}\",\n \"border-top-style\": \"<line-style>\",\n \"border-top-width\": \"<line-width>\",\n \"border-width\": \"<line-width>{1,4}\",\n \"bottom\": \"auto|<length-percentage>|<anchor()>|<anchor-size()>\",\n \"box-align\": \"start|center|end|baseline|stretch\",\n \"box-decoration-break\": \"slice|clone\",\n \"box-direction\": \"normal|reverse|inherit\",\n \"box-flex\": \"<number>\",\n \"box-flex-group\": \"<integer>\",\n \"box-lines\": \"single|multiple\",\n \"box-ordinal-group\": \"<integer>\",\n \"box-orient\": \"horizontal|vertical|inline-axis|block-axis|inherit\",\n \"box-pack\": \"start|center|end|justify\",\n \"box-shadow\": \"none|<shadow>#\",\n \"box-sizing\": \"content-box|border-box\",\n \"break-after\": \"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region\",\n \"break-before\": \"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region\",\n \"break-inside\": \"auto|avoid|avoid-page|avoid-column|avoid-region\",\n \"caption-side\": \"top|bottom\",\n \"caret\": \"<'caret-color'>||<'caret-animation'>||<'caret-shape'>\",\n \"caret-animation\": \"auto|manual\",\n \"caret-color\": \"auto|<color>\",\n \"caret-shape\": \"auto|bar|block|underscore\",\n \"clear\": \"none|left|right|both|inline-start|inline-end\",\n \"clip\": \"<shape>|auto\",\n \"clip-path\": \"<clip-source>|[<basic-shape>||<geometry-box>]|none\",\n \"clip-rule\": \"nonzero|evenodd\",\n \"color\": \"<color>\",\n \"color-interpolation-filters\": \"auto|sRGB|linearRGB\",\n \"color-scheme\": \"normal|[light|dark|<custom-ident>]+&&only?\",\n \"column-count\": \"<integer>|auto\",\n \"column-fill\": \"auto|balance\",\n \"column-gap\": \"normal|<length-percentage>\",\n \"column-height\": \"auto|<length [0,∞]>\",\n \"column-rule\": \"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>\",\n \"column-rule-color\": \"<color>\",\n \"column-rule-style\": \"<'border-style'>\",\n \"column-rule-width\": \"<'border-width'>\",\n \"column-span\": \"none|all\",\n \"column-width\": \"auto|<length [0,∞]>\",\n \"column-wrap\": \"auto|nowrap|wrap\",\n \"columns\": \"[<'column-width'>||<'column-count'>] [/ <'column-height'>]?\",\n \"contain\": \"none|strict|content|[[size||inline-size]||layout||style||paint]\",\n \"contain-intrinsic-block-size\": \"auto? [none|<length>]\",\n \"contain-intrinsic-height\": \"auto? [none|<length>]\",\n \"contain-intrinsic-inline-size\": \"auto? [none|<length>]\",\n \"contain-intrinsic-size\": \"[auto? [none|<length>]]{1,2}\",\n \"contain-intrinsic-width\": \"auto? [none|<length>]\",\n \"container\": \"<'container-name'> [/ <'container-type'>]?\",\n \"container-name\": \"none|<custom-ident>+\",\n \"container-type\": \"normal||[size|inline-size]\",\n \"content\": \"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>|<attr()>]+]?\",\n \"content-visibility\": \"visible|auto|hidden\",\n \"corner-block-end-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-block-start-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-bottom-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-bottom-left-shape\": \"<corner-shape-value>\",\n \"corner-bottom-right-shape\": \"<corner-shape-value>\",\n \"corner-end-end-shape\": \"<corner-shape-value>\",\n \"corner-end-start-shape\": \"<corner-shape-value>\",\n \"corner-inline-end-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-inline-start-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-left-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-right-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-shape\": \"<corner-shape-value>{1,4}\",\n \"corner-start-start-shape\": \"<corner-shape-value>\",\n \"corner-start-end-shape\": \"<corner-shape-value>\",\n \"corner-top-shape\": \"<corner-shape-value>{1,2}\",\n \"corner-top-left-shape\": \"<corner-shape-value>\",\n \"corner-top-right-shape\": \"<corner-shape-value>\",\n \"counter-increment\": \"[<counter-name> <integer>?]+|none\",\n \"counter-reset\": \"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none\",\n \"counter-set\": \"[<counter-name> <integer>?]+|none\",\n \"cursor\": \"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]\",\n \"cx\": \"<length>|<percentage>\",\n \"cy\": \"<length>|<percentage>\",\n \"d\": \"none|path( <string> )\",\n \"direction\": \"ltr|rtl\",\n \"display\": \"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>\",\n \"dominant-baseline\": \"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge\",\n \"dynamic-range-limit\": \"standard|no-limit|constrained|<dynamic-range-limit-mix()>\",\n \"empty-cells\": \"show|hide\",\n \"field-sizing\": \"content|fixed\",\n \"fill\": \"<paint>\",\n \"fill-opacity\": \"<number-zero-one>|<percentage>\",\n \"fill-rule\": \"nonzero|evenodd\",\n \"filter\": \"none|<filter-value-list>|<-ms-filter-function-list>\",\n \"flex\": \"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]\",\n \"flex-basis\": \"content|<'width'>\",\n \"flex-direction\": \"row|row-reverse|column|column-reverse\",\n \"flex-flow\": \"<'flex-direction'>||<'flex-wrap'>\",\n \"flex-grow\": \"<number>\",\n \"flex-shrink\": \"<number>\",\n \"flex-wrap\": \"nowrap|wrap|wrap-reverse\",\n \"float\": \"left|right|none|inline-start|inline-end\",\n \"flood-color\": \"<color>\",\n \"flood-opacity\": \"<'opacity'>\",\n \"font\": \"[[<'font-style'>||<font-variant-css2>||<'font-weight'>||<font-width-css3>]? <'font-size'> [/ <'line-height'>]? <'font-family'>#]|<system-family-name>|<-non-standard-font>\",\n \"font-family\": \"[<family-name>|<generic-family>]#\",\n \"font-feature-settings\": \"normal|<feature-tag-value>#\",\n \"font-kerning\": \"auto|normal|none\",\n \"font-language-override\": \"normal|<string>\",\n \"font-optical-sizing\": \"auto|none\",\n \"font-palette\": \"normal|light|dark|<palette-identifier>|<palette-mix()>\",\n \"font-size\": \"<absolute-size>|<relative-size>|<length-percentage [0,∞]>|math\",\n \"font-size-adjust\": \"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]\",\n \"font-smooth\": \"auto|never|always|<absolute-size>|<length>\",\n \"font-stretch\": \"<font-stretch-absolute>\",\n \"font-style\": \"normal|italic|oblique <angle>?\",\n \"font-synthesis\": \"none|[weight||style||small-caps||position]\",\n \"font-synthesis-position\": \"auto|none\",\n \"font-synthesis-small-caps\": \"auto|none\",\n \"font-synthesis-style\": \"auto|none\",\n \"font-synthesis-weight\": \"auto|none\",\n \"font-variant\": \"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]\",\n \"font-variant-alternates\": \"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]\",\n \"font-variant-caps\": \"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps\",\n \"font-variant-east-asian\": \"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]\",\n \"font-variant-emoji\": \"normal|text|emoji|unicode\",\n \"font-variant-ligatures\": \"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]\",\n \"font-variant-numeric\": \"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]\",\n \"font-variant-position\": \"normal|sub|super\",\n \"font-variation-settings\": \"normal|[<string> <number>]#\",\n \"font-weight\": \"<font-weight-absolute>|bolder|lighter\",\n \"font-width\": \"normal|<percentage [0,∞]>|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded\",\n \"forced-color-adjust\": \"auto|none|preserve-parent-color\",\n \"gap\": \"<'row-gap'> <'column-gap'>?\",\n \"grid\": \"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>\",\n \"grid-area\": \"<grid-line> [/ <grid-line>]{0,3}\",\n \"grid-auto-columns\": \"<track-size>+\",\n \"grid-auto-flow\": \"[row|column]||dense\",\n \"grid-auto-rows\": \"<track-size>+\",\n \"grid-column\": \"<grid-line> [/ <grid-line>]?\",\n \"grid-column-end\": \"<grid-line>\",\n \"grid-column-gap\": \"<length-percentage>\",\n \"grid-column-start\": \"<grid-line>\",\n \"grid-gap\": \"<'grid-row-gap'> <'grid-column-gap'>?\",\n \"grid-row\": \"<grid-line> [/ <grid-line>]?\",\n \"grid-row-end\": \"<grid-line>\",\n \"grid-row-gap\": \"<length-percentage>\",\n \"grid-row-start\": \"<grid-line>\",\n \"grid-template\": \"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?\",\n \"grid-template-areas\": \"none|<string>+\",\n \"grid-template-columns\": \"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?\",\n \"grid-template-rows\": \"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?\",\n \"hanging-punctuation\": \"none|[first||[force-end|allow-end]||last]\",\n \"height\": \"auto|<length-percentage [0,∞]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,∞]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>\",\n \"hyphenate-character\": \"auto|<string>\",\n \"hyphenate-limit-chars\": \"[auto|<integer>]{1,3}\",\n \"hyphens\": \"none|manual|auto\",\n \"image-orientation\": \"from-image|<angle>|[<angle>? flip]\",\n \"image-rendering\": \"auto|crisp-edges|pixelated|smooth|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>\",\n \"image-resolution\": \"[from-image||<resolution>]&&snap?\",\n \"ime-mode\": \"auto|normal|active|inactive|disabled\",\n \"initial-letter\": \"normal|[<number> <integer>?]\",\n \"initial-letter-align\": \"[auto|alphabetic|hanging|ideographic]\",\n \"inline-size\": \"<'width'>\",\n \"inset\": \"<'top'>{1,4}\",\n \"inset-block\": \"<'top'>{1,2}\",\n \"inset-block-end\": \"<'top'>\",\n \"inset-block-start\": \"<'top'>\",\n \"inset-inline\": \"<'top'>{1,2}\",\n \"inset-inline-end\": \"<'top'>\",\n \"inset-inline-start\": \"<'top'>\",\n \"interpolate-size\": \"numeric-only|allow-keywords\",\n \"isolation\": \"auto|isolate\",\n \"interactivity\": \"auto|inert\",\n \"interest-delay\": \"<'interest-delay-start'>{1,2}\",\n \"interest-delay-end\": \"normal|<time>\",\n \"interest-delay-start\": \"normal|<time>\",\n \"justify-content\": \"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]\",\n \"justify-items\": \"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]|anchor-center\",\n \"justify-self\": \"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|anchor-center\",\n \"justify-tracks\": \"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#\",\n \"left\": \"auto|<length-percentage>|<anchor()>|<anchor-size()>\",\n \"letter-spacing\": \"normal|<length-percentage>\",\n \"lighting-color\": \"<color>\",\n \"line-break\": \"auto|loose|normal|strict|anywhere\",\n \"line-clamp\": \"none|<integer>\",\n \"line-height\": \"normal|<number>|<length>|<percentage>\",\n \"line-height-step\": \"<length>\",\n \"list-style\": \"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>\",\n \"list-style-image\": \"<image>|none\",\n \"list-style-position\": \"inside|outside\",\n \"list-style-type\": \"<counter-style>|<string>|none\",\n \"margin\": \"<'margin-top'>{1,4}\",\n \"margin-block\": \"<'margin-top'>{1,2}\",\n \"margin-block-end\": \"<'margin-top'>\",\n \"margin-block-start\": \"<'margin-top'>\",\n \"margin-bottom\": \"<length-percentage>|auto|<anchor-size()>\",\n \"margin-inline\": \"<'margin-top'>{1,2}\",\n \"margin-inline-end\": \"<'margin-top'>\",\n \"margin-inline-start\": \"<'margin-top'>\",\n \"margin-left\": \"<length-percentage>|auto|<anchor-size()>\",\n \"margin-right\": \"<length-percentage>|auto|<anchor-size()>\",\n \"margin-top\": \"<length-percentage>|auto|<anchor-size()>\",\n \"margin-trim\": \"none|in-flow|all\",\n \"marker\": \"none|<url>\",\n \"marker-end\": \"none|<url>\",\n \"marker-mid\": \"none|<url>\",\n \"marker-start\": \"none|<url>\",\n \"mask\": \"<mask-layer>#\",\n \"mask-border\": \"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>\",\n \"mask-border-mode\": \"luminance|alpha\",\n \"mask-border-outset\": \"[<length>|<number>]{1,4}\",\n \"mask-border-repeat\": \"[stretch|repeat|round|space]{1,2}\",\n \"mask-border-slice\": \"<number-percentage>{1,4} fill?\",\n \"mask-border-source\": \"none|<image>\",\n \"mask-border-width\": \"[<length-percentage>|<number>|auto]{1,4}\",\n \"mask-clip\": \"[<coord-box>|no-clip]#\",\n \"mask-composite\": \"<compositing-operator>#\",\n \"mask-image\": \"<mask-reference>#\",\n \"mask-mode\": \"<masking-mode>#\",\n \"mask-origin\": \"<coord-box>#\",\n \"mask-position\": \"<position>#\",\n \"mask-repeat\": \"<repeat-style>#\",\n \"mask-size\": \"<bg-size>#\",\n \"mask-type\": \"luminance|alpha\",\n \"masonry-auto-flow\": \"[pack|next]||[definite-first|ordered]\",\n \"math-depth\": \"auto-add|add( <integer> )|<integer>\",\n \"math-shift\": \"normal|compact\",\n \"math-style\": \"normal|compact\",\n \"max-block-size\": \"<'max-width'>\",\n \"max-height\": \"none|<length-percentage [0,∞]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,∞]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>\",\n \"max-inline-size\": \"<'max-width'>\",\n \"max-lines\": \"none|<integer>\",\n \"max-width\": \"none|<length-percentage [0,∞]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,∞]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>\",\n \"min-block-size\": \"<'min-width'>\",\n \"min-height\": \"auto|<length-percentage [0,∞]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,∞]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>\",\n \"min-inline-size\": \"<'min-width'>\",\n \"min-width\": \"auto|<length-percentage [0,∞]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,∞]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>\",\n \"mix-blend-mode\": \"<blend-mode>|plus-darker|plus-lighter\",\n \"object-fit\": \"fill|contain|cover|none|scale-down\",\n \"object-position\": \"<position>\",\n \"object-view-box\": \"none|<basic-shape-rect>\",\n \"offset\": \"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?\",\n \"offset-anchor\": \"auto|<position>\",\n \"offset-distance\": \"<length-percentage>\",\n \"offset-path\": \"none|<offset-path>||<coord-box>\",\n \"offset-position\": \"normal|auto|<position>\",\n \"offset-rotate\": \"[auto|reverse]||<angle>\",\n \"opacity\": \"<opacity-value>\",\n \"order\": \"<integer>\",\n \"orphans\": \"<integer>\",\n \"outline\": \"<'outline-width'>||<'outline-style'>||<'outline-color'>\",\n \"outline-color\": \"auto|<color>\",\n \"outline-offset\": \"<length>\",\n \"outline-style\": \"auto|<outline-line-style>\",\n \"outline-width\": \"<line-width>\",\n \"overflow\": \"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>\",\n \"overflow-anchor\": \"auto|none\",\n \"overflow-block\": \"visible|hidden|clip|scroll|auto|<-non-standard-overflow>\",\n \"overflow-clip-box\": \"padding-box|content-box\",\n \"overflow-clip-margin\": \"<visual-box>||<length [0,∞]>\",\n \"overflow-inline\": \"visible|hidden|clip|scroll|auto|<-non-standard-overflow>\",\n \"overflow-wrap\": \"normal|break-word|anywhere\",\n \"overflow-x\": \"visible|hidden|clip|scroll|auto|<-non-standard-overflow>\",\n \"overflow-y\": \"visible|hidden|clip|scroll|auto|<-non-standard-overflow>\",\n \"overlay\": \"none|auto\",\n \"overscroll-behavior\": \"[contain|none|auto]{1,2}\",\n \"overscroll-behavior-block\": \"contain|none|auto\",\n \"overscroll-behavior-inline\": \"contain|none|auto\",\n \"overscroll-behavior-x\": \"contain|none|auto\",\n \"overscroll-behavior-y\": \"contain|none|auto\",\n \"padding\": \"<'padding-top'>{1,4}\",\n \"padding-block\": \"<'padding-top'>{1,2}\",\n \"padding-block-end\": \"<'padding-top'>\",\n \"padding-block-start\": \"<'padding-top'>\",\n \"padding-bottom\": \"<length-percentage [0,∞]>\",\n \"padding-inline\": \"<'padding-top'>{1,2}\",\n \"padding-inline-end\": \"<'padding-top'>\",\n \"padding-inline-start\": \"<'padding-top'>\",\n \"padding-left\": \"<length-percentage [0,∞]>\",\n \"padding-right\": \"<length-percentage [0,∞]>\",\n \"padding-top\": \"<length-percentage [0,∞]>\",\n \"page\": \"auto|<custom-ident>\",\n \"page-break-after\": \"auto|always|avoid|left|right|recto|verso\",\n \"page-break-before\": \"auto|always|avoid|left|right|recto|verso\",\n \"page-break-inside\": \"auto|avoid\",\n \"paint-order\": \"normal|[fill||stroke||markers]\",\n \"perspective\": \"none|<length>\",\n \"perspective-origin\": \"<position>\",\n \"place-content\": \"<'align-content'> <'justify-content'>?\",\n \"place-items\": \"<'align-items'> <'justify-items'>?\",\n \"place-self\": \"<'align-self'> <'justify-self'>?\",\n \"pointer-events\": \"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit\",\n \"position\": \"static|relative|absolute|sticky|fixed|-webkit-sticky\",\n \"position-anchor\": \"auto|none|<anchor-name>\",\n \"position-area\": \"none|<position-area>\",\n \"position-try\": \"<'position-try-order'>? <'position-try-fallbacks'>\",\n \"position-try-fallbacks\": \"none|[[<dashed-ident>||<try-tactic>]|<'position-area'>]#\",\n \"position-try-order\": \"normal|<try-size>\",\n \"position-visibility\": \"always|[anchors-valid||anchors-visible||no-overflow]\",\n \"print-color-adjust\": \"economy|exact\",\n \"quotes\": \"none|auto|[<string> <string>]+\",\n \"r\": \"<length>|<percentage>\",\n \"reading-flow\": \"normal|source-order|flex-visual|flex-flow|grid-rows|grid-columns|grid-order\",\n \"reading-order\": \"<integer>\",\n \"resize\": \"none|both|horizontal|vertical|block|inline\",\n \"right\": \"auto|<length-percentage>|<anchor()>|<anchor-size()>\",\n \"rotate\": \"none|<angle>|[x|y|z|<number>{3}]&&<angle>\",\n \"row-gap\": \"normal|<length-percentage>\",\n \"ruby-align\": \"start|center|space-between|space-around\",\n \"ruby-merge\": \"separate|collapse|auto\",\n \"ruby-overhang\": \"auto|none\",\n \"ruby-position\": \"[alternate||[over|under]]|inter-character\",\n \"rx\": \"<length>|<percentage>\",\n \"ry\": \"<length>|<percentage>\",\n \"scale\": \"none|[<number>|<percentage>]{1,3}\",\n \"scroll-behavior\": \"auto|smooth\",\n \"scroll-initial-target\": \"none|nearest\",\n \"scroll-margin\": \"<length>{1,4}\",\n \"scroll-margin-block\": \"<length>{1,2}\",\n \"scroll-margin-block-end\": \"<length>\",\n \"scroll-margin-block-start\": \"<length>\",\n \"scroll-margin-bottom\": \"<length>\",\n \"scroll-margin-inline\": \"<length>{1,2}\",\n \"scroll-margin-inline-end\": \"<length>\",\n \"scroll-margin-inline-start\": \"<length>\",\n \"scroll-margin-left\": \"<length>\",\n \"scroll-margin-right\": \"<length>\",\n \"scroll-margin-top\": \"<length>\",\n \"scroll-marker-group\": \"none|before|after\",\n \"scroll-padding\": \"[auto|<length-percentage>]{1,4}\",\n \"scroll-padding-block\": \"[auto|<length-percentage>]{1,2}\",\n \"scroll-padding-block-end\": \"auto|<length-percentage>\",\n \"scroll-padding-block-start\": \"auto|<length-percentage>\",\n \"scroll-padding-bottom\": \"auto|<length-percentage>\",\n \"scroll-padding-inline\": \"[auto|<length-percentage>]{1,2}\",\n \"scroll-padding-inline-end\": \"auto|<length-percentage>\",\n \"scroll-padding-inline-start\": \"auto|<length-percentage>\",\n \"scroll-padding-left\": \"auto|<length-percentage>\",\n \"scroll-padding-right\": \"auto|<length-percentage>\",\n \"scroll-padding-top\": \"auto|<length-percentage>\",\n \"scroll-snap-align\": \"[none|start|end|center]{1,2}\",\n \"scroll-snap-coordinate\": \"none|<position>#\",\n \"scroll-snap-destination\": \"<position>\",\n \"scroll-snap-points-x\": \"none|repeat( <length-percentage> )\",\n \"scroll-snap-points-y\": \"none|repeat( <length-percentage> )\",\n \"scroll-snap-stop\": \"normal|always\",\n \"scroll-snap-type\": \"none|[x|y|block|inline|both] [mandatory|proximity]?\",\n \"scroll-snap-type-x\": \"none|mandatory|proximity\",\n \"scroll-snap-type-y\": \"none|mandatory|proximity\",\n \"scroll-target-group\": \"none|auto\",\n \"scroll-timeline\": \"[<'scroll-timeline-name'> <'scroll-timeline-axis'>?]#\",\n \"scroll-timeline-axis\": \"[block|inline|x|y]#\",\n \"scroll-timeline-name\": \"[none|<dashed-ident>]#\",\n \"scrollbar-color\": \"auto|<color>{2}\",\n \"scrollbar-gutter\": \"auto|stable&&both-edges?\",\n \"scrollbar-width\": \"auto|thin|none\",\n \"shape-image-threshold\": \"<opacity-value>\",\n \"shape-margin\": \"<length-percentage>\",\n \"shape-outside\": \"none|[<shape-box>||<basic-shape>]|<image>\",\n \"shape-rendering\": \"auto|optimizeSpeed|crispEdges|geometricPrecision\",\n \"speak-as\": \"normal|spell-out||digits||[literal-punctuation|no-punctuation]\",\n \"stop-color\": \"<'color'>\",\n \"stop-opacity\": \"<'opacity'>\",\n \"stroke\": \"<paint>\",\n \"stroke-color\": \"<color>\",\n \"stroke-dasharray\": \"none|[<svg-length>+]#\",\n \"stroke-dashoffset\": \"<svg-length>\",\n \"stroke-linecap\": \"butt|round|square\",\n \"stroke-linejoin\": \"miter|round|bevel\",\n \"stroke-miterlimit\": \"<number-one-or-greater>\",\n \"stroke-opacity\": \"<'opacity'>\",\n \"stroke-width\": \"<svg-length>\",\n \"tab-size\": \"<integer>|<length>\",\n \"table-layout\": \"auto|fixed\",\n \"text-align\": \"start|end|left|right|center|justify|match-parent\",\n \"text-align-last\": \"auto|start|end|left|right|center|justify\",\n \"text-anchor\": \"start|middle|end\",\n \"text-autospace\": \"normal|<autospace>|auto\",\n \"text-box\": \"normal|<'text-box-trim'>||<'text-box-edge'>\",\n \"text-box-edge\": \"auto|<text-edge>\",\n \"text-box-trim\": \"none|trim-start|trim-end|trim-both\",\n \"text-combine-upright\": \"none|all|[digits <integer>?]\",\n \"text-decoration\": \"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>\",\n \"text-decoration-color\": \"<color>\",\n \"text-decoration-inset\": \"<length>{1,2}|auto\",\n \"text-decoration-line\": \"none|[underline||overline||line-through||blink]|spelling-error|grammar-error\",\n \"text-decoration-skip\": \"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]\",\n \"text-decoration-skip-ink\": \"auto|all|none\",\n \"text-decoration-style\": \"solid|double|dotted|dashed|wavy\",\n \"text-decoration-thickness\": \"auto|from-font|<length>|<percentage>\",\n \"text-emphasis\": \"<'text-emphasis-style'>||<'text-emphasis-color'>\",\n \"text-emphasis-color\": \"<color>\",\n \"text-emphasis-position\": \"auto|[over|under]&&[right|left]?\",\n \"text-emphasis-style\": \"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>\",\n \"text-indent\": \"<length-percentage>&&hanging?&&each-line?\",\n \"text-justify\": \"auto|inter-character|inter-word|none\",\n \"text-orientation\": \"mixed|upright|sideways\",\n \"text-overflow\": \"[clip|ellipsis|<string>]{1,2}\",\n \"text-rendering\": \"auto|optimizeSpeed|optimizeLegibility|geometricPrecision\",\n \"text-shadow\": \"none|<shadow-t>#\",\n \"text-size-adjust\": \"none|auto|<percentage>\",\n \"text-spacing-trim\": \"space-all|normal|space-first|trim-start\",\n \"text-transform\": \"none|[capitalize|uppercase|lowercase]||full-width||full-size-kana|math-auto\",\n \"text-underline-offset\": \"auto|<length>|<percentage>\",\n \"text-underline-position\": \"auto|from-font|[under||[left|right]]\",\n \"text-wrap\": \"<'text-wrap-mode'>||<'text-wrap-style'>\",\n \"text-wrap-mode\": \"wrap|nowrap\",\n \"text-wrap-style\": \"auto|balance|stable|pretty\",\n \"timeline-scope\": \"none|<dashed-ident>#\",\n \"timeline-trigger\": \"none|[<'timeline-trigger-name'> <'timeline-trigger-source'> <'timeline-trigger-range'> ['/' <'timeline-trigger-exit-range'>]?]#\",\n \"timeline-trigger-name\": \"none|<dashed-ident>#\",\n \"timeline-trigger-exit-range\": \"[<'timeline-trigger-exit-range-start'> <'timeline-trigger-exit-range-end'>?]#\",\n \"timeline-trigger-exit-range-end\": \"[auto|normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#\",\n \"timeline-trigger-exit-range-start\": \"[auto|normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#\",\n \"timeline-trigger-range\": \"[<'timeline-trigger-range-start'> <'timeline-trigger-range-end'>?]#\",\n \"timeline-trigger-range-end\": \"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#\",\n \"timeline-trigger-range-start\": \"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#\",\n \"timeline-trigger-source\": \"<single-animation-timeline>#\",\n \"top\": \"auto|<length-percentage>|<anchor()>|<anchor-size()>\",\n \"touch-action\": \"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation\",\n \"transform\": \"none|<transform-list>\",\n \"transform-box\": \"content-box|border-box|fill-box|stroke-box|view-box\",\n \"transform-origin\": \"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?\",\n \"transform-style\": \"flat|preserve-3d\",\n \"transition\": \"<single-transition>#\",\n \"transition-behavior\": \"<transition-behavior-value>#\",\n \"transition-delay\": \"<time>#\",\n \"transition-duration\": \"<time>#\",\n \"transition-property\": \"none|<single-transition-property>#\",\n \"transition-timing-function\": \"<easing-function>#\",\n \"translate\": \"none|<length-percentage> [<length-percentage> <length>?]?\",\n \"trigger-scope\": \"none|all|<dashed-ident>#\",\n \"unicode-bidi\": \"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext\",\n \"user-select\": \"auto|text|none|all\",\n \"vector-effect\": \"none|non-scaling-stroke|non-scaling-size|non-rotation|fixed-position\",\n \"vertical-align\": \"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>\",\n \"view-timeline\": \"[<'view-timeline-name'> [<'view-timeline-axis'>||<'view-timeline-inset'>]?]#\",\n \"view-timeline-axis\": \"[block|inline|x|y]#\",\n \"view-timeline-inset\": \"[[auto|<length-percentage>]{1,2}]#\",\n \"view-timeline-name\": \"[none|<dashed-ident>]#\",\n \"view-transition-class\": \"none|<custom-ident>+\",\n \"view-transition-name\": \"none|<custom-ident>|match-element\",\n \"visibility\": \"visible|hidden|collapse\",\n \"white-space\": \"normal|pre|pre-wrap|pre-line|<'white-space-collapse'>||<'text-wrap-mode'>\",\n \"white-space-collapse\": \"collapse|preserve|preserve-breaks|preserve-spaces|break-spaces\",\n \"widows\": \"<integer>\",\n \"width\": \"auto|<length-percentage [0,∞]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,∞]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>\",\n \"will-change\": \"auto|<animateable-feature>#\",\n \"word-break\": \"normal|break-all|keep-all|break-word|auto-phrase\",\n \"word-spacing\": \"normal|<length>\",\n \"word-wrap\": \"normal|break-word\",\n \"writing-mode\": \"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>\",\n \"x\": \"<length>|<percentage>\",\n \"y\": \"<length>|<percentage>\",\n \"z-index\": \"auto|<integer>\",\n \"zoom\": \"normal|reset|<number [0,∞]>||<percentage [0,∞]>\",\n \"-moz-background-clip\": \"padding|border\",\n \"-moz-border-radius-bottomleft\": \"<'border-bottom-left-radius'>\",\n \"-moz-border-radius-bottomright\": \"<'border-bottom-right-radius'>\",\n \"-moz-border-radius-topleft\": \"<'border-top-left-radius'>\",\n \"-moz-border-radius-topright\": \"<'border-bottom-right-radius'>\",\n \"-moz-control-character-visibility\": \"visible|hidden\",\n \"-moz-osx-font-smoothing\": \"auto|grayscale\",\n \"-moz-user-select\": \"none|text|all|-moz-none\",\n \"-ms-flex-align\": \"start|end|center|baseline|stretch\",\n \"-ms-flex-item-align\": \"auto|start|end|center|baseline|stretch\",\n \"-ms-flex-line-pack\": \"start|end|center|justify|distribute|stretch\",\n \"-ms-flex-negative\": \"<'flex-shrink'>\",\n \"-ms-flex-pack\": \"start|end|center|justify|distribute\",\n \"-ms-flex-order\": \"<integer>\",\n \"-ms-flex-positive\": \"<'flex-grow'>\",\n \"-ms-flex-preferred-size\": \"<'flex-basis'>\",\n \"-ms-interpolation-mode\": \"nearest-neighbor|bicubic\",\n \"-ms-grid-column-align\": \"start|end|center|stretch\",\n \"-ms-grid-row-align\": \"start|end|center|stretch\",\n \"-ms-hyphenate-limit-last\": \"none|always|column|page|spread\",\n \"-webkit-background-clip\": \"[<visual-box>|border|padding|content|text]#\",\n \"-webkit-column-break-after\": \"always|auto|avoid\",\n \"-webkit-column-break-before\": \"always|auto|avoid\",\n \"-webkit-column-break-inside\": \"always|auto|avoid\",\n \"-webkit-font-smoothing\": \"auto|none|antialiased|subpixel-antialiased\",\n \"-webkit-mask-box-image\": \"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?\",\n \"-webkit-print-color-adjust\": \"economy|exact\",\n \"-webkit-text-security\": \"none|circle|disc|square\",\n \"-webkit-user-drag\": \"none|element|auto\",\n \"behavior\": \"<url>+\",\n \"cue\": \"<'cue-before'> <'cue-after'>?\",\n \"cue-after\": \"<url> <decibel>?|none\",\n \"cue-before\": \"<url> <decibel>?|none\",\n \"glyph-orientation-horizontal\": \"<angle>\",\n \"glyph-orientation-vertical\": \"<angle>\",\n \"kerning\": \"auto|<svg-length>\",\n \"pause\": \"<'pause-before'> <'pause-after'>?\",\n \"pause-after\": \"<time>|none|x-weak|weak|medium|strong|x-strong\",\n \"pause-before\": \"<time>|none|x-weak|weak|medium|strong|x-strong\",\n \"position-try-options\": \"<'position-try-fallbacks'>\",\n \"rest\": \"<'rest-before'> <'rest-after'>?\",\n \"rest-after\": \"<time>|none|x-weak|weak|medium|strong|x-strong\",\n \"rest-before\": \"<time>|none|x-weak|weak|medium|strong|x-strong\",\n \"speak\": \"auto|never|always\",\n \"voice-balance\": \"<number>|left|center|right|leftwards|rightwards\",\n \"voice-duration\": \"auto|<time>\",\n \"voice-family\": \"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve\",\n \"voice-pitch\": \"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]\",\n \"voice-range\": \"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]\",\n \"voice-rate\": \"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>\",\n \"voice-stress\": \"normal|strong|moderate|none|reduced\",\n \"voice-volume\": \"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]\",\n \"white-space-trim\": \"none|discard-before||discard-after||discard-inner\"\n },\n \"atrules\": {\n \"charset\": {\n \"prelude\": \"<string>\",\n \"descriptors\": null\n },\n \"counter-style\": {\n \"prelude\": \"<counter-style-name>\",\n \"descriptors\": {\n \"additive-symbols\": \"[<integer [0,∞]>&&<symbol>]#\",\n \"fallback\": \"<counter-style-name>\",\n \"negative\": \"<symbol> <symbol>?\",\n \"pad\": \"<integer [0,∞]>&&<symbol>\",\n \"prefix\": \"<symbol>\",\n \"range\": \"[[<integer>|infinite]{2}]#|auto\",\n \"speak-as\": \"auto|bullets|numbers|words|spell-out|<counter-style-name>\",\n \"suffix\": \"<symbol>\",\n \"symbols\": \"<symbol>+\",\n \"system\": \"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]\"\n }\n },\n \"container\": {\n \"prelude\": \"[<container-name>]? <container-condition>\",\n \"descriptors\": null\n },\n \"document\": {\n \"prelude\": \"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#\",\n \"descriptors\": null\n },\n \"font-face\": {\n \"prelude\": null,\n \"descriptors\": {\n \"ascent-override\": \"normal|<percentage>\",\n \"descent-override\": \"normal|<percentage>\",\n \"font-display\": \"auto|block|swap|fallback|optional\",\n \"font-family\": \"<family-name>\",\n \"font-feature-settings\": \"normal|<feature-tag-value>#\",\n \"font-stretch\": \"<font-stretch-absolute>{1,2}\",\n \"font-style\": \"normal|italic|oblique <angle>{0,2}\",\n \"font-variation-settings\": \"normal|[<string> <number>]#\",\n \"font-weight\": \"<font-weight-absolute>{1,2}\",\n \"line-gap-override\": \"normal|<percentage>\",\n \"size-adjust\": \"<percentage>\",\n \"src\": \"[<url> [format( <string># )]?|local( <family-name> )]#\",\n \"unicode-range\": \"<urange>#\"\n }\n },\n \"font-feature-values\": {\n \"prelude\": \"<family-name>#\",\n \"descriptors\": null\n },\n \"font-palette-values\": {\n \"prelude\": \"<dashed-ident>\",\n \"descriptors\": {\n \"base-palette\": \"light|dark|<integer [0,∞]>\",\n \"font-family\": \"<family-name>#\",\n \"override-colors\": \"[<integer [0,∞]> <color>]#\"\n }\n },\n \"import\": {\n \"prelude\": \"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?\",\n \"descriptors\": null\n },\n \"keyframes\": {\n \"prelude\": \"<keyframes-name>\",\n \"descriptors\": null\n },\n \"layer\": {\n \"prelude\": \"[<layer-name>#|<layer-name>?]\",\n \"descriptors\": null\n },\n \"media\": {\n \"prelude\": \"<media-query-list>\",\n \"descriptors\": null\n },\n \"namespace\": {\n \"prelude\": \"<namespace-prefix>? [<string>|<url>]\",\n \"descriptors\": null\n },\n \"page\": {\n \"prelude\": \"<page-selector-list>\",\n \"descriptors\": {\n \"bleed\": \"auto|<length>\",\n \"marks\": \"none|[crop||cross]\",\n \"page-orientation\": \"upright|rotate-left|rotate-right\",\n \"size\": \"<length [0,∞]>{1,2}|auto|[<page-size>||[portrait|landscape]]\"\n }\n },\n \"position-try\": {\n \"prelude\": \"<dashed-ident>\",\n \"descriptors\": {\n \"top\": \"<'top'>\",\n \"left\": \"<'left'>\",\n \"bottom\": \"<'bottom'>\",\n \"right\": \"<'right'>\",\n \"inset-block-start\": \"<'inset-block-start'>\",\n \"inset-block-end\": \"<'inset-block-end'>\",\n \"inset-inline-start\": \"<'inset-inline-start'>\",\n \"inset-inline-end\": \"<'inset-inline-end'>\",\n \"inset-block\": \"<'inset-block'>\",\n \"inset-inline\": \"<'inset-inline'>\",\n \"inset\": \"<'inset'>\",\n \"margin-top\": \"<'margin-top'>\",\n \"margin-left\": \"<'margin-left'>\",\n \"margin-bottom\": \"<'margin-bottom'>\",\n \"margin-right\": \"<'margin-right'>\",\n \"margin-block-start\": \"<'margin-block-start'>\",\n \"margin-block-end\": \"<'margin-block-end'>\",\n \"margin-inline-start\": \"<'margin-inline-start'>\",\n \"margin-inline-end\": \"<'margin-inline-end'>\",\n \"margin\": \"<'margin'>\",\n \"margin-block\": \"<'margin-block'>\",\n \"margin-inline\": \"<'margin-inline'>\",\n \"width\": \"<'width'>\",\n \"height\": \"<'height'>\",\n \"min-width\": \"<'min-width'>\",\n \"min-height\": \"<'min-height'>\",\n \"max-width\": \"<'max-width'>\",\n \"max-height\": \"<'max-height'>\",\n \"block-size\": \"<'block-size'>\",\n \"inline-size\": \"<'inline-size'>\",\n \"min-block-size\": \"<'min-block-size'>\",\n \"min-inline-size\": \"<'min-inline-size'>\",\n \"max-block-size\": \"<'max-block-size'>\",\n \"max-inline-size\": \"<'max-inline-size'>\",\n \"align-self\": \"<'align-self'>|anchor-center\",\n \"justify-self\": \"<'justify-self'>|anchor-center\"\n }\n },\n \"property\": {\n \"prelude\": \"<custom-property-name>\",\n \"descriptors\": {\n \"inherits\": \"true|false\",\n \"initial-value\": \"<declaration-value>?\",\n \"syntax\": \"<string>\"\n }\n },\n \"scope\": {\n \"prelude\": \"[( <scope-start> )]? [to ( <scope-end> )]?\",\n \"descriptors\": null\n },\n \"starting-style\": {\n \"prelude\": null,\n \"descriptors\": null\n },\n \"supports\": {\n \"prelude\": \"<supports-condition>\",\n \"descriptors\": null\n },\n \"view-transition\": {\n \"prelude\": null,\n \"descriptors\": {\n \"navigation\": \"auto|none\",\n \"types\": \"none|<custom-ident>+\"\n }\n },\n \"font-features-values\": {\n \"prelude\": \"[<string>|<custom-ident>]+\",\n \"descriptors\": {\n \"font-display\": \"auto|block|swap|fallback|optional\"\n }\n }\n }\n};","import {\n isDigit,\n WhiteSpace,\n Comment,\n Ident,\n Number,\n Dimension\n} from '../../tokenizer/index.js';\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst N = 0x006E; // U+006E LATIN SMALL LETTER N (n)\nconst DISALLOW_SIGN = true;\nconst ALLOW_SIGN = false;\n\nfunction checkInteger(offset, disallowSign) {\n let pos = this.tokenStart + offset;\n const code = this.charCodeAt(pos);\n\n if (code === PLUSSIGN || code === HYPHENMINUS) {\n if (disallowSign) {\n this.error('Number sign is not allowed');\n }\n pos++;\n }\n\n for (; pos < this.tokenEnd; pos++) {\n if (!isDigit(this.charCodeAt(pos))) {\n this.error('Integer is expected', pos);\n }\n }\n}\n\nfunction checkTokenIsInteger(disallowSign) {\n return checkInteger.call(this, 0, disallowSign);\n}\n\nfunction expectCharCode(offset, code) {\n if (!this.cmpChar(this.tokenStart + offset, code)) {\n let msg = '';\n\n switch (code) {\n case N:\n msg = 'N is expected';\n break;\n case HYPHENMINUS:\n msg = 'HyphenMinus is expected';\n break;\n }\n\n this.error(msg, this.tokenStart + offset);\n }\n}\n\n// ... <signed-integer>\n// ... ['+' | '-'] <signless-integer>\nfunction consumeB() {\n let offset = 0;\n let sign = 0;\n let type = this.tokenType;\n\n while (type === WhiteSpace || type === Comment) {\n type = this.lookupType(++offset);\n }\n\n if (type !== Number) {\n if (this.isDelim(PLUSSIGN, offset) ||\n this.isDelim(HYPHENMINUS, offset)) {\n sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS;\n\n do {\n type = this.lookupType(++offset);\n } while (type === WhiteSpace || type === Comment);\n\n if (type !== Number) {\n this.skip(offset);\n checkTokenIsInteger.call(this, DISALLOW_SIGN);\n }\n } else {\n return null;\n }\n }\n\n if (offset > 0) {\n this.skip(offset);\n }\n\n if (sign === 0) {\n type = this.charCodeAt(this.tokenStart);\n if (type !== PLUSSIGN && type !== HYPHENMINUS) {\n this.error('Number sign is expected');\n }\n }\n\n checkTokenIsInteger.call(this, sign !== 0);\n return sign === HYPHENMINUS ? '-' + this.consume(Number) : this.consume(Number);\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nexport const name = 'AnPlusB';\nexport const structure = {\n a: [String, null],\n b: [String, null]\n};\n\nexport function parse() {\n /* eslint-disable brace-style*/\n const start = this.tokenStart;\n let a = null;\n let b = null;\n\n // <integer>\n if (this.tokenType === Number) {\n checkTokenIsInteger.call(this, ALLOW_SIGN);\n b = this.consume(Number);\n }\n\n // -n\n // -n <signed-integer>\n // -n ['+' | '-'] <signless-integer>\n // -n- <signless-integer>\n // <dashndashdigit-ident>\n else if (this.tokenType === Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) {\n a = '-1';\n\n expectCharCode.call(this, 1, N);\n\n switch (this.tokenEnd - this.tokenStart) {\n // -n\n // -n <signed-integer>\n // -n ['+' | '-'] <signless-integer>\n case 2:\n this.next();\n b = consumeB.call(this);\n break;\n\n // -n- <signless-integer>\n case 3:\n expectCharCode.call(this, 2, HYPHENMINUS);\n\n this.next();\n this.skipSC();\n\n checkTokenIsInteger.call(this, DISALLOW_SIGN);\n\n b = '-' + this.consume(Number);\n break;\n\n // <dashndashdigit-ident>\n default:\n expectCharCode.call(this, 2, HYPHENMINUS);\n checkInteger.call(this, 3, DISALLOW_SIGN);\n this.next();\n\n b = this.substrToCursor(start + 2);\n }\n }\n\n // '+'? n\n // '+'? n <signed-integer>\n // '+'? n ['+' | '-'] <signless-integer>\n // '+'? n- <signless-integer>\n // '+'? <ndashdigit-ident>\n else if (this.tokenType === Ident || (this.isDelim(PLUSSIGN) && this.lookupType(1) === Ident)) {\n let sign = 0;\n a = '1';\n\n // just ignore a plus\n if (this.isDelim(PLUSSIGN)) {\n sign = 1;\n this.next();\n }\n\n expectCharCode.call(this, 0, N);\n\n switch (this.tokenEnd - this.tokenStart) {\n // '+'? n\n // '+'? n <signed-integer>\n // '+'? n ['+' | '-'] <signless-integer>\n case 1:\n this.next();\n b = consumeB.call(this);\n break;\n\n // '+'? n- <signless-integer>\n case 2:\n expectCharCode.call(this, 1, HYPHENMINUS);\n\n this.next();\n this.skipSC();\n\n checkTokenIsInteger.call(this, DISALLOW_SIGN);\n\n b = '-' + this.consume(Number);\n break;\n\n // '+'? <ndashdigit-ident>\n default:\n expectCharCode.call(this, 1, HYPHENMINUS);\n checkInteger.call(this, 2, DISALLOW_SIGN);\n this.next();\n\n b = this.substrToCursor(start + sign + 1);\n }\n }\n\n // <ndashdigit-dimension>\n // <ndash-dimension> <signless-integer>\n // <n-dimension>\n // <n-dimension> <signed-integer>\n // <n-dimension> ['+' | '-'] <signless-integer>\n else if (this.tokenType === Dimension) {\n const code = this.charCodeAt(this.tokenStart);\n const sign = code === PLUSSIGN || code === HYPHENMINUS;\n let i = this.tokenStart + sign;\n\n for (; i < this.tokenEnd; i++) {\n if (!isDigit(this.charCodeAt(i))) {\n break;\n }\n }\n\n if (i === this.tokenStart + sign) {\n this.error('Integer is expected', this.tokenStart + sign);\n }\n\n expectCharCode.call(this, i - this.tokenStart, N);\n a = this.substring(start, i);\n\n // <n-dimension>\n // <n-dimension> <signed-integer>\n // <n-dimension> ['+' | '-'] <signless-integer>\n if (i + 1 === this.tokenEnd) {\n this.next();\n b = consumeB.call(this);\n } else {\n expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS);\n\n // <ndash-dimension> <signless-integer>\n if (i + 2 === this.tokenEnd) {\n this.next();\n this.skipSC();\n checkTokenIsInteger.call(this, DISALLOW_SIGN);\n b = '-' + this.consume(Number);\n }\n // <ndashdigit-dimension>\n else {\n checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN);\n this.next();\n b = this.substrToCursor(i + 1);\n }\n }\n } else {\n this.error();\n }\n\n if (a !== null && a.charCodeAt(0) === PLUSSIGN) {\n a = a.substr(1);\n }\n\n if (b !== null && b.charCodeAt(0) === PLUSSIGN) {\n b = b.substr(1);\n }\n\n return {\n type: 'AnPlusB',\n loc: this.getLocation(start, this.tokenStart),\n a,\n b\n };\n}\n\nexport function generate(node) {\n if (node.a) {\n const a =\n node.a === '+1' && 'n' ||\n node.a === '1' && 'n' ||\n node.a === '-1' && '-n' ||\n node.a + 'n';\n\n if (node.b) {\n const b = node.b[0] === '-' || node.b[0] === '+'\n ? node.b\n : '+' + node.b;\n this.tokenize(a + b);\n } else {\n this.tokenize(a);\n }\n } else {\n this.tokenize(node.b);\n }\n}\n","import {\n AtKeyword,\n Semicolon,\n LeftCurlyBracket,\n RightCurlyBracket\n} from '../../tokenizer/index.js';\n\nfunction consumeRaw() {\n return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon, true);\n}\n\nfunction isDeclarationBlockAtrule() {\n for (let offset = 1, type; type = this.lookupType(offset); offset++) {\n if (type === RightCurlyBracket) {\n return true;\n }\n\n if (type === LeftCurlyBracket ||\n type === AtKeyword) {\n return false;\n }\n }\n\n return false;\n}\n\n\nexport const name = 'Atrule';\nexport const walkContext = 'atrule';\nexport const structure = {\n name: String,\n prelude: ['AtrulePrelude', 'Raw', null],\n block: ['Block', null]\n};\n\nexport function parse(isDeclaration = false) {\n const start = this.tokenStart;\n let name;\n let nameLowerCase;\n let prelude = null;\n let block = null;\n\n this.eat(AtKeyword);\n\n name = this.substrToCursor(start + 1);\n nameLowerCase = name.toLowerCase();\n this.skipSC();\n\n // parse prelude\n if (this.eof === false &&\n this.tokenType !== LeftCurlyBracket &&\n this.tokenType !== Semicolon) {\n if (this.parseAtrulePrelude) {\n prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name, isDeclaration), consumeRaw);\n } else {\n prelude = consumeRaw.call(this, this.tokenIndex);\n }\n\n this.skipSC();\n }\n\n switch (this.tokenType) {\n case Semicolon:\n this.next();\n break;\n\n case LeftCurlyBracket:\n if (hasOwnProperty.call(this.atrule, nameLowerCase) &&\n typeof this.atrule[nameLowerCase].block === 'function') {\n block = this.atrule[nameLowerCase].block.call(this, isDeclaration);\n } else {\n // TODO: should consume block content as Raw?\n block = this.Block(isDeclarationBlockAtrule.call(this));\n }\n\n break;\n }\n\n return {\n type: 'Atrule',\n loc: this.getLocation(start, this.tokenStart),\n name,\n prelude,\n block\n };\n}\n\nexport function generate(node) {\n this.token(AtKeyword, '@' + node.name);\n\n if (node.prelude !== null) {\n this.node(node.prelude);\n }\n\n if (node.block) {\n this.node(node.block);\n } else {\n this.token(Semicolon, ';');\n }\n}\n","import {\n Semicolon,\n LeftCurlyBracket\n} from '../../tokenizer/index.js';\n\nexport const name = 'AtrulePrelude';\nexport const walkContext = 'atrulePrelude';\nexport const structure = {\n children: [[]]\n};\n\nexport function parse(name) {\n let children = null;\n\n if (name !== null) {\n name = name.toLowerCase();\n }\n\n this.skipSC();\n\n if (hasOwnProperty.call(this.atrule, name) &&\n typeof this.atrule[name].prelude === 'function') {\n // custom consumer\n children = this.atrule[name].prelude.call(this);\n } else {\n // default consumer\n children = this.readSequence(this.scope.AtrulePrelude);\n }\n\n this.skipSC();\n\n if (this.eof !== true &&\n this.tokenType !== LeftCurlyBracket &&\n this.tokenType !== Semicolon) {\n this.error('Semicolon or block is expected');\n }\n\n return {\n type: 'AtrulePrelude',\n loc: this.getLocationFromList(children),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node);\n}\n","import {\n Ident,\n String as StringToken,\n Delim,\n LeftSquareBracket,\n RightSquareBracket\n} from '../../tokenizer/index.js';\n\nconst DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($)\nconst ASTERISK = 0x002A; // U+002A ASTERISK (*)\nconst EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=)\nconst CIRCUMFLEXACCENT = 0x005E; // U+005E (^)\nconst VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)\nconst TILDE = 0x007E; // U+007E TILDE (~)\n\nfunction getAttributeName() {\n if (this.eof) {\n this.error('Unexpected end of input');\n }\n\n const start = this.tokenStart;\n let expectIdent = false;\n\n if (this.isDelim(ASTERISK)) {\n expectIdent = true;\n this.next();\n } else if (!this.isDelim(VERTICALLINE)) {\n this.eat(Ident);\n }\n\n if (this.isDelim(VERTICALLINE)) {\n if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) {\n this.next();\n this.eat(Ident);\n } else if (expectIdent) {\n this.error('Identifier is expected', this.tokenEnd);\n }\n } else if (expectIdent) {\n this.error('Vertical line is expected');\n }\n\n return {\n type: 'Identifier',\n loc: this.getLocation(start, this.tokenStart),\n name: this.substrToCursor(start)\n };\n}\n\nfunction getOperator() {\n const start = this.tokenStart;\n const code = this.charCodeAt(start);\n\n if (code !== EQUALSSIGN && // =\n code !== TILDE && // ~=\n code !== CIRCUMFLEXACCENT && // ^=\n code !== DOLLARSIGN && // $=\n code !== ASTERISK && // *=\n code !== VERTICALLINE // |=\n ) {\n this.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected');\n }\n\n this.next();\n\n if (code !== EQUALSSIGN) {\n if (!this.isDelim(EQUALSSIGN)) {\n this.error('Equal sign is expected');\n }\n\n this.next();\n }\n\n return this.substrToCursor(start);\n}\n\n// '[' <wq-name> ']'\n// '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'\nexport const name = 'AttributeSelector';\nexport const structure = {\n name: 'Identifier',\n matcher: [String, null],\n value: ['String', 'Identifier', null],\n flags: [String, null]\n};\n\nexport function parse() {\n const start = this.tokenStart;\n let name;\n let matcher = null;\n let value = null;\n let flags = null;\n\n this.eat(LeftSquareBracket);\n this.skipSC();\n\n name = getAttributeName.call(this);\n this.skipSC();\n\n if (this.tokenType !== RightSquareBracket) {\n // avoid case `[name i]`\n if (this.tokenType !== Ident) {\n matcher = getOperator.call(this);\n\n this.skipSC();\n\n value = this.tokenType === StringToken\n ? this.String()\n : this.Identifier();\n\n this.skipSC();\n }\n\n // attribute flags\n if (this.tokenType === Ident) {\n flags = this.consume(Ident);\n\n this.skipSC();\n }\n }\n\n this.eat(RightSquareBracket);\n\n return {\n type: 'AttributeSelector',\n loc: this.getLocation(start, this.tokenStart),\n name,\n matcher,\n value,\n flags\n };\n}\n\nexport function generate(node) {\n this.token(Delim, '[');\n this.node(node.name);\n\n if (node.matcher !== null) {\n this.tokenize(node.matcher);\n this.node(node.value);\n }\n\n if (node.flags !== null) {\n this.token(Ident, node.flags);\n }\n\n this.token(Delim, ']');\n}\n","import {\n WhiteSpace,\n Comment,\n Semicolon,\n AtKeyword,\n LeftCurlyBracket,\n RightCurlyBracket\n} from '../../tokenizer/index.js';\n\nconst AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)\n\nfunction consumeRaw() {\n return this.Raw(null, true);\n}\nfunction consumeRule() {\n return this.parseWithFallback(this.Rule, consumeRaw);\n}\nfunction consumeRawDeclaration() {\n return this.Raw(this.consumeUntilSemicolonIncluded, true);\n}\nfunction consumeDeclaration() {\n if (this.tokenType === Semicolon) {\n return consumeRawDeclaration.call(this, this.tokenIndex);\n }\n\n const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration);\n\n if (this.tokenType === Semicolon) {\n this.next();\n }\n\n return node;\n}\n\nexport const name = 'Block';\nexport const walkContext = 'block';\nexport const structure = {\n children: [[\n 'Atrule',\n 'Rule',\n 'Declaration'\n ]]\n};\n\nexport function parse(isStyleBlock) {\n const consumer = isStyleBlock ? consumeDeclaration : consumeRule;\n const start = this.tokenStart;\n let children = this.createList();\n\n this.eat(LeftCurlyBracket);\n\n scan:\n while (!this.eof) {\n switch (this.tokenType) {\n case RightCurlyBracket:\n break scan;\n\n case WhiteSpace:\n case Comment:\n this.next();\n break;\n\n case AtKeyword:\n children.push(this.parseWithFallback(this.Atrule.bind(this, isStyleBlock), consumeRaw));\n break;\n\n default:\n if (isStyleBlock && this.isDelim(AMPERSAND)) {\n children.push(consumeRule.call(this));\n } else {\n children.push(consumer.call(this));\n }\n }\n }\n\n if (!this.eof) {\n this.eat(RightCurlyBracket);\n }\n\n return {\n type: 'Block',\n loc: this.getLocation(start, this.tokenStart),\n children\n };\n}\n\nexport function generate(node) {\n this.token(LeftCurlyBracket, '{');\n this.children(node, prev => {\n if (prev.type === 'Declaration') {\n this.token(Semicolon, ';');\n }\n });\n this.token(RightCurlyBracket, '}');\n}\n","import {\n Delim,\n LeftSquareBracket,\n RightSquareBracket\n} from '../../tokenizer/index.js';\n\nexport const name = 'Brackets';\nexport const structure = {\n children: [[]]\n};\n\nexport function parse(readSequence, recognizer) {\n const start = this.tokenStart;\n let children = null;\n\n this.eat(LeftSquareBracket);\n\n children = readSequence.call(this, recognizer);\n\n if (!this.eof) {\n this.eat(RightSquareBracket);\n }\n\n return {\n type: 'Brackets',\n loc: this.getLocation(start, this.tokenStart),\n children\n };\n}\n\nexport function generate(node) {\n this.token(Delim, '[');\n this.children(node);\n this.token(Delim, ']');\n}\n","import { CDC } from '../../tokenizer/index.js';\n\nexport const name = 'CDC';\nexport const structure = [];\n\nexport function parse() {\n const start = this.tokenStart;\n\n this.eat(CDC); // -->\n\n return {\n type: 'CDC',\n loc: this.getLocation(start, this.tokenStart)\n };\n}\n\nexport function generate() {\n this.token(CDC, '-->');\n}\n","import { CDO } from '../../tokenizer/index.js';\n\nexport const name = 'CDO';\nexport const structure = [];\n\nexport function parse() {\n const start = this.tokenStart;\n\n this.eat(CDO); // <!--\n\n return {\n type: 'CDO',\n loc: this.getLocation(start, this.tokenStart)\n };\n}\n\nexport function generate() {\n this.token(CDO, '<!--');\n}\n","import { Delim, Ident } from '../../tokenizer/index.js';\n\nconst FULLSTOP = 0x002E; // U+002E FULL STOP (.)\n\n// '.' ident\nexport const name = 'ClassSelector';\nexport const structure = {\n name: String\n};\n\nexport function parse() {\n this.eatDelim(FULLSTOP);\n\n return {\n type: 'ClassSelector',\n loc: this.getLocation(this.tokenStart - 1, this.tokenEnd),\n name: this.consume(Ident)\n };\n}\n\nexport function generate(node) {\n this.token(Delim, '.');\n this.token(Ident, node.name);\n}\n","import { WhiteSpace, Delim } from '../../tokenizer/index.js';\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\nconst GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)\nconst TILDE = 0x007E; // U+007E TILDE (~)\n\nexport const name = 'Combinator';\nexport const structure = {\n name: String\n};\n\n// + | > | ~ | /deep/\nexport function parse() {\n const start = this.tokenStart;\n let name;\n\n switch (this.tokenType) {\n case WhiteSpace:\n name = ' ';\n break;\n\n case Delim:\n switch (this.charCodeAt(this.tokenStart)) {\n case GREATERTHANSIGN:\n case PLUSSIGN:\n case TILDE:\n this.next();\n break;\n\n case SOLIDUS:\n this.next();\n this.eatIdent('deep');\n this.eatDelim(SOLIDUS);\n break;\n\n default:\n this.error('Combinator is expected');\n }\n\n name = this.substrToCursor(start);\n break;\n }\n\n return {\n type: 'Combinator',\n loc: this.getLocation(start, this.tokenStart),\n name\n };\n}\n\nexport function generate(node) {\n this.tokenize(node.name);\n}\n","import { Comment } from '../../tokenizer/index.js';\n\nconst ASTERISK = 0x002A; // U+002A ASTERISK (*)\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\n\n\nexport const name = 'Comment';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n const start = this.tokenStart;\n let end = this.tokenEnd;\n\n this.eat(Comment);\n\n if ((end - start + 2) >= 2 &&\n this.charCodeAt(end - 2) === ASTERISK &&\n this.charCodeAt(end - 1) === SOLIDUS) {\n end -= 2;\n }\n\n return {\n type: 'Comment',\n loc: this.getLocation(start, this.tokenStart),\n value: this.substring(start + 2, end)\n };\n}\n\nexport function generate(node) {\n this.token(Comment, '/*' + node.value + '*/');\n}\n","import {\n WhiteSpace,\n Comment,\n Ident,\n LeftParenthesis,\n RightParenthesis,\n Function as FunctionToken,\n Colon,\n EOF\n} from '../../tokenizer/index.js';\n\nconst likelyFeatureToken = new Set([Colon, RightParenthesis, EOF]);\n\nexport const name = 'Condition';\nexport const structure = {\n kind: String,\n children: [[\n 'Identifier',\n 'Feature',\n 'FeatureFunction',\n 'FeatureRange',\n 'SupportsDeclaration'\n ]]\n};\n\nfunction featureOrRange(kind) {\n if (this.lookupTypeNonSC(1) === Ident &&\n likelyFeatureToken.has(this.lookupTypeNonSC(2))) {\n return this.Feature(kind);\n }\n\n return this.FeatureRange(kind);\n}\n\nconst parentheses = {\n media: featureOrRange,\n container: featureOrRange,\n supports() {\n return this.SupportsDeclaration();\n }\n};\n\nexport function parse(kind = 'media') {\n const children = this.createList();\n\n scan: while (!this.eof) {\n switch (this.tokenType) {\n case Comment:\n case WhiteSpace:\n this.next();\n continue;\n\n case Ident:\n children.push(this.Identifier());\n break;\n\n case LeftParenthesis: {\n let term = this.parseWithFallback(\n () => parentheses[kind].call(this, kind),\n () => null\n );\n\n if (!term) {\n term = this.parseWithFallback(\n () => {\n this.eat(LeftParenthesis);\n const res = this.Condition(kind);\n this.eat(RightParenthesis);\n return res;\n },\n () => {\n return this.GeneralEnclosed(kind);\n }\n );\n }\n\n children.push(term);\n break;\n }\n\n case FunctionToken: {\n let term = this.parseWithFallback(\n () => this.FeatureFunction(kind),\n () => null\n );\n\n if (!term) {\n term = this.GeneralEnclosed(kind);\n }\n\n children.push(term);\n break;\n }\n\n default:\n break scan;\n }\n }\n\n if (children.isEmpty) {\n this.error('Condition is expected');\n }\n\n return {\n type: 'Condition',\n loc: this.getLocationFromList(children),\n kind,\n children\n };\n}\n\nexport function generate(node) {\n node.children.forEach(child => {\n if (child.type === 'Condition') {\n this.token(LeftParenthesis, '(');\n this.node(child);\n this.token(RightParenthesis, ')');\n } else {\n this.node(child);\n }\n });\n}\n\n","import { isCustomProperty } from '../../utils/names.js';\nimport {\n Ident,\n Hash,\n Colon,\n Semicolon,\n Delim,\n WhiteSpace\n} from '../../tokenizer/index.js';\n\nconst EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)\nconst NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)\nconst DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($)\nconst AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)\nconst ASTERISK = 0x002A; // U+002A ASTERISK (*)\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\n\nfunction consumeValueRaw() {\n return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, true);\n}\n\nfunction consumeCustomPropertyRaw() {\n return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);\n}\n\nfunction consumeValue() {\n const startValueToken = this.tokenIndex;\n const value = this.Value();\n\n if (value.type !== 'Raw' &&\n this.eof === false &&\n this.tokenType !== Semicolon &&\n this.isDelim(EXCLAMATIONMARK) === false &&\n this.isBalanceEdge(startValueToken) === false) {\n this.error();\n }\n\n return value;\n}\n\nexport const name = 'Declaration';\nexport const walkContext = 'declaration';\nexport const structure = {\n important: [Boolean, String],\n property: String,\n value: ['Value', 'Raw']\n};\n\nexport function parse() {\n const start = this.tokenStart;\n const startToken = this.tokenIndex;\n const property = readProperty.call(this);\n const customProperty = isCustomProperty(property);\n const parseValue = customProperty ? this.parseCustomProperty : this.parseValue;\n const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw;\n let important = false;\n let value;\n\n this.skipSC();\n this.eat(Colon);\n\n const valueStart = this.tokenIndex;\n\n if (!customProperty) {\n this.skipSC();\n }\n\n if (parseValue) {\n value = this.parseWithFallback(consumeValue, consumeRaw);\n } else {\n value = consumeRaw.call(this, this.tokenIndex);\n }\n\n if (customProperty && value.type === 'Value' && value.children.isEmpty) {\n for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) {\n if (this.lookupType(offset) === WhiteSpace) {\n value.children.appendData({\n type: 'WhiteSpace',\n loc: null,\n value: ' '\n });\n break;\n }\n }\n }\n\n if (this.isDelim(EXCLAMATIONMARK)) {\n important = getImportant.call(this);\n this.skipSC();\n }\n\n // Do not include semicolon to range per spec\n // https://drafts.csswg.org/css-syntax/#declaration-diagram\n\n if (this.eof === false &&\n this.tokenType !== Semicolon &&\n this.isBalanceEdge(startToken) === false) {\n this.error();\n }\n\n return {\n type: 'Declaration',\n loc: this.getLocation(start, this.tokenStart),\n important,\n property,\n value\n };\n}\n\nexport function generate(node) {\n this.token(Ident, node.property);\n this.token(Colon, ':');\n this.node(node.value);\n\n if (node.important) {\n this.token(Delim, '!');\n this.token(Ident, node.important === true ? 'important' : node.important);\n }\n}\n\nfunction readProperty() {\n const start = this.tokenStart;\n\n // hacks\n if (this.tokenType === Delim) {\n switch (this.charCodeAt(this.tokenStart)) {\n case ASTERISK:\n case DOLLARSIGN:\n case PLUSSIGN:\n case NUMBERSIGN:\n case AMPERSAND:\n this.next();\n break;\n\n // TODO: not sure we should support this hack\n case SOLIDUS:\n this.next();\n if (this.isDelim(SOLIDUS)) {\n this.next();\n }\n break;\n }\n }\n\n if (this.tokenType === Hash) {\n this.eat(Hash);\n } else {\n this.eat(Ident);\n }\n\n return this.substrToCursor(start);\n}\n\n// ! ws* important\nfunction getImportant() {\n this.eat(Delim);\n this.skipSC();\n\n const important = this.consume(Ident);\n\n // store original value in case it differ from `important`\n // for better original source restoring and hacks like `!ie` support\n return important === 'important' ? true : important;\n}\n","import {\n WhiteSpace,\n Comment,\n Semicolon,\n AtKeyword\n} from '../../tokenizer/index.js';\n\nconst AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)\n\nfunction consumeRaw() {\n return this.Raw(this.consumeUntilSemicolonIncluded, true);\n}\n\nexport const name = 'DeclarationList';\nexport const structure = {\n children: [[\n 'Declaration',\n 'Atrule',\n 'Rule'\n ]]\n};\n\nexport function parse() {\n const children = this.createList();\n\n scan:\n while (!this.eof) {\n switch (this.tokenType) {\n case WhiteSpace:\n case Comment:\n case Semicolon:\n this.next();\n break;\n\n case AtKeyword:\n children.push(this.parseWithFallback(this.Atrule.bind(this, true), consumeRaw));\n break;\n\n default:\n if (this.isDelim(AMPERSAND)) {\n children.push(this.parseWithFallback(this.Rule, consumeRaw));\n } else {\n children.push(this.parseWithFallback(this.Declaration, consumeRaw));\n }\n }\n }\n\n return {\n type: 'DeclarationList',\n loc: this.getLocationFromList(children),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node, prev => {\n if (prev.type === 'Declaration') {\n this.token(Semicolon, ';');\n }\n });\n}\n\n","import { Dimension } from '../../tokenizer/index.js';\n\nexport const name = 'Dimension';\nexport const structure = {\n value: String,\n unit: String\n};\n\nexport function parse() {\n const start = this.tokenStart;\n const value = this.consumeNumber(Dimension);\n\n return {\n type: 'Dimension',\n loc: this.getLocation(start, this.tokenStart),\n value,\n unit: this.substring(start + value.length, this.tokenStart)\n };\n}\n\nexport function generate(node) {\n this.token(Dimension, node.value + node.unit);\n}\n","import {\n Ident,\n Number,\n Dimension,\n Function as FunctionToken,\n LeftParenthesis,\n RightParenthesis,\n Colon,\n Delim\n} from '../../tokenizer/index.js';\n\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\n\nexport const name = 'Feature';\nexport const structure = {\n kind: String,\n name: String,\n value: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function', null]\n};\n\nexport function parse(kind) {\n const start = this.tokenStart;\n let name;\n let value = null;\n\n this.eat(LeftParenthesis);\n this.skipSC();\n\n name = this.consume(Ident);\n this.skipSC();\n\n if (this.tokenType !== RightParenthesis) {\n this.eat(Colon);\n this.skipSC();\n\n switch (this.tokenType) {\n case Number:\n if (this.lookupNonWSType(1) === Delim) {\n value = this.Ratio();\n } else {\n value = this.Number();\n }\n\n break;\n\n case Dimension:\n value = this.Dimension();\n break;\n\n case Ident:\n value = this.Identifier();\n break;\n\n case FunctionToken:\n value = this.parseWithFallback(\n () => {\n const res = this.Function(this.readSequence, this.scope.Value);\n\n this.skipSC();\n\n if (this.isDelim(SOLIDUS)) {\n this.error();\n }\n\n return res;\n },\n () => {\n return this.Ratio();\n }\n );\n break;\n\n default:\n this.error('Number, dimension, ratio or identifier is expected');\n }\n\n this.skipSC();\n }\n\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'Feature',\n loc: this.getLocation(start, this.tokenStart),\n kind,\n name,\n value\n };\n}\n\nexport function generate(node) {\n this.token(LeftParenthesis, '(');\n this.token(Ident, node.name);\n\n if (node.value !== null) {\n this.token(Colon, ':');\n this.node(node.value);\n }\n\n this.token(RightParenthesis, ')');\n}\n","import {\n Function as FunctionToken,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nexport const name = 'FeatureFunction';\nexport const structure = {\n kind: String,\n feature: String,\n value: ['Declaration', 'Selector']\n};\n\nfunction getFeatureParser(kind, name) {\n const featuresOfKind = this.features[kind] || {};\n const parser = featuresOfKind[name];\n\n if (typeof parser !== 'function') {\n this.error(`Unknown feature ${name}()`);\n }\n\n return parser;\n}\n\nexport function parse(kind = 'unknown') {\n const start = this.tokenStart;\n const functionName = this.consumeFunctionName();\n const valueParser = getFeatureParser.call(this, kind, functionName.toLowerCase());\n\n this.skipSC();\n\n const value = this.parseWithFallback(\n () => {\n const startValueToken = this.tokenIndex;\n const value = valueParser.call(this);\n\n if (this.eof === false &&\n this.isBalanceEdge(startValueToken) === false) {\n this.error();\n }\n\n return value;\n },\n () => this.Raw(null, false)\n );\n\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'FeatureFunction',\n loc: this.getLocation(start, this.tokenStart),\n kind,\n feature: functionName,\n value\n };\n}\n\nexport function generate(node) {\n this.token(FunctionToken, node.feature + '(');\n this.node(node.value);\n this.token(RightParenthesis, ')');\n}\n","import {\n Ident,\n Number,\n Dimension,\n Function as FunctionToken,\n LeftParenthesis,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\nconst LESSTHANSIGN = 0x003C; // U+003C LESS-THAN SIGN (<)\nconst EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=)\nconst GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)\n\nexport const name = 'FeatureRange';\nexport const structure = {\n kind: String,\n left: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function'],\n leftComparison: String,\n middle: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function'],\n rightComparison: [String, null],\n right: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function', null]\n};\n\nfunction readTerm() {\n this.skipSC();\n\n switch (this.tokenType) {\n case Number:\n if (this.isDelim(SOLIDUS, this.lookupOffsetNonSC(1))) {\n return this.Ratio();\n } else {\n return this.Number();\n }\n\n case Dimension:\n return this.Dimension();\n\n case Ident:\n return this.Identifier();\n\n case FunctionToken:\n return this.parseWithFallback(\n () => {\n const res = this.Function(this.readSequence, this.scope.Value);\n\n this.skipSC();\n\n if (this.isDelim(SOLIDUS)) {\n this.error();\n }\n\n return res;\n },\n () => {\n return this.Ratio();\n }\n );\n\n default:\n this.error('Number, dimension, ratio or identifier is expected');\n }\n}\n\nfunction readComparison(expectColon) {\n this.skipSC();\n\n if (this.isDelim(LESSTHANSIGN) ||\n this.isDelim(GREATERTHANSIGN)) {\n const value = this.source[this.tokenStart];\n\n this.next();\n\n if (this.isDelim(EQUALSSIGN)) {\n this.next();\n return value + '=';\n }\n\n return value;\n }\n\n if (this.isDelim(EQUALSSIGN)) {\n return '=';\n }\n\n this.error(`Expected ${expectColon ? '\":\", ' : ''}\"<\", \">\", \"=\" or \")\"`);\n}\n\nexport function parse(kind = 'unknown') {\n const start = this.tokenStart;\n\n this.skipSC();\n this.eat(LeftParenthesis);\n\n const left = readTerm.call(this);\n const leftComparison = readComparison.call(this, left.type === 'Identifier');\n const middle = readTerm.call(this);\n let rightComparison = null;\n let right = null;\n\n if (this.lookupNonWSType(0) !== RightParenthesis) {\n rightComparison = readComparison.call(this);\n right = readTerm.call(this);\n }\n\n this.skipSC();\n this.eat(RightParenthesis);\n\n return {\n type: 'FeatureRange',\n loc: this.getLocation(start, this.tokenStart),\n kind,\n left,\n leftComparison,\n middle,\n rightComparison,\n right\n };\n}\n\nexport function generate(node) {\n this.token(LeftParenthesis, '(');\n this.node(node.left);\n this.tokenize(node.leftComparison);\n this.node(node.middle);\n\n if (node.right) {\n this.tokenize(node.rightComparison);\n this.node(node.right);\n }\n\n this.token(RightParenthesis, ')');\n}\n","import {\n Function as FunctionToken,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\n\nexport const name = 'Function';\nexport const walkContext = 'function';\nexport const structure = {\n name: String,\n children: [[]]\n};\n\n// <function-token> <sequence> )\nexport function parse(readSequence, recognizer) {\n const start = this.tokenStart;\n const name = this.consumeFunctionName();\n const nameLowerCase = name.toLowerCase();\n let children;\n\n children = recognizer.hasOwnProperty(nameLowerCase)\n ? recognizer[nameLowerCase].call(this, recognizer)\n : readSequence.call(this, recognizer);\n\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'Function',\n loc: this.getLocation(start, this.tokenStart),\n name,\n children\n };\n}\n\nexport function generate(node) {\n this.token(FunctionToken, node.name + '(');\n this.children(node);\n this.token(RightParenthesis, ')');\n}\n","import {\n Function as FunctionToken,\n LeftParenthesis,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\n\nexport const name = 'GeneralEnclosed';\nexport const structure = {\n kind: String,\n function: [String, null],\n children: [[]]\n};\n\n// <function-token> <any-value> )\n// ( <any-value> )\nexport function parse(kind) {\n const start = this.tokenStart;\n let functionName = null;\n\n if (this.tokenType === FunctionToken) {\n functionName = this.consumeFunctionName();\n } else {\n this.eat(LeftParenthesis);\n }\n\n const children = this.parseWithFallback(\n () => {\n const startValueToken = this.tokenIndex;\n const children = this.readSequence(this.scope.Value);\n\n if (this.eof === false &&\n this.isBalanceEdge(startValueToken) === false) {\n this.error();\n }\n\n return children;\n },\n () => this.createSingleNodeList(\n this.Raw(null, false)\n )\n );\n\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'GeneralEnclosed',\n loc: this.getLocation(start, this.tokenStart),\n kind,\n function: functionName,\n children\n };\n}\n\nexport function generate(node) {\n if (node.function) {\n this.token(FunctionToken, node.function + '(');\n } else {\n this.token(LeftParenthesis, '(');\n }\n\n this.children(node);\n this.token(RightParenthesis, ')');\n}\n","import { Hash } from '../../tokenizer/index.js';\n\n// '#' ident\nexport const xxx = 'XXX';\nexport const name = 'Hash';\nexport const structure = {\n value: String\n};\nexport function parse() {\n const start = this.tokenStart;\n\n this.eat(Hash);\n\n return {\n type: 'Hash',\n loc: this.getLocation(start, this.tokenStart),\n value: this.substrToCursor(start + 1)\n };\n}\nexport function generate(node) {\n this.token(Hash, '#' + node.value);\n}\n\n","import { Ident } from '../../tokenizer/index.js';\n\nexport const name = 'Identifier';\nexport const structure = {\n name: String\n};\n\nexport function parse() {\n return {\n type: 'Identifier',\n loc: this.getLocation(this.tokenStart, this.tokenEnd),\n name: this.consume(Ident)\n };\n}\n\nexport function generate(node) {\n this.token(Ident, node.name);\n}\n","import { Hash, Delim } from '../../tokenizer/index.js';\n\nexport const name = 'IdSelector';\nexport const structure = {\n name: String\n};\n\nexport function parse() {\n const start = this.tokenStart;\n\n // TODO: check value is an ident\n this.eat(Hash);\n\n return {\n type: 'IdSelector',\n loc: this.getLocation(start, this.tokenStart),\n name: this.substrToCursor(start + 1)\n };\n}\n\nexport function generate(node) {\n // Using Delim instead of Hash is a hack to avoid for a whitespace between ident and id-selector\n // in safe mode (e.g. \"a#id\"), because IE11 doesn't allow a sequence <ident-token> <hash-token>\n // without a whitespace in values (e.g. \"1px solid#000\")\n this.token(Delim, '#' + node.name);\n}\n","import { Ident, Delim } from '../../tokenizer/index.js';\n\nconst FULLSTOP = 0x002E; // U+002E FULL STOP (.)\n\nexport const name = 'Layer';\nexport const structure = {\n name: String\n};\n\nexport function parse() {\n let tokenStart = this.tokenStart;\n let name = this.consume(Ident);\n\n while (this.isDelim(FULLSTOP)) {\n this.eat(Delim);\n name += '.' + this.consume(Ident);\n }\n\n return {\n type: 'Layer',\n loc: this.getLocation(tokenStart, this.tokenStart),\n name\n };\n}\n\nexport function generate(node) {\n this.tokenize(node.name);\n}\n","import { Comma } from '../../tokenizer/index.js';\n\nexport const name = 'LayerList';\nexport const structure = {\n children: [[\n 'Layer'\n ]]\n};\n\nexport function parse() {\n const children = this.createList();\n\n this.skipSC();\n\n while (!this.eof) {\n children.push(this.Layer());\n\n if (this.lookupTypeNonSC(0) !== Comma) {\n break;\n }\n\n this.skipSC();\n this.next();\n this.skipSC();\n }\n\n return {\n type: 'LayerList',\n loc: this.getLocationFromList(children),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node, () => this.token(Comma, ','));\n}\n","import {\n Comma,\n EOF,\n Ident,\n LeftCurlyBracket,\n LeftParenthesis,\n Function as FunctionToken,\n Semicolon\n} from '../../tokenizer/index.js';\n\nexport const name = 'MediaQuery';\nexport const structure = {\n modifier: [String, null],\n mediaType: [String, null],\n condition: ['Condition', null]\n};\n\nexport function parse() {\n const start = this.tokenStart;\n let modifier = null;\n let mediaType = null;\n let condition = null;\n\n this.skipSC();\n\n if (this.tokenType === Ident && this.lookupTypeNonSC(1) !== LeftParenthesis) {\n // [ not | only ]? <media-type>\n const ident = this.consume(Ident);\n const identLowerCase = ident.toLowerCase();\n\n if (identLowerCase === 'not' || identLowerCase === 'only') {\n this.skipSC();\n modifier = identLowerCase;\n mediaType = this.consume(Ident);\n } else {\n mediaType = ident;\n }\n\n switch (this.lookupTypeNonSC(0)) {\n case Ident: {\n // and <media-condition-without-or>\n this.skipSC();\n this.eatIdent('and');\n condition = this.Condition('media');\n break;\n }\n\n case LeftCurlyBracket:\n case Semicolon:\n case Comma:\n case EOF:\n break;\n\n default:\n this.error('Identifier or parenthesis is expected');\n }\n } else {\n switch (this.tokenType) {\n case Ident:\n case LeftParenthesis:\n case FunctionToken: {\n // <media-condition>\n condition = this.Condition('media');\n break;\n }\n\n case LeftCurlyBracket:\n case Semicolon:\n case EOF:\n break;\n\n default:\n this.error('Identifier or parenthesis is expected');\n }\n }\n\n return {\n type: 'MediaQuery',\n loc: this.getLocation(start, this.tokenStart),\n modifier,\n mediaType,\n condition\n };\n}\n\nexport function generate(node) {\n if (node.mediaType) {\n if (node.modifier) {\n this.token(Ident, node.modifier);\n }\n\n this.token(Ident, node.mediaType);\n\n if (node.condition) {\n this.token(Ident, 'and');\n this.node(node.condition);\n }\n } else if (node.condition) {\n this.node(node.condition);\n }\n}\n\n","import { Comma } from '../../tokenizer/index.js';\n\nexport const name = 'MediaQueryList';\nexport const structure = {\n children: [[\n 'MediaQuery'\n ]]\n};\n\nexport function parse() {\n const children = this.createList();\n\n this.skipSC();\n\n while (!this.eof) {\n children.push(this.MediaQuery());\n\n if (this.tokenType !== Comma) {\n break;\n }\n\n this.next();\n }\n\n return {\n type: 'MediaQueryList',\n loc: this.getLocationFromList(children),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node, () => this.token(Comma, ','));\n}\n","import { Delim } from '../../tokenizer/index.js';\n\nconst AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)\n\nexport const name = 'NestingSelector';\nexport const structure = {\n};\n\nexport function parse() {\n const start = this.tokenStart;\n\n this.eatDelim(AMPERSAND);\n\n return {\n type: 'NestingSelector',\n loc: this.getLocation(start, this.tokenStart)\n };\n}\n\nexport function generate() {\n this.token(Delim, '&');\n}\n","import { Ident } from '../../tokenizer/index.js';\n\nexport const name = 'Nth';\nexport const structure = {\n nth: ['AnPlusB', 'Identifier'],\n selector: ['SelectorList', null]\n};\n\nexport function parse() {\n this.skipSC();\n\n const start = this.tokenStart;\n let end = start;\n let selector = null;\n let nth;\n\n if (this.lookupValue(0, 'odd') || this.lookupValue(0, 'even')) {\n nth = this.Identifier();\n } else {\n nth = this.AnPlusB();\n }\n\n end = this.tokenStart;\n this.skipSC();\n\n if (this.lookupValue(0, 'of')) {\n this.next();\n\n selector = this.SelectorList();\n end = this.tokenStart;\n }\n\n return {\n type: 'Nth',\n loc: this.getLocation(start, end),\n nth,\n selector\n };\n}\n\nexport function generate(node) {\n this.node(node.nth);\n if (node.selector !== null) {\n this.token(Ident, 'of');\n this.node(node.selector);\n }\n}\n","import { Number as NumberToken } from '../../tokenizer/index.js';\n\nexport const name = 'Number';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n return {\n type: 'Number',\n loc: this.getLocation(this.tokenStart, this.tokenEnd),\n value: this.consume(NumberToken)\n };\n}\n\nexport function generate(node) {\n this.token(NumberToken, node.value);\n}\n","// '/' | '*' | ',' | ':' | '+' | '-'\nexport const name = 'Operator';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n const start = this.tokenStart;\n\n this.next();\n\n return {\n type: 'Operator',\n loc: this.getLocation(start, this.tokenStart),\n value: this.substrToCursor(start)\n };\n}\n\nexport function generate(node) {\n this.tokenize(node.value);\n}\n","import {\n LeftParenthesis,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nexport const name = 'Parentheses';\nexport const structure = {\n children: [[]]\n};\n\nexport function parse(readSequence, recognizer) {\n const start = this.tokenStart;\n let children = null;\n\n this.eat(LeftParenthesis);\n\n children = readSequence.call(this, recognizer);\n\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'Parentheses',\n loc: this.getLocation(start, this.tokenStart),\n children\n };\n}\n\nexport function generate(node) {\n this.token(LeftParenthesis, '(');\n this.children(node);\n this.token(RightParenthesis, ')');\n}\n","import { Percentage } from '../../tokenizer/index.js';\n\nexport const name = 'Percentage';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n return {\n type: 'Percentage',\n loc: this.getLocation(this.tokenStart, this.tokenEnd),\n value: this.consumeNumber(Percentage)\n };\n}\n\nexport function generate(node) {\n this.token(Percentage, node.value + '%');\n}\n","import {\n Ident,\n Function as FunctionToken,\n Colon,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\n\nexport const name = 'PseudoClassSelector';\nexport const walkContext = 'function';\nexport const structure = {\n name: String,\n children: [['Raw'], null]\n};\n\n// : [ <ident> | <function-token> <any-value>? ) ]\nexport function parse() {\n const start = this.tokenStart;\n let children = null;\n let name;\n let nameLowerCase;\n\n this.eat(Colon);\n\n if (this.tokenType === FunctionToken) {\n name = this.consumeFunctionName();\n nameLowerCase = name.toLowerCase();\n\n if (this.lookupNonWSType(0) == RightParenthesis) {\n children = this.createList();\n } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {\n this.skipSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.skipSC();\n } else {\n children = this.createList();\n children.push(\n this.Raw(null, false)\n );\n }\n\n this.eat(RightParenthesis);\n } else {\n name = this.consume(Ident);\n }\n\n return {\n type: 'PseudoClassSelector',\n loc: this.getLocation(start, this.tokenStart),\n name,\n children\n };\n}\n\nexport function generate(node) {\n this.token(Colon, ':');\n\n if (node.children === null) {\n this.token(Ident, node.name);\n } else {\n this.token(FunctionToken, node.name + '(');\n this.children(node);\n this.token(RightParenthesis, ')');\n }\n}\n","import {\n Ident,\n Function as FunctionToken,\n Colon,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nexport const name = 'PseudoElementSelector';\nexport const walkContext = 'function';\nexport const structure = {\n name: String,\n children: [['Raw'], null]\n};\n\n// :: [ <ident> | <function-token> <any-value>? ) ]\nexport function parse() {\n const start = this.tokenStart;\n let children = null;\n let name;\n let nameLowerCase;\n\n this.eat(Colon);\n this.eat(Colon);\n\n if (this.tokenType === FunctionToken) {\n name = this.consumeFunctionName();\n nameLowerCase = name.toLowerCase();\n\n if (this.lookupNonWSType(0) == RightParenthesis) {\n children = this.createList();\n } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {\n this.skipSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.skipSC();\n } else {\n children = this.createList();\n children.push(\n this.Raw(null, false)\n );\n }\n\n this.eat(RightParenthesis);\n } else {\n name = this.consume(Ident);\n }\n\n return {\n type: 'PseudoElementSelector',\n loc: this.getLocation(start, this.tokenStart),\n name,\n children\n };\n}\n\nexport function generate(node) {\n this.token(Colon, ':');\n this.token(Colon, ':');\n\n if (node.children === null) {\n this.token(Ident, node.name);\n } else {\n this.token(FunctionToken, node.name + '(');\n this.children(node);\n this.token(RightParenthesis, ')');\n }\n}\n","import {\n Delim,\n Number as NumberToken,\n Function as FunctionToken\n} from '../../tokenizer/index.js';\n\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\n\n// Media Queries Level 3 defines terms of <ratio> as a positive (not zero or negative)\n// integers (see https://drafts.csswg.org/mediaqueries-3/#values)\n// However, Media Queries Level 4 removes any definition of values\n// (see https://drafts.csswg.org/mediaqueries-4/#values) and refers to\n// CSS Values and Units for detail. In CSS Values and Units Level 4 a <ratio>\n// definition was added (see https://drafts.csswg.org/css-values-4/#ratios) which\n// defines ratio as \"<number [0,∞]> [ / <number [0,∞]> ]?\" and based on it\n// any constrains on terms were removed. Parser also doesn't test numbers\n// in any way to make possible for linting and fixing them by the tools using CSSTree.\n// An additional syntax examination may be applied by a lexer.\nfunction consumeTerm() {\n this.skipSC();\n\n switch (this.tokenType) {\n case NumberToken:\n return this.Number();\n\n case FunctionToken:\n return this.Function(this.readSequence, this.scope.Value);\n\n default:\n this.error('Number of function is expected');\n }\n}\n\nexport const name = 'Ratio';\nexport const structure = {\n left: ['Number', 'Function'],\n right: ['Number', 'Function', null]\n};\n\n// <number [0,∞]> [ / <number [0,∞]> ]?\nexport function parse() {\n const start = this.tokenStart;\n const left = consumeTerm.call(this);\n let right = null;\n\n this.skipSC();\n if (this.isDelim(SOLIDUS)) {\n this.eatDelim(SOLIDUS);\n right = consumeTerm.call(this);\n }\n\n return {\n type: 'Ratio',\n loc: this.getLocation(start, this.tokenStart),\n left,\n right\n };\n}\n\nexport function generate(node) {\n this.node(node.left);\n this.token(Delim, '/');\n if (node.right) {\n this.node(node.right);\n } else {\n this.node(NumberToken, 1);\n }\n}\n","import { WhiteSpace } from '../../tokenizer/index.js';\n\nfunction getOffsetExcludeWS() {\n if (this.tokenIndex > 0) {\n if (this.lookupType(-1) === WhiteSpace) {\n return this.tokenIndex > 1\n ? this.getTokenStart(this.tokenIndex - 1)\n : this.firstCharOffset;\n }\n }\n\n return this.tokenStart;\n}\n\nexport const name = 'Raw';\nexport const structure = {\n value: String\n};\n\nexport function parse(consumeUntil, excludeWhiteSpace) {\n const startOffset = this.getTokenStart(this.tokenIndex);\n let endOffset;\n\n this.skipUntilBalanced(this.tokenIndex, consumeUntil || this.consumeUntilBalanceEnd);\n\n if (excludeWhiteSpace && this.tokenStart > startOffset) {\n endOffset = getOffsetExcludeWS.call(this);\n } else {\n endOffset = this.tokenStart;\n }\n\n return {\n type: 'Raw',\n loc: this.getLocation(startOffset, endOffset),\n value: this.substring(startOffset, endOffset)\n };\n}\n\nexport function generate(node) {\n this.tokenize(node.value);\n}\n","import { LeftCurlyBracket } from '../../tokenizer/index.js';\n\nfunction consumeRaw() {\n return this.Raw(this.consumeUntilLeftCurlyBracket, true);\n}\n\nfunction consumePrelude() {\n const prelude = this.SelectorList();\n\n if (prelude.type !== 'Raw' &&\n this.eof === false &&\n this.tokenType !== LeftCurlyBracket) {\n this.error();\n }\n\n return prelude;\n}\n\nexport const name = 'Rule';\nexport const walkContext = 'rule';\nexport const structure = {\n prelude: ['SelectorList', 'Raw'],\n block: ['Block']\n};\n\nexport function parse() {\n const startToken = this.tokenIndex;\n const startOffset = this.tokenStart;\n let prelude;\n let block;\n\n if (this.parseRulePrelude) {\n prelude = this.parseWithFallback(consumePrelude, consumeRaw);\n } else {\n prelude = consumeRaw.call(this, startToken);\n }\n\n block = this.Block(true);\n\n return {\n type: 'Rule',\n loc: this.getLocation(startOffset, this.tokenStart),\n prelude,\n block\n };\n}\nexport function generate(node) {\n this.node(node.prelude);\n this.node(node.block);\n}\n\n","import {\n Ident,\n LeftParenthesis,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nexport const name = 'Scope';\nexport const structure = {\n root: ['SelectorList', 'Raw', null],\n limit: ['SelectorList', 'Raw', null]\n};\n\nexport function parse() {\n let root = null;\n let limit = null;\n\n this.skipSC();\n\n const startOffset = this.tokenStart;\n if (this.tokenType === LeftParenthesis) {\n this.next();\n this.skipSC();\n root = this.parseWithFallback(\n this.SelectorList,\n () => this.Raw(false, true)\n );\n this.skipSC();\n this.eat(RightParenthesis);\n }\n\n if (this.lookupNonWSType(0) === Ident) {\n this.skipSC();\n this.eatIdent('to');\n this.skipSC();\n this.eat(LeftParenthesis);\n this.skipSC();\n limit = this.parseWithFallback(\n this.SelectorList,\n () => this.Raw(false, true)\n );\n this.skipSC();\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'Scope',\n loc: this.getLocation(startOffset, this.tokenStart),\n root,\n limit\n };\n}\n\nexport function generate(node) {\n if (node.root) {\n this.token(LeftParenthesis, '(');\n this.node(node.root);\n this.token(RightParenthesis, ')');\n }\n\n if (node.limit) {\n this.token(Ident, 'to');\n this.token(LeftParenthesis, '(');\n this.node(node.limit);\n this.token(RightParenthesis, ')');\n }\n}\n","export const name = 'Selector';\nexport const structure = {\n children: [[\n 'TypeSelector',\n 'IdSelector',\n 'ClassSelector',\n 'AttributeSelector',\n 'PseudoClassSelector',\n 'PseudoElementSelector',\n 'Combinator'\n ]]\n};\n\nexport function parse() {\n const children = this.readSequence(this.scope.Selector);\n\n // nothing were consumed\n if (this.getFirstListNode(children) === null) {\n this.error('Selector is expected');\n }\n\n return {\n type: 'Selector',\n loc: this.getLocationFromList(children),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node);\n}\n","import { Comma } from '../../tokenizer/index.js';\n\nexport const name = 'SelectorList';\nexport const walkContext = 'selector';\nexport const structure = {\n children: [[\n 'Selector',\n 'Raw'\n ]]\n};\n\nexport function parse() {\n const children = this.createList();\n\n while (!this.eof) {\n children.push(this.Selector());\n\n if (this.tokenType === Comma) {\n this.next();\n continue;\n }\n\n break;\n }\n\n return {\n type: 'SelectorList',\n loc: this.getLocationFromList(children),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node, () => this.token(Comma, ','));\n}\n","import {\n isHexDigit,\n isWhiteSpace,\n isValidEscape,\n consumeEscaped,\n decodeEscaped\n} from '../tokenizer/index.js';\n\nconst REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\nconst QUOTATION_MARK = 0x0022; // \"\nconst APOSTROPHE = 0x0027; // '\n\nexport function decode(str) {\n const len = str.length;\n const firstChar = str.charCodeAt(0);\n const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0;\n const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1;\n let decoded = '';\n\n for (let i = start; i <= end; i++) {\n let code = str.charCodeAt(i);\n\n if (code === REVERSE_SOLIDUS) {\n // special case at the ending\n if (i === end) {\n // if the next input code point is EOF, do nothing\n // otherwise include last quote as escaped\n if (i !== len - 1) {\n decoded = str.substr(i + 1);\n }\n break;\n }\n\n code = str.charCodeAt(++i);\n\n // consume escaped\n if (isValidEscape(REVERSE_SOLIDUS, code)) {\n const escapeStart = i - 1;\n const escapeEnd = consumeEscaped(str, escapeStart);\n\n i = escapeEnd - 1;\n decoded += decodeEscaped(str.substring(escapeStart + 1, escapeEnd));\n } else {\n // \\r\\n\n if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {\n i++;\n }\n }\n } else {\n decoded += str[i];\n }\n }\n\n return decoded;\n}\n\n// https://drafts.csswg.org/cssom/#serialize-a-string\n// § 2.1. Common Serializing Idioms\nexport function encode(str, apostrophe) {\n const quote = apostrophe ? '\\'' : '\"';\n const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK;\n let encoded = '';\n let wsBeforeHexIsNeeded = false;\n\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).\n if (code === 0x0000) {\n encoded += '\\uFFFD';\n continue;\n }\n\n // If the character is in the range [\\1-\\1f] (U+0001 to U+001F) or is U+007F,\n // the character escaped as code point.\n // Note: Do not compare with 0x0001 since 0x0000 is precessed before\n if (code <= 0x001f || code === 0x007F) {\n encoded += '\\\\' + code.toString(16);\n wsBeforeHexIsNeeded = true;\n continue;\n }\n\n // If the character is '\"' (U+0022) or \"\\\" (U+005C), the escaped character.\n if (code === quoteCode || code === REVERSE_SOLIDUS) {\n encoded += '\\\\' + str.charAt(i);\n wsBeforeHexIsNeeded = false;\n } else {\n if (wsBeforeHexIsNeeded && (isHexDigit(code) || isWhiteSpace(code))) {\n encoded += ' ';\n }\n\n // Otherwise, the character itself.\n encoded += str.charAt(i);\n wsBeforeHexIsNeeded = false;\n }\n }\n\n return quote + encoded + quote;\n}\n","import { String as StringToken } from '../../tokenizer/index.js';\nimport { decode, encode } from '../../utils/string.js';\n\nexport const name = 'String';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n return {\n type: 'String',\n loc: this.getLocation(this.tokenStart, this.tokenEnd),\n value: decode(this.consume(StringToken))\n };\n}\n\nexport function generate(node) {\n this.token(StringToken, encode(node.value));\n}\n","import {\n WhiteSpace,\n Comment,\n AtKeyword,\n CDO,\n CDC\n} from '../../tokenizer/index.js';\n\nconst EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)\n\nfunction consumeRaw() {\n return this.Raw(null, false);\n}\n\nexport const name = 'StyleSheet';\nexport const walkContext = 'stylesheet';\nexport const structure = {\n children: [[\n 'Comment',\n 'CDO',\n 'CDC',\n 'Atrule',\n 'Rule',\n 'Raw'\n ]]\n};\n\nexport function parse() {\n const start = this.tokenStart;\n const children = this.createList();\n let child;\n\n scan:\n while (!this.eof) {\n switch (this.tokenType) {\n case WhiteSpace:\n this.next();\n continue;\n\n case Comment:\n // ignore comments except exclamation comments (i.e. /*! .. */) on top level\n if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) {\n this.next();\n continue;\n }\n\n child = this.Comment();\n break;\n\n case CDO: // <!--\n child = this.CDO();\n break;\n\n case CDC: // -->\n child = this.CDC();\n break;\n\n // CSS Syntax Module Level 3\n // §2.2 Error handling\n // At the \"top level\" of a stylesheet, an <at-keyword-token> starts an at-rule.\n case AtKeyword:\n child = this.parseWithFallback(this.Atrule, consumeRaw);\n break;\n\n // Anything else starts a qualified rule ...\n default:\n child = this.parseWithFallback(this.Rule, consumeRaw);\n }\n\n children.push(child);\n }\n\n return {\n type: 'StyleSheet',\n loc: this.getLocation(start, this.tokenStart),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node);\n}\n","import {\n LeftParenthesis,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nexport const name = 'SupportsDeclaration';\nexport const structure = {\n declaration: 'Declaration'\n};\n\nexport function parse() {\n const start = this.tokenStart;\n\n this.eat(LeftParenthesis);\n this.skipSC();\n\n const declaration = this.Declaration();\n\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n\n return {\n type: 'SupportsDeclaration',\n loc: this.getLocation(start, this.tokenStart),\n declaration\n };\n}\n\nexport function generate(node) {\n this.token(LeftParenthesis, '(');\n this.node(node.declaration);\n this.token(RightParenthesis, ')');\n}\n","import { Ident } from '../../tokenizer/index.js';\n\nconst ASTERISK = 0x002A; // U+002A ASTERISK (*)\nconst VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)\n\nfunction eatIdentifierOrAsterisk() {\n if (this.tokenType !== Ident &&\n this.isDelim(ASTERISK) === false) {\n this.error('Identifier or asterisk is expected');\n }\n\n this.next();\n}\n\nexport const name = 'TypeSelector';\nexport const structure = {\n name: String\n};\n\n// ident\n// ident|ident\n// ident|*\n// *\n// *|ident\n// *|*\n// |ident\n// |*\nexport function parse() {\n const start = this.tokenStart;\n\n if (this.isDelim(VERTICALLINE)) {\n this.next();\n eatIdentifierOrAsterisk.call(this);\n } else {\n eatIdentifierOrAsterisk.call(this);\n\n if (this.isDelim(VERTICALLINE)) {\n this.next();\n eatIdentifierOrAsterisk.call(this);\n }\n }\n\n return {\n type: 'TypeSelector',\n loc: this.getLocation(start, this.tokenStart),\n name: this.substrToCursor(start)\n };\n}\n\nexport function generate(node) {\n this.tokenize(node.name);\n}\n","import {\n isHexDigit,\n Ident,\n Number,\n Dimension\n} from '../../tokenizer/index.js';\n\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)\n\nfunction eatHexSequence(offset, allowDash) {\n let len = 0;\n\n for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) {\n const code = this.charCodeAt(pos);\n\n if (code === HYPHENMINUS && allowDash && len !== 0) {\n eatHexSequence.call(this, offset + len + 1, false);\n return -1;\n }\n\n if (!isHexDigit(code)) {\n this.error(\n allowDash && len !== 0\n ? 'Hyphen minus' + (len < 6 ? ' or hex digit' : '') + ' is expected'\n : (len < 6 ? 'Hex digit is expected' : 'Unexpected input'),\n pos\n );\n }\n\n if (++len > 6) {\n this.error('Too many hex digits', pos);\n };\n }\n\n this.next();\n return len;\n}\n\nfunction eatQuestionMarkSequence(max) {\n let count = 0;\n\n while (this.isDelim(QUESTIONMARK)) {\n if (++count > max) {\n this.error('Too many question marks');\n }\n\n this.next();\n }\n}\n\nfunction startsWith(code) {\n if (this.charCodeAt(this.tokenStart) !== code) {\n this.error((code === PLUSSIGN ? 'Plus sign' : 'Hyphen minus') + ' is expected');\n }\n}\n\n// https://drafts.csswg.org/css-syntax/#urange\n// Informally, the <urange> production has three forms:\n// U+0001\n// Defines a range consisting of a single code point, in this case the code point \"1\".\n// U+0001-00ff\n// Defines a range of codepoints between the first and the second value, in this case\n// the range between \"1\" and \"ff\" (255 in decimal) inclusive.\n// U+00??\n// Defines a range of codepoints where the \"?\" characters range over all hex digits,\n// in this case defining the same as the value U+0000-00ff.\n// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat \"?\" as a hexadecimal digit).\n//\n// <urange> =\n// u '+' <ident-token> '?'* |\n// u <dimension-token> '?'* |\n// u <number-token> '?'* |\n// u <number-token> <dimension-token> |\n// u <number-token> <number-token> |\n// u '+' '?'+\nfunction scanUnicodeRange() {\n let hexLength = 0;\n\n switch (this.tokenType) {\n case Number:\n // u <number-token> '?'*\n // u <number-token> <dimension-token>\n // u <number-token> <number-token>\n hexLength = eatHexSequence.call(this, 1, true);\n\n if (this.isDelim(QUESTIONMARK)) {\n eatQuestionMarkSequence.call(this, 6 - hexLength);\n break;\n }\n\n if (this.tokenType === Dimension ||\n this.tokenType === Number) {\n startsWith.call(this, HYPHENMINUS);\n eatHexSequence.call(this, 1, false);\n break;\n }\n\n break;\n\n case Dimension:\n // u <dimension-token> '?'*\n hexLength = eatHexSequence.call(this, 1, true);\n\n if (hexLength > 0) {\n eatQuestionMarkSequence.call(this, 6 - hexLength);\n }\n\n break;\n\n default:\n // u '+' <ident-token> '?'*\n // u '+' '?'+\n this.eatDelim(PLUSSIGN);\n\n if (this.tokenType === Ident) {\n hexLength = eatHexSequence.call(this, 0, true);\n if (hexLength > 0) {\n eatQuestionMarkSequence.call(this, 6 - hexLength);\n }\n break;\n }\n\n if (this.isDelim(QUESTIONMARK)) {\n this.next();\n eatQuestionMarkSequence.call(this, 5);\n break;\n }\n\n this.error('Hex digit or question mark is expected');\n }\n}\n\nexport const name = 'UnicodeRange';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n const start = this.tokenStart;\n\n // U or u\n this.eatIdent('u');\n scanUnicodeRange.call(this);\n\n return {\n type: 'UnicodeRange',\n loc: this.getLocation(start, this.tokenStart),\n value: this.substrToCursor(start)\n };\n}\n\nexport function generate(node) {\n this.tokenize(node.value);\n}\n","import {\n isHexDigit,\n isWhiteSpace,\n isValidEscape,\n consumeEscaped,\n decodeEscaped\n} from '../tokenizer/index.js';\n\nconst SPACE = 0x0020; // U+0020 SPACE\nconst REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\nconst QUOTATION_MARK = 0x0022; // \"\nconst APOSTROPHE = 0x0027; // '\nconst LEFTPARENTHESIS = 0x0028; // U+0028 LEFT PARENTHESIS (()\nconst RIGHTPARENTHESIS = 0x0029; // U+0029 RIGHT PARENTHESIS ())\n\nexport function decode(str) {\n const len = str.length;\n let start = 4; // length of \"url(\"\n let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1;\n let decoded = '';\n\n while (start < end && isWhiteSpace(str.charCodeAt(start))) {\n start++;\n }\n\n while (start < end && isWhiteSpace(str.charCodeAt(end))) {\n end--;\n }\n\n for (let i = start; i <= end; i++) {\n let code = str.charCodeAt(i);\n\n if (code === REVERSE_SOLIDUS) {\n // special case at the ending\n if (i === end) {\n // if the next input code point is EOF, do nothing\n // otherwise include last left parenthesis as escaped\n if (i !== len - 1) {\n decoded = str.substr(i + 1);\n }\n break;\n }\n\n code = str.charCodeAt(++i);\n\n // consume escaped\n if (isValidEscape(REVERSE_SOLIDUS, code)) {\n const escapeStart = i - 1;\n const escapeEnd = consumeEscaped(str, escapeStart);\n\n i = escapeEnd - 1;\n decoded += decodeEscaped(str.substring(escapeStart + 1, escapeEnd));\n } else {\n // \\r\\n\n if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {\n i++;\n }\n }\n } else {\n decoded += str[i];\n }\n }\n\n return decoded;\n}\n\nexport function encode(str) {\n let encoded = '';\n let wsBeforeHexIsNeeded = false;\n\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).\n if (code === 0x0000) {\n encoded += '\\uFFFD';\n continue;\n }\n\n // If the character is in the range [\\1-\\1f] (U+0001 to U+001F) or is U+007F,\n // the character escaped as code point.\n // Note: Do not compare with 0x0001 since 0x0000 is precessed before\n if (code <= 0x001f || code === 0x007F) {\n encoded += '\\\\' + code.toString(16);\n wsBeforeHexIsNeeded = true;\n continue;\n }\n\n if (code === SPACE ||\n code === REVERSE_SOLIDUS ||\n code === QUOTATION_MARK ||\n code === APOSTROPHE ||\n code === LEFTPARENTHESIS ||\n code === RIGHTPARENTHESIS) {\n encoded += '\\\\' + str.charAt(i);\n wsBeforeHexIsNeeded = false;\n } else {\n if (wsBeforeHexIsNeeded && isHexDigit(code)) {\n encoded += ' ';\n }\n\n encoded += str.charAt(i);\n wsBeforeHexIsNeeded = false;\n }\n }\n\n return 'url(' + encoded + ')';\n}\n","import * as url from '../../utils/url.js';\nimport * as string from '../../utils/string.js';\nimport {\n Function as FunctionToken,\n String as StringToken,\n Url,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nexport const name = 'Url';\nexport const structure = {\n value: String\n};\n\n// <url-token> | <function-token> <string> )\nexport function parse() {\n const start = this.tokenStart;\n let value;\n\n switch (this.tokenType) {\n case Url:\n value = url.decode(this.consume(Url));\n break;\n\n case FunctionToken:\n if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) {\n this.error('Function name must be `url`');\n }\n\n this.eat(FunctionToken);\n this.skipSC();\n value = string.decode(this.consume(StringToken));\n this.skipSC();\n if (!this.eof) {\n this.eat(RightParenthesis);\n }\n break;\n\n default:\n this.error('Url or Function is expected');\n }\n\n return {\n type: 'Url',\n loc: this.getLocation(start, this.tokenStart),\n value\n };\n}\n\nexport function generate(node) {\n this.token(Url, url.encode(node.value));\n}\n","export const name = 'Value';\nexport const structure = {\n children: [[]]\n};\n\nexport function parse() {\n const start = this.tokenStart;\n const children = this.readSequence(this.scope.Value);\n\n return {\n type: 'Value',\n loc: this.getLocation(start, this.tokenStart),\n children\n };\n}\n\nexport function generate(node) {\n this.children(node);\n}\n","import { WhiteSpace } from '../../tokenizer/index.js';\n\nconst SPACE = Object.freeze({\n type: 'WhiteSpace',\n loc: null,\n value: ' '\n});\n\nexport const name = 'WhiteSpace';\nexport const structure = {\n value: String\n};\n\nexport function parse() {\n this.eat(WhiteSpace);\n return SPACE;\n\n // return {\n // type: 'WhiteSpace',\n // loc: this.getLocation(this.tokenStart, this.tokenEnd),\n // value: this.consume(WHITESPACE)\n // };\n}\n\nexport function generate(node) {\n this.token(WhiteSpace, node.value);\n}\n","export * as AnPlusB from './AnPlusB.js';\nexport * as Atrule from './Atrule.js';\nexport * as AtrulePrelude from './AtrulePrelude.js';\nexport * as AttributeSelector from './AttributeSelector.js';\nexport * as Block from './Block.js';\nexport * as Brackets from './Brackets.js';\nexport * as CDC from './CDC.js';\nexport * as CDO from './CDO.js';\nexport * as ClassSelector from './ClassSelector.js';\nexport * as Combinator from './Combinator.js';\nexport * as Comment from './Comment.js';\nexport * as Condition from './Condition.js';\nexport * as Declaration from './Declaration.js';\nexport * as DeclarationList from './DeclarationList.js';\nexport * as Dimension from './Dimension.js';\nexport * as Feature from './Feature.js';\nexport * as FeatureFunction from './FeatureFunction.js';\nexport * as FeatureRange from './FeatureRange.js';\nexport * as Function from './Function.js';\nexport * as GeneralEnclosed from './GeneralEnclosed.js';\nexport * as Hash from './Hash.js';\nexport * as Identifier from './Identifier.js';\nexport * as IdSelector from './IdSelector.js';\nexport * as Layer from './Layer.js';\nexport * as LayerList from './LayerList.js';\nexport * as MediaQuery from './MediaQuery.js';\nexport * as MediaQueryList from './MediaQueryList.js';\nexport * as NestingSelector from './NestingSelector.js';\nexport * as Nth from './Nth.js';\nexport * as Number from './Number.js';\nexport * as Operator from './Operator.js';\nexport * as Parentheses from './Parentheses.js';\nexport * as Percentage from './Percentage.js';\nexport * as PseudoClassSelector from './PseudoClassSelector.js';\nexport * as PseudoElementSelector from './PseudoElementSelector.js';\nexport * as Ratio from './Ratio.js';\nexport * as Raw from './Raw.js';\nexport * as Rule from './Rule.js';\nexport * as Scope from './Scope.js';\nexport * as Selector from './Selector.js';\nexport * as SelectorList from './SelectorList.js';\nexport * as String from './String.js';\nexport * as StyleSheet from './StyleSheet.js';\nexport * as SupportsDeclaration from './SupportsDeclaration.js';\nexport * as TypeSelector from './TypeSelector.js';\nexport * as UnicodeRange from './UnicodeRange.js';\nexport * as Url from './Url.js';\nexport * as Value from './Value.js';\nexport * as WhiteSpace from './WhiteSpace.js';\n","import { cssWideKeywords } from '../../lexer/generic-const.js';\nimport definitions from '../../data.js';\nimport * as node from '../node/index.js';\n\nexport default {\n generic: true,\n cssWideKeywords,\n ...definitions,\n node\n};\n","import {\n Ident,\n String as StringToken,\n Number as NumberToken,\n Function as FunctionToken,\n Url,\n Hash,\n Dimension,\n Percentage,\n LeftParenthesis,\n LeftSquareBracket,\n Comma,\n Delim\n} from '../../tokenizer/index.js';\n\nconst NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)\nconst ASTERISK = 0x002A; // U+002A ASTERISK (*)\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\nconst U = 0x0075; // U+0075 LATIN SMALL LETTER U (u)\n\nexport default function defaultRecognizer(context) {\n switch (this.tokenType) {\n case Hash:\n return this.Hash();\n\n case Comma:\n return this.Operator();\n\n case LeftParenthesis:\n return this.Parentheses(this.readSequence, context.recognizer);\n\n case LeftSquareBracket:\n return this.Brackets(this.readSequence, context.recognizer);\n\n case StringToken:\n return this.String();\n\n case Dimension:\n return this.Dimension();\n\n case Percentage:\n return this.Percentage();\n\n case NumberToken:\n return this.Number();\n\n case FunctionToken:\n return this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')\n ? this.Url()\n : this.Function(this.readSequence, context.recognizer);\n\n case Url:\n return this.Url();\n\n case Ident:\n // check for unicode range, it should start with u+ or U+\n if (this.cmpChar(this.tokenStart, U) &&\n this.cmpChar(this.tokenStart + 1, PLUSSIGN)) {\n return this.UnicodeRange();\n } else {\n return this.Identifier();\n }\n\n case Delim: {\n const code = this.charCodeAt(this.tokenStart);\n\n if (code === SOLIDUS ||\n code === ASTERISK ||\n code === PLUSSIGN ||\n code === HYPHENMINUS) {\n return this.Operator(); // TODO: replace with Delim\n }\n\n // TODO: produce a node with Delim node type\n\n if (code === NUMBERSIGN) {\n this.error('Hex or identifier is expected', this.tokenStart + 1);\n }\n\n break;\n }\n }\n};\n","import getNode from './default.js';\n\nexport default {\n getNode\n};\n","import {\n Delim,\n Ident,\n Dimension,\n Percentage,\n Number as NumberToken,\n Hash,\n Colon,\n LeftSquareBracket\n} from '../../tokenizer/index.js';\n\nconst NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)\nconst AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)\nconst ASTERISK = 0x002A; // U+002A ASTERISK (*)\nconst PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)\nconst SOLIDUS = 0x002F; // U+002F SOLIDUS (/)\nconst FULLSTOP = 0x002E; // U+002E FULL STOP (.)\nconst GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)\nconst VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)\nconst TILDE = 0x007E; // U+007E TILDE (~)\n\nfunction onWhiteSpace(next, children) {\n if (children.last !== null && children.last.type !== 'Combinator' &&\n next !== null && next.type !== 'Combinator') {\n children.push({ // FIXME: this.Combinator() should be used instead\n type: 'Combinator',\n loc: null,\n name: ' '\n });\n }\n}\n\nfunction getNode() {\n switch (this.tokenType) {\n case LeftSquareBracket:\n return this.AttributeSelector();\n\n case Hash:\n return this.IdSelector();\n\n case Colon:\n if (this.lookupType(1) === Colon) {\n return this.PseudoElementSelector();\n } else {\n return this.PseudoClassSelector();\n }\n\n case Ident:\n return this.TypeSelector();\n\n case NumberToken:\n case Percentage:\n return this.Percentage();\n\n case Dimension:\n // throws when .123ident\n if (this.charCodeAt(this.tokenStart) === FULLSTOP) {\n this.error('Identifier is expected', this.tokenStart + 1);\n }\n break;\n\n case Delim: {\n const code = this.charCodeAt(this.tokenStart);\n\n switch (code) {\n case PLUSSIGN:\n case GREATERTHANSIGN:\n case TILDE:\n case SOLIDUS: // /deep/\n return this.Combinator();\n\n case FULLSTOP:\n return this.ClassSelector();\n\n case ASTERISK:\n case VERTICALLINE:\n return this.TypeSelector();\n\n case NUMBERSIGN:\n return this.IdSelector();\n\n case AMPERSAND:\n return this.NestingSelector();\n }\n\n break;\n }\n }\n};\n\nexport default {\n onWhiteSpace,\n getNode\n};\n","// legacy IE function\n// expression( <any-value> )\nexport default function() {\n return this.createSingleNodeList(\n this.Raw(null, false)\n );\n}\n","import { Comma, WhiteSpace } from '../../tokenizer/index.js';\n\n// var( <ident> , <value>? )\nexport default function() {\n const children = this.createList();\n\n this.skipSC();\n\n // NOTE: Don't check more than a first argument is an ident, rest checks are for lexer\n children.push(this.Identifier());\n\n this.skipSC();\n\n if (this.tokenType === Comma) {\n children.push(this.Operator());\n\n const startIndex = this.tokenIndex;\n const value = this.parseCustomProperty\n ? this.Value(null)\n : this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);\n\n if (value.type === 'Value' && value.children.isEmpty) {\n for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) {\n if (this.lookupType(offset) === WhiteSpace) {\n value.children.appendData({\n type: 'WhiteSpace',\n loc: null,\n value: ' '\n });\n break;\n }\n }\n }\n\n children.push(value);\n }\n\n return children;\n};\n","import getNode from './default.js';\nimport expressionFn from '../function/expression.js';\nimport varFn from '../function/var.js';\n\nfunction isPlusMinusOperator(node) {\n return (\n node !== null &&\n node.type === 'Operator' &&\n (node.value[node.value.length - 1] === '-' || node.value[node.value.length - 1] === '+')\n );\n}\n\nexport default {\n getNode,\n onWhiteSpace(next, children) {\n if (isPlusMinusOperator(next)) {\n next.value = ' ' + next.value;\n }\n if (isPlusMinusOperator(children.last)) {\n children.last.value += ' ';\n }\n },\n 'expression': expressionFn,\n 'var': varFn\n};\n","export { default as AtrulePrelude } from './atrulePrelude.js';\nexport { default as Selector } from './selector.js';\nexport { default as Value } from './value.js';\n","import { Ident } from '../../tokenizer/index.js';\n\n// https://drafts.csswg.org/css-contain-3/#container-rule\n// The keywords `none`, `and`, `not`, and `or` are excluded from the <custom-ident> above.\nconst nonContainerNameKeywords = new Set(['none', 'and', 'not', 'or']);\n\nexport default {\n parse: {\n prelude() {\n const children = this.createList();\n\n if (this.tokenType === Ident) {\n const name = this.substring(this.tokenStart, this.tokenEnd);\n\n if (!nonContainerNameKeywords.has(name.toLowerCase())) {\n children.push(this.Identifier());\n }\n }\n\n children.push(this.Condition('container'));\n\n return children;\n },\n block(nested = false) {\n return this.Block(nested);\n }\n }\n};\n","export default {\n parse: {\n prelude: null,\n block() {\n return this.Block(true);\n }\n }\n};\n","import {\n String as StringToken,\n Ident,\n Url,\n Function as FunctionToken,\n LeftParenthesis,\n RightParenthesis\n} from '../../tokenizer/index.js';\n\nfunction parseWithFallback(parse, fallback) {\n return this.parseWithFallback(\n () => {\n try {\n return parse.call(this);\n } finally {\n this.skipSC();\n if (this.lookupNonWSType(0) !== RightParenthesis) {\n this.error();\n }\n }\n },\n fallback || (() => this.Raw(null, true))\n );\n}\n\nconst parseFunctions = {\n layer() {\n this.skipSC();\n\n const children = this.createList();\n const node = parseWithFallback.call(this, this.Layer);\n\n if (node.type !== 'Raw' || node.value !== '') {\n children.push(node);\n }\n\n return children;\n },\n supports() {\n this.skipSC();\n\n const children = this.createList();\n const node = parseWithFallback.call(\n this,\n this.Declaration,\n () => parseWithFallback.call(this, () => this.Condition('supports'))\n );\n\n if (node.type !== 'Raw' || node.value !== '') {\n children.push(node);\n }\n\n return children;\n }\n};\n\nexport default {\n parse: {\n prelude() {\n const children = this.createList();\n\n switch (this.tokenType) {\n case StringToken:\n children.push(this.String());\n break;\n\n case Url:\n case FunctionToken:\n children.push(this.Url());\n break;\n\n default:\n this.error('String or url() is expected');\n }\n\n this.skipSC();\n\n if (this.tokenType === Ident &&\n this.cmpStr(this.tokenStart, this.tokenEnd, 'layer')) {\n children.push(this.Identifier());\n } else if (\n this.tokenType === FunctionToken &&\n this.cmpStr(this.tokenStart, this.tokenEnd, 'layer(')\n ) {\n children.push(this.Function(null, parseFunctions));\n }\n\n this.skipSC();\n\n if (this.tokenType === FunctionToken &&\n this.cmpStr(this.tokenStart, this.tokenEnd, 'supports(')) {\n children.push(this.Function(null, parseFunctions));\n }\n\n if (this.lookupNonWSType(0) === Ident ||\n this.lookupNonWSType(0) === LeftParenthesis) {\n children.push(this.MediaQueryList());\n }\n\n return children;\n },\n block: null\n }\n};\n","export default {\n parse: {\n prelude() {\n return this.createSingleNodeList(\n this.LayerList()\n );\n },\n block() {\n return this.Block(false);\n }\n }\n};\n","export default {\n parse: {\n prelude() {\n return this.createSingleNodeList(\n this.MediaQueryList()\n );\n },\n block(nested = false) {\n return this.Block(nested);\n }\n }\n};\n","export default {\n parse: {\n prelude() {\n return this.createSingleNodeList(\n this.SelectorList()\n );\n },\n block() {\n return this.Block(true);\n }\n }\n};\n","export default {\n parse: {\n prelude() {\n return this.createSingleNodeList(\n this.SelectorList()\n );\n },\n block() {\n return this.Block(true);\n }\n }\n};\n","export default {\n parse: {\n prelude() {\n return this.createSingleNodeList(\n this.Scope()\n );\n },\n block(nested = false) {\n return this.Block(nested);\n }\n }\n};\n","export default {\n parse: {\n prelude: null,\n block(nested = false) {\n return this.Block(nested);\n }\n }\n};\n","export default {\n parse: {\n prelude() {\n return this.createSingleNodeList(\n this.Condition('supports')\n );\n },\n block(nested = false) {\n return this.Block(nested);\n }\n }\n};\n","import container from './container.js';\nimport fontFace from './font-face.js';\nimport importAtrule from './import.js';\nimport layer from './layer.js';\nimport media from './media.js';\nimport nest from './nest.js';\nimport page from './page.js';\nimport scope from './scope.js';\nimport startingStyle from './starting-style.js';\nimport supports from './supports.js';\n\nexport default {\n container,\n 'font-face': fontFace,\n import: importAtrule,\n layer,\n media,\n nest,\n page,\n scope,\n 'starting-style': startingStyle,\n supports\n};\n","import { Comma, String as StringToken, Ident, RightParenthesis } from '../../tokenizer/index.js';\n\nexport function parseLanguageRangeList() {\n const children = this.createList();\n\n this.skipSC();\n\n loop: while (!this.eof) {\n switch (this.tokenType) {\n case Ident:\n children.push(this.Identifier());\n break;\n\n case StringToken:\n children.push(this.String());\n break;\n\n case Comma:\n children.push(this.Operator());\n break;\n\n case RightParenthesis:\n break loop;\n\n default:\n this.error('Identifier, string or comma is expected');\n }\n\n this.skipSC();\n }\n\n return children;\n}\n","import { parseLanguageRangeList } from './lang.js';\n\nconst selectorList = {\n parse() {\n return this.createSingleNodeList(\n this.SelectorList()\n );\n }\n};\n\nconst selector = {\n parse() {\n return this.createSingleNodeList(\n this.Selector()\n );\n }\n};\n\nconst identList = {\n parse() {\n return this.createSingleNodeList(\n this.Identifier()\n );\n }\n};\n\nconst langList = {\n parse: parseLanguageRangeList\n};\n\nconst nth = {\n parse() {\n return this.createSingleNodeList(\n this.Nth()\n );\n }\n};\n\nexport default {\n 'dir': identList,\n 'has': selectorList,\n 'lang': langList,\n 'matches': selectorList,\n 'is': selectorList,\n '-moz-any': selectorList,\n '-webkit-any': selectorList,\n 'where': selectorList,\n 'not': selectorList,\n 'nth-child': nth,\n 'nth-last-child': nth,\n 'nth-last-of-type': nth,\n 'nth-of-type': nth,\n 'slotted': selector,\n 'host': selector,\n 'host-context': selector\n};\n","export { parse as AnPlusB } from './AnPlusB.js';\nexport { parse as Atrule } from './Atrule.js';\nexport { parse as AtrulePrelude } from './AtrulePrelude.js';\nexport { parse as AttributeSelector } from './AttributeSelector.js';\nexport { parse as Block } from './Block.js';\nexport { parse as Brackets } from './Brackets.js';\nexport { parse as CDC } from './CDC.js';\nexport { parse as CDO } from './CDO.js';\nexport { parse as ClassSelector } from './ClassSelector.js';\nexport { parse as Combinator } from './Combinator.js';\nexport { parse as Comment } from './Comment.js';\nexport { parse as Condition } from './Condition.js';\nexport { parse as Declaration } from './Declaration.js';\nexport { parse as DeclarationList } from './DeclarationList.js';\nexport { parse as Dimension } from './Dimension.js';\nexport { parse as Feature } from './Feature.js';\nexport { parse as FeatureFunction } from './FeatureFunction.js';\nexport { parse as FeatureRange } from './FeatureRange.js';\nexport { parse as Function } from './Function.js';\nexport { parse as GeneralEnclosed } from './GeneralEnclosed.js';\nexport { parse as Hash } from './Hash.js';\nexport { parse as Identifier } from './Identifier.js';\nexport { parse as IdSelector } from './IdSelector.js';\nexport { parse as Layer } from './Layer.js';\nexport { parse as LayerList } from './LayerList.js';\nexport { parse as MediaQuery } from './MediaQuery.js';\nexport { parse as MediaQueryList } from './MediaQueryList.js';\nexport { parse as NestingSelector } from './NestingSelector.js';\nexport { parse as Nth } from './Nth.js';\nexport { parse as Number } from './Number.js';\nexport { parse as Operator } from './Operator.js';\nexport { parse as Parentheses } from './Parentheses.js';\nexport { parse as Percentage } from './Percentage.js';\nexport { parse as PseudoClassSelector } from './PseudoClassSelector.js';\nexport { parse as PseudoElementSelector } from './PseudoElementSelector.js';\nexport { parse as Ratio } from './Ratio.js';\nexport { parse as Raw } from './Raw.js';\nexport { parse as Rule } from './Rule.js';\nexport { parse as Scope } from './Scope.js';\nexport { parse as Selector } from './Selector.js';\nexport { parse as SelectorList } from './SelectorList.js';\nexport { parse as String } from './String.js';\nexport { parse as StyleSheet } from './StyleSheet.js';\nexport { parse as SupportsDeclaration } from './SupportsDeclaration.js';\nexport { parse as TypeSelector } from './TypeSelector.js';\nexport { parse as UnicodeRange } from './UnicodeRange.js';\nexport { parse as Url } from './Url.js';\nexport { parse as Value } from './Value.js';\nexport { parse as WhiteSpace } from './WhiteSpace.js';\n","import * as scope from '../scope/index.js';\nimport atrule from '../atrule/index.js';\nimport pseudo from '../pseudo/index.js';\nimport * as node from '../node/index-parse.js';\n\nexport default {\n parseContext: {\n default: 'StyleSheet',\n stylesheet: 'StyleSheet',\n atrule: 'Atrule',\n atrulePrelude(options) {\n return this.AtrulePrelude(options.atrule ? String(options.atrule) : null);\n },\n mediaQueryList: 'MediaQueryList',\n mediaQuery: 'MediaQuery',\n condition(options) {\n return this.Condition(options.kind);\n },\n rule: 'Rule',\n selectorList: 'SelectorList',\n selector: 'Selector',\n block() {\n return this.Block(true);\n },\n declarationList: 'DeclarationList',\n declaration: 'Declaration',\n value: 'Value'\n },\n features: {\n supports: {\n selector() {\n return this.Selector();\n }\n },\n container: {\n style() {\n return this.Declaration();\n }\n }\n },\n scope,\n atrule,\n pseudo,\n node\n};\n","import * as node from '../node/index.js';\n\nexport default {\n node\n};\n","import createSyntax from './create.js';\nimport lexerConfig from './config/lexer.js';\nimport parserConfig from './config/parser.js';\nimport walkerConfig from './config/walker.js';\n\nexport default createSyntax({\n ...lexerConfig,\n ...parserConfig,\n ...walkerConfig\n});\n","import {\n isName,\n isValidEscape,\n consumeEscaped,\n decodeEscaped\n} from '../tokenizer/index.js';\n\nconst REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\n\nexport function decode(str) {\n const end = str.length - 1;\n let decoded = '';\n\n for (let i = 0; i < str.length; i++) {\n let code = str.charCodeAt(i);\n\n if (code === REVERSE_SOLIDUS) {\n // special case at the ending\n if (i === end) {\n // if the next input code point is EOF, do nothing\n break;\n }\n\n code = str.charCodeAt(++i);\n\n // consume escaped\n if (isValidEscape(REVERSE_SOLIDUS, code)) {\n const escapeStart = i - 1;\n const escapeEnd = consumeEscaped(str, escapeStart);\n\n i = escapeEnd - 1;\n decoded += decodeEscaped(str.substring(escapeStart + 1, escapeEnd));\n } else {\n // \\r\\n\n if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {\n i++;\n }\n }\n } else {\n decoded += str[i];\n }\n }\n\n return decoded;\n}\n\n// https://drafts.csswg.org/cssom/#serialize-an-identifier\n// § 2.1. Common Serializing Idioms\nexport function encode(str) {\n let encoded = '';\n\n // If the character is the first character and is a \"-\" (U+002D),\n // and there is no second character, then the escaped character.\n // Note: That's means a single dash string \"-\" return as escaped dash,\n // so move the condition out of the main loop\n if (str.length === 1 && str.charCodeAt(0) === 0x002D) {\n return '\\\\-';\n }\n\n // To serialize an identifier means to create a string represented\n // by the concatenation of, for each character of the identifier:\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).\n if (code === 0x0000) {\n encoded += '\\uFFFD';\n continue;\n }\n\n if (\n // If the character is in the range [\\1-\\1f] (U+0001 to U+001F) or is U+007F ...\n // Note: Do not compare with 0x0001 since 0x0000 is precessed before\n code <= 0x001F || code === 0x007F ||\n // [or] ... is in the range [0-9] (U+0030 to U+0039),\n (code >= 0x0030 && code <= 0x0039 && (\n // If the character is the first character ...\n i === 0 ||\n // If the character is the second character ... and the first character is a \"-\" (U+002D)\n i === 1 && str.charCodeAt(0) === 0x002D\n ))\n ) {\n // ... then the character escaped as code point.\n encoded += '\\\\' + code.toString(16) + ' ';\n continue;\n }\n\n // If the character is not handled by one of the above rules and is greater\n // than or equal to U+0080, is \"-\" (U+002D) or \"_\" (U+005F), or is in one\n // of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to U+005A),\n // or \\[a-z] (U+0061 to U+007A), then the character itself.\n if (isName(code)) {\n encoded += str.charAt(i);\n } else {\n // Otherwise, the escaped character.\n encoded += '\\\\' + str.charAt(i);\n }\n }\n\n return encoded;\n}\n","import syntax from './syntax/index.js';\n\nexport * from './version.js';\nexport { default as createSyntax } from './syntax/create.js';\nexport { List } from './utils/List.js';\nexport { Lexer } from './lexer/Lexer.js';\nexport { tokenTypes, tokenNames, TokenStream, OffsetToLocation } from './tokenizer/index.js';\nexport * as definitionSyntax from './definition-syntax/index.js';\nexport { clone } from './utils/clone.js';\nexport * from './utils/names.js';\nexport * as ident from './utils/ident.js';\nexport * as string from './utils/string.js';\nexport * as url from './utils/url.js';\nexport const {\n tokenize,\n parse,\n generate,\n lexer,\n createLexer,\n\n walk,\n find,\n findLast,\n findAll,\n\n toPlainObject,\n fromPlainObject,\n\n fork\n} = syntax;\n","export type UrlPurpose = 'link' | 'image';\n\nexport interface UrlPolicyOptions {\n readonly exactUrlPlaceholders?: readonly string[];\n}\n\n/** URI protocol decisions live here; callers must pass decoded HTML/CSS values. */\nexport class UrlPolicy {\n readonly #placeholders: ReadonlySet<string>;\n\n constructor(options: UrlPolicyOptions = {}) {\n const placeholders = options.exactUrlPlaceholders ?? ['{{unsubscribe_url}}', '{{view_url}}'];\n if (\n placeholders.length > 64 ||\n placeholders.some(\n (value) => value.length > 200 || !/^\\{\\{[a-zA-Z][a-zA-Z0-9_.]*\\}\\}$/.test(value),\n )\n )\n throw new RangeError('INVALID_URL_PLACEHOLDER_CONFIG');\n this.#placeholders = new Set(placeholders);\n }\n\n isSafe(input: string, purpose: UrlPurpose = 'link'): boolean {\n // Checked before trimming: these are never part of an honest URL and some are skipped\n // or read as separators by URL parsers, wherever they sit in the value.\n if ([...input].some((character) => this.invisible(character.codePointAt(0) ?? 0))) return false;\n const value = input.trim();\n if (!value) return true;\n if (this.#placeholders.has(value)) return purpose === 'link';\n if (value.includes('{{') && !value.startsWith('https://') && !value.startsWith('http://'))\n return false;\n // Controls may be ignored by browser URL parsers and disguise a protocol.\n if (\n [...value].some(\n (character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127,\n )\n )\n return false;\n if (!this.spacesOnlyAfterScheme(value)) return false;\n if (value.startsWith('//') || value.startsWith('\\\\')) return false;\n try {\n const parsed = new URL(value, 'https://editor.invalid/');\n if (parsed.username || parsed.password) return false;\n if (parsed.protocol === 'https:' || parsed.protocol === 'http:') return true;\n if (purpose === 'link' && (parsed.protocol === 'mailto:' || parsed.protocol === 'tel:'))\n return true;\n return purpose === 'image' && parsed.protocol === 'cid:';\n } catch {\n return false;\n }\n }\n\n /**\n * Whether a document URL would run code where it is followed: `javascript:`, `vbscript:`\n * or a `data:` document. Unlike `isSafe`, which decides what the editor itself may write,\n * this only classifies imported content; merge tags and unknown schemes are not active.\n */\n isActive(input: string): boolean {\n // Browsers drop tabs and line breaks anywhere and controls or spaces before the scheme.\n const value = [...input]\n .filter((character) => {\n const code = character.charCodeAt(0);\n return code > 32 && code !== 127;\n })\n .join('')\n .toLowerCase();\n if (['javascript:', 'vbscript:', 'livescript:'].some((scheme) => value.startsWith(scheme)))\n return true;\n if (!value.startsWith('data:')) return false;\n const type = value.slice('data:'.length).split(/[;,]/, 1)[0] ?? '';\n return ['text/html', 'application/xhtml+xml', 'text/xml', 'application/xml'].includes(type);\n }\n\n /** Unicode separators, zero-width marks and direction controls (NEL, NBSP, ZWSP, BOM...). */\n private invisible(code: number): boolean {\n return (\n code === 0x85 ||\n code === 0xa0 ||\n code === 0x1680 ||\n (code >= 0x2000 && code <= 0x200f) ||\n (code >= 0x2028 && code <= 0x202f) ||\n (code >= 0x205f && code <= 0x2064) ||\n code === 0x3000 ||\n code === 0xfeff\n );\n }\n\n /**\n * A space never precedes or sits inside a scheme or authority. It is tolerated only in the\n * path or query of an explicit http(s) URL and after the colon of mailto and tel.\n */\n private spacesOnlyAfterScheme(value: string): boolean {\n const first = value.indexOf(' ');\n if (first < 0) return true;\n const lower = value.toLowerCase();\n if (lower.startsWith('mailto:')) return first >= 'mailto:'.length;\n if (lower.startsWith('tel:')) return first >= 'tel:'.length;\n const scheme = ['https://', 'http://'].find((prefix) => lower.startsWith(prefix));\n if (!scheme) return false;\n const rest = value.slice(scheme.length);\n const boundaries = ['/', '?'].map((mark) => rest.indexOf(mark)).filter((index) => index >= 0);\n // Browsers read a backslash as a path separator in special schemes: keep it unambiguous.\n if (!boundaries.length || rest.includes('\\\\')) return false;\n const pathStart = scheme.length + Math.min(...boundaries);\n const fragment = value.indexOf('#');\n if (fragment >= 0 && (fragment < pathStart || value.lastIndexOf(' ') > fragment)) return false;\n return first > pathStart;\n }\n}\n","import * as v from 'valibot';\n\nexport const TEXT_FONT_FAMILIES = [\n 'Arial',\n 'Georgia',\n 'Verdana',\n 'Tahoma',\n 'Trebuchet MS',\n 'Times New Roman',\n 'Courier New',\n 'system-ui',\n 'sans-serif',\n 'serif',\n 'monospace',\n] as const;\n\nexport const TEXT_STYLE_LIMITS = Object.freeze({\n fontSizePx: 160,\n lineHeightPx: 500,\n lineHeightRatio: 10,\n});\n\nconst component = v.pipe(v.number(), v.finite(), v.minValue(0), v.maxValue(255));\n/** What a selected block looks like, as bounded numbers and closed names; never CSS text. */\nexport const TextPresentationStyleSchema = v.strictObject({\n size: v.pipe(v.number(), v.finite(), v.minValue(1), v.maxValue(TEXT_STYLE_LIMITS.fontSizePx)),\n lineHeight: v.union([\n v.literal('normal'),\n v.pipe(v.number(), v.finite(), v.minValue(1), v.maxValue(TEXT_STYLE_LIMITS.lineHeightPx)),\n ]),\n weight: v.pipe(v.number(), v.finite(), v.minValue(100), v.maxValue(900)),\n color: v.tuple([\n component,\n component,\n component,\n v.pipe(v.number(), v.finite(), v.minValue(0), v.maxValue(1)),\n ]),\n family: v.picklist(['sans-serif', 'serif', 'monospace']),\n font: v.exactOptional(v.picklist(TEXT_FONT_FAMILIES)),\n align: v.picklist(['left', 'right', 'center', 'justify']),\n direction: v.picklist(['ltr', 'rtl']),\n});\nexport type CanvasTextStyle = v.InferOutput<typeof TextPresentationStyleSchema>;\n","import * as cssTree from 'css-tree';\nimport { DOCUMENT_LIMITS } from '../core/document';\nimport type { RichTextDecorationLine } from '../core/rich-text-format';\nimport { DocumentBudget } from '../core/budget';\nimport type { Diagnostic } from '../core/document';\nimport { UrlPolicy } from '../security/url-policy';\nimport { TEXT_FONT_FAMILIES, TEXT_STYLE_LIMITS } from '../security/text-presentation';\n\nexport interface CssInspection {\n readonly diagnostics: readonly Diagnostic[];\n readonly declarations: Readonly<Record<string, string>>;\n readonly urls: readonly string[];\n readonly urlCandidates: readonly string[];\n}\n\n/** What an author's CSS holds. Nothing here refuses a document; the host decides. */\nexport interface CssSurvey {\n /** Targets of `@import`, as written. */\n readonly imports: readonly string[];\n readonly fontFaces: number;\n /** Every `url()` and string source the stylesheet refers to. */\n readonly urls: readonly string[];\n /** `expression()`, `behavior`, `-moz-binding` and URLs which would run code. */\n readonly active: number;\n}\n\n/** Functions whose string argument is the address of what they load. */\nconst URL_FUNCTIONS: readonly string[] = ['image-set', '-webkit-image-set', 'src'];\n\ninterface InlinePiece {\n readonly text: string;\n readonly declaration: boolean;\n}\n\n/** Parse CSS rather than matching dangerous strings in the original stylesheet. */\nexport class CssDocumentCodec {\n readonly #urls: UrlPolicy;\n\n constructor(urls = new UrlPolicy()) {\n this.#urls = urls;\n }\n\n validate(\n css: string,\n context: 'stylesheet' | 'declarationList' = 'stylesheet',\n ): readonly Diagnostic[] {\n return this.inspect(css, context).diagnostics;\n }\n\n inspect(css: string, context: 'stylesheet' | 'declarationList' = 'stylesheet'): CssInspection {\n const diagnostics: Diagnostic[] = [];\n const declarations: Record<string, string> = Object.create(null) as Record<string, string>;\n const urls: string[] = [];\n const urlCandidates: string[] = [];\n if (new DocumentBudget().byteLength(css) > DOCUMENT_LIMITS.cssBytes)\n return { diagnostics: [this.error('CSS_TOO_LARGE')], declarations, urls, urlCandidates };\n if (!css.trim()) return { diagnostics, declarations, urls, urlCandidates };\n // CSS is emitted inside a style element. Even a CSS comment can close that boundary.\n if (css.toLowerCase().includes('</style') || css.includes('<!--') || css.includes('-->'))\n diagnostics.push(this.error('CSS_HTML_BOUNDARY'));\n try {\n const ast = cssTree.parse(css, {\n context,\n positions: true,\n parseCustomProperty: true,\n onParseError: () => {\n diagnostics.push(this.error('INVALID_CSS'));\n },\n });\n const functions: string[] = [];\n let customProperty = false;\n let count = 0;\n cssTree.walk(ast, {\n enter: (node: cssTree.CssNode) => {\n if (++count > DOCUMENT_LIMITS.nodes * 10) throw new RangeError('CSS_TOO_COMPLEX');\n if (node.type === 'Raw') diagnostics.push(this.error('UNPARSED_CSS'));\n if (node.type === 'Atrule') {\n const name = cssTree.ident.decode(node.name).toLowerCase();\n if (['import', 'charset', 'document', '-moz-document'].includes(name))\n diagnostics.push(this.error('FORBIDDEN_CSS_RULE'));\n }\n if (node.type === 'Declaration') {\n const name = cssTree.ident.decode(node.property).toLowerCase();\n customProperty = name.startsWith('--');\n if (['behavior', '-moz-binding'].includes(name))\n diagnostics.push(this.error('FORBIDDEN_CSS_PROPERTY'));\n declarations[name] = cssTree.generate(node.value);\n }\n if (node.type === 'String' && customProperty) urlCandidates.push(node.value);\n if (node.type === 'Function') {\n const name = cssTree.ident.decode(node.name).toLowerCase();\n functions.push(name);\n if (['expression', '-moz-binding'].includes(name))\n diagnostics.push(this.error('FORBIDDEN_CSS_FUNCTION'));\n }\n if (\n node.type === 'Url' ||\n (node.type === 'String' &&\n functions.some((name) => ['image-set', '-webkit-image-set', 'src'].includes(name)))\n ) {\n urls.push(node.value);\n if (!this.#urls.isSafe(node.value, 'image'))\n diagnostics.push(this.error('UNSAFE_CSS_URL'));\n }\n },\n leave: (node: cssTree.CssNode) => {\n if (node.type === 'Function') functions.pop();\n if (node.type === 'Declaration') customProperty = false;\n },\n });\n } catch {\n diagnostics.push(this.error('INVALID_CSS'));\n }\n return {\n diagnostics: this.unique(diagnostics),\n declarations,\n urls: [...new Set(urls)],\n urlCandidates: [...new Set(urlCandidates)],\n };\n }\n\n /** The only refusals left for the CSS of a document: its size and the element it lives in. */\n documentDiagnostics(css: string): readonly Diagnostic[] {\n if (new DocumentBudget().byteLength(css) > DOCUMENT_LIMITS.cssBytes)\n return [this.error('CSS_TOO_LARGE')];\n // The stylesheet is written inside a style element, which this sequence would close.\n return css.toLowerCase().includes('</style') ? [this.error('CSS_HTML_BOUNDARY')] : [];\n }\n\n /**\n * Tolerant inventory of imported CSS: hacks, vendor filters and parse errors are kept as\n * written. It never validates; `inspect` stays the strict gate of what the editor writes.\n */\n survey(css: string, context: 'stylesheet' | 'declarationList' = 'stylesheet'): CssSurvey {\n const imports: string[] = [];\n const urls: string[] = [];\n let fontFaces = 0;\n let active = 0;\n if (!css.trim()) return { imports, urls, fontFaces, active };\n try {\n const ast = cssTree.parse(css, { context, parseCustomProperty: true });\n let count = 0;\n let importing = false;\n cssTree.walk(ast, {\n enter: (node: cssTree.CssNode) => {\n if (++count > DOCUMENT_LIMITS.nodes * 10) throw new RangeError('CSS_TOO_COMPLEX');\n if (node.type === 'Atrule') {\n const name = cssTree.ident.decode(node.name).toLowerCase();\n importing = name === 'import';\n if (name === 'font-face') fontFaces++;\n }\n if (node.type === 'Declaration') {\n const name = cssTree.ident.decode(node.property).toLowerCase();\n if (['behavior', '-moz-binding'].includes(name)) active++;\n }\n if (\n node.type === 'Function' &&\n ['expression', '-moz-binding'].includes(cssTree.ident.decode(node.name).toLowerCase())\n )\n active++;\n // A value the grammar could not read is kept as text; only its intent is noted.\n if (node.type === 'Raw' && this.activeRaw(node.value)) active++;\n if (node.type === 'Url' || (importing && node.type === 'String')) {\n if (importing) imports.push(node.value);\n urls.push(node.value);\n if (this.#urls.isActive(node.value)) active++;\n }\n },\n leave: (node: cssTree.CssNode) => {\n if (node.type === 'Atrule') importing = false;\n },\n });\n } catch {\n // An unreadable stylesheet is still the author's; what was read so far is reported.\n }\n return { imports: [...new Set(imports)], urls: [...new Set(urls)], fontFaces, active };\n }\n\n /**\n * Removes from imported CSS what `survey` counts as active: a declaration which holds\n * `expression()`, a binding, a behavior file or a code URL, and an `@import` of a code URL.\n * Everything else keeps its bytes: the cut is made by the positions of the parser. The built-in\n * behaviors of Outlook (`behavior:url(#default#VML)`) load nothing and stay: without them the\n * VML of an e-mail does not draw.\n */\n stripActive(\n css: string,\n context: 'stylesheet' | 'declarationList' = 'stylesheet',\n ): { readonly css: string; readonly removed: number } {\n const cuts = this.activeSpans(css, context);\n if (!cuts?.length) return { css, removed: 0 };\n let output = '';\n let cursor = 0;\n let removed = 0;\n for (const cut of [...cuts].sort((left, right) => left.start - right.start)) {\n if (cut.start < cursor) continue;\n output += css.slice(cursor, cut.start);\n cursor = cut.end;\n // The separator of a removed declaration leaves with it.\n let next = cursor;\n while (next < css.length && ' \\t\\n\\r\\f'.includes(css[next] ?? '')) next++;\n if (css[next] === ';') cursor = next + 1;\n removed++;\n }\n output += css.slice(cursor);\n // What is written is read again: text which still holds any of it is not kept at all.\n return this.activeSpans(output, context)?.length === 0\n ? { css: output, removed }\n : { css: '', removed: removed + 1 };\n }\n\n /** Source spans of the declarations and imports to remove; undefined when unreadable. */\n private activeSpans(\n css: string,\n context: 'stylesheet' | 'declarationList',\n ): readonly { readonly start: number; readonly end: number }[] | undefined {\n if (!css.trim()) return [];\n const spans = new Map<cssTree.CssNode, { start: number; end: number }>();\n try {\n const ast = cssTree.parse(css, { context, parseCustomProperty: true, positions: true });\n const units: cssTree.CssNode[] = [];\n const functions: string[] = [];\n let count = 0;\n const mark = (node: cssTree.CssNode): void => {\n const unit = units.at(-1) ?? node;\n if (unit.loc) spans.set(unit, { start: unit.loc.start.offset, end: unit.loc.end.offset });\n };\n cssTree.walk(ast, {\n enter: (node: cssTree.CssNode) => {\n if (++count > DOCUMENT_LIMITS.nodes * 10) throw new RangeError('CSS_TOO_COMPLEX');\n const importing =\n node.type === 'Atrule' && cssTree.ident.decode(node.name).toLowerCase() === 'import';\n if (node.type === 'Declaration' || importing) units.push(node);\n const unit = units.at(-1);\n if (node.type === 'Declaration') {\n const name = cssTree.ident.decode(node.property).toLowerCase();\n if (name === '-moz-binding') mark(node);\n if (name === 'behavior' && !this.builtInBehavior(node)) mark(node);\n }\n if (\n node.type === 'Function' &&\n ['expression', '-moz-binding'].includes(cssTree.ident.decode(node.name).toLowerCase())\n )\n mark(node);\n if (node.type === 'Raw' && this.activeRaw(node.value)) mark(node);\n // A string is an address in an import and inside the functions which load an image.\n if (node.type === 'Function')\n functions.push(cssTree.ident.decode(node.name).toLowerCase());\n if (\n (node.type === 'Url' ||\n (node.type === 'String' &&\n (unit?.type === 'Atrule' ||\n functions.some((name) => URL_FUNCTIONS.includes(name))))) &&\n this.#urls.isActive(node.value)\n )\n mark(node);\n },\n leave: (node: cssTree.CssNode) => {\n if (node.type === 'Function') functions.pop();\n if (units.at(-1) === node) units.pop();\n },\n });\n } catch {\n return undefined;\n }\n return [...spans.values()];\n }\n\n /**\n * A value the grammar could not read is kept as text. Whether it means code is judged over\n * that text with its escapes resolved and its white space removed, as an engine would join it.\n */\n private activeRaw(value: string): boolean {\n let text: string;\n try {\n text = cssTree.ident.decode(value);\n } catch {\n text = value;\n }\n const flat = [...text.toLowerCase()].filter((character) => character > ' ').join('');\n return [\n 'expression(',\n '-moz-binding',\n 'javascript:',\n 'vbscript:',\n 'livescript:',\n 'data:text/html',\n 'data:application/xhtml+xml',\n ].some((marker) => flat.includes(marker));\n }\n\n /** `behavior:url(#default#VML)`: a behavior of the program itself, not a file it would load. */\n private builtInBehavior(declaration: cssTree.Declaration): boolean {\n let builtIn = true;\n let urls = 0;\n cssTree.walk(declaration, (node: cssTree.CssNode) => {\n if (node.type !== 'Url') return;\n urls++;\n if (!node.value.trim().toLowerCase().startsWith('#default#')) builtIn = false;\n });\n return builtIn && urls > 0;\n }\n\n readDeclarations(css: string): Readonly<Record<string, string>> {\n const result = this.inspect(css, 'declarationList');\n if (result.diagnostics.length) throw new Error('INVALID_INLINE_STYLE');\n const ast = cssTree.parse(css, { context: 'declarationList', parseCustomProperty: true });\n if (ast.type !== 'DeclarationList') throw new Error('INVALID_INLINE_STYLE');\n const declarations: Record<string, string> = {};\n const priority = new Set<string>();\n ast.children.forEach((node) => {\n if (node.type !== 'Declaration') return;\n const property = cssTree.ident.decode(node.property).toLowerCase();\n if (priority.has(property) && !node.important) return;\n declarations[property] = cssTree.generate(node.value);\n if (node.important) priority.add(property);\n });\n return declarations;\n }\n\n /** Only semantic text declarations may enter the authenticated editing DOM. */\n richTextStyles(css: string): Readonly<Record<string, string>> | undefined {\n const inspected = this.inspect(css, 'declarationList');\n if (inspected.diagnostics.length || inspected.urls.length || inspected.urlCandidates.length)\n return undefined;\n try {\n const ast = cssTree.parse(css, { context: 'declarationList', parseCustomProperty: true });\n if (ast.type !== 'DeclarationList') return undefined;\n const allowed = new Set([\n 'color',\n 'background-color',\n 'font-family',\n 'font-size',\n 'line-height',\n ]);\n const result: Record<string, string> = {};\n let invalid = false;\n ast.children.forEach((node) => {\n if (node.type !== 'Declaration') {\n invalid = true;\n return;\n }\n const name = cssTree.ident.decode(node.property).toLowerCase();\n if (\n !allowed.has(name) ||\n node.important ||\n !cssTree.lexer.matchProperty(name, node.value).matched\n ) {\n invalid = true;\n return;\n }\n cssTree.walk(node.value, (value) => {\n if (value.type === 'Url' || value.type === 'Raw') invalid = true;\n if (\n value.type === 'Function' &&\n ![\n 'rgb',\n 'rgba',\n 'hsl',\n 'hsla',\n 'hwb',\n 'lab',\n 'lch',\n 'oklab',\n 'oklch',\n 'color',\n ].includes(cssTree.ident.decode(value.name).toLowerCase())\n )\n invalid = true;\n });\n const serialized = cssTree.generate(node.value);\n if (name === 'font-size' || name === 'line-height') {\n const numeric = /^([0-9]+(?:\\.[0-9]+)?)(px|pt)?$/.exec(serialized);\n const amount = Number(numeric?.[1]);\n const pixels = numeric?.[2] === 'pt' ? (amount * 4) / 3 : amount;\n if (\n !numeric ||\n !Number.isFinite(amount) ||\n amount <= 0 ||\n (name === 'font-size' && (!numeric[2] || pixels > TEXT_STYLE_LIMITS.fontSizePx)) ||\n (name === 'line-height' &&\n (numeric[2]\n ? pixels > TEXT_STYLE_LIMITS.lineHeightPx\n : amount > TEXT_STYLE_LIMITS.lineHeightRatio))\n )\n invalid = true;\n }\n if (name === 'font-family') {\n const families: string[] = [];\n let parts: string[] = [];\n cssTree.walk(node.value, (value) => {\n if (value.type === 'String') parts.push(value.value);\n else if (value.type === 'Identifier') parts.push(cssTree.ident.decode(value.name));\n else if (value.type === 'Operator' && value.value === ',') {\n families.push(parts.join(' '));\n parts = [];\n }\n });\n families.push(parts.join(' '));\n const permitted = new Set<string>(TEXT_FONT_FAMILIES.map((font) => font.toLowerCase()));\n if (families.some((font) => !permitted.has(font.toLowerCase()))) invalid = true;\n }\n result[name] = serialized;\n });\n return invalid ? undefined : result;\n } catch {\n return undefined;\n }\n }\n\n /** Conservative stylesheet check; cascade applicability is deliberately not inferred. */\n hasDecorationRules(css: string): boolean {\n const inspected = this.inspect(css, 'stylesheet');\n // Imported stylesheets may hold hacks this parser cannot vouch for: assume a rule exists.\n if (inspected.diagnostics.length) return true;\n return (\n Object.hasOwn(inspected.declarations, 'text-decoration') ||\n Object.hasOwn(inspected.declarations, 'text-decoration-line')\n );\n }\n\n /** Removes one line while keeping an independent strike/underline and its color/style. */\n removeDecoration(css: string, line: RichTextDecorationLine): string {\n if (this.validate(css, 'declarationList').length) throw new Error('INVALID_STYLE_DECLARATION');\n const ast = cssTree.parse(css, { context: 'declarationList', parseCustomProperty: true });\n if (ast.type !== 'DeclarationList') throw new Error('INVALID_STYLE_DECLARATION');\n let lines: string[] = [];\n let important = false;\n ast.children.forEach((node) => {\n if (node.type !== 'Declaration') return;\n const name = cssTree.ident.decode(node.property).toLowerCase();\n if (\n !['text-decoration', 'text-decoration-line'].includes(name) ||\n (important && !node.important)\n )\n return;\n const identifiers: string[] = [];\n let unresolved = false;\n cssTree.walk(node.value, (value) => {\n if (value.type === 'Identifier')\n identifiers.push(cssTree.ident.decode(value.name).toLowerCase());\n if (\n value.type === 'Function' &&\n ['var', 'env', 'attr'].includes(cssTree.ident.decode(value.name).toLowerCase())\n )\n unresolved = true;\n });\n if (\n unresolved ||\n identifiers.some((value) => ['inherit', 'unset', 'revert', 'revert-layer'].includes(value))\n )\n throw new Error('UNRESOLVED_TEXT_DECORATION');\n lines = identifiers.filter((value) =>\n ['underline', 'overline', 'line-through'].includes(value),\n );\n important = !!node.important;\n });\n if (!lines.includes(line)) return css;\n const remaining = [...new Set(lines.filter((value) => value !== line))];\n return this.setDeclaration(\n css,\n 'text-decoration-line',\n (remaining.join(' ') || 'none') + (important ? '!important' : ''),\n );\n }\n\n /**\n * Catalog defaults go before the author's rules, which keep precedence, yet after any\n * leading `@charset` / `@import`, which only count at the top. The existing CSS is the\n * author's and is kept as written, hacks included; only the incoming CSS is validated.\n */\n prependDefaults(existing: string, incoming: readonly string[]): string {\n if (this.documentDiagnostics(existing).length) throw new Error('INVALID_CSS');\n const keys = new Set<string>();\n let preamble = 0;\n try {\n const current = cssTree.parse(existing, { parseCustomProperty: true, positions: true });\n if (current.type !== 'StyleSheet') throw new Error('INVALID_CSS');\n let leading = true;\n current.children.forEach((node) => {\n keys.add(cssTree.generate(node));\n if (\n leading &&\n node.type === 'Atrule' &&\n ['charset', 'import'].includes(cssTree.ident.decode(node.name).toLowerCase()) &&\n node.loc\n )\n preamble = node.loc.end.offset;\n else leading = false;\n });\n } catch {\n keys.clear();\n preamble = 0;\n }\n const additions: string[] = [];\n for (const css of incoming) {\n if (this.validate(css).length) throw new Error('INVALID_CSS');\n const stylesheet = cssTree.parse(css, { parseCustomProperty: true });\n if (stylesheet.type !== 'StyleSheet') throw new Error('INVALID_CSS');\n stylesheet.children.forEach((node) => {\n const key = cssTree.generate(node);\n if (!keys.has(key)) {\n keys.add(key);\n additions.push(key);\n }\n });\n }\n if (!additions.length) return existing;\n const result = [existing.slice(0, preamble), ...additions, existing.slice(preamble)]\n .filter(Boolean)\n .join('\\n');\n if (this.documentDiagnostics(result).length) throw new Error('INVALID_CSS');\n return result;\n }\n\n removeDeclarations(css: string, properties: readonly string[]): string {\n if (this.validate(css, 'declarationList').length) throw new Error('INVALID_STYLE_DECLARATION');\n const names = new Set(properties.map((name) => name.toLowerCase()));\n const output = this.join(this.remaining(css, names).pieces);\n const result = this.inspect(output, 'declarationList');\n // The rebuilt text is parsed again: an unterminated comment may not hide what it claims.\n if (result.diagnostics.length || [...names].some((name) => name in result.declarations))\n throw new Error('INVALID_STYLE_DECLARATION');\n return output;\n }\n\n /** Replaces every declaration of the property and keeps the priority the author gave it. */\n setDeclaration(css: string, property: string, value: string): string {\n if (this.validate(css, 'declarationList').length) throw new Error('INVALID_STYLE_DECLARATION');\n const name = cssTree.ident.decode(property).toLowerCase();\n const candidate = `${name}:${value}`;\n const inspected = this.inspect(candidate, 'declarationList');\n if (\n inspected.diagnostics.length ||\n Object.keys(inspected.declarations).length !== 1 ||\n !(name in inspected.declarations)\n ) {\n throw new Error('INVALID_STYLE_DECLARATION');\n }\n const declaration = cssTree.parse(candidate, { context: 'declaration' });\n if (declaration.type !== 'Declaration') throw new Error('INVALID_STYLE_DECLARATION');\n const { pieces, important } = this.remaining(css, new Set([name]));\n if (important) declaration.important = true;\n const output = this.join([\n ...pieces,\n { text: cssTree.generate(declaration), declaration: true },\n ]);\n const result = this.inspect(output, 'declarationList');\n // The new declaration must be what a parser reads back, not text lost inside a comment.\n if (result.diagnostics.length || result.declarations[name] !== inspected.declarations[name])\n throw new Error('INVALID_STYLE_DECLARATION');\n return output;\n }\n\n /** Untouched declarations and comments keep their source text; empty separators are dropped. */\n private remaining(\n css: string,\n removed: ReadonlySet<string>,\n ): { pieces: readonly InlinePiece[]; important: boolean } {\n const comments: { start: number; end: number }[] = [];\n const ast = cssTree.parse(css, {\n context: 'declarationList',\n parseCustomProperty: true,\n positions: true,\n onComment: (_value: string, location: cssTree.CssLocation) => {\n comments.push({ start: location.start.offset, end: location.end.offset });\n },\n });\n if (ast.type !== 'DeclarationList') throw new Error('INVALID_STYLE_DECLARATION');\n const located: (InlinePiece & { start: number; end: number; kept: boolean })[] = [];\n let important = false;\n ast.children.forEach((node) => {\n if (node.type !== 'Declaration' || !node.loc) throw new Error('INVALID_STYLE_DECLARATION');\n const start = node.loc.start.offset;\n const end = node.loc.end.offset;\n const kept = !removed.has(cssTree.ident.decode(node.property).toLowerCase());\n if (!kept && node.important) important = true;\n located.push({ start, end, kept, declaration: true, text: css.slice(start, end).trim() });\n });\n for (const comment of comments) {\n // A comment inside a declaration already travels (or leaves) with that declaration.\n if (located.some((piece) => comment.start >= piece.start && comment.end <= piece.end))\n continue;\n located.push({\n ...comment,\n kept: true,\n declaration: false,\n text: css.slice(comment.start, comment.end),\n });\n }\n return {\n important,\n pieces: located\n .filter((piece) => piece.kept && piece.text)\n .sort((left, right) => left.start - right.start)\n .map(({ text, declaration }) => ({ text, declaration })),\n };\n }\n\n private join(pieces: readonly InlinePiece[]): string {\n let output = '';\n let open = false;\n for (const piece of pieces) {\n if (piece.declaration) {\n output += (open ? ';' : output ? ' ' : '') + piece.text;\n open = true;\n } else output += (output ? ' ' : '') + piece.text;\n }\n return output;\n }\n\n private error(code: string): Diagnostic {\n return { code, severity: 'error', messageKey: `diagnostics.${code}` };\n }\n\n private unique(diagnostics: readonly Diagnostic[]): readonly Diagnostic[] {\n return [...new Map(diagnostics.map((diagnostic) => [diagnostic.code, diagnostic])).values()];\n }\n}\n","import { defaultTreeAdapter, parse, parseFragment } from 'parse5';\nimport type { DefaultTreeAdapterMap, ParserOptions } from 'parse5';\nimport { DocumentBudget } from '../core/budget';\nimport { DocumentValidationError } from '../core/document';\n\ntype ParentNode = DefaultTreeAdapterMap['parentNode'];\ntype Options = Omit<ParserOptions<DefaultTreeAdapterMap>, 'treeAdapter'>;\n\n/**\n * Ancestors the parser adds above what the document model counts from zero: the document, `html`\n * and `body` when flow content is read out of a document parse.\n */\nconst PARSER_ANCESTORS = 3;\n\n/**\n * Parses untrusted markup with a ceiling on nesting which is enforced while the tree is built.\n * The parser scans its stack of open elements on most tags, so a source of tens of thousands of\n * nested elements costs time quadratic in its depth before any limit of the document model could\n * see it. Here the parse ends at the first element placed deeper than the limit, with the same\n * diagnostic the model gives. A tree within the limit is exactly the tree of the plain parser.\n */\nexport class BoundedHtmlParser {\n readonly #limit: number;\n readonly #owners = new WeakMap<object, ParentNode>();\n readonly #adapter: typeof defaultTreeAdapter;\n\n constructor(depth: number = DocumentBudget.limits.depth) {\n if (!Number.isInteger(depth) || depth < 1) throw new RangeError('INVALID_NESTING_LIMIT');\n this.#limit = depth + PARSER_ANCESTORS;\n this.#adapter = {\n ...defaultTreeAdapter,\n appendChild: (parent, node) => {\n this.guard(parent);\n defaultTreeAdapter.appendChild(parent, node);\n },\n insertBefore: (parent, node, reference) => {\n this.guard(parent);\n defaultTreeAdapter.insertBefore(parent, node, reference);\n },\n setTemplateContent: (template, content) => {\n this.#owners.set(content, template);\n defaultTreeAdapter.setTemplateContent(template, content);\n },\n };\n }\n\n document(markup: string, options: Options = {}): DefaultTreeAdapterMap['document'] {\n return parse(markup, { ...options, treeAdapter: this.#adapter });\n }\n\n /** `context` is the element whose content the markup is, e.g. an `svg` root for an island. */\n fragment(\n markup: string,\n options: Options = {},\n context?: DefaultTreeAdapterMap['element'],\n ): DefaultTreeAdapterMap['documentFragment'] {\n const bounded = { ...options, treeAdapter: this.#adapter };\n return context ? parseFragment(context, markup, bounded) : parseFragment(markup, bounded);\n }\n\n private guard(parent: ParentNode): void {\n let depth = 0;\n let node: ParentNode | undefined | null = parent;\n while (node) {\n if (++depth > this.#limit) throw new DocumentValidationError('DOCUMENT_TOO_DEEP');\n node = ('parentNode' in node ? node.parentNode : undefined) ?? this.#owners.get(node);\n }\n }\n}\n","/** Cryptographic opaque identifiers, including nonces for the trusted preview bridge. */\nexport class SecureIdentifier {\n constructor(\n private readonly random: Pick<Crypto, 'getRandomValues'> | undefined = globalThis.crypto,\n ) {}\n\n next(): string {\n if (typeof this.random?.getRandomValues !== 'function') throw new Error('CRYPTO_UNAVAILABLE');\n const bytes = new Uint8Array(16);\n try {\n this.random.getRandomValues(bytes);\n } catch {\n throw new Error('CRYPTO_UNAVAILABLE');\n }\n return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');\n }\n}\n"],"ignoreList":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],"mappings":"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"}