@tiptap/core 2.0.0-beta.21 → 2.0.0-beta.210
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.
- package/README.md +2 -2
- package/dist/index.cjs +4311 -0
- package/dist/index.d.ts +2330 -0
- package/dist/index.js +4311 -0
- package/package.json +39 -25
- package/src/CommandManager.ts +76 -86
- package/src/Editor.ts +120 -81
- package/src/EventEmitter.ts +14 -4
- package/src/Extension.ts +280 -108
- package/src/ExtensionManager.ts +254 -108
- package/src/InputRule.ts +260 -0
- package/src/Mark.ts +398 -147
- package/src/Node.ts +437 -171
- package/src/NodeView.ts +132 -63
- package/src/PasteRule.ts +240 -0
- package/src/Tracker.ts +38 -0
- package/src/commands/blur.ts +12 -6
- package/src/commands/clearContent.ts +3 -3
- package/src/commands/clearNodes.ts +31 -19
- package/src/commands/command.ts +2 -2
- package/src/commands/createParagraphNear.ts +5 -4
- package/src/commands/deleteCurrentNode.ts +41 -0
- package/src/commands/deleteNode.ts +37 -0
- package/src/commands/deleteRange.ts +3 -3
- package/src/commands/deleteSelection.ts +5 -4
- package/src/commands/enter.ts +3 -3
- package/src/commands/exitCode.ts +5 -4
- package/src/commands/extendMarkRange.ts +16 -12
- package/src/commands/first.ts +3 -3
- package/src/commands/focus.ts +47 -44
- package/src/commands/forEach.ts +24 -0
- package/src/commands/index.ts +50 -0
- package/src/commands/insertContent.ts +17 -24
- package/src/commands/insertContentAt.ts +94 -0
- package/src/commands/join.ts +53 -0
- package/src/commands/keyboardShortcut.ts +6 -6
- package/src/commands/lift.ts +8 -7
- package/src/commands/liftEmptyBlock.ts +5 -4
- package/src/commands/liftListItem.ts +7 -6
- package/src/commands/newlineInCode.ts +5 -4
- package/src/commands/resetAttributes.ts +18 -12
- package/src/commands/scrollIntoView.ts +3 -3
- package/src/commands/selectAll.ts +8 -6
- package/src/commands/selectNodeBackward.ts +5 -4
- package/src/commands/selectNodeForward.ts +5 -4
- package/src/commands/selectParentNode.ts +5 -4
- package/src/commands/selectTextblockEnd.ts +20 -0
- package/src/commands/selectTextblockStart.ts +20 -0
- package/src/commands/setContent.ts +9 -16
- package/src/commands/setMark.ts +90 -14
- package/src/commands/setMeta.ts +18 -0
- package/src/commands/setNode.ts +32 -8
- package/src/commands/setNodeSelection.ts +27 -0
- package/src/commands/setTextSelection.ts +31 -0
- package/src/commands/sinkListItem.ts +7 -6
- package/src/commands/splitBlock.ts +31 -41
- package/src/commands/splitListItem.ts +46 -29
- package/src/commands/toggleList.ts +88 -20
- package/src/commands/toggleMark.ts +19 -8
- package/src/commands/toggleNode.ts +11 -6
- package/src/commands/toggleWrap.ts +10 -10
- package/src/commands/undoInputRule.ts +34 -5
- package/src/commands/unsetAllMarks.ts +7 -11
- package/src/commands/unsetMark.ts +36 -23
- package/src/commands/updateAttributes.ts +27 -15
- package/src/commands/wrapIn.ts +7 -12
- package/src/commands/wrapInList.ts +7 -6
- package/src/extensions/clipboardTextSerializer.ts +15 -36
- package/src/extensions/commands.ts +3 -147
- package/src/extensions/editable.ts +2 -1
- package/src/extensions/focusEvents.ts +4 -6
- package/src/extensions/index.ts +1 -0
- package/src/extensions/keymap.ts +106 -13
- package/src/extensions/tabindex.ts +18 -0
- package/src/helpers/combineTransactionSteps.ts +21 -0
- package/src/helpers/createChainableState.ts +38 -0
- package/src/helpers/createDocument.ts +5 -6
- package/src/helpers/createNodeFromContent.ts +20 -28
- package/src/helpers/defaultBlockAt.ts +13 -0
- package/src/helpers/findChildren.ts +18 -0
- package/src/helpers/findChildrenInRange.ts +36 -0
- package/src/helpers/findParentNode.ts +4 -3
- package/src/helpers/findParentNodeClosestToPos.ts +13 -7
- package/src/helpers/generateHTML.ts +7 -6
- package/src/helpers/generateJSON.ts +12 -0
- package/src/helpers/generateText.ts +27 -0
- package/src/helpers/getAttributes.ts +26 -0
- package/src/helpers/getAttributesFromExtensions.ts +42 -14
- package/src/helpers/getChangedRanges.ts +83 -0
- package/src/helpers/getDebugJSON.ts +54 -0
- package/src/helpers/getExtensionField.ts +25 -0
- package/src/helpers/getHTMLFromFragment.ts +5 -6
- package/src/helpers/getMarkAttributes.ts +18 -11
- package/src/helpers/getMarkRange.ts +41 -8
- package/src/helpers/getMarkType.ts +8 -2
- package/src/helpers/getMarksBetween.ts +34 -10
- package/src/helpers/getNodeAttributes.ts +14 -13
- package/src/helpers/getNodeType.ts +8 -2
- package/src/helpers/getRenderedAttributes.ts +9 -7
- package/src/helpers/getSchema.ts +7 -133
- package/src/helpers/getSchemaByResolvedExtensions.ts +192 -0
- package/src/helpers/getSchemaTypeByName.ts +3 -11
- package/src/helpers/getSchemaTypeNameByName.ts +2 -2
- package/src/helpers/getSplittedAttributes.ts +4 -4
- package/src/helpers/getText.ts +19 -0
- package/src/helpers/getTextBetween.ts +46 -0
- package/src/helpers/getTextContentFromNodes.ts +26 -0
- package/src/helpers/getTextSerializersFromSchema.ts +11 -0
- package/src/helpers/index.ts +33 -0
- package/src/helpers/injectExtensionAttributesToParseRule.ts +22 -23
- package/src/helpers/isActive.ts +10 -6
- package/src/helpers/isExtensionRulesEnabled.ts +15 -0
- package/src/helpers/isList.ts +14 -7
- package/src/helpers/isMarkActive.ts +49 -27
- package/src/helpers/isNodeActive.ts +29 -39
- package/src/helpers/isNodeEmpty.ts +2 -2
- package/src/helpers/isNodeSelection.ts +3 -4
- package/src/helpers/isTextSelection.ts +3 -4
- package/src/helpers/posToDOMRect.ts +35 -0
- package/src/helpers/resolveFocusPosition.ts +42 -0
- package/src/helpers/selectionToInsertionEnd.ts +3 -3
- package/src/helpers/splitExtensions.ts +3 -3
- package/src/index.ts +15 -24
- package/src/inputRules/index.ts +5 -0
- package/src/inputRules/markInputRule.ts +59 -40
- package/src/inputRules/nodeInputRule.ts +45 -12
- package/src/inputRules/textInputRule.ts +35 -0
- package/src/inputRules/textblockTypeInputRule.ts +37 -0
- package/src/inputRules/wrappingInputRule.ts +59 -0
- package/src/pasteRules/index.ts +3 -0
- package/src/pasteRules/markPasteRule.ts +61 -53
- package/src/pasteRules/nodePasteRule.ts +37 -0
- package/src/pasteRules/textPasteRule.ts +35 -0
- package/src/style.ts +16 -3
- package/src/types.ts +170 -97
- package/src/utilities/callOrReturn.ts +6 -3
- package/src/utilities/createStyleTag.ts +12 -1
- package/src/utilities/deleteProps.ts +2 -4
- package/src/utilities/elementFromString.ts +4 -5
- package/src/utilities/escapeForRegEx.ts +4 -0
- package/src/utilities/findDuplicates.ts +5 -0
- package/src/utilities/fromString.ts +2 -2
- package/src/utilities/index.ts +20 -0
- package/src/utilities/isEmptyObject.ts +2 -2
- package/src/utilities/isFunction.ts +3 -0
- package/src/utilities/isMacOS.ts +5 -0
- package/src/utilities/isNumber.ts +3 -0
- package/src/utilities/isPlainObject.ts +8 -5
- package/src/utilities/isRegExp.ts +3 -0
- package/src/utilities/isString.ts +3 -0
- package/src/utilities/isiOS.ts +12 -0
- package/src/utilities/mergeAttributes.ts +2 -3
- package/src/utilities/mergeDeep.ts +2 -3
- package/src/utilities/minMax.ts +1 -1
- package/src/utilities/objectIncludes.ts +17 -5
- package/src/utilities/removeDuplicates.ts +15 -0
- package/CHANGELOG.md +0 -365
- package/LICENSE.md +0 -21
- package/dist/packages/core/src/CommandManager.d.ts +0 -13
- package/dist/packages/core/src/Editor.d.ts +0 -142
- package/dist/packages/core/src/EventEmitter.d.ts +0 -7
- package/dist/packages/core/src/Extension.d.ts +0 -148
- package/dist/packages/core/src/ExtensionManager.d.ts +0 -24
- package/dist/packages/core/src/Mark.d.ts +0 -211
- package/dist/packages/core/src/Node.d.ts +0 -265
- package/dist/packages/core/src/NodeView.d.ts +0 -31
- package/dist/packages/core/src/commands/blur.d.ts +0 -12
- package/dist/packages/core/src/commands/clearContent.d.ts +0 -12
- package/dist/packages/core/src/commands/clearNodes.d.ts +0 -12
- package/dist/packages/core/src/commands/command.d.ts +0 -12
- package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -12
- package/dist/packages/core/src/commands/deleteRange.d.ts +0 -12
- package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -12
- package/dist/packages/core/src/commands/enter.d.ts +0 -12
- package/dist/packages/core/src/commands/exitCode.d.ts +0 -12
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -13
- package/dist/packages/core/src/commands/first.d.ts +0 -12
- package/dist/packages/core/src/commands/focus.d.ts +0 -12
- package/dist/packages/core/src/commands/insertContent.d.ts +0 -12
- package/dist/packages/core/src/commands/insertHTML.d.ts +0 -12
- package/dist/packages/core/src/commands/insertNode.d.ts +0 -13
- package/dist/packages/core/src/commands/insertText.d.ts +0 -12
- package/dist/packages/core/src/commands/joinBackward.d.ts +0 -12
- package/dist/packages/core/src/commands/joinForward.d.ts +0 -12
- package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -12
- package/dist/packages/core/src/commands/lift.d.ts +0 -13
- package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -12
- package/dist/packages/core/src/commands/liftListItem.d.ts +0 -13
- package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -12
- package/dist/packages/core/src/commands/replace.d.ts +0 -13
- package/dist/packages/core/src/commands/replaceRange.d.ts +0 -13
- package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/resetNodeAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -12
- package/dist/packages/core/src/commands/selectAll.d.ts +0 -12
- package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -12
- package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -12
- package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -12
- package/dist/packages/core/src/commands/setContent.d.ts +0 -12
- package/dist/packages/core/src/commands/setMark.d.ts +0 -13
- package/dist/packages/core/src/commands/setNode.d.ts +0 -13
- package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -13
- package/dist/packages/core/src/commands/splitBlock.d.ts +0 -14
- package/dist/packages/core/src/commands/splitListItem.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleList.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleMark.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleNode.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -13
- package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -12
- package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -12
- package/dist/packages/core/src/commands/unsetMark.d.ts +0 -13
- package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/updateNodeAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/wrapIn.d.ts +0 -13
- package/dist/packages/core/src/commands/wrapInList.d.ts +0 -13
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -2
- package/dist/packages/core/src/extensions/commands.d.ts +0 -100
- package/dist/packages/core/src/extensions/editable.d.ts +0 -2
- package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
- package/dist/packages/core/src/extensions/index.d.ts +0 -5
- package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
- package/dist/packages/core/src/helpers/createDocument.d.ts +0 -4
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -8
- package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -9
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -8
- package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -2
- package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
- package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
- package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -4
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
- package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -4
- package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
- package/dist/packages/core/src/helpers/getSchema.d.ts +0 -3
- package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -2
- package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -2
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -2
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
- package/dist/packages/core/src/helpers/isActive.d.ts +0 -3
- package/dist/packages/core/src/helpers/isList.d.ts +0 -2
- package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -4
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -4
- package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -2
- package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
- package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
- package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
- package/dist/packages/core/src/index.d.ts +0 -30
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -3
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -3
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -3
- package/dist/packages/core/src/style.d.ts +0 -2
- package/dist/packages/core/src/types.d.ts +0 -154
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -8
- package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
- package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -7
- package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
- package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
- package/dist/packages/core/src/utilities/isClass.d.ts +0 -1
- package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/isObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -2
- package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -2
- package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -7
- package/dist/packages/core/src/utilities/removeElement.d.ts +0 -1
- package/dist/tiptap-core.bundle.umd.min.js +0 -17
- package/dist/tiptap-core.bundle.umd.min.js.map +0 -1
- package/dist/tiptap-core.cjs.js +0 -3027
- package/dist/tiptap-core.cjs.js.map +0 -1
- package/dist/tiptap-core.esm.js +0 -3002
- package/dist/tiptap-core.esm.js.map +0 -1
- package/dist/tiptap-core.umd.js +0 -3024
- package/dist/tiptap-core.umd.js.map +0 -1
- package/src/commands/insertHTML.ts +0 -30
- package/src/commands/insertNode.ts +0 -33
- package/src/commands/insertText.ts +0 -22
- package/src/commands/joinBackward.ts +0 -17
- package/src/commands/joinForward.ts +0 -17
- package/src/commands/replace.ts +0 -20
- package/src/commands/replaceRange.ts +0 -36
- package/src/commands/resetNodeAttributes.ts +0 -33
- package/src/commands/updateNodeAttributes.ts +0 -35
- package/src/utilities/isClass.ts +0 -7
- package/src/utilities/isObject.ts +0 -10
- package/src/utilities/removeElement.ts +0 -5
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-core.umd.js","sources":["../src/helpers/getNodeType.ts","../src/helpers/getNodeAttributes.ts","../src/helpers/getMarkType.ts","../src/helpers/getMarkAttributes.ts","../src/utilities/objectIncludes.ts","../src/helpers/isNodeActive.ts","../src/helpers/isMarkActive.ts","../src/helpers/getSchemaTypeNameByName.ts","../src/helpers/isActive.ts","../src/utilities/removeElement.ts","../src/utilities/elementFromString.ts","../src/helpers/createNodeFromContent.ts","../src/helpers/createDocument.ts","../src/helpers/getHTMLFromFragment.ts","../src/helpers/isNodeEmpty.ts","../src/utilities/createStyleTag.ts","../src/CommandManager.ts","../src/helpers/splitExtensions.ts","../src/helpers/getAttributesFromExtensions.ts","../src/utilities/mergeAttributes.ts","../src/helpers/getRenderedAttributes.ts","../src/utilities/isEmptyObject.ts","../src/utilities/fromString.ts","../src/helpers/injectExtensionAttributesToParseRule.ts","../src/utilities/callOrReturn.ts","../src/helpers/getSchema.ts","../src/helpers/getSchemaTypeByName.ts","../src/ExtensionManager.ts","../src/EventEmitter.ts","../../../node_modules/tslib/tslib.es6.js","../src/utilities/isPlainObject.ts","../src/utilities/mergeDeep.ts","../src/Extension.ts","../src/extensions/clipboardTextSerializer.ts","../src/commands/blur.ts","../src/commands/clearContent.ts","../src/commands/clearNodes.ts","../src/commands/command.ts","../src/commands/createParagraphNear.ts","../src/commands/deleteRange.ts","../src/commands/deleteSelection.ts","../src/commands/enter.ts","../src/commands/exitCode.ts","../src/helpers/getMarkRange.ts","../src/commands/extendMarkRange.ts","../src/commands/first.ts","../src/utilities/minMax.ts","../src/utilities/isClass.ts","../src/utilities/isObject.ts","../src/helpers/isTextSelection.ts","../src/commands/focus.ts","../src/helpers/selectionToInsertionEnd.ts","../src/commands/insertContent.ts","../src/commands/insertHTML.ts","../src/commands/insertNode.ts","../src/commands/insertText.ts","../src/commands/joinBackward.ts","../src/commands/joinForward.ts","../src/commands/keyboardShortcut.ts","../src/commands/lift.ts","../src/commands/liftEmptyBlock.ts","../src/commands/liftListItem.ts","../src/commands/newlineInCode.ts","../src/commands/replace.ts","../src/commands/replaceRange.ts","../src/utilities/deleteProps.ts","../src/commands/resetAttributes.ts","../src/commands/resetNodeAttributes.ts","../src/commands/scrollIntoView.ts","../src/commands/selectAll.ts","../src/commands/selectNodeBackward.ts","../src/commands/selectNodeForward.ts","../src/commands/selectParentNode.ts","../src/commands/setContent.ts","../src/commands/setMark.ts","../src/commands/setNode.ts","../src/commands/sinkListItem.ts","../src/helpers/getSplittedAttributes.ts","../src/commands/splitBlock.ts","../src/commands/splitListItem.ts","../src/helpers/findParentNodeClosestToPos.ts","../src/helpers/findParentNode.ts","../src/helpers/isList.ts","../src/commands/toggleList.ts","../src/commands/toggleMark.ts","../src/commands/toggleNode.ts","../src/commands/toggleWrap.ts","../src/commands/undoInputRule.ts","../src/commands/unsetAllMarks.ts","../src/commands/unsetMark.ts","../src/commands/updateAttributes.ts","../src/commands/updateNodeAttributes.ts","../src/commands/wrapIn.ts","../src/commands/wrapInList.ts","../src/extensions/commands.ts","../src/extensions/editable.ts","../src/extensions/focusEvents.ts","../src/extensions/keymap.ts","../src/style.ts","../src/Editor.ts","../src/Node.ts","../src/Mark.ts","../src/NodeView.ts","../src/inputRules/nodeInputRule.ts","../src/helpers/getMarksBetween.ts","../src/inputRules/markInputRule.ts","../src/pasteRules/markPasteRule.ts","../src/helpers/generateHTML.ts","../src/helpers/isNodeSelection.ts"],"sourcesContent":["import { NodeType, Schema } from 'prosemirror-model'\n\nexport default function getNodeType(nameOrType: string | NodeType, schema: Schema): NodeType {\n if (typeof nameOrType === 'string') {\n return schema.nodes[nameOrType]\n }\n\n return nameOrType\n}\n","import { EditorState } from 'prosemirror-state'\nimport { Node, NodeType } from 'prosemirror-model'\nimport getNodeType from './getNodeType'\nimport { AnyObject } from '../types'\n\nexport default function getNodeAttributes(state: EditorState, typeOrName: string | NodeType): AnyObject {\n const type = getNodeType(typeOrName, state.schema)\n const { from, to } = state.selection\n let nodes: Node[] = []\n\n state.doc.nodesBetween(from, to, node => {\n nodes = [...nodes, node]\n })\n\n const node = nodes\n .reverse()\n .find(nodeItem => nodeItem.type.name === type.name)\n\n if (node) {\n return { ...node.attrs }\n }\n\n return {}\n}\n","import { MarkType, Schema } from 'prosemirror-model'\n\nexport default function getMarkType(nameOrType: string | MarkType, schema: Schema): MarkType {\n if (typeof nameOrType === 'string') {\n return schema.marks[nameOrType]\n }\n\n return nameOrType\n}\n","import { EditorState } from 'prosemirror-state'\nimport { Mark, MarkType } from 'prosemirror-model'\nimport getMarkType from './getMarkType'\nimport { AnyObject } from '../types'\n\nexport default function getMarkAttributes(state: EditorState, typeOrName: string | MarkType): AnyObject {\n const type = getMarkType(typeOrName, state.schema)\n const { from, to, empty } = state.selection\n let marks: Mark[] = []\n\n if (empty) {\n marks = state.selection.$head.marks()\n } else {\n state.doc.nodesBetween(from, to, node => {\n marks = [...marks, ...node.marks]\n })\n }\n\n const mark = marks.find(markItem => markItem.type.name === type.name)\n\n if (mark) {\n return { ...mark.attrs }\n }\n\n return {}\n}\n","import { AnyObject } from '../types'\n\n/**\n * Check if object1 includes object2\n * @param object1 Object\n * @param object2 Object\n */\nexport default function objectIncludes(object1: AnyObject, object2: AnyObject): boolean {\n const keys = Object.keys(object2)\n\n if (!keys.length) {\n return true\n }\n\n return !!keys\n .filter(key => object2[key] === object1[key])\n .length\n}\n","import { EditorState } from 'prosemirror-state'\nimport { NodeType } from 'prosemirror-model'\nimport objectIncludes from '../utilities/objectIncludes'\nimport getNodeType from './getNodeType'\nimport { AnyObject, NodeRange } from '../types'\n\nexport default function isNodeActive(\n state: EditorState,\n typeOrName: NodeType | string | null,\n attributes: AnyObject = {},\n): boolean {\n const { from, to, empty } = state.selection\n const type = typeOrName\n ? getNodeType(typeOrName, state.schema)\n : null\n\n let nodeRanges: NodeRange[] = []\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) {\n const relativeFrom = Math.max(from, pos)\n const relativeTo = Math.min(to, pos + node.nodeSize)\n\n nodeRanges = [...nodeRanges, {\n node,\n from: relativeFrom,\n to: relativeTo,\n }]\n }\n })\n\n if (empty) {\n return !!nodeRanges\n .filter(nodeRange => {\n if (!type) {\n return true\n }\n\n return type.name === nodeRange.node.type.name\n })\n .find(nodeRange => objectIncludes(nodeRange.node.attrs, attributes))\n }\n\n const selectionRange = to - from\n\n const range = nodeRanges\n .filter(nodeRange => {\n if (!type) {\n return true\n }\n\n return type.name === nodeRange.node.type.name\n })\n .filter(nodeRange => objectIncludes(nodeRange.node.attrs, attributes))\n .reduce((sum, nodeRange) => {\n const size = nodeRange.to - nodeRange.from\n return sum + size\n }, 0)\n\n return range >= selectionRange\n}\n","import { EditorState } from 'prosemirror-state'\nimport { MarkType } from 'prosemirror-model'\nimport objectIncludes from '../utilities/objectIncludes'\nimport getMarkType from './getMarkType'\nimport { AnyObject, MarkRange } from '../types'\n\nexport default function isMarkActive(\n state: EditorState,\n typeOrName: MarkType | string | null,\n attributes: AnyObject = {},\n): boolean {\n const { from, to, empty } = state.selection\n const type = typeOrName\n ? getMarkType(typeOrName, state.schema)\n : null\n\n if (empty) {\n return !!(state.storedMarks || state.selection.$from.marks())\n .filter(mark => {\n if (!type) {\n return true\n }\n\n return type.name === mark.type.name\n })\n .find(mark => objectIncludes(mark.attrs, attributes))\n }\n\n let selectionRange = 0\n let markRanges: MarkRange[] = []\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n const relativeFrom = Math.max(from, pos)\n const relativeTo = Math.min(to, pos + node.nodeSize)\n const range = relativeTo - relativeFrom\n\n selectionRange += range\n\n markRanges = [...markRanges, ...node.marks.map(mark => ({\n mark,\n from: relativeFrom,\n to: relativeTo,\n }))]\n }\n })\n\n if (selectionRange === 0) {\n return false\n }\n\n const range = markRanges\n .filter(markRange => {\n if (!type) {\n return true\n }\n\n return type.name === markRange.mark.type.name\n })\n .filter(markRange => objectIncludes(markRange.mark.attrs, attributes))\n .reduce((sum, markRange) => {\n const size = markRange.to - markRange.from\n return sum + size\n }, 0)\n\n return range >= selectionRange\n}\n","import { Schema } from 'prosemirror-model'\n\nexport default function getSchemaTypeNameByName(name: string, schema: Schema): 'node' | 'mark' | null {\n if (schema.nodes[name]) {\n return 'node'\n }\n\n if (schema.marks[name]) {\n return 'mark'\n }\n\n return null\n}\n","import { EditorState } from 'prosemirror-state'\nimport isNodeActive from './isNodeActive'\nimport isMarkActive from './isMarkActive'\nimport getSchemaTypeNameByName from './getSchemaTypeNameByName'\nimport { AnyObject } from '../types'\n\nexport default function isActive(state: EditorState, name: string | null, attributes: AnyObject = {}): boolean {\n if (!name) {\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes)\n }\n\n const schemaType = getSchemaTypeNameByName(name, state.schema)\n\n if (schemaType === 'node') {\n return isNodeActive(state, name, attributes)\n }\n\n if (schemaType === 'mark') {\n return isMarkActive(state, name, attributes)\n }\n\n return false\n}\n","export default function removeElement(element: HTMLElement): void {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element)\n }\n}\n","export default function elementFromString(value: string): HTMLElement {\n const htmlString = `<div>${value}</div>`\n const parser = new window.DOMParser()\n const element = parser.parseFromString(htmlString, 'text/html').body\n\n return element\n}\n","import {\n Schema,\n DOMParser,\n Node as ProseMirrorNode,\n Fragment,\n} from 'prosemirror-model'\nimport elementFromString from '../utilities/elementFromString'\nimport { AnyObject } from '../types'\n\nexport type Content = string | JSON | null\n\nexport type CreateNodeFromContentOptions = {\n slice?: boolean,\n parseOptions?: AnyObject,\n}\n\nexport default function createNodeFromContent(\n content: Content,\n schema: Schema,\n options?: CreateNodeFromContentOptions,\n): string | ProseMirrorNode | Fragment {\n options = {\n slice: true,\n parseOptions: {},\n ...options,\n }\n\n if (content && typeof content === 'object') {\n try {\n return schema.nodeFromJSON(content)\n } catch (error) {\n console.warn(\n '[tiptap warn]: Invalid content.',\n 'Passed value:',\n content,\n 'Error:',\n error,\n )\n\n return createNodeFromContent('', schema, options)\n }\n }\n\n if (typeof content === 'string') {\n const isHTML = content.trim().startsWith('<') && content.trim().endsWith('>')\n\n if (isHTML || !options.slice) {\n const parser = DOMParser.fromSchema(schema)\n\n return options.slice\n ? parser.parseSlice(elementFromString(content), options.parseOptions).content\n : parser.parse(elementFromString(content), options.parseOptions)\n }\n\n return content\n }\n\n return createNodeFromContent('', schema, options)\n}\n","import { Schema, Node as ProseMirrorNode } from 'prosemirror-model'\nimport { AnyObject } from '../types'\nimport createNodeFromContent from './createNodeFromContent'\n\nexport type Content = string | JSON | null\n\nexport default function createDocument(\n content: Content,\n schema: Schema,\n parseOptions: AnyObject = {},\n): ProseMirrorNode {\n return createNodeFromContent(content, schema, { slice: false, parseOptions }) as ProseMirrorNode\n}\n","import { Node, DOMSerializer, Schema } from 'prosemirror-model'\n\nexport default function getHTMLFromFragment(doc: Node, schema: Schema): string {\n const fragment = DOMSerializer\n .fromSchema(schema)\n .serializeFragment(doc.content)\n\n const temporaryDocument = document.implementation.createHTMLDocument()\n const container = temporaryDocument.createElement('div')\n container.appendChild(fragment)\n\n return container.innerHTML\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\n\nexport default function isNodeEmpty(node: ProseMirrorNode): boolean {\n const defaultContent = node.type.createAndFill()?.toJSON()\n const content = node.toJSON()\n\n return JSON.stringify(defaultContent) === JSON.stringify(content)\n}\n","export default function createStyleTag(style: string): HTMLStyleElement {\n const styleNode = document.createElement('style')\n\n styleNode.innerHTML = style\n document.getElementsByTagName('head')[0].appendChild(styleNode)\n\n return styleNode\n}\n","import { EditorState, Transaction } from 'prosemirror-state'\nimport { Editor } from './Editor'\nimport {\n SingleCommands,\n ChainedCommands,\n CanCommands,\n RawCommands,\n CommandProps,\n} from './types'\n\nexport default class CommandManager {\n\n editor: Editor\n\n commands: RawCommands\n\n constructor(editor: Editor, commands: RawCommands) {\n this.editor = editor\n this.commands = commands\n }\n\n public createCommands(): SingleCommands {\n const { commands, editor } = this\n const { state, view } = editor\n const { tr } = state\n const props = this.buildProps(tr)\n\n return Object.fromEntries(Object\n .entries(commands)\n .map(([name, command]) => {\n const method = (...args: any) => {\n const callback = command(...args)(props)\n\n if (!tr.getMeta('preventDispatch')) {\n view.dispatch(tr)\n }\n\n return callback\n }\n\n return [name, method]\n })) as SingleCommands\n }\n\n public createChain(startTr?: Transaction, shouldDispatch = true): ChainedCommands {\n const { commands, editor } = this\n const { state, view } = editor\n const callbacks: boolean[] = []\n const hasStartTransaction = !!startTr\n const tr = startTr || state.tr\n\n const run = () => {\n if (!hasStartTransaction && shouldDispatch && !tr.getMeta('preventDispatch')) {\n view.dispatch(tr)\n }\n\n return () => callbacks.every(callback => callback === true)\n }\n\n const chain = {\n ...Object.fromEntries(Object.entries(commands).map(([name, command]) => {\n const chainedCommand = (...args: any[]) => {\n const props = this.buildProps(tr, shouldDispatch)\n const callback = command(...args)(props)\n\n callbacks.push(callback)\n\n return chain\n }\n\n return [name, chainedCommand]\n })),\n run,\n } as unknown as ChainedCommands\n\n return chain\n }\n\n public createCan(startTr?: Transaction): CanCommands {\n const { commands, editor } = this\n const { state } = editor\n const dispatch = undefined\n const tr = startTr || state.tr\n const props = this.buildProps(tr, dispatch)\n const formattedCommands = Object.fromEntries(Object\n .entries(commands)\n .map(([name, command]) => {\n return [name, (...args: any[]) => command(...args)({ ...props, dispatch })]\n })) as SingleCommands\n\n return {\n ...formattedCommands,\n chain: () => this.createChain(tr, dispatch),\n } as CanCommands\n }\n\n public buildProps(tr: Transaction, shouldDispatch = true): CommandProps {\n const { editor, commands } = this\n const { state, view } = editor\n\n if (state.storedMarks) {\n tr.setStoredMarks(state.storedMarks)\n }\n\n const props: CommandProps = {\n tr,\n editor,\n view,\n state: this.chainableState(tr, state),\n dispatch: shouldDispatch\n ? () => undefined\n : undefined,\n chain: () => this.createChain(tr),\n can: () => this.createCan(tr),\n get commands() {\n return Object.fromEntries(Object\n .entries(commands)\n .map(([name, command]) => {\n return [name, (...args: any[]) => command(...args)(props)]\n })) as SingleCommands\n },\n }\n\n return props\n }\n\n public chainableState(tr: Transaction, state: EditorState): EditorState {\n let { selection } = tr\n let { doc } = tr\n let { storedMarks } = tr\n\n return {\n ...state,\n schema: state.schema,\n plugins: state.plugins,\n apply: state.apply.bind(state),\n applyTransaction: state.applyTransaction.bind(state),\n reconfigure: state.reconfigure.bind(state),\n toJSON: state.toJSON.bind(state),\n get storedMarks() {\n return storedMarks\n },\n get selection() {\n return selection\n },\n get doc() {\n return doc\n },\n get tr() {\n selection = tr.selection\n doc = tr.doc\n storedMarks = tr.storedMarks\n\n return tr\n },\n }\n }\n\n}\n","import { Extensions } from '../types'\nimport { Extension } from '../Extension'\nimport { Node } from '../Node'\nimport { Mark } from '../Mark'\n\nexport default function splitExtensions(extensions: Extensions) {\n const baseExtensions = extensions.filter(extension => extension.type === 'extension') as Extension[]\n const nodeExtensions = extensions.filter(extension => extension.type === 'node') as Node[]\n const markExtensions = extensions.filter(extension => extension.type === 'mark') as Mark[]\n\n return {\n baseExtensions,\n nodeExtensions,\n markExtensions,\n }\n}\n","import splitExtensions from './splitExtensions'\nimport {\n Extensions,\n GlobalAttributes,\n Attributes,\n Attribute,\n ExtensionAttribute,\n} from '../types'\n\n/**\n * Get a list of all extension attributes defined in `addAttribute` and `addGlobalAttribute`.\n * @param extensions List of extensions\n */\nexport default function getAttributesFromExtensions(extensions: Extensions): ExtensionAttribute[] {\n const extensionAttributes: ExtensionAttribute[] = []\n const { nodeExtensions, markExtensions } = splitExtensions(extensions)\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions]\n const defaultAttribute: Required<Attribute> = {\n default: null,\n rendered: true,\n renderHTML: null,\n parseHTML: null,\n keepOnSplit: true,\n }\n\n extensions.forEach(extension => {\n const context = {\n options: extension.options,\n }\n\n if (!extension.config.addGlobalAttributes) {\n return\n }\n\n const globalAttributes = extension.config.addGlobalAttributes.bind(context)() as GlobalAttributes\n\n globalAttributes.forEach(globalAttribute => {\n globalAttribute.types.forEach(type => {\n Object\n .entries(globalAttribute.attributes)\n .forEach(([name, attribute]) => {\n extensionAttributes.push({\n type,\n name,\n attribute: {\n ...defaultAttribute,\n ...attribute,\n },\n })\n })\n })\n })\n })\n\n nodeAndMarkExtensions.forEach(extension => {\n const context = {\n options: extension.options,\n }\n\n if (!extension.config.addAttributes) {\n return\n }\n\n const attributes = extension.config.addAttributes.bind(context)() as Attributes\n\n Object\n .entries(attributes)\n .forEach(([name, attribute]) => {\n extensionAttributes.push({\n type: extension.config.name,\n name,\n attribute: {\n ...defaultAttribute,\n ...attribute,\n },\n })\n })\n })\n\n return extensionAttributes\n}\n","import { AnyObject } from '../types'\n\nexport default function mergeAttributes(...objects: AnyObject[]): AnyObject {\n return objects\n .filter(item => !!item)\n .reduce((items, item) => {\n const mergedAttributes = { ...items }\n\n Object.entries(item).forEach(([key, value]) => {\n const exists = mergedAttributes[key]\n\n if (!exists) {\n mergedAttributes[key] = value\n return\n }\n\n if (key === 'class') {\n mergedAttributes[key] = [mergedAttributes[key], value].join(' ')\n } else if (key === 'style') {\n mergedAttributes[key] = [mergedAttributes[key], value].join('; ')\n } else {\n mergedAttributes[key] = value\n }\n })\n\n return mergedAttributes\n }, {})\n}\n","import { Node, Mark } from 'prosemirror-model'\nimport { ExtensionAttribute, AnyObject } from '../types'\nimport mergeAttributes from '../utilities/mergeAttributes'\n\nexport default function getRenderedAttributes(nodeOrMark: Node | Mark, extensionAttributes: ExtensionAttribute[]): AnyObject {\n return extensionAttributes\n .filter(item => item.attribute.rendered)\n .map(item => {\n if (!item.attribute.renderHTML) {\n return {\n [item.name]: nodeOrMark.attrs[item.name],\n }\n }\n\n return item.attribute.renderHTML(nodeOrMark.attrs) || {}\n })\n .reduce((attributes, attribute) => {\n return mergeAttributes(attributes, attribute)\n }, {})\n}\n","export default function isEmptyObject(object = {}): boolean {\n return Object.keys(object).length === 0 && object.constructor === Object\n}\n","export default function fromString(value: any): any {\n if (typeof value !== 'string') {\n return value\n }\n\n if (value.match(/^\\d*(\\.\\d+)?$/)) {\n return Number(value)\n }\n\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n return value\n}\n","import { ParseRule } from 'prosemirror-model'\nimport { ExtensionAttribute } from '../types'\nimport fromString from '../utilities/fromString'\n\n/**\n * This function merges extension attributes into parserule attributes (`attrs` or `getAttrs`).\n * Cancels when `getAttrs` returned `false`.\n * @param parseRule ProseMirror ParseRule\n * @param extensionAttributes List of attributes to inject\n */\nexport default function injectExtensionAttributesToParseRule(parseRule: ParseRule, extensionAttributes: ExtensionAttribute[]): ParseRule {\n if (parseRule.style) {\n return parseRule\n }\n\n return {\n ...parseRule,\n getAttrs: node => {\n const oldAttributes = parseRule.getAttrs\n ? parseRule.getAttrs(node)\n : parseRule.attrs\n\n if (oldAttributes === false) {\n return false\n }\n\n const newAttributes = extensionAttributes\n .filter(item => item.attribute.rendered)\n .reduce((items, item) => {\n const attributes = item.attribute.parseHTML\n ? item.attribute.parseHTML(node as HTMLElement) || {}\n : {\n [item.name]: fromString((node as HTMLElement).getAttribute(item.name)),\n }\n\n const filteredAttributes = Object.fromEntries(Object.entries(attributes)\n .filter(([, value]) => value !== undefined && value !== null))\n\n return {\n ...items,\n ...filteredAttributes,\n }\n }, {})\n\n return { ...oldAttributes, ...newAttributes }\n },\n }\n}\n","/**\n * Optionally calls `value` as a function.\n * Otherwise it is returned directly.\n * @param value Function or any value.\n * @param context Optional context to bind to function.\n * @param props Optional props to pass to function.\n */\nexport default function callOrReturn(value: any, context: any = undefined, ...props: any[]): any {\n if (typeof value === 'function') {\n if (context) {\n return value.bind(context)(...props)\n }\n\n return value(...props)\n }\n\n return value\n}\n","import { NodeSpec, MarkSpec, Schema } from 'prosemirror-model'\nimport { Extensions } from '../types'\nimport { ExtensionConfig, NodeConfig, MarkConfig } from '..'\nimport splitExtensions from './splitExtensions'\nimport getAttributesFromExtensions from './getAttributesFromExtensions'\nimport getRenderedAttributes from './getRenderedAttributes'\nimport isEmptyObject from '../utilities/isEmptyObject'\nimport injectExtensionAttributesToParseRule from './injectExtensionAttributesToParseRule'\nimport callOrReturn from '../utilities/callOrReturn'\n\nfunction cleanUpSchemaItem<T>(data: T) {\n return Object.fromEntries(Object.entries(data).filter(([key, value]) => {\n if (key === 'attrs' && isEmptyObject(value)) {\n return false\n }\n\n return value !== null && value !== undefined\n })) as T\n}\n\nexport default function getSchema(extensions: Extensions): Schema {\n const allAttributes = getAttributesFromExtensions(extensions)\n const { nodeExtensions, markExtensions } = splitExtensions(extensions)\n const topNode = nodeExtensions.find(extension => extension.config.topNode)?.config.name\n const nodeSchemaExtenders: (\n | ExtensionConfig['extendNodeSchema']\n | NodeConfig['extendNodeSchema']\n | MarkConfig['extendNodeSchema']\n )[] = []\n const markSchemaExtenders: (\n | ExtensionConfig['extendNodeSchema']\n | NodeConfig['extendNodeSchema']\n | MarkConfig['extendNodeSchema']\n )[] = []\n\n extensions.forEach(extension => {\n if (typeof extension.config.extendNodeSchema === 'function') {\n nodeSchemaExtenders.push(extension.config.extendNodeSchema)\n }\n\n if (typeof extension.config.extendMarkSchema === 'function') {\n markSchemaExtenders.push(extension.config.extendMarkSchema)\n }\n })\n\n const nodes = Object.fromEntries(nodeExtensions.map(extension => {\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.config.name)\n const context = { options: extension.options }\n\n const extraNodeFields = nodeSchemaExtenders.reduce((fields, nodeSchemaExtender) => {\n const extraFields = callOrReturn(nodeSchemaExtender, context, extension)\n\n return {\n ...fields,\n ...extraFields,\n }\n }, {})\n\n const schema: NodeSpec = cleanUpSchemaItem({\n ...extraNodeFields,\n content: callOrReturn(extension.config.content, context),\n marks: callOrReturn(extension.config.marks, context),\n group: callOrReturn(extension.config.group, context),\n inline: callOrReturn(extension.config.inline, context),\n atom: callOrReturn(extension.config.atom, context),\n selectable: callOrReturn(extension.config.selectable, context),\n draggable: callOrReturn(extension.config.draggable, context),\n code: callOrReturn(extension.config.code, context),\n defining: callOrReturn(extension.config.defining, context),\n isolating: callOrReturn(extension.config.isolating, context),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]\n })),\n })\n\n if (extension.config.parseHTML) {\n schema.parseDOM = extension.config.parseHTML\n .bind(context)()\n ?.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))\n }\n\n if (extension.config.renderHTML) {\n schema.toDOM = node => (extension.config.renderHTML as Function)?.bind(context)({\n node,\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes),\n })\n }\n\n return [extension.config.name, schema]\n }))\n\n const marks = Object.fromEntries(markExtensions.map(extension => {\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.config.name)\n const context = { options: extension.options }\n\n const extraMarkFields = markSchemaExtenders.reduce((fields, markSchemaExtender) => {\n const extraFields = callOrReturn(markSchemaExtender, context, extension)\n\n return {\n ...fields,\n ...extraFields,\n }\n }, {})\n\n const schema: MarkSpec = cleanUpSchemaItem({\n ...extraMarkFields,\n inclusive: callOrReturn(extension.config.inclusive, context),\n excludes: callOrReturn(extension.config.excludes, context),\n group: callOrReturn(extension.config.group, context),\n spanning: callOrReturn(extension.config.spanning, context),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]\n })),\n })\n\n if (extension.config.parseHTML) {\n schema.parseDOM = extension.config.parseHTML\n .bind(context)()\n ?.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))\n }\n\n if (extension.config.renderHTML) {\n schema.toDOM = mark => (extension.config.renderHTML as Function)?.bind(context)({\n mark,\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),\n })\n }\n\n return [extension.config.name, schema]\n }))\n\n return new Schema({\n topNode,\n nodes,\n marks,\n })\n}\n","import { MarkType, NodeType, Schema } from 'prosemirror-model'\n\nexport default function getSchemaTypeByName(name: string, schema: Schema): NodeType | MarkType | null {\n if (schema.nodes[name]) {\n return schema.nodes[name]\n }\n\n if (schema.marks[name]) {\n return schema.marks[name]\n }\n\n return null\n}\n","import { keymap } from 'prosemirror-keymap'\nimport { Schema, Node as ProsemirrorNode } from 'prosemirror-model'\nimport { inputRules as inputRulesPlugin } from 'prosemirror-inputrules'\nimport { EditorView, Decoration } from 'prosemirror-view'\nimport { Plugin } from 'prosemirror-state'\nimport { Editor } from './Editor'\nimport { Extensions, NodeViewRenderer, RawCommands } from './types'\nimport getSchema from './helpers/getSchema'\nimport getSchemaTypeByName from './helpers/getSchemaTypeByName'\nimport getNodeType from './helpers/getNodeType'\nimport splitExtensions from './helpers/splitExtensions'\nimport getAttributesFromExtensions from './helpers/getAttributesFromExtensions'\nimport getRenderedAttributes from './helpers/getRenderedAttributes'\nimport callOrReturn from './utilities/callOrReturn'\n\nexport default class ExtensionManager {\n\n editor: Editor\n\n schema: Schema\n\n extensions: Extensions\n\n splittableMarks: string[] = []\n\n constructor(extensions: Extensions, editor: Editor) {\n this.editor = editor\n this.extensions = this.sort(extensions)\n this.schema = getSchema(this.extensions)\n\n this.extensions.forEach(extension => {\n const context = {\n options: extension.options,\n editor: this.editor,\n type: getSchemaTypeByName(extension.config.name, this.schema),\n }\n\n if (extension.type === 'mark') {\n const keepOnSplit = callOrReturn(extension.config.keepOnSplit, context) ?? true\n\n if (keepOnSplit) {\n this.splittableMarks.push(extension.config.name)\n }\n }\n\n if (typeof extension.config.onCreate === 'function') {\n this.editor.on('create', extension.config.onCreate.bind(context))\n }\n\n if (typeof extension.config.onUpdate === 'function') {\n this.editor.on('update', extension.config.onUpdate.bind(context))\n }\n\n if (typeof extension.config.onSelectionUpdate === 'function') {\n this.editor.on('selectionUpdate', extension.config.onSelectionUpdate.bind(context))\n }\n\n if (typeof extension.config.onTransaction === 'function') {\n this.editor.on('transaction', extension.config.onTransaction.bind(context))\n }\n\n if (typeof extension.config.onFocus === 'function') {\n this.editor.on('focus', extension.config.onFocus.bind(context))\n }\n\n if (typeof extension.config.onBlur === 'function') {\n this.editor.on('blur', extension.config.onBlur.bind(context))\n }\n\n if (typeof extension.config.onDestroy === 'function') {\n this.editor.on('destroy', extension.config.onDestroy.bind(context))\n }\n })\n }\n\n private sort(extensions: Extensions) {\n const defaultPriority = 100\n\n return extensions.sort((a, b) => {\n if ((a.config.priority || defaultPriority) > (b.config.priority || defaultPriority)) {\n return -1\n }\n\n if ((a.config.priority || defaultPriority) < (b.config.priority || defaultPriority)) {\n return 1\n }\n\n return 0\n })\n }\n\n get commands(): RawCommands {\n return this.extensions.reduce((commands, extension) => {\n const context = {\n options: extension.options,\n editor: this.editor,\n type: getSchemaTypeByName(extension.config.name, this.schema),\n }\n\n if (!extension.config.addCommands) {\n return commands\n }\n\n return {\n ...commands,\n ...extension.config.addCommands.bind(context)(),\n }\n }, {} as RawCommands)\n }\n\n get plugins(): Plugin[] {\n return [...this.extensions]\n .reverse()\n .map(extension => {\n const context = {\n options: extension.options,\n editor: this.editor,\n type: getSchemaTypeByName(extension.config.name, this.schema),\n }\n\n const plugins: Plugin[] = []\n\n if (extension.config.addKeyboardShortcuts) {\n const keyMapPlugin = keymap(extension.config.addKeyboardShortcuts.bind(context)())\n\n plugins.push(keyMapPlugin)\n }\n\n if (this.editor.options.enableInputRules && extension.config.addInputRules) {\n const inputRules = extension.config.addInputRules.bind(context)()\n const inputRulePlugins = inputRules.length\n ? [inputRulesPlugin({ rules: inputRules })]\n : []\n\n plugins.push(...inputRulePlugins)\n }\n\n if (this.editor.options.enablePasteRules && extension.config.addPasteRules) {\n const pasteRulePlugins = extension.config.addPasteRules.bind(context)()\n\n plugins.push(...pasteRulePlugins)\n }\n\n if (extension.config.addProseMirrorPlugins) {\n const proseMirrorPlugins = extension.config.addProseMirrorPlugins.bind(context)()\n\n plugins.push(...proseMirrorPlugins)\n }\n\n return plugins\n })\n .flat()\n }\n\n get attributes() {\n return getAttributesFromExtensions(this.extensions)\n }\n\n get nodeViews() {\n const { editor } = this\n const { nodeExtensions } = splitExtensions(this.extensions)\n\n return Object.fromEntries(nodeExtensions\n .filter(extension => !!extension.config.addNodeView)\n .map(extension => {\n const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.config.name)\n const context = {\n options: extension.options,\n editor,\n type: getNodeType(extension.config.name, this.schema),\n }\n const renderer = extension.config.addNodeView?.call(context) as NodeViewRenderer\n\n const nodeview = (\n node: ProsemirrorNode,\n view: EditorView,\n getPos: (() => number) | boolean,\n decorations: Decoration[],\n ) => {\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes)\n\n return renderer({\n editor,\n node,\n getPos,\n decorations,\n HTMLAttributes,\n extension,\n })\n }\n\n return [extension.config.name, nodeview]\n }))\n }\n\n get textSerializers() {\n const { editor } = this\n const { nodeExtensions } = splitExtensions(this.extensions)\n\n return Object.fromEntries(nodeExtensions\n .filter(extension => !!extension.config.renderText)\n .map(extension => {\n const context = {\n options: extension.options,\n editor,\n type: getNodeType(extension.config.name, this.schema),\n }\n\n const textSerializer = (props: { node: ProsemirrorNode }) => extension.config.renderText?.call(context, props)\n\n return [extension.config.name, textSerializer]\n }))\n }\n\n}\n","export default class EventEmitter {\n\n private callbacks: { [key: string]: Function[] } = {}\n\n public on(event: string, fn: Function): this {\n if (!this.callbacks[event]) {\n this.callbacks[event] = []\n }\n\n this.callbacks[event].push(fn)\n\n return this\n }\n\n protected emit(event: string, ...args: any): this {\n const callbacks = this.callbacks[event]\n\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args))\n }\n\n return this\n }\n\n public off(event: string, fn?: Function): this {\n const callbacks = this.callbacks[event]\n\n if (callbacks) {\n if (fn) {\n this.callbacks[event] = callbacks.filter(callback => callback !== fn)\n } else {\n delete this.callbacks[event]\n }\n }\n\n return this\n }\n\n protected removeAllListeners(): void {\n this.callbacks = {}\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\n\nfunction getType(payload: any): string {\n return Object.prototype.toString.call(payload).slice(8, -1)\n}\n\nexport default function isPlainObject(payload: any): payload is Record<string, any> {\n if (getType(payload) !== 'Object') return false\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype\n}\n","import { AnyObject } from '../types'\nimport isPlainObject from './isPlainObject'\n\nexport default function mergeDeep(target: AnyObject, source: AnyObject): AnyObject {\n const output = { ...target }\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] })\n } else {\n output[key] = mergeDeep(target[key], source[key])\n }\n } else {\n Object.assign(output, { [key]: source[key] })\n }\n })\n }\n\n return output\n}\n","import { Plugin, Transaction } from 'prosemirror-state'\nimport { Command as ProseMirrorCommand } from 'prosemirror-commands'\nimport { InputRule } from 'prosemirror-inputrules'\nimport { Editor } from './Editor'\nimport { Node } from './Node'\nimport mergeDeep from './utilities/mergeDeep'\nimport { GlobalAttributes, RawCommands } from './types'\nimport { ExtensionConfig } from '.'\n\ndeclare module '@tiptap/core' {\n interface ExtensionConfig<Options = any> {\n [key: string]: any;\n\n /**\n * Name\n */\n name: string,\n\n /**\n * Priority\n */\n priority?: number,\n\n /**\n * Default options\n */\n defaultOptions?: Options,\n\n /**\n * Global attributes\n */\n addGlobalAttributes?: (this: {\n options: Options,\n }) => GlobalAttributes | {},\n\n /**\n * Raw\n */\n addCommands?: (this: {\n options: Options,\n editor: Editor,\n }) => Partial<RawCommands>,\n\n /**\n * Keyboard shortcuts\n */\n addKeyboardShortcuts?: (this: {\n options: Options,\n editor: Editor,\n }) => {\n [key: string]: ProseMirrorCommand,\n },\n\n /**\n * Input rules\n */\n addInputRules?: (this: {\n options: Options,\n editor: Editor,\n }) => InputRule[],\n\n /**\n * Paste rules\n */\n addPasteRules?: (this: {\n options: Options,\n editor: Editor,\n }) => Plugin[],\n\n /**\n * ProseMirror plugins\n */\n addProseMirrorPlugins?: (this: {\n options: Options,\n editor: Editor,\n }) => Plugin[],\n\n /**\n * Extend Node Schema\n */\n extendNodeSchema?: ((\n this: {\n options: Options,\n },\n extension: Node,\n ) => {\n [key: string]: any,\n }) | null,\n\n /**\n * Extend Mark Schema\n */\n extendMarkSchema?: ((\n this: {\n options: Options,\n },\n extension: Node,\n ) => {\n [key: string]: any,\n }) | null,\n\n /**\n * The editor is ready.\n */\n onCreate?: ((this: {\n options: Options,\n editor: Editor,\n }) => void) | null,\n\n /**\n * The content has changed.\n */\n onUpdate?: ((this: {\n options: Options,\n editor: Editor,\n }) => void) | null,\n\n /**\n * The selection has changed.\n */\n onSelectionUpdate?: ((this: {\n options: Options,\n editor: Editor,\n }) => void) | null,\n\n /**\n * The editor state has changed.\n */\n onTransaction?: ((\n this: {\n options: Options,\n editor: Editor,\n },\n props: {\n transaction: Transaction,\n },\n ) => void) | null,\n\n /**\n * The editor is focused.\n */\n onFocus?: ((\n this: {\n options: Options,\n editor: Editor,\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor isn’t focused anymore.\n */\n onBlur?: ((\n this: {\n options: Options,\n editor: Editor,\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor is destroyed.\n */\n onDestroy?: ((this: {\n options: Options,\n editor: Editor,\n }) => void) | null,\n }\n}\n\nexport class Extension<Options = any> {\n type = 'extension'\n\n config: ExtensionConfig = {\n name: 'extension',\n priority: 100,\n defaultOptions: {},\n }\n\n options!: Options\n\n constructor(config: ExtensionConfig<Options>) {\n this.config = {\n ...this.config,\n ...config,\n }\n\n this.options = this.config.defaultOptions\n }\n\n static create<O>(config: ExtensionConfig<O>) {\n return new Extension<O>(config)\n }\n\n configure(options: Partial<Options> = {}) {\n return Extension\n .create<Options>(this.config as ExtensionConfig<Options>)\n .#configure(options)\n }\n\n #configure = (options: Partial<Options>) => {\n this.options = mergeDeep(this.config.defaultOptions, options) as Options\n\n return this\n }\n\n extend<ExtendedOptions = Options>(extendedConfig: Partial<ExtensionConfig<ExtendedOptions>>) {\n return new Extension<ExtendedOptions>({\n ...this.config,\n ...extendedConfig,\n } as ExtensionConfig<ExtendedOptions>)\n }\n}\n","import { Editor } from '@tiptap/core'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Extension } from '../Extension'\n\nconst textBetween = (\n editor: Editor,\n from: number,\n to: number,\n blockSeparator?: string,\n leafText?: string,\n): string => {\n let text = ''\n let separated = true\n\n editor.state.doc.nodesBetween(from, to, (node, pos) => {\n const textSerializer = editor.extensionManager.textSerializers[node.type.name]\n\n if (textSerializer) {\n text += textSerializer({ node })\n separated = !blockSeparator\n } else if (node.isText) {\n text += node?.text?.slice(Math.max(from, pos) - pos, to - pos)\n separated = !blockSeparator\n } else if (node.isLeaf && leafText) {\n text += leafText\n separated = !blockSeparator\n } else if (!separated && node.isBlock) {\n text += blockSeparator\n separated = true\n }\n }, 0)\n\n return text\n}\n\nexport const ClipboardTextSerializer = Extension.create({\n name: 'editable',\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('clipboardTextSerializer'),\n props: {\n clipboardTextSerializer: () => {\n const { editor } = this\n const { from, to } = editor.state.selection\n\n return textBetween(editor, from, to, '\\n')\n },\n },\n }),\n ]\n },\n})\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n blur: {\n /**\n * Removes focus from the editor.\n */\n blur: () => Command,\n }\n }\n}\n\nexport const blur: RawCommands['blur'] = () => ({ view }) => {\n const element = view.dom as HTMLElement\n\n element.blur()\n\n return true\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n clearContent: {\n /**\n * Clear the whole document.\n */\n clearContent: (emitUpdate: Boolean) => Command,\n }\n }\n}\n\nexport const clearContent: RawCommands['clearContent'] = (emitUpdate = false) => ({ commands }) => {\n return commands.setContent('', emitUpdate)\n}\n","import { liftTarget } from 'prosemirror-transform'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n clearNodes: {\n /**\n * Normalize nodes to a simple paragraph.\n */\n clearNodes: () => Command,\n }\n }\n}\n\nexport const clearNodes: RawCommands['clearNodes'] = () => ({ state, tr, dispatch }) => {\n const { selection } = tr\n const { ranges } = selection\n\n ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (!node.type.isText) {\n const fromPos = tr.doc.resolve(tr.mapping.map(pos + 1))\n const toPos = tr.doc.resolve(tr.mapping.map(pos + node.nodeSize - 1))\n const nodeRange = fromPos.blockRange(toPos)\n\n if (nodeRange) {\n const targetLiftDepth = liftTarget(nodeRange)\n\n if (node.type.isTextblock && dispatch) {\n tr.setNodeMarkup(nodeRange.start, state.doc.type.contentMatch.defaultType)\n }\n\n if ((targetLiftDepth || targetLiftDepth === 0) && dispatch) {\n tr.lift(nodeRange, targetLiftDepth)\n }\n }\n }\n })\n })\n\n return true\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n command: {\n /**\n * Define a command inline.\n */\n command: (fn: (props: Parameters<Command>[0]) => boolean) => Command,\n }\n }\n}\n\nexport const command: RawCommands['command'] = fn => props => {\n return fn(props)\n}\n","import { createParagraphNear as originalCreateParagraphNear } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n createParagraphNear: {\n /**\n * Create a paragraph nearby.\n */\n createParagraphNear: () => Command,\n }\n }\n}\n\nexport const createParagraphNear: RawCommands['createParagraphNear'] = () => ({ state, dispatch }) => {\n return originalCreateParagraphNear(state, dispatch)\n}\n","import { Command, RawCommands, Range } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n deleteRange: {\n /**\n * Delete a given range.\n */\n deleteRange: (range: Range) => Command,\n }\n }\n}\n\nexport const deleteRange: RawCommands['deleteRange'] = range => ({ tr, dispatch }) => {\n const { from, to } = range\n\n if (dispatch) {\n tr.delete(from, to)\n }\n\n return true\n}\n","import { deleteSelection as originalDeleteSelection } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n deleteSelection: {\n /**\n * Delete the selection, if there is one.\n */\n deleteSelection: () => Command,\n }\n }\n}\n\nexport const deleteSelection: RawCommands['deleteSelection'] = () => ({ state, dispatch }) => {\n return originalDeleteSelection(state, dispatch)\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n enter: {\n /**\n * Trigger enter.\n */\n enter: () => Command,\n }\n }\n}\n\nexport const enter: RawCommands['enter'] = () => ({ commands }) => {\n return commands.keyboardShortcut('Enter')\n}\n","import { exitCode as originalExitCode } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n exitCode: {\n /**\n * Exit from a code block.\n */\n exitCode: () => Command,\n }\n }\n}\n\nexport const exitCode: RawCommands['exitCode'] = () => ({ state, dispatch }) => {\n return originalExitCode(state, dispatch)\n}\n","import { MarkType, ResolvedPos } from 'prosemirror-model'\nimport { Range } from '../types'\n\nexport default function getMarkRange($pos: ResolvedPos, type: MarkType): Range | void {\n if (!$pos || !type) {\n return\n }\n\n const start = $pos.parent.childAfter($pos.parentOffset)\n\n if (!start.node) {\n return\n }\n\n const link = start.node.marks.find(mark => mark.type === type)\n\n if (!link) {\n return\n }\n\n let startIndex = $pos.index()\n let startPos = $pos.start() + start.offset\n let endIndex = startIndex + 1\n let endPos = startPos + start.node.nodeSize\n\n while (startIndex > 0 && link.isInSet($pos.parent.child(startIndex - 1).marks)) {\n startIndex -= 1\n startPos -= $pos.parent.child(startIndex).nodeSize\n }\n\n while (endIndex < $pos.parent.childCount && link.isInSet($pos.parent.child(endIndex).marks)) {\n endPos += $pos.parent.child(endIndex).nodeSize\n endIndex += 1\n }\n\n return {\n from: startPos,\n to: endPos,\n }\n}\n","import { TextSelection } from 'prosemirror-state'\nimport { MarkType } from 'prosemirror-model'\nimport { Command, RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport getMarkRange from '../helpers/getMarkRange'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n extendMarkRange: {\n /**\n * Extends the text selection to the current mark.\n */\n extendMarkRange: (typeOrName: string | MarkType) => Command,\n }\n }\n}\n\nexport const extendMarkRange: RawCommands['extendMarkRange'] = typeOrName => ({ tr, state, dispatch }) => {\n const type = getMarkType(typeOrName, state.schema)\n const { doc, selection } = tr\n const { $from, empty } = selection\n\n if (empty && dispatch) {\n const range = getMarkRange($from, type)\n\n if (range) {\n const newSelection = TextSelection.create(doc, range.from, range.to)\n\n tr.setSelection(newSelection)\n }\n }\n\n return true\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n first: {\n /**\n * Runs one command after the other and stops at the first which returns true.\n */\n first: (commands: Command[] | ((props: Parameters<Command>[0]) => Command[])) => Command,\n }\n }\n}\n\nexport const first: RawCommands['first'] = commands => props => {\n const items = typeof commands === 'function'\n ? commands(props)\n : commands\n\n for (let i = 0; i < items.length; i += 1) {\n if (items[i](props)) {\n return true\n }\n }\n\n return false\n}\n","export default function minMax(value = 0, min = 0, max = 0): number {\n return Math.min(Math.max(value, min), max)\n}\n","export default function isClass(item: any): boolean {\n if (item.constructor?.toString().substring(0, 5) !== 'class') {\n return false\n }\n\n return true\n}\n","import isClass from './isClass'\n\nexport default function isObject(item: any): boolean {\n return (\n item\n && typeof item === 'object'\n && !Array.isArray(item)\n && !isClass(item)\n )\n}\n","import { TextSelection } from 'prosemirror-state'\nimport isObject from '../utilities/isObject'\n\nexport default function isTextSelection(value: unknown): value is TextSelection {\n return isObject(value) && value instanceof TextSelection\n}\n","import { EditorState, TextSelection } from 'prosemirror-state'\nimport { Command, RawCommands, FocusPosition } from '../types'\nimport minMax from '../utilities/minMax'\nimport isTextSelection from '../helpers/isTextSelection'\n\nfunction resolveSelection(state: EditorState, position: FocusPosition = null) {\n if (!position) {\n return null\n }\n\n if (position === 'start' || position === true) {\n return {\n from: 0,\n to: 0,\n }\n }\n\n if (position === 'end') {\n const { size } = state.doc.content\n\n return {\n from: size,\n to: size,\n }\n }\n\n return {\n from: position,\n to: position,\n }\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n focus: {\n /**\n * Focus the editor at the given position.\n */\n focus: (position?: FocusPosition) => Command,\n }\n }\n}\n\nexport const focus: RawCommands['focus'] = (position = null) => ({\n editor,\n view,\n tr,\n dispatch,\n}) => {\n if ((view.hasFocus() && position === null) || position === false) {\n return true\n }\n\n // we don’t try to resolve a NodeSelection or CellSelection\n if (dispatch && position === null && !isTextSelection(editor.state.selection)) {\n view.focus()\n return true\n }\n\n const { from, to } = resolveSelection(editor.state, position) || editor.state.selection\n const { doc, storedMarks } = tr\n const resolvedFrom = minMax(from, 0, doc.content.size)\n const resolvedEnd = minMax(to, 0, doc.content.size)\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)\n const isSameSelection = editor.state.selection.eq(selection)\n\n if (dispatch) {\n tr.setSelection(selection)\n\n // `tr.setSelection` resets the stored marks\n // so we’ll restore them if the selection is the same as before\n if (isSameSelection && storedMarks) {\n tr.setStoredMarks(storedMarks)\n }\n\n view.focus()\n }\n\n return true\n}\n","import { Selection, Transaction } from 'prosemirror-state'\nimport { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform'\n\n// source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466\nexport default function selectionToInsertionEnd(tr: Transaction, startLen: number, bias: number) {\n const last = tr.steps.length - 1\n\n if (last < startLen) {\n return\n }\n\n const step = tr.steps[last]\n\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) {\n return\n }\n\n const map = tr.mapping.maps[last]\n let end = 0\n\n map.forEach((_from, _to, _newFrom, newTo) => {\n if (end === 0) {\n end = newTo\n }\n })\n\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias))\n}\n","import createNodeFromContent from '../helpers/createNodeFromContent'\nimport selectionToInsertionEnd from '../helpers/selectionToInsertionEnd'\nimport { Command, RawCommands, Content } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n insertContent: {\n /**\n * Insert a node or string of HTML at the current position.\n */\n insertContent: (value: Content) => Command,\n }\n }\n}\n\nexport const insertContent: RawCommands['insertContent'] = value => ({ tr, dispatch, editor }) => {\n if (dispatch) {\n const content = createNodeFromContent(value, editor.schema)\n\n if (typeof content === 'string') {\n tr.insertText(content)\n\n return true\n }\n\n if (!tr.selection.empty) {\n tr.deleteSelection()\n }\n\n tr.insert(tr.selection.anchor, content)\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1)\n }\n\n return true\n}\n","import { DOMParser } from 'prosemirror-model'\nimport elementFromString from '../utilities/elementFromString'\nimport selectionToInsertionEnd from '../helpers/selectionToInsertionEnd'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n insertHTML: {\n /**\n * Insert a string of HTML at the current position.\n */\n insertHTML: (value: string) => Command,\n }\n }\n}\n\nexport const insertHTML: RawCommands['insertHTML'] = value => ({ tr, state, dispatch }) => {\n console.warn('[tiptap warn]: insertHTML() is deprecated. please use insertContent() instead.')\n\n const { selection } = tr\n const element = elementFromString(value)\n const slice = DOMParser.fromSchema(state.schema).parseSlice(element)\n\n if (dispatch) {\n tr.insert(selection.anchor, slice.content)\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1)\n }\n\n return true\n}\n","import { NodeType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport { Command, RawCommands, AnyObject } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n insertNode: {\n /**\n * Insert a node at the current position.\n */\n insertNode: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const insertNode: RawCommands['insertNode'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n console.warn('[tiptap warn]: insertNode() is deprecated. please use insertContent() instead.')\n\n const { selection } = tr\n const type = getNodeType(typeOrName, state.schema)\n\n if (!type) {\n return false\n }\n\n const node = type.create(attributes)\n\n if (dispatch) {\n tr.insert(selection.anchor, node)\n }\n\n return true\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n insertText: {\n /**\n * Insert a string of text at the current position.\n */\n insertText: (value: string) => Command,\n }\n }\n}\n\nexport const insertText: RawCommands['insertText'] = value => ({ tr, dispatch }) => {\n console.warn('[tiptap warn]: insertText() is deprecated. please use insertContent() instead.')\n\n if (dispatch) {\n tr.insertText(value)\n }\n\n return true\n}\n","import { joinBackward as originalJoinBackward } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n joinBackward: {\n /**\n * Join two nodes backward.\n */\n joinBackward: () => Command,\n }\n }\n}\n\nexport const joinBackward: RawCommands['joinBackward'] = () => ({ state, dispatch }) => {\n return originalJoinBackward(state, dispatch)\n}\n","import { joinForward as originalJoinForward } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n joinForward: {\n /**\n * Join two nodes forward.\n */\n joinForward: () => Command,\n }\n }\n}\n\nexport const joinForward: RawCommands['joinForward'] = () => ({ state, dispatch }) => {\n return originalJoinForward(state, dispatch)\n}\n","import { Command, RawCommands } from '../types'\n\nconst mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\nfunction normalizeKeyName(name: string) {\n const parts = name.split(/-(?!$)/)\n let result = parts[parts.length - 1]\n\n if (result === 'Space') {\n result = ' '\n }\n\n let alt\n let ctrl\n let shift\n let meta\n\n for (let i = 0; i < parts.length - 1; i += 1) {\n const mod = parts[i]\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n meta = true\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true\n } else if (/^mod$/i.test(mod)) {\n if (mac) {\n meta = true\n } else {\n ctrl = true\n }\n } else {\n throw new Error(`Unrecognized modifier name: ${mod}`)\n }\n }\n\n if (alt) {\n result = `Alt-${result}`\n }\n\n if (ctrl) {\n result = `Ctrl-${result}`\n }\n\n if (meta) {\n result = `Meta-${result}`\n }\n\n if (shift) {\n result = `Shift-${result}`\n }\n\n return result\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n keyboardShortcut: {\n /**\n * Trigger a keyboard shortcut.\n */\n keyboardShortcut: (name: string) => Command,\n }\n }\n}\n\nexport const keyboardShortcut: RawCommands['keyboardShortcut'] = name => ({\n editor,\n view,\n tr,\n dispatch,\n}) => {\n const keys = normalizeKeyName(name).split(/-(?!$)/)\n const key = keys.find(item => !['Alt', 'Ctrl', 'Meta', 'Shift'].includes(item))\n const event = new KeyboardEvent('keydown', {\n key: key === 'Space'\n ? ' '\n : key,\n altKey: keys.includes('Alt'),\n ctrlKey: keys.includes('Ctrl'),\n metaKey: keys.includes('Meta'),\n shiftKey: keys.includes('Shift'),\n bubbles: true,\n cancelable: true,\n })\n\n const capturedTransaction = editor.captureTransaction(() => {\n view.someProp('handleKeyDown', f => f(view, event))\n })\n\n capturedTransaction?.steps.forEach(step => {\n const newStep = step.map(tr.mapping)\n\n if (newStep && dispatch) {\n tr.maybeStep(newStep)\n }\n })\n\n return true\n}\n","import { lift as originalLift } from 'prosemirror-commands'\nimport { NodeType } from 'prosemirror-model'\nimport { Command, RawCommands, AnyObject } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n lift: {\n /**\n * Removes an existing wrap.\n */\n lift: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const lift: RawCommands['lift'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (!isActive) {\n return false\n }\n\n return originalLift(state, dispatch)\n}\n","import { liftEmptyBlock as originalLiftEmptyBlock } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n liftEmptyBlock: {\n /**\n * Lift block if empty.\n */\n liftEmptyBlock: () => Command,\n }\n }\n}\n\nexport const liftEmptyBlock: RawCommands['liftEmptyBlock'] = () => ({ state, dispatch }) => {\n return originalLiftEmptyBlock(state, dispatch)\n}\n","import { liftListItem as originalLiftListItem } from 'prosemirror-schema-list'\nimport { NodeType } from 'prosemirror-model'\nimport { Command, RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n liftListItem: {\n /**\n * Lift the list item into a wrapping list.\n */\n liftListItem: (typeOrName: string | NodeType) => Command,\n }\n }\n}\n\nexport const liftListItem: RawCommands['liftListItem'] = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return originalLiftListItem(type)(state, dispatch)\n}\n","import { newlineInCode as originalNewlineInCode } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n newlineInCode: {\n /**\n * Add a newline character in code.\n */\n newlineInCode: () => Command,\n }\n }\n}\n\nexport const newlineInCode: RawCommands['newlineInCode'] = () => ({ state, dispatch }) => {\n return originalNewlineInCode(state, dispatch)\n}\n","import { NodeType } from 'prosemirror-model'\nimport { Command, RawCommands, AnyObject } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n replace: {\n /**\n * Replaces text with a node.\n */\n replace: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const replace: RawCommands['replace'] = (typeOrName, attributes = {}) => ({ state, commands }) => {\n const { from, to } = state.selection\n const range = { from, to }\n\n return commands.replaceRange(range, typeOrName, attributes)\n}\n","import { NodeType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport {\n Command,\n RawCommands,\n Range,\n AnyObject,\n} from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n replaceRange: {\n /**\n * Replaces text with a node within a range.\n */\n replaceRange: (range: Range, typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const replaceRange: RawCommands['replaceRange'] = (range, typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const { from, to } = range\n const $from = tr.doc.resolve(from)\n const index = $from.index()\n\n if (!$from.parent.canReplaceWith(index, index, type)) {\n return false\n }\n\n if (dispatch) {\n tr.replaceWith(from, to, type.create(attributes))\n }\n\n return true\n}\n","import { AnyObject } from '../types'\n\n/**\n * Remove a property or an array of properties from an object\n * @param obj Object\n * @param key Key to remove\n */\nexport default function deleteProps(obj: AnyObject, propOrProps: string | string[]): AnyObject {\n const props = typeof propOrProps === 'string'\n ? [propOrProps]\n : propOrProps\n\n return Object\n .keys(obj)\n .reduce((newObj: AnyObject, prop) => {\n if (!props.includes(prop)) {\n newObj[prop] = obj[prop]\n }\n\n return newObj\n }, {})\n}\n","import { NodeType, MarkType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport getMarkType from '../helpers/getMarkType'\nimport getSchemaTypeNameByName from '../helpers/getSchemaTypeNameByName'\nimport deleteProps from '../utilities/deleteProps'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n resetAttributes: {\n /**\n * Resets some node attributes to the default value.\n */\n resetAttributes: (typeOrName: string | NodeType | MarkType, attributes: string | string[]) => Command,\n }\n }\n}\n\nexport const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\n let nodeType: NodeType | null = null\n let markType: MarkType | null = null\n\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === 'string'\n ? typeOrName\n : typeOrName.name,\n state.schema,\n )\n\n if (!schemaType) {\n return false\n }\n\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName as NodeType, state.schema)\n }\n\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName as MarkType, state.schema)\n }\n\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes))\n }\n\n if (markType && node.marks.length) {\n node.marks.forEach(mark => {\n if (markType === mark.type) {\n tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)))\n }\n })\n }\n })\n })\n }\n\n return true\n}\n","import { NodeType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport deleteProps from '../utilities/deleteProps'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n resetNodeAttributes: {\n /**\n * Resets node attributes to the default value.\n */\n resetNodeAttributes: (typeOrName: string | NodeType, attributes: string | string[]) => Command,\n }\n }\n}\n\nexport const resetNodeAttributes: RawCommands['resetNodeAttributes'] = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\n console.warn('[tiptap warn]: resetNodeAttributes() is deprecated. please use resetAttributes() instead.')\n\n const type = getNodeType(typeOrName, state.schema)\n const { selection } = tr\n const { ranges } = selection\n\n ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (node.type === type && dispatch) {\n tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes))\n }\n })\n })\n\n return true\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n scrollIntoView: {\n /**\n * Scroll the selection into view.\n */\n scrollIntoView: () => Command,\n }\n }\n}\n\nexport const scrollIntoView: RawCommands['scrollIntoView'] = () => ({ tr, dispatch }) => {\n if (dispatch) {\n tr.scrollIntoView()\n }\n\n return true\n}\n","import { selectAll as originalSelectAll } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n selectAll: {\n /**\n * Select the whole document.\n */\n selectAll: () => Command,\n }\n }\n}\n\nexport const selectAll: RawCommands['selectAll'] = () => ({ state, dispatch }) => {\n return originalSelectAll(state, dispatch)\n}\n","import { selectNodeBackward as originalSelectNodeBackward } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n selectNodeBackward: {\n /**\n * Select a node backward.\n */\n selectNodeBackward: () => Command,\n }\n }\n}\n\nexport const selectNodeBackward: RawCommands['selectNodeBackward'] = () => ({ state, dispatch }) => {\n return originalSelectNodeBackward(state, dispatch)\n}\n","import { selectNodeForward as originalSelectNodeForward } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n selectNodeForward: {\n /**\n * Select a node forward.\n */\n selectNodeForward: () => Command,\n }\n }\n}\n\nexport const selectNodeForward: RawCommands['selectNodeForward'] = () => ({ state, dispatch }) => {\n return originalSelectNodeForward(state, dispatch)\n}\n","import { selectParentNode as originalSelectParentNode } from 'prosemirror-commands'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n selectParentNode: {\n /**\n * Select the parent node.\n */\n selectParentNode: () => Command,\n }\n }\n}\n\nexport const selectParentNode: RawCommands['selectParentNode'] = () => ({ state, dispatch }) => {\n return originalSelectParentNode(state, dispatch)\n}\n","import { TextSelection } from 'prosemirror-state'\nimport createDocument from '../helpers/createDocument'\nimport {\n AnyObject,\n Command,\n RawCommands,\n Content,\n} from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n setContent: {\n /**\n * Replace the whole document with new content.\n */\n setContent: (\n content: Content,\n emitUpdate?: Boolean,\n parseOptions?: AnyObject,\n ) => Command,\n }\n }\n}\n\nexport const setContent: RawCommands['setContent'] = (content, emitUpdate = false, parseOptions = {}) => ({ tr, editor, dispatch }) => {\n const { doc } = tr\n const document = createDocument(content, editor.schema, parseOptions)\n const selection = TextSelection.create(doc, 0, doc.content.size)\n\n if (dispatch) {\n tr.setSelection(selection)\n .replaceSelectionWith(document, false)\n .setMeta('preventUpdate', !emitUpdate)\n }\n\n return true\n}\n","import { MarkType } from 'prosemirror-model'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport getMarkAttributes from '../helpers/getMarkAttributes'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n setMark: {\n /**\n * Add a mark with new attributes.\n */\n setMark: (typeOrName: string | MarkType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const setMark: RawCommands['setMark'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const { selection } = tr\n const { empty, ranges } = selection\n const type = getMarkType(typeOrName, state.schema)\n const oldAttributes = getMarkAttributes(state, type)\n const newAttributes = {\n ...oldAttributes,\n ...attributes,\n }\n\n if (dispatch) {\n if (empty) {\n tr.addStoredMark(type.create(newAttributes))\n } else {\n ranges.forEach(range => {\n tr.addMark(range.$from.pos, range.$to.pos, type.create(newAttributes))\n })\n }\n }\n\n return true\n}\n","import { NodeType } from 'prosemirror-model'\nimport { setBlockType } from 'prosemirror-commands'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n setNode: {\n /**\n * Replace a given range with a node.\n */\n setNode: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return setBlockType(type, attributes)(state, dispatch)\n}\n","import { sinkListItem as originalSinkListItem } from 'prosemirror-schema-list'\nimport { NodeType } from 'prosemirror-model'\nimport { Command, RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n sinkListItem: {\n /**\n * Sink the list item down into an inner list.\n */\n sinkListItem: (typeOrName: string | NodeType) => Command,\n }\n }\n}\n\nexport const sinkListItem: RawCommands['sinkListItem'] = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return originalSinkListItem(type)(state, dispatch)\n}\n","import { AnyObject, ExtensionAttribute } from '../types'\n\nexport default function getSplittedAttributes(\n extensionAttributes: ExtensionAttribute[],\n typeName: string,\n attributes: AnyObject,\n): AnyObject {\n return Object.fromEntries(Object\n .entries(attributes)\n .filter(([name]) => {\n const extensionAttribute = extensionAttributes.find(item => {\n return item.type === typeName && item.name === name\n })\n\n if (!extensionAttribute) {\n return false\n }\n\n return extensionAttribute.attribute.keepOnSplit\n }))\n}\n","import { canSplit } from 'prosemirror-transform'\nimport { ContentMatch, Fragment } from 'prosemirror-model'\nimport { EditorState, NodeSelection, TextSelection } from 'prosemirror-state'\nimport { Command, RawCommands } from '../types'\nimport getSplittedAttributes from '../helpers/getSplittedAttributes'\n\nfunction defaultBlockAt(match: ContentMatch) {\n for (let i = 0; i < match.edgeCount; i + 1) {\n const { type } = match.edge(i)\n\n if (type.isTextblock && !type.hasRequiredAttrs()) {\n return type\n }\n }\n return null\n}\n\nfunction ensureMarks(state: EditorState, splittableMarks?: string[]) {\n const marks = state.storedMarks\n || (state.selection.$to.parentOffset && state.selection.$from.marks())\n\n if (marks) {\n const filteredMarks = marks.filter(mark => splittableMarks?.includes(mark.type.name))\n\n state.tr.ensureMarks(filteredMarks)\n }\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n splitBlock: {\n /**\n * Forks a new node from an existing node.\n */\n splitBlock: (options?: { keepMarks?: boolean }) => Command,\n }\n }\n}\n\nexport const splitBlock: RawCommands['splitBlock'] = ({ keepMarks = true } = {}) => ({\n tr,\n state,\n dispatch,\n editor,\n}) => {\n const { selection, doc } = tr\n const { $from, $to } = selection\n const extensionAttributes = editor.extensionManager.attributes\n const newAttributes = getSplittedAttributes(\n extensionAttributes,\n $from.node().type.name,\n $from.node().attrs,\n )\n\n if (selection instanceof NodeSelection && selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(doc, $from.pos)) {\n return false\n }\n\n if (dispatch) {\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks)\n }\n\n tr.split($from.pos).scrollIntoView()\n }\n\n return true\n }\n\n if (!$from.parent.isBlock) {\n return false\n }\n\n if (dispatch) {\n const atEnd = $to.parentOffset === $to.parent.content.size\n\n if (selection instanceof TextSelection) {\n tr.deleteSelection()\n }\n\n const deflt = $from.depth === 0\n ? undefined\n : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)))\n\n let types = atEnd && deflt\n ? [{\n type: deflt,\n attrs: newAttributes,\n }]\n : undefined\n\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types)\n\n if (\n !types\n && !can\n && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)\n ) {\n can = true\n types = deflt\n ? [{\n type: deflt,\n attrs: newAttributes,\n }]\n : undefined\n }\n\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types)\n\n if (\n !atEnd\n && !$from.parentOffset\n && $from.parent.type !== deflt\n && $from.node(-1).canReplace($from.index(-1), $from.indexAfter(-1), Fragment.from(deflt?.create()))\n ) {\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt || undefined)\n }\n }\n\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks)\n }\n\n tr.scrollIntoView()\n }\n\n return true\n}\n","import {\n NodeType,\n Node as ProseMirrorNode,\n Fragment,\n Slice,\n} from 'prosemirror-model'\nimport { canSplit } from 'prosemirror-transform'\nimport { TextSelection } from 'prosemirror-state'\nimport { Command, RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\nimport getSplittedAttributes from '../helpers/getSplittedAttributes'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n splitListItem: {\n /**\n * Splits one list item into two list items.\n */\n splitListItem: (typeOrName: string | NodeType) => Command,\n }\n }\n}\n\nexport const splitListItem: RawCommands['splitListItem'] = typeOrName => ({\n tr, state, dispatch, editor,\n}) => {\n const type = getNodeType(typeOrName, state.schema)\n const { $from, $to } = state.selection\n\n // @ts-ignore\n // eslint-disable-next-line\n const node: ProseMirrorNode = state.selection.node\n\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {\n return false\n }\n\n const grandParent = $from.node(-1)\n\n if (grandParent.type !== type) {\n return false\n }\n\n const extensionAttributes = editor.extensionManager.attributes\n\n if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if (\n $from.depth === 2\n || $from.node(-3).type !== type\n || $from.index(-2) !== $from.node(-2).childCount - 1\n ) {\n return false\n }\n\n if (dispatch) {\n let wrap = Fragment.empty\n const keepItem = $from.index(-1) > 0\n\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - (keepItem ? 1 : 2); d >= $from.depth - 3; d -= 1) {\n wrap = Fragment.from($from.node(d).copy(wrap))\n }\n\n // Add a second list item with an empty default start node\n const newNextTypeAttributes = getSplittedAttributes(\n extensionAttributes,\n $from.node().type.name,\n $from.node().attrs,\n )\n const nextType = type.contentMatch.defaultType?.createAndFill(newNextTypeAttributes) || undefined\n wrap = wrap.append(Fragment.from(type.createAndFill(null, nextType) || undefined))\n\n tr\n .replace(\n $from.before(keepItem ? undefined : -1),\n $from.after(-3),\n new Slice(wrap, keepItem ? 3 : 2, 2),\n )\n .setSelection(TextSelection.near(tr.doc.resolve($from.pos + (keepItem ? 3 : 2))))\n .scrollIntoView()\n }\n\n return true\n }\n\n const nextType = $to.pos === $from.end()\n ? grandParent.contentMatchAt(0).defaultType\n : null\n\n const newTypeAttributes = getSplittedAttributes(\n extensionAttributes,\n grandParent.type.name,\n grandParent.attrs,\n )\n const newNextTypeAttributes = getSplittedAttributes(\n extensionAttributes,\n $from.node().type.name,\n $from.node().attrs,\n )\n\n tr.delete($from.pos, $to.pos)\n\n const types = nextType\n ? [{ type, attrs: newTypeAttributes }, { type: nextType, attrs: newNextTypeAttributes }]\n : [{ type, attrs: newTypeAttributes }]\n\n if (!canSplit(tr.doc, $from.pos, 2)) {\n return false\n }\n\n if (dispatch) {\n tr.split($from.pos, 2, types).scrollIntoView()\n }\n\n return true\n}\n","import { ResolvedPos, Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Predicate } from '../types'\n\nexport default function findParentNodeClosestToPos($pos: ResolvedPos, predicate: Predicate): ({\n pos: number,\n start: number,\n depth: number,\n node: ProseMirrorNode,\n} | undefined) {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i)\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n}\n","import { Selection } from 'prosemirror-state'\nimport findParentNodeClosestToPos from './findParentNodeClosestToPos'\nimport { Predicate } from '../types'\n\nexport default function findParentNode(predicate: Predicate) {\n return (selection: Selection) => findParentNodeClosestToPos(selection.$from, predicate)\n}\n","import { Extensions } from '../types'\nimport splitExtensions from './splitExtensions'\nimport callOrReturn from '../utilities/callOrReturn'\n\nexport default function isList(name: string, extensions: Extensions): boolean {\n const { nodeExtensions } = splitExtensions(extensions)\n const extension = nodeExtensions.find(item => item.config.name === name)\n\n if (!extension) {\n return false\n }\n\n const groups = callOrReturn(extension.config.group, { options: extension.options })\n\n if (typeof groups !== 'string') {\n return false\n }\n\n return groups.split(' ').includes('list')\n}\n","import { NodeType } from 'prosemirror-model'\nimport { Command, RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\nimport findParentNode from '../helpers/findParentNode'\nimport isList from '../helpers/isList'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n toggleList: {\n /**\n * Toggle between different list types.\n */\n toggleList: (listTypeOrName: string | NodeType, itemTypeOrName: string | NodeType) => Command,\n }\n }\n}\n\nexport const toggleList: RawCommands['toggleList'] = (listTypeOrName, itemTypeOrName) => ({\n editor, tr, state, dispatch, chain, commands, can,\n}) => {\n const { extensions } = editor.options\n const listType = getNodeType(listTypeOrName, state.schema)\n const itemType = getNodeType(itemTypeOrName, state.schema)\n const { selection } = state\n const { $from, $to } = selection\n const range = $from.blockRange($to)\n\n if (!range) {\n return false\n }\n\n const parentList = findParentNode(node => isList(node.type.name, extensions))(selection)\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n // remove list\n if (parentList.node.type === listType) {\n return commands.liftListItem(itemType)\n }\n\n // change list type\n if (\n isList(parentList.node.type.name, extensions)\n && listType.validContent(parentList.node.content)\n && dispatch\n ) {\n tr.setNodeMarkup(parentList.pos, listType)\n\n return true\n }\n }\n\n const canWrapInList = can().wrapInList(listType)\n\n // try to convert node to paragraph if needed\n if (!canWrapInList) {\n return chain()\n .clearNodes()\n .wrapInList(listType)\n .run()\n }\n\n return commands.wrapInList(listType)\n}\n","import { MarkType } from 'prosemirror-model'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport isMarkActive from '../helpers/isMarkActive'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n toggleMark: {\n /**\n * Toggle a mark on and off.\n */\n toggleMark: (typeOrName: string | MarkType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const toggleMark: RawCommands['toggleMark'] = (typeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getMarkType(typeOrName, state.schema)\n const isActive = isMarkActive(state, type, attributes)\n\n if (isActive) {\n return commands.unsetMark(type)\n }\n\n return commands.setMark(type, attributes)\n}\n","import { NodeType } from 'prosemirror-model'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n toggleNode: {\n /**\n * Toggle a node with another node.\n */\n toggleNode: (typeOrName: string | NodeType, toggleTypeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const toggleNode: RawCommands['toggleNode'] = (typeOrName, toggleTypeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema)\n const toggleType = getNodeType(toggleTypeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (isActive) {\n return commands.setNode(toggleType)\n }\n\n return commands.setNode(type, attributes)\n}\n","import { wrapIn, lift } from 'prosemirror-commands'\nimport { NodeType } from 'prosemirror-model'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n toggleWrap: {\n /**\n * Wraps nodes in another node, or removes an existing wrap.\n */\n toggleWrap: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const toggleWrap: RawCommands['toggleWrap'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (isActive) {\n return lift(state, dispatch)\n }\n\n return wrapIn(type, attributes)(state, dispatch)\n}\n","import { undoInputRule as originalUndoInputRule } from 'prosemirror-inputrules'\nimport { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n undoInputRule: {\n /**\n * Undo an input rule.\n */\n undoInputRule: () => Command,\n }\n }\n}\n\nexport const undoInputRule: RawCommands['undoInputRule'] = () => ({ state, dispatch }) => {\n return originalUndoInputRule(state, dispatch)\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n unsetAllMarks: {\n /**\n * Remove all marks in the current selection.\n */\n unsetAllMarks: () => Command,\n }\n }\n}\n\nexport const unsetAllMarks: RawCommands['unsetAllMarks'] = () => ({ tr, state, dispatch }) => {\n const { selection } = tr\n const { empty, ranges } = selection\n\n if (empty) {\n return true\n }\n\n if (dispatch) {\n Object\n .entries(state.schema.marks)\n .forEach(([, mark]) => {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos, mark as any)\n })\n })\n }\n\n return true\n}\n","import { MarkType } from 'prosemirror-model'\nimport { Command, RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport getMarkRange from '../helpers/getMarkRange'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n unsetMark: {\n /**\n * Remove all marks in the current selection.\n */\n unsetMark: (typeOrName: string | MarkType) => Command,\n }\n }\n}\n\nexport const unsetMark: RawCommands['unsetMark'] = typeOrName => ({ tr, state, dispatch }) => {\n const { selection } = tr\n const type = getMarkType(typeOrName, state.schema)\n const { $from, empty, ranges } = selection\n\n if (dispatch) {\n if (empty) {\n let { from, to } = selection\n const range = getMarkRange($from, type)\n\n if (range) {\n from = range.from\n to = range.to\n }\n\n tr.removeMark(from, to, type)\n } else {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos, type)\n })\n }\n\n tr.removeStoredMark(type)\n }\n\n return true\n}\n","import { NodeType, MarkType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport getMarkType from '../helpers/getMarkType'\nimport getSchemaTypeNameByName from '../helpers/getSchemaTypeNameByName'\nimport { AnyObject, Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n updateAttributes: {\n /**\n * Update attributes of a node or mark.\n */\n updateAttributes: (typeOrName: string | NodeType | MarkType, attributes: AnyObject) => Command,\n }\n }\n}\n\nexport const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n let nodeType: NodeType | null = null\n let markType: MarkType | null = null\n\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === 'string'\n ? typeOrName\n : typeOrName.name,\n state.schema,\n )\n\n if (!schemaType) {\n return false\n }\n\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName as NodeType, state.schema)\n }\n\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName as MarkType, state.schema)\n }\n\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n ...attributes,\n })\n }\n\n if (markType && node.marks.length) {\n node.marks.forEach(mark => {\n if (markType === mark.type) {\n tr.addMark(pos, pos + node.nodeSize, markType.create({\n ...mark.attrs,\n ...attributes,\n }))\n }\n })\n }\n })\n })\n }\n\n return true\n}\n","import { NodeType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport { AnyObject, Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n updateNodeAttributes: {\n /**\n * Update attributes of a node.\n */\n updateNodeAttributes: (typeOrName: string | NodeType, attributes: AnyObject) => Command,\n }\n }\n}\n\nexport const updateNodeAttributes: RawCommands['updateNodeAttributes'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n console.warn('[tiptap warn]: updateNodeAttributes() is deprecated. please use updateAttributes() instead.')\n\n const type = getNodeType(typeOrName, state.schema)\n const { selection } = tr\n const { ranges } = selection\n\n ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (node.type === type && dispatch) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n ...attributes,\n })\n }\n })\n })\n\n return true\n}\n","import { wrapIn as originalWrapIn } from 'prosemirror-commands'\nimport { NodeType } from 'prosemirror-model'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n wrapIn: {\n /**\n * Wraps nodes in another node.\n */\n wrapIn: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const wrapIn: RawCommands['wrapIn'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (isActive) {\n return false\n }\n\n return originalWrapIn(type, attributes)(state, dispatch)\n}\n","import { wrapInList as originalWrapInList } from 'prosemirror-schema-list'\nimport { NodeType } from 'prosemirror-model'\nimport { AnyObject, Command, RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n wrapInList: {\n /**\n * Wrap a node in a list.\n */\n wrapInList: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,\n }\n }\n}\n\nexport const wrapInList: RawCommands['wrapInList'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return originalWrapInList(type, attributes)(state, dispatch)\n}\n","import { Extension } from '../Extension'\nimport * as blur from '../commands/blur'\nimport * as clearContent from '../commands/clearContent'\nimport * as clearNodes from '../commands/clearNodes'\nimport * as command from '../commands/command'\nimport * as createParagraphNear from '../commands/createParagraphNear'\nimport * as deleteRange from '../commands/deleteRange'\nimport * as deleteSelection from '../commands/deleteSelection'\nimport * as enter from '../commands/enter'\nimport * as exitCode from '../commands/exitCode'\nimport * as extendMarkRange from '../commands/extendMarkRange'\nimport * as first from '../commands/first'\nimport * as focus from '../commands/focus'\nimport * as insertContent from '../commands/insertContent'\nimport * as insertHTML from '../commands/insertHTML'\nimport * as insertNode from '../commands/insertNode'\nimport * as insertText from '../commands/insertText'\nimport * as joinBackward from '../commands/joinBackward'\nimport * as joinForward from '../commands/joinForward'\nimport * as keyboardShortcut from '../commands/keyboardShortcut'\nimport * as lift from '../commands/lift'\nimport * as liftEmptyBlock from '../commands/liftEmptyBlock'\nimport * as liftListItem from '../commands/liftListItem'\nimport * as newlineInCode from '../commands/newlineInCode'\nimport * as replace from '../commands/replace'\nimport * as replaceRange from '../commands/replaceRange'\nimport * as resetAttributes from '../commands/resetAttributes'\nimport * as resetNodeAttributes from '../commands/resetNodeAttributes'\nimport * as scrollIntoView from '../commands/scrollIntoView'\nimport * as selectAll from '../commands/selectAll'\nimport * as selectNodeBackward from '../commands/selectNodeBackward'\nimport * as selectNodeForward from '../commands/selectNodeForward'\nimport * as selectParentNode from '../commands/selectParentNode'\nimport * as setContent from '../commands/setContent'\nimport * as setMark from '../commands/setMark'\nimport * as setNode from '../commands/setNode'\nimport * as sinkListItem from '../commands/sinkListItem'\nimport * as splitBlock from '../commands/splitBlock'\nimport * as splitListItem from '../commands/splitListItem'\nimport * as toggleList from '../commands/toggleList'\nimport * as toggleMark from '../commands/toggleMark'\nimport * as toggleNode from '../commands/toggleNode'\nimport * as toggleWrap from '../commands/toggleWrap'\nimport * as undoInputRule from '../commands/undoInputRule'\nimport * as unsetAllMarks from '../commands/unsetAllMarks'\nimport * as unsetMark from '../commands/unsetMark'\nimport * as updateAttributes from '../commands/updateAttributes'\nimport * as updateNodeAttributes from '../commands/updateNodeAttributes'\nimport * as wrapIn from '../commands/wrapIn'\nimport * as wrapInList from '../commands/wrapInList'\n\nexport { blur }\nexport { clearContent }\nexport { clearNodes }\nexport { command }\nexport { createParagraphNear }\nexport { deleteRange }\nexport { deleteSelection }\nexport { enter }\nexport { exitCode }\nexport { extendMarkRange }\nexport { first }\nexport { focus }\nexport { insertContent }\nexport { insertHTML }\nexport { insertNode }\nexport { insertText }\nexport { joinBackward }\nexport { joinForward }\nexport { keyboardShortcut }\nexport { lift }\nexport { liftEmptyBlock }\nexport { liftListItem }\nexport { newlineInCode }\nexport { replace }\nexport { replaceRange }\nexport { resetAttributes }\nexport { resetNodeAttributes }\nexport { scrollIntoView }\nexport { selectAll }\nexport { selectNodeBackward }\nexport { selectNodeForward }\nexport { selectParentNode }\nexport { setContent }\nexport { setMark }\nexport { setNode }\nexport { sinkListItem }\nexport { splitBlock }\nexport { splitListItem }\nexport { toggleList }\nexport { toggleMark }\nexport { toggleNode }\nexport { toggleWrap }\nexport { undoInputRule }\nexport { unsetAllMarks }\nexport { unsetMark }\nexport { updateAttributes }\nexport { updateNodeAttributes }\nexport { wrapIn }\nexport { wrapInList }\n\nexport const Commands = Extension.create({\n name: 'commands',\n\n addCommands() {\n return {\n ...blur,\n ...clearContent,\n ...clearNodes,\n ...command,\n ...createParagraphNear,\n ...deleteRange,\n ...deleteSelection,\n ...enter,\n ...exitCode,\n ...extendMarkRange,\n ...first,\n ...focus,\n ...insertContent,\n ...insertHTML,\n ...insertNode,\n ...insertText,\n ...joinBackward,\n ...joinForward,\n ...keyboardShortcut,\n ...lift,\n ...liftEmptyBlock,\n ...liftListItem,\n ...newlineInCode,\n ...replace,\n ...replaceRange,\n ...resetAttributes,\n ...resetNodeAttributes,\n ...scrollIntoView,\n ...selectAll,\n ...selectNodeBackward,\n ...selectNodeForward,\n ...selectParentNode,\n ...setContent,\n ...setMark,\n ...setNode,\n ...sinkListItem,\n ...splitBlock,\n ...splitListItem,\n ...toggleList,\n ...toggleMark,\n ...toggleNode,\n ...toggleWrap,\n ...undoInputRule,\n ...unsetAllMarks,\n ...unsetMark,\n ...updateAttributes,\n ...updateNodeAttributes,\n ...wrapIn,\n ...wrapInList,\n }\n },\n})\n","import { Plugin, PluginKey } from 'prosemirror-state'\nimport { Extension } from '../Extension'\n\nexport const Editable = Extension.create({\n name: 'editable',\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('editable'),\n props: {\n editable: () => this.editor.options.editable,\n },\n }),\n ]\n },\n})\n","import { Plugin, PluginKey } from 'prosemirror-state'\nimport { Extension } from '../Extension'\n\nexport const FocusEvents = Extension.create({\n name: 'focusEvents',\n\n addProseMirrorPlugins() {\n const { editor } = this\n\n return [\n new Plugin({\n key: new PluginKey('focusEvents'),\n props: {\n attributes: {\n tabindex: '0',\n },\n handleDOMEvents: {\n focus: (view, event) => {\n editor.isFocused = true\n\n const transaction = editor.state.tr\n .setMeta('focus', { event })\n .setMeta('addToHistory', false)\n\n view.dispatch(transaction)\n\n return false\n },\n blur: (view, event) => {\n editor.isFocused = false\n\n const transaction = editor.state.tr\n .setMeta('blur', { event })\n .setMeta('addToHistory', false)\n\n view.dispatch(transaction)\n\n return false\n },\n },\n },\n }),\n ]\n },\n})\n","import { Extension } from '../Extension'\n\nexport const Keymap = Extension.create({\n name: 'keymap',\n\n addKeyboardShortcuts() {\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\n () => commands.undoInputRule(),\n () => commands.deleteSelection(),\n () => commands.joinBackward(),\n () => commands.selectNodeBackward(),\n ])\n\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\n () => commands.deleteSelection(),\n () => commands.joinForward(),\n () => commands.selectNodeForward(),\n ])\n\n return {\n Enter: () => this.editor.commands.first(({ commands }) => [\n () => commands.newlineInCode(),\n () => commands.createParagraphNear(),\n () => commands.liftEmptyBlock(),\n () => commands.splitBlock(),\n ]),\n 'Mod-Enter': () => this.editor.commands.exitCode(),\n Backspace: () => handleBackspace(),\n 'Mod-Backspace': () => handleBackspace(),\n Delete: () => handleDelete(),\n 'Mod-Delete': () => handleDelete(),\n // we don’t need a custom `selectAll` for now\n // 'Mod-a': () => this.editor.commands.selectAll(),\n }\n },\n})\n","const style = `.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n}\n\n.ProseMirror [contenteditable=\"false\"] {\n white-space: normal;\n}\n\n.ProseMirror [contenteditable=\"false\"] [contenteditable=\"true\"] {\n white-space: pre-wrap;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection * {\n caret-color: transparent;\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}`\n\nexport default style\n","import {\n EditorState, Plugin, PluginKey, Transaction,\n} from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { Schema } from 'prosemirror-model'\nimport getNodeAttributes from './helpers/getNodeAttributes'\nimport getMarkAttributes from './helpers/getMarkAttributes'\nimport isActive from './helpers/isActive'\nimport removeElement from './utilities/removeElement'\nimport createDocument from './helpers/createDocument'\nimport getHTMLFromFragment from './helpers/getHTMLFromFragment'\nimport isNodeEmpty from './helpers/isNodeEmpty'\nimport createStyleTag from './utilities/createStyleTag'\nimport CommandManager from './CommandManager'\nimport ExtensionManager from './ExtensionManager'\nimport EventEmitter from './EventEmitter'\nimport {\n EditorOptions,\n CanCommands,\n ChainedCommands,\n SingleCommands,\n AnyObject,\n} from './types'\nimport * as extensions from './extensions'\nimport style from './style'\n\nexport { extensions }\n\nexport interface HTMLElement {\n editor?: Editor\n}\n\nexport class Editor extends EventEmitter {\n\n private commandManager!: CommandManager\n\n public extensionManager!: ExtensionManager\n\n private css!: HTMLStyleElement\n\n public schema!: Schema\n\n public view!: EditorView\n\n public isFocused = false\n\n private resizeObserver!: ResizeObserver\n\n public options: EditorOptions = {\n element: document.createElement('div'),\n content: '',\n injectCSS: true,\n extensions: [],\n autofocus: false,\n editable: true,\n editorProps: {},\n parseOptions: {},\n enableInputRules: true,\n enablePasteRules: true,\n onCreate: () => null,\n onUpdate: () => null,\n onSelectionUpdate: () => null,\n onTransaction: () => null,\n onFocus: () => null,\n onBlur: () => null,\n onResize: () => null,\n onDestroy: () => null,\n }\n\n constructor(options: Partial<EditorOptions> = {}) {\n super()\n this.setOptions(options)\n this.createExtensionManager()\n this.createCommandManager()\n this.createSchema()\n this.createView()\n this.injectCSS()\n this.on('create', this.options.onCreate)\n this.on('update', this.options.onUpdate)\n this.on('selectionUpdate', this.options.onSelectionUpdate)\n this.on('transaction', this.options.onTransaction)\n this.on('focus', this.options.onFocus)\n this.on('blur', this.options.onBlur)\n this.on('destroy', this.options.onDestroy)\n\n window.setTimeout(() => {\n this.commands.focus(this.options.autofocus)\n this.emit('create', { editor: this })\n\n if (window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver(() => {\n this.emit('resize', { editor: this })\n })\n this.resizeObserver.observe(this.view.dom)\n }\n }, 0)\n\n }\n\n /**\n * An object of all registered commands.\n */\n public get commands(): SingleCommands {\n return this.commandManager.createCommands()\n }\n\n /**\n * Create a command chain to call multiple commands at once.\n */\n public chain(): ChainedCommands {\n return this.commandManager.createChain()\n }\n\n /**\n * Check if a command or a command chain can be executed. Without executing it.\n */\n public can(): CanCommands {\n return this.commandManager.createCan()\n }\n\n /**\n * Inject CSS styles.\n */\n private injectCSS(): void {\n if (this.options.injectCSS && document) {\n this.css = createStyleTag(style)\n }\n }\n\n /**\n * Update editor options.\n *\n * @param options A list of options\n */\n public setOptions(options: Partial<EditorOptions> = {}): void {\n this.options = { ...this.options, ...options }\n }\n\n /**\n * Update editable state of the editor.\n */\n public setEditable(editable: boolean): void {\n this.setOptions({ editable })\n\n if (this.view && this.state && !this.isDestroyed) {\n this.view.updateState(this.state)\n }\n }\n\n /**\n * Returns whether the editor is editable.\n */\n public get isEditable(): boolean {\n return this.view && this.view.editable\n }\n\n /**\n * Returns the editor state.\n */\n public get state(): EditorState {\n return this.view.state\n }\n\n /**\n * Register a ProseMirror plugin.\n *\n * @param plugin A ProseMirror plugin\n * @param handlePlugins Control how to merge the plugin into the existing plugins.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n const plugins = typeof handlePlugins === 'function'\n ? handlePlugins(plugin, this.state.plugins)\n : [...this.state.plugins, plugin]\n\n const state = this.state.reconfigure({ plugins })\n\n this.view.updateState(state)\n }\n\n /**\n * Unregister a ProseMirror plugin.\n *\n * @param name The plugins name\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n if (this.isDestroyed) {\n return\n }\n\n const name = typeof nameOrPluginKey === 'string'\n ? `${nameOrPluginKey}$`\n // @ts-ignore\n : nameOrPluginKey.key\n\n const state = this.state.reconfigure({\n // @ts-ignore\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(name)),\n })\n\n this.view.updateState(state)\n }\n\n /**\n * Creates an extension manager.\n */\n private createExtensionManager(): void {\n const coreExtensions = Object.entries(extensions).map(([, extension]) => extension)\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {\n return ['extension', 'node', 'mark'].includes(extension?.type)\n })\n\n this.extensionManager = new ExtensionManager(allExtensions, this)\n }\n\n /**\n * Creates an command manager.\n */\n private createCommandManager(): void {\n this.commandManager = new CommandManager(this, this.extensionManager.commands)\n }\n\n /**\n * Creates a ProseMirror schema.\n */\n private createSchema(): void {\n this.schema = this.extensionManager.schema\n }\n\n /**\n * Creates a ProseMirror view.\n */\n private createView(): void {\n this.view = new EditorView(this.options.element, {\n ...this.options.editorProps,\n dispatchTransaction: this.dispatchTransaction.bind(this),\n state: EditorState.create({\n doc: createDocument(this.options.content, this.schema, this.options.parseOptions),\n }),\n })\n\n // `editor.view` is not yet available at this time.\n // Therefore we will add all plugins and node views directly afterwards.\n const newState = this.state.reconfigure({\n plugins: this.extensionManager.plugins,\n })\n\n this.view.updateState(newState)\n\n this.createNodeViews()\n\n // Let’s store the editor instance in the DOM element.\n // So we’ll have access to it for tests.\n const dom = this.view.dom as HTMLElement\n dom.editor = this\n }\n\n /**\n * Creates all node views.\n */\n public createNodeViews(): void {\n this.view.setProps({\n nodeViews: this.extensionManager.nodeViews,\n })\n }\n\n public isCapturingTransaction = false\n\n private capturedTransaction: Transaction | null = null\n\n public captureTransaction(fn: Function) {\n this.isCapturingTransaction = true\n fn()\n this.isCapturingTransaction = false\n\n const tr = this.capturedTransaction\n\n this.capturedTransaction = null\n\n return tr\n }\n\n /**\n * The callback over which to send transactions (state updates) produced by the view.\n *\n * @param transaction An editor state transaction\n */\n private dispatchTransaction(transaction: Transaction): void {\n if (transaction.docChanged && !this.isEditable) {\n return\n }\n\n if (this.isCapturingTransaction) {\n if (!this.capturedTransaction) {\n this.capturedTransaction = transaction\n\n return\n }\n\n transaction.steps.forEach(step => this.capturedTransaction?.step(step))\n\n return\n }\n\n const state = this.state.apply(transaction)\n const selectionHasChanged = !this.state.selection.eq(state.selection)\n\n this.view.updateState(state)\n this.emit('transaction', {\n editor: this,\n transaction,\n })\n\n if (selectionHasChanged) {\n this.emit('selectionUpdate', {\n editor: this,\n })\n }\n\n const focus = transaction.getMeta('focus')\n const blur = transaction.getMeta('blur')\n\n if (focus) {\n this.emit('focus', {\n editor: this,\n event: focus.event,\n })\n }\n\n if (blur) {\n this.emit('blur', {\n editor: this,\n event: blur.event,\n })\n }\n\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\n return\n }\n\n this.emit('update', {\n editor: this,\n transaction,\n })\n }\n\n /**\n * Get attributes of the currently selected node.\n *\n * @param name Name of the node\n */\n public getNodeAttributes(name: string): AnyObject {\n return getNodeAttributes(this.state, name)\n }\n\n /**\n * Get attributes of the currently selected mark.\n *\n * @param name Name of the mark\n */\n public getMarkAttributes(name: string): AnyObject {\n return getMarkAttributes(this.state, name)\n }\n\n /**\n * Returns if the currently selected node or mark is active.\n *\n * @param name Name of the node or mark\n * @param attributes Attributes of the node or mark\n */\n public isActive(name: string, attributes?: {}): boolean;\n public isActive(attributes: {}): boolean;\n public isActive(nameOrAttributes: string, attributesOrUndefined?: {}): boolean {\n const name = typeof nameOrAttributes === 'string'\n ? nameOrAttributes\n : null\n\n const attributes = typeof nameOrAttributes === 'string'\n ? attributesOrUndefined\n : nameOrAttributes\n\n return isActive(this.state, name, attributes)\n }\n\n /**\n * Get the document as JSON.\n */\n public getJSON(): AnyObject {\n return this.state.doc.toJSON()\n }\n\n /**\n * Get the document as HTML.\n */\n public getHTML(): string {\n return getHTMLFromFragment(this.state.doc, this.schema)\n }\n\n /**\n * Check if there is no content.\n */\n public get isEmpty(): boolean {\n return isNodeEmpty(this.state.doc)\n }\n\n /**\n * Get the number of characters for the current document.\n */\n public getCharacterCount(): number {\n return this.state.doc.content.size - 2\n }\n\n /**\n * Destroy the editor.\n */\n public destroy(): void {\n this.resizeObserver?.unobserve(this.view.dom)\n\n this.emit('destroy')\n\n if (this.view) {\n this.view.destroy()\n }\n\n this.removeAllListeners()\n removeElement(this.css)\n }\n\n /**\n * Check if the editor is already destroyed.\n */\n public get isDestroyed(): boolean {\n // @ts-ignore\n return !this.view?.docView\n }\n\n}\n","import {\n DOMOutputSpec,\n NodeSpec,\n Node as ProseMirrorNode,\n NodeType,\n} from 'prosemirror-model'\nimport { Command as ProseMirrorCommand } from 'prosemirror-commands'\nimport { Plugin, Transaction } from 'prosemirror-state'\nimport { InputRule } from 'prosemirror-inputrules'\nimport mergeDeep from './utilities/mergeDeep'\nimport {\n Attributes,\n NodeViewRenderer,\n GlobalAttributes,\n RawCommands,\n} from './types'\nimport { NodeConfig } from '.'\nimport { Editor } from './Editor'\n\ndeclare module '@tiptap/core' {\n interface NodeConfig<Options = any> {\n [key: string]: any;\n\n /**\n * Name\n */\n name: string,\n\n /**\n * Priority\n */\n priority?: number,\n\n /**\n * Default options\n */\n defaultOptions?: Options,\n\n /**\n * Global attributes\n */\n addGlobalAttributes?: (this: {\n options: Options,\n }) => GlobalAttributes | {},\n\n /**\n * Raw\n */\n addCommands?: (this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => Partial<RawCommands>,\n\n /**\n * Keyboard shortcuts\n */\n addKeyboardShortcuts?: (this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => {\n [key: string]: ProseMirrorCommand,\n },\n\n /**\n * Input rules\n */\n addInputRules?: (this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => InputRule[],\n\n /**\n * Paste rules\n */\n addPasteRules?: (this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => Plugin[],\n\n /**\n * ProseMirror plugins\n */\n addProseMirrorPlugins?: (this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => Plugin[],\n\n /**\n * Extend Node Schema\n */\n extendNodeSchema?: ((\n this: {\n options: Options,\n },\n extension: Node,\n ) => {\n [key: string]: any,\n }) | null,\n\n /**\n * Extend Mark Schema\n */\n extendMarkSchema?: ((\n this: {\n options: Options,\n },\n extension: Node,\n ) => {\n [key: string]: any,\n }) | null,\n\n /**\n * The editor is ready.\n */\n onCreate?: ((this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => void) | null,\n\n /**\n * The content has changed.\n */\n onUpdate?: ((this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => void) | null,\n\n /**\n * The selection has changed.\n */\n onSelectionUpdate?: ((this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => void) | null,\n\n /**\n * The editor state has changed.\n */\n onTransaction?: ((\n this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n },\n props: {\n transaction: Transaction,\n },\n ) => void) | null,\n\n /**\n * The editor is focused.\n */\n onFocus?: ((\n this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor isn’t focused anymore.\n */\n onBlur?: ((\n this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor is destroyed.\n */\n onDestroy?: ((this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => void) | null,\n\n /**\n * Node View\n */\n addNodeView?: ((this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n }) => NodeViewRenderer) | null,\n\n /**\n * TopNode\n */\n topNode?: boolean,\n\n /**\n * Content\n */\n content?: NodeSpec['content'] | ((this: { options: Options }) => NodeSpec['content']),\n\n /**\n * Marks\n */\n marks?: NodeSpec['marks'] | ((this: { options: Options }) => NodeSpec['marks']),\n\n /**\n * Group\n */\n group?: NodeSpec['group'] | ((this: { options: Options }) => NodeSpec['group']),\n\n /**\n * Inline\n */\n inline?: NodeSpec['inline'] | ((this: { options: Options }) => NodeSpec['inline']),\n\n /**\n * Atom\n */\n atom?: NodeSpec['atom'] | ((this: { options: Options }) => NodeSpec['atom']),\n\n /**\n * Selectable\n */\n selectable?: NodeSpec['selectable'] | ((this: { options: Options }) => NodeSpec['selectable']),\n\n /**\n * Draggable\n */\n draggable?: NodeSpec['draggable'] | ((this: { options: Options }) => NodeSpec['draggable']),\n\n /**\n * Code\n */\n code?: NodeSpec['code'] | ((this: { options: Options }) => NodeSpec['code']),\n\n /**\n * Defining\n */\n defining?: NodeSpec['defining'] | ((this: { options: Options }) => NodeSpec['defining']),\n\n /**\n * Isolating\n */\n isolating?: NodeSpec['isolating'] | ((this: { options: Options }) => NodeSpec['isolating']),\n\n /**\n * Parse HTML\n */\n parseHTML?: (\n this: {\n options: Options,\n },\n ) => NodeSpec['parseDOM'],\n\n /**\n * Render HTML\n */\n renderHTML?: ((\n this: {\n options: Options,\n },\n props: {\n node: ProseMirrorNode,\n HTMLAttributes: { [key: string]: any },\n }\n ) => DOMOutputSpec) | null,\n\n /**\n * Render Text\n */\n renderText?: ((\n this: {\n options: Options,\n editor: Editor,\n type: NodeType,\n },\n props: {\n node: ProseMirrorNode,\n }\n ) => string) | null,\n\n /**\n * Add Attributes\n */\n addAttributes?: (\n this: {\n options: Options,\n },\n ) => Attributes | {},\n }\n}\n\nexport class Node<Options = any> {\n type = 'node'\n\n config: NodeConfig = {\n name: 'node',\n priority: 100,\n defaultOptions: {},\n }\n\n options!: Options\n\n constructor(config: NodeConfig<Options>) {\n this.config = {\n ...this.config,\n ...config,\n }\n\n this.options = this.config.defaultOptions\n }\n\n static create<O>(config: NodeConfig<O>) {\n return new Node<O>(config)\n }\n\n configure(options: Partial<Options> = {}) {\n return Node\n .create<Options>(this.config as NodeConfig<Options>)\n .#configure(options)\n }\n\n #configure = (options: Partial<Options>) => {\n this.options = mergeDeep(this.config.defaultOptions, options) as Options\n\n return this\n }\n\n extend<ExtendedOptions = Options>(extendedConfig: Partial<NodeConfig<ExtendedOptions>>) {\n return new Node<ExtendedOptions>({\n ...this.config,\n ...extendedConfig,\n } as NodeConfig<ExtendedOptions>)\n }\n}\n","import {\n DOMOutputSpec,\n MarkSpec,\n Mark as ProseMirrorMark,\n MarkType,\n} from 'prosemirror-model'\nimport { Plugin, Transaction } from 'prosemirror-state'\nimport { Command as ProseMirrorCommand } from 'prosemirror-commands'\nimport { InputRule } from 'prosemirror-inputrules'\nimport mergeDeep from './utilities/mergeDeep'\nimport { Attributes, RawCommands, GlobalAttributes } from './types'\nimport { MarkConfig } from '.'\nimport { Editor } from './Editor'\n\ndeclare module '@tiptap/core' {\n export interface MarkConfig<Options = any> {\n [key: string]: any;\n\n /**\n * Name\n */\n name: string,\n\n /**\n * Priority\n */\n priority?: number,\n\n /**\n * Default options\n */\n defaultOptions?: Options,\n\n /**\n * Global attributes\n */\n addGlobalAttributes?: (this: {\n options: Options,\n }) => GlobalAttributes | {},\n\n /**\n * Raw\n */\n addCommands?: (this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => Partial<RawCommands>,\n\n /**\n * Keyboard shortcuts\n */\n addKeyboardShortcuts?: (this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => {\n [key: string]: ProseMirrorCommand,\n },\n\n /**\n * Input rules\n */\n addInputRules?: (this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => InputRule[],\n\n /**\n * Paste rules\n */\n addPasteRules?: (this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => Plugin[],\n\n /**\n * ProseMirror plugins\n */\n addProseMirrorPlugins?: (this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => Plugin[],\n\n /**\n * Extend Node Schema\n */\n extendNodeSchema?: ((\n this: {\n options: Options,\n },\n extension: Node,\n ) => {\n [key: string]: any,\n }) | null,\n\n /**\n * Extend Mark Schema\n */\n extendMarkSchema?: ((\n this: {\n options: Options,\n },\n extension: Node,\n ) => {\n [key: string]: any,\n }) | null,\n\n /**\n * The editor is ready.\n */\n onCreate?: ((this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => void) | null,\n\n /**\n * The content has changed.\n */\n onUpdate?: ((this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => void) | null,\n\n /**\n * The selection has changed.\n */\n onSelectionUpdate?: ((this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => void) | null,\n\n /**\n * The editor state has changed.\n */\n onTransaction?: ((\n this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n },\n props: {\n transaction: Transaction,\n },\n ) => void) | null,\n\n /**\n * The editor is focused.\n */\n onFocus?: ((\n this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor isn’t focused anymore.\n */\n onBlur?: ((\n this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor is destroyed.\n */\n onDestroy?: ((this: {\n options: Options,\n editor: Editor,\n type: MarkType,\n }) => void) | null,\n\n /**\n * Keep mark after split node\n */\n keepOnSplit?: boolean | (() => boolean),\n\n /**\n * Inclusive\n */\n inclusive?: MarkSpec['inclusive'] | ((this: { options: Options }) => MarkSpec['inclusive']),\n\n /**\n * Excludes\n */\n excludes?: MarkSpec['excludes'] | ((this: { options: Options }) => MarkSpec['excludes']),\n\n /**\n * Group\n */\n group?: MarkSpec['group'] | ((this: { options: Options }) => MarkSpec['group']),\n\n /**\n * Spanning\n */\n spanning?: MarkSpec['spanning'] | ((this: { options: Options }) => MarkSpec['spanning']),\n\n /**\n * Parse HTML\n */\n parseHTML?: (\n this: {\n options: Options,\n },\n ) => MarkSpec['parseDOM'],\n\n /**\n * Render HTML\n */\n renderHTML?: ((\n this: {\n options: Options,\n },\n props: {\n mark: ProseMirrorMark,\n HTMLAttributes: { [key: string]: any },\n }\n ) => DOMOutputSpec) | null,\n\n /**\n * Attributes\n */\n addAttributes?: (\n this: {\n options: Options,\n },\n ) => Attributes | {},\n }\n}\n\nexport class Mark<Options = any> {\n type = 'mark'\n\n config: MarkConfig = {\n name: 'mark',\n priority: 100,\n defaultOptions: {},\n }\n\n options!: Options\n\n constructor(config: MarkConfig<Options>) {\n this.config = {\n ...this.config,\n ...config,\n }\n\n this.options = this.config.defaultOptions\n }\n\n static create<O>(config: MarkConfig<O>) {\n return new Mark<O>(config)\n }\n\n configure(options: Partial<Options> = {}) {\n return Mark\n .create<Options>(this.config as MarkConfig<Options>)\n .#configure(options)\n }\n\n #configure = (options: Partial<Options>) => {\n this.options = mergeDeep(this.config.defaultOptions, options) as Options\n\n return this\n }\n\n extend<ExtendedOptions = Options>(extendedConfig: Partial<MarkConfig<ExtendedOptions>>) {\n return new Mark<ExtendedOptions>({\n ...this.config,\n ...extendedConfig,\n } as MarkConfig<ExtendedOptions>)\n }\n}\n","import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { NodeSelection } from 'prosemirror-state'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Editor as CoreEditor } from './Editor'\nimport { Node } from './Node'\nimport { NodeViewRendererProps } from './types'\n\ninterface NodeViewRendererOptions {\n stopEvent: ((event: Event) => boolean) | null,\n update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null,\n}\n\nexport class NodeView<Component, Editor extends CoreEditor = CoreEditor> implements ProseMirrorNodeView {\n\n component: Component\n\n editor: Editor\n\n extension: Node\n\n node: ProseMirrorNode\n\n decorations: Decoration[]\n\n getPos: any\n\n isDragging = false\n\n options: NodeViewRendererOptions = {\n stopEvent: null,\n update: null,\n }\n\n constructor(component: Component, props: NodeViewRendererProps, options?: Partial<NodeViewRendererOptions>) {\n this.component = component\n this.options = { ...this.options, ...options }\n this.editor = props.editor as Editor\n this.extension = props.extension\n this.node = props.node\n this.decorations = props.decorations\n this.getPos = props.getPos\n this.mount()\n }\n\n mount() {\n // eslint-disable-next-line\n return\n }\n\n get dom(): Element | null {\n return null\n }\n\n get contentDOM(): Element | null {\n return null\n }\n\n onDragStart(event: DragEvent) {\n if (!this.dom) {\n return\n }\n\n const { view } = this.editor\n const target = (event.target as HTMLElement)\n\n if (this.contentDOM?.contains(target)) {\n return\n }\n\n // sometimes `event.target` is not the `dom` element\n event.dataTransfer?.setDragImage(this.dom, 0, 0)\n\n const selection = NodeSelection.create(view.state.doc, this.getPos())\n const transaction = view.state.tr.setSelection(selection)\n\n view.dispatch(transaction)\n }\n\n stopEvent(event: Event) {\n if (!this.dom) {\n return false\n }\n\n if (typeof this.options.stopEvent === 'function') {\n return this.options.stopEvent(event)\n }\n\n const target = (event.target as HTMLElement)\n const isInElement = this.dom.contains(target) && !this.contentDOM?.contains(target)\n\n // any event from child nodes should be handled by ProseMirror\n if (!isInElement) {\n return false\n }\n\n const isInput = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(target.tagName)\n || target.isContentEditable\n\n // any input event within node views should be ignored by ProseMirror\n if (isInput) {\n return true\n }\n\n const { isEditable } = this.editor\n const { isDragging } = this\n const isDraggable = !!this.node.type.spec.draggable\n const isSelectable = NodeSelection.isSelectable(this.node)\n const isCopyEvent = event.type === 'copy'\n const isPasteEvent = event.type === 'paste'\n const isCutEvent = event.type === 'cut'\n const isClickEvent = event.type === 'mousedown'\n const isDragEvent = event.type.startsWith('drag') || event.type === 'drop'\n\n // ProseMirror tries to drag selectable nodes\n // even if `draggable` is set to `false`\n // this fix prevents that\n if (!isDraggable && isSelectable && isDragEvent) {\n event.preventDefault()\n }\n\n if (isDraggable && isDragEvent && !isDragging) {\n event.preventDefault()\n return false\n }\n\n // we have to store that dragging started\n if (isDraggable && isEditable && !isDragging && isClickEvent) {\n const dragHandle = target.closest('[data-drag-handle]')\n const isValidDragHandle = dragHandle\n && (this.dom === dragHandle || (this.dom.contains(dragHandle)))\n\n if (isValidDragHandle) {\n this.isDragging = true\n\n document.addEventListener('dragend', () => {\n this.isDragging = false\n }, { once: true })\n\n document.addEventListener('mouseup', () => {\n this.isDragging = false\n }, { once: true })\n }\n }\n\n // these events are handled by prosemirror\n if (\n isDragging\n || isCopyEvent\n || isPasteEvent\n || isCutEvent\n || (isClickEvent && isSelectable)\n ) {\n return false\n }\n\n return true\n }\n\n ignoreMutation(mutation: MutationRecord | { type: 'selection', target: Element }) {\n if (mutation.type === 'selection') {\n if (this.node.isLeaf) {\n return true\n }\n\n return false\n }\n\n if (!this.contentDOM) {\n return true\n }\n\n const contentDOMHasChanged = !this.contentDOM.contains(mutation.target)\n || this.contentDOM === mutation.target\n\n return contentDOMHasChanged\n }\n\n updateAttributes(attributes: {}) {\n if (!this.editor.view.editable) {\n return\n }\n\n const { state } = this.editor.view\n const pos = this.getPos()\n const transaction = state.tr.setNodeMarkup(pos, undefined, {\n ...this.node.attrs,\n ...attributes,\n })\n\n this.editor.view.dispatch(transaction)\n }\n\n}\n","import { InputRule } from 'prosemirror-inputrules'\nimport { NodeType } from 'prosemirror-model'\n\nexport default function (regexp: RegExp, type: NodeType, getAttributes?: (match: any) => any): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const attributes = getAttributes instanceof Function\n ? getAttributes(match)\n : getAttributes\n const { tr } = state\n\n if (match[0]) {\n tr.replaceWith(start - 1, end, type.create(attributes))\n }\n\n return tr\n })\n}\n","import { EditorState } from 'prosemirror-state'\nimport { MarkRange } from '../types'\n\nexport default function getMarksBetween(from: number, to: number, state: EditorState): MarkRange[] {\n let marks: MarkRange[] = []\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n marks = [...marks, ...node.marks.map(mark => ({\n from: pos,\n to: pos + node.nodeSize,\n mark,\n }))]\n })\n\n return marks\n}\n","import { InputRule } from 'prosemirror-inputrules'\nimport { MarkType } from 'prosemirror-model'\nimport getMarksBetween from '../helpers/getMarksBetween'\n\nexport default function (regexp: RegExp, markType: MarkType, getAttributes?: Function): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const attributes = getAttributes instanceof Function\n ? getAttributes(match)\n : getAttributes\n const { tr } = state\n const captureGroup = match[match.length - 1]\n const fullMatch = match[0]\n let markEnd = end\n\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/)\n const textStart = start + fullMatch.indexOf(captureGroup)\n const textEnd = textStart + captureGroup.length\n\n const excludedMarks = getMarksBetween(start, end, state)\n .filter(item => {\n // TODO: PR to add excluded to MarkType\n // @ts-ignore\n const { excluded } = item.mark.type\n return excluded.find((type: MarkType) => type.name === markType.name)\n })\n .filter(item => item.to > textStart)\n\n if (excludedMarks.length) {\n return null\n }\n\n if (textEnd < end) {\n tr.delete(textEnd, end)\n }\n\n if (textStart > start) {\n tr.delete(start + startSpaces, textStart)\n }\n\n markEnd = start + startSpaces + captureGroup.length\n\n tr.addMark(start + startSpaces, markEnd, markType.create(attributes))\n\n tr.removeStoredMark(markType)\n }\n\n return tr\n })\n}\n","import { Plugin, PluginKey } from 'prosemirror-state'\nimport { Slice, Fragment, MarkType } from 'prosemirror-model'\n\nexport default function (regexp: RegExp, type: MarkType, getAttrs?: (match: any) => any): Plugin {\n const handler = (fragment: Fragment, parent?: any) => {\n const nodes: any[] = []\n\n fragment.forEach(child => {\n if (child.isText && child.text) {\n const { text } = child\n let pos = 0\n let match\n\n // eslint-disable-next-line\n while ((match = regexp.exec(text)) !== null) {\n const outerMatch = Math.max(match.length - 2, 0)\n const innerMatch = Math.max(match.length - 1, 0)\n\n if (parent?.type.allowsMarkType(type)) {\n const start = match.index\n const matchStart = start + match[0].indexOf(match[outerMatch])\n const matchEnd = matchStart + match[outerMatch].length\n const textStart = matchStart + match[outerMatch].lastIndexOf(match[innerMatch])\n const textEnd = textStart + match[innerMatch].length\n const attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs\n\n // adding text before markdown to nodes\n if (matchStart > 0) {\n nodes.push(child.cut(pos, matchStart))\n }\n\n // adding the markdown part to nodes\n nodes.push(child\n .cut(textStart, textEnd)\n .mark(type.create(attrs).addToSet(child.marks)))\n\n pos = matchEnd\n }\n }\n\n // adding rest of text to nodes\n if (pos < text.length) {\n nodes.push(child.cut(pos))\n }\n } else {\n nodes.push(child.copy(handler(child.content, child)))\n }\n })\n\n return Fragment.fromArray(nodes)\n }\n\n return new Plugin({\n key: new PluginKey('markPasteRule'),\n props: {\n transformPasted: slice => {\n return new Slice(handler(slice.content), slice.openStart, slice.openEnd)\n },\n },\n })\n}\n","import { Node } from 'prosemirror-model'\nimport getSchema from './getSchema'\nimport getHTMLFromFragment from './getHTMLFromFragment'\nimport { Extensions } from '../types'\n\nexport default function generateHTML(doc: object, extensions: Extensions): string {\n const schema = getSchema(extensions)\n const contentNode = Node.fromJSON(schema, doc)\n\n return getHTMLFromFragment(contentNode, schema)\n}\n","import { NodeSelection } from 'prosemirror-state'\nimport isObject from '../utilities/isObject'\n\nexport default function isNodeSelection(value: unknown): value is NodeSelection {\n return isObject(value) && value instanceof NodeSelection\n}\n"],"names":["DOMParser","DOMSerializer","Schema","keymap","inputRulesPlugin","_configure","Plugin","PluginKey","liftTarget","originalCreateParagraphNear","originalDeleteSelection","originalExitCode","TextSelection","ReplaceStep","ReplaceAroundStep","Selection","originalJoinBackward","originalJoinForward","originalLift","originalLiftEmptyBlock","originalLiftListItem","originalNewlineInCode","originalSelectAll","originalSelectNodeBackward","originalSelectNodeForward","originalSelectParentNode","setBlockType","originalSinkListItem","NodeSelection","canSplit","Fragment","Slice","lift","wrapIn","originalUndoInputRule","originalWrapIn","originalWrapInList","blur","clearContent","clearNodes","command","createParagraphNear","deleteRange","deleteSelection","enter","exitCode","extendMarkRange","first","focus","insertContent","insertHTML","insertNode","insertText","joinBackward","joinForward","keyboardShortcut","liftEmptyBlock","liftListItem","newlineInCode","replace","replaceRange","resetAttributes","resetNodeAttributes","scrollIntoView","selectAll","selectNodeBackward","selectNodeForward","selectParentNode","setContent","setMark","setNode","sinkListItem","splitBlock","splitListItem","toggleList","toggleMark","toggleNode","toggleWrap","undoInputRule","unsetAllMarks","unsetMark","updateAttributes","updateNodeAttributes","wrapInList","EditorView","EditorState","InputRule","Node"],"mappings":";;;;;;WAEwB,WAAW,CAAC,UAA6B,EAAE,MAAc;MAC/E,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;UAClC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;OAChC;MAED,OAAO,UAAU,CAAA;EACnB;;WCHwB,iBAAiB,CAAC,KAAkB,EAAE,UAA6B;MACzF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;MACpC,IAAI,KAAK,GAAW,EAAE,CAAA;MAEtB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI;UACnC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAA;OACzB,CAAC,CAAA;MAEF,MAAM,IAAI,GAAG,KAAK;WACf,OAAO,EAAE;WACT,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;MAErD,IAAI,IAAI,EAAE;UACR,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;OACzB;MAED,OAAO,EAAE,CAAA;EACX;;WCrBwB,WAAW,CAAC,UAA6B,EAAE,MAAc;MAC/E,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;UAClC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;OAChC;MAED,OAAO,UAAU,CAAA;EACnB;;WCHwB,iBAAiB,CAAC,KAAkB,EAAE,UAA6B;MACzF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;MAC3C,IAAI,KAAK,GAAW,EAAE,CAAA;MAEtB,IAAI,KAAK,EAAE;UACT,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;OACtC;WAAM;UACL,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI;cACnC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;WAClC,CAAC,CAAA;OACH;MAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;MAErE,IAAI,IAAI,EAAE;UACR,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;OACzB;MAED,OAAO,EAAE,CAAA;EACX;;ECvBA;;;;;WAKwB,cAAc,CAAC,OAAkB,EAAE,OAAkB;MAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;MAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;UAChB,OAAO,IAAI,CAAA;OACZ;MAED,OAAO,CAAC,CAAC,IAAI;WACV,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;WAC5C,MAAM,CAAA;EACX;;WCXwB,YAAY,CAClC,KAAkB,EAClB,UAAoC,EACpC,aAAwB,EAAE;MAE1B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;MAC3C,MAAM,IAAI,GAAG,UAAU;YACnB,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACrC,IAAI,CAAA;MAER,IAAI,UAAU,GAAgB,EAAE,CAAA;MAEhC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG;UACzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;cAChB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;cACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;cAEpD,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE;sBAC3B,IAAI;sBACJ,IAAI,EAAE,YAAY;sBAClB,EAAE,EAAE,UAAU;mBACf,CAAC,CAAA;WACH;OACF,CAAC,CAAA;MAEF,IAAI,KAAK,EAAE;UACT,OAAO,CAAC,CAAC,UAAU;eAChB,MAAM,CAAC,SAAS;cACf,IAAI,CAAC,IAAI,EAAE;kBACT,OAAO,IAAI,CAAA;eACZ;cAED,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;WAC9C,CAAC;eACD,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;OACvE;MAED,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAA;MAEhC,MAAM,KAAK,GAAG,UAAU;WACrB,MAAM,CAAC,SAAS;UACf,IAAI,CAAC,IAAI,EAAE;cACT,OAAO,IAAI,CAAA;WACZ;UAED,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;OAC9C,CAAC;WACD,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;WACrE,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS;UACrB,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAA;UAC1C,OAAO,GAAG,GAAG,IAAI,CAAA;OAClB,EAAE,CAAC,CAAC,CAAA;MAEP,OAAO,KAAK,IAAI,cAAc,CAAA;EAChC;;WCtDwB,YAAY,CAClC,KAAkB,EAClB,UAAoC,EACpC,aAAwB,EAAE;MAE1B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;MAC3C,MAAM,IAAI,GAAG,UAAU;YACnB,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACrC,IAAI,CAAA;MAER,IAAI,KAAK,EAAE;UACT,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;eACzD,MAAM,CAAC,IAAI;cACV,IAAI,CAAC,IAAI,EAAE;kBACT,OAAO,IAAI,CAAA;eACZ;cAED,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;WACpC,CAAC;eACD,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;OACxD;MAED,IAAI,cAAc,GAAG,CAAC,CAAA;MACtB,IAAI,UAAU,GAAgB,EAAE,CAAA;MAEhC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG;UACzC,IAAI,IAAI,CAAC,MAAM,EAAE;cACf,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;cACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;cACpD,MAAM,KAAK,GAAG,UAAU,GAAG,YAAY,CAAA;cAEvC,cAAc,IAAI,KAAK,CAAA;cAEvB,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK;sBACtD,IAAI;sBACJ,IAAI,EAAE,YAAY;sBAClB,EAAE,EAAE,UAAU;mBACf,CAAC,CAAC,CAAC,CAAA;WACL;OACF,CAAC,CAAA;MAEF,IAAI,cAAc,KAAK,CAAC,EAAE;UACxB,OAAO,KAAK,CAAA;OACb;MAED,MAAM,KAAK,GAAG,UAAU;WACrB,MAAM,CAAC,SAAS;UACf,IAAI,CAAC,IAAI,EAAE;cACT,OAAO,IAAI,CAAA;WACZ;UAED,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;OAC9C,CAAC;WACD,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;WACrE,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS;UACrB,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAA;UAC1C,OAAO,GAAG,GAAG,IAAI,CAAA;OAClB,EAAE,CAAC,CAAC,CAAA;MAEP,OAAO,KAAK,IAAI,cAAc,CAAA;EAChC;;WChEwB,uBAAuB,CAAC,IAAY,EAAE,MAAc;MAC1E,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;UACtB,OAAO,MAAM,CAAA;OACd;MAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;UACtB,OAAO,MAAM,CAAA;OACd;MAED,OAAO,IAAI,CAAA;EACb;;WCNwB,QAAQ,CAAC,KAAkB,EAAE,IAAmB,EAAE,aAAwB,EAAE;MAClG,IAAI,CAAC,IAAI,EAAE;UACT,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;OACtF;MAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAE9D,IAAI,UAAU,KAAK,MAAM,EAAE;UACzB,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;OAC7C;MAED,IAAI,UAAU,KAAK,MAAM,EAAE;UACzB,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;OAC7C;MAED,OAAO,KAAK,CAAA;EACd;;WCtBwB,aAAa,CAAC,OAAoB;MACxD,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;UACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;OACxC;EACH;;WCJwB,iBAAiB,CAAC,KAAa;MACrD,MAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAA;MACxC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAA;MACrC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,IAAI,CAAA;MAEpE,OAAO,OAAO,CAAA;EAChB;;WCUwB,qBAAqB,CAC3C,OAAgB,EAChB,MAAc,EACd,OAAsC;MAEtC,OAAO,GAAG;UACR,KAAK,EAAE,IAAI;UACX,YAAY,EAAE,EAAE;UAChB,GAAG,OAAO;OACX,CAAA;MAED,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;UAC1C,IAAI;cACF,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;WACpC;UAAC,OAAO,KAAK,EAAE;cACd,OAAO,CAAC,IAAI,CACV,iCAAiC,EACjC,eAAe,EACf,OAAO,EACP,QAAQ,EACR,KAAK,CACN,CAAA;cAED,OAAO,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;WAClD;OACF;MAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;UAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;UAE7E,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;cAC5B,MAAM,MAAM,GAAGA,0BAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;cAE3C,OAAO,OAAO,CAAC,KAAK;oBAChB,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO;oBAC3E,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;WACnE;UAED,OAAO,OAAO,CAAA;OACf;MAED,OAAO,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;EACnD;;WCpDwB,cAAc,CACpC,OAAgB,EAChB,MAAc,EACd,eAA0B,EAAE;MAE5B,OAAO,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAoB,CAAA;EAClG;;WCVwB,mBAAmB,CAAC,GAAS,EAAE,MAAc;MACnE,MAAM,QAAQ,GAAGC,8BAAa;WAC3B,UAAU,CAAC,MAAM,CAAC;WAClB,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;MAEjC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAA;MACtE,MAAM,SAAS,GAAG,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;MACxD,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;MAE/B,OAAO,SAAS,CAAC,SAAS,CAAA;EAC5B;;WCVwB,WAAW,CAAC,IAAqB;;MACvD,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,0CAAE,MAAM,EAAE,CAAA;MAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;MAE7B,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;EACnE;;WCPwB,cAAc,CAAC,KAAa;MAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;MAEjD,SAAS,CAAC,SAAS,GAAG,KAAK,CAAA;MAC3B,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;MAE/D,OAAO,SAAS,CAAA;EAClB;;QCGqB,cAAc;MAMjC,YAAY,MAAc,EAAE,QAAqB;UAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;UACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;OACzB;MAEM,cAAc;UACnB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;UACjC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;UAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;UACpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;UAEjC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM;eAC7B,OAAO,CAAC,QAAQ,CAAC;eACjB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;cACnB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAS;kBAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;kBAExC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;sBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;mBAClB;kBAED,OAAO,QAAQ,CAAA;eAChB,CAAA;cAED,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;WACtB,CAAC,CAAmB,CAAA;OACxB;MAEM,WAAW,CAAC,OAAqB,EAAE,cAAc,GAAG,IAAI;UAC7D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;UACjC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;UAC9B,MAAM,SAAS,GAAc,EAAE,CAAA;UAC/B,MAAM,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAA;UACrC,MAAM,EAAE,GAAG,OAAO,IAAI,KAAK,CAAC,EAAE,CAAA;UAE9B,MAAM,GAAG,GAAG;cACV,IAAI,CAAC,mBAAmB,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;kBAC5E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;eAClB;cAED,OAAO,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAA;WAC5D,CAAA;UAED,MAAM,KAAK,GAAG;cACZ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;kBACjE,MAAM,cAAc,GAAG,CAAC,GAAG,IAAW;sBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;sBACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;sBAExC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;sBAExB,OAAO,KAAK,CAAA;mBACb,CAAA;kBAED,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;eAC9B,CAAC,CAAC;cACH,GAAG;WAC0B,CAAA;UAE/B,OAAO,KAAK,CAAA;OACb;MAEM,SAAS,CAAC,OAAqB;UACpC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;UACjC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;UACxB,MAAM,QAAQ,GAAG,SAAS,CAAA;UAC1B,MAAM,EAAE,GAAG,OAAO,IAAI,KAAK,CAAC,EAAE,CAAA;UAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;UAC3C,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM;eAChD,OAAO,CAAC,QAAQ,CAAC;eACjB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;cACnB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAW,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;WAC5E,CAAC,CAAmB,CAAA;UAEvB,OAAO;cACL,GAAG,iBAAiB;cACpB,KAAK,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;WAC7B,CAAA;OACjB;MAEM,UAAU,CAAC,EAAe,EAAE,cAAc,GAAG,IAAI;UACtD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;UACjC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;UAE9B,IAAI,KAAK,CAAC,WAAW,EAAE;cACrB,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;WACrC;UAED,MAAM,KAAK,GAAiB;cAC1B,EAAE;cACF,MAAM;cACN,IAAI;cACJ,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC;cACrC,QAAQ,EAAE,cAAc;oBACpB,MAAM,SAAS;oBACf,SAAS;cACb,KAAK,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;cACjC,GAAG,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;cAC7B,IAAI,QAAQ;kBACV,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM;uBAC7B,OAAO,CAAC,QAAQ,CAAC;uBACjB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;sBACnB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAW,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;mBAC3D,CAAC,CAAmB,CAAA;eACxB;WACF,CAAA;UAED,OAAO,KAAK,CAAA;OACb;MAEM,cAAc,CAAC,EAAe,EAAE,KAAkB;UACvD,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;UACtB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;UAChB,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAA;UAExB,OAAO;cACL,GAAG,KAAK;cACR,MAAM,EAAE,KAAK,CAAC,MAAM;cACpB,OAAO,EAAE,KAAK,CAAC,OAAO;cACtB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;cAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;cACpD,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;cAC1C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;cAChC,IAAI,WAAW;kBACb,OAAO,WAAW,CAAA;eACnB;cACD,IAAI,SAAS;kBACX,OAAO,SAAS,CAAA;eACjB;cACD,IAAI,GAAG;kBACL,OAAO,GAAG,CAAA;eACX;cACD,IAAI,EAAE;kBACJ,SAAS,GAAG,EAAE,CAAC,SAAS,CAAA;kBACxB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;kBACZ,WAAW,GAAG,EAAE,CAAC,WAAW,CAAA;kBAE5B,OAAO,EAAE,CAAA;eACV;WACF,CAAA;OACF;;;WCvJqB,eAAe,CAAC,UAAsB;MAC5D,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAgB,CAAA;MACpG,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAW,CAAA;MAC1F,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAW,CAAA;MAE1F,OAAO;UACL,cAAc;UACd,cAAc;UACd,cAAc;OACf,CAAA;EACH;;ECNA;;;;WAIwB,2BAA2B,CAAC,UAAsB;MACxE,MAAM,mBAAmB,GAAyB,EAAE,CAAA;MACpD,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;MACtE,MAAM,qBAAqB,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAA;MACpE,MAAM,gBAAgB,GAAwB;UAC5C,OAAO,EAAE,IAAI;UACb,QAAQ,EAAE,IAAI;UACd,UAAU,EAAE,IAAI;UAChB,SAAS,EAAE,IAAI;UACf,WAAW,EAAE,IAAI;OAClB,CAAA;MAED,UAAU,CAAC,OAAO,CAAC,SAAS;UAC1B,MAAM,OAAO,GAAG;cACd,OAAO,EAAE,SAAS,CAAC,OAAO;WAC3B,CAAA;UAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE;cACzC,OAAM;WACP;UAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAsB,CAAA;UAEjG,gBAAgB,CAAC,OAAO,CAAC,eAAe;cACtC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;kBAChC,MAAM;uBACH,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;uBACnC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC;sBACzB,mBAAmB,CAAC,IAAI,CAAC;0BACvB,IAAI;0BACJ,IAAI;0BACJ,SAAS,EAAE;8BACT,GAAG,gBAAgB;8BACnB,GAAG,SAAS;2BACb;uBACF,CAAC,CAAA;mBACH,CAAC,CAAA;eACL,CAAC,CAAA;WACH,CAAC,CAAA;OACH,CAAC,CAAA;MAEF,qBAAqB,CAAC,OAAO,CAAC,SAAS;UACrC,MAAM,OAAO,GAAG;cACd,OAAO,EAAE,SAAS,CAAC,OAAO;WAC3B,CAAA;UAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE;cACnC,OAAM;WACP;UAED,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAgB,CAAA;UAE/E,MAAM;eACH,OAAO,CAAC,UAAU,CAAC;eACnB,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC;cACzB,mBAAmB,CAAC,IAAI,CAAC;kBACvB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;kBAC3B,IAAI;kBACJ,SAAS,EAAE;sBACT,GAAG,gBAAgB;sBACnB,GAAG,SAAS;mBACb;eACF,CAAC,CAAA;WACH,CAAC,CAAA;OACL,CAAC,CAAA;MAEF,OAAO,mBAAmB,CAAA;EAC5B;;WC9EwB,eAAe,CAAC,GAAG,OAAoB;MAC7D,OAAO,OAAO;WACX,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;WACtB,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI;UAClB,MAAM,gBAAgB,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;UAErC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;cACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;cAEpC,IAAI,CAAC,MAAM,EAAE;kBACX,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;kBAC7B,OAAM;eACP;cAED,IAAI,GAAG,KAAK,OAAO,EAAE;kBACnB,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;eACjE;mBAAM,IAAI,GAAG,KAAK,OAAO,EAAE;kBAC1B,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;eAClE;mBAAM;kBACL,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;eAC9B;WACF,CAAC,CAAA;UAEF,OAAO,gBAAgB,CAAA;OACxB,EAAE,EAAE,CAAC,CAAA;EACV;;WCvBwB,qBAAqB,CAAC,UAAuB,EAAE,mBAAyC;MAC9G,OAAO,mBAAmB;WACvB,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;WACvC,GAAG,CAAC,IAAI;UACP,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;cAC9B,OAAO;kBACL,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;eACzC,CAAA;WACF;UAED,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;OACzD,CAAC;WACD,MAAM,CAAC,CAAC,UAAU,EAAE,SAAS;UAC5B,OAAO,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;OAC9C,EAAE,EAAE,CAAC,CAAA;EACV;;WCnBwB,aAAa,CAAC,MAAM,GAAG,EAAE;MAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,CAAA;EAC1E;;WCFwB,UAAU,CAAC,KAAU;MAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;UAC7B,OAAO,KAAK,CAAA;OACb;MAED,IAAI,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;UAChC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;OACrB;MAED,IAAI,KAAK,KAAK,MAAM,EAAE;UACpB,OAAO,IAAI,CAAA;OACZ;MAED,IAAI,KAAK,KAAK,OAAO,EAAE;UACrB,OAAO,KAAK,CAAA;OACb;MAED,OAAO,KAAK,CAAA;EACd;;ECdA;;;;;;WAMwB,oCAAoC,CAAC,SAAoB,EAAE,mBAAyC;MAC1H,IAAI,SAAS,CAAC,KAAK,EAAE;UACnB,OAAO,SAAS,CAAA;OACjB;MAED,OAAO;UACL,GAAG,SAAS;UACZ,QAAQ,EAAE,IAAI;cACZ,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ;oBACpC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACxB,SAAS,CAAC,KAAK,CAAA;cAEnB,IAAI,aAAa,KAAK,KAAK,EAAE;kBAC3B,OAAO,KAAK,CAAA;eACb;cAED,MAAM,aAAa,GAAG,mBAAmB;mBACtC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;mBACvC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI;kBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS;wBACvC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAmB,CAAC,IAAI,EAAE;wBACnD;0BACA,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAE,IAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;uBACvE,CAAA;kBAEH,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;uBACrE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAA;kBAEhE,OAAO;sBACL,GAAG,KAAK;sBACR,GAAG,kBAAkB;mBACtB,CAAA;eACF,EAAE,EAAE,CAAC,CAAA;cAER,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,aAAa,EAAE,CAAA;WAC9C;OACF,CAAA;EACH;;EC/CA;;;;;;;WAOwB,YAAY,CAAC,KAAU,EAAE,UAAe,SAAS,EAAE,GAAG,KAAY;MACxF,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;UAC/B,IAAI,OAAO,EAAE;cACX,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;WACrC;UAED,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAA;OACvB;MAED,OAAO,KAAK,CAAA;EACd;;ECPA,SAAS,iBAAiB,CAAI,IAAO;MACnC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;UACjE,IAAI,GAAG,KAAK,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;cAC3C,OAAO,KAAK,CAAA;WACb;UAED,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;OAC7C,CAAC,CAAM,CAAA;EACV,CAAC;WAEuB,SAAS,CAAC,UAAsB;;MACtD,MAAM,aAAa,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAA;MAC7D,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;MACtE,MAAM,OAAO,GAAG,MAAA,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,0CAAE,MAAM,CAAC,IAAI,CAAA;MACvF,MAAM,mBAAmB,GAInB,EAAE,CAAA;MACR,MAAM,mBAAmB,GAInB,EAAE,CAAA;MAER,UAAU,CAAC,OAAO,CAAC,SAAS;UAC1B,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;cAC3D,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;WAC5D;UAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;cAC3D,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;WAC5D;OACF,CAAC,CAAA;MAEF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS;;UAC3D,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;UACvG,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAA;UAE9C,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,kBAAkB;cAC5E,MAAM,WAAW,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;cAExE,OAAO;kBACL,GAAG,MAAM;kBACT,GAAG,WAAW;eACf,CAAA;WACF,EAAE,EAAE,CAAC,CAAA;UAEN,MAAM,MAAM,GAAa,iBAAiB,CAAC;cACzC,GAAG,eAAe;cAClB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;cACxD,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;cACpD,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;cACpD,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cACtD,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;cAClD,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;cAC9D,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;cAC5D,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;cAClD,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;cAC1D,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;cAC5D,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB;;kBAClE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,SAAS,0CAAE,OAAO,EAAE,CAAC,CAAA;eACtF,CAAC,CAAC;WACJ,CAAC,CAAA;UAEF,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE;cAC9B,MAAM,CAAC,QAAQ,GAAG,MAAA,SAAS,CAAC,MAAM,CAAC,SAAS;mBACzC,IAAI,CAAC,OAAO,CAAC,EAAE,0CACd,GAAG,CAAC,SAAS,IAAI,oCAAoC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAA;WAC3F;UAED,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE;cAC/B,MAAM,CAAC,KAAK,GAAG,IAAI;;kBAAI,OAAA,MAAC,SAAS,CAAC,MAAM,CAAC,UAAuB,0CAAE,IAAI,CAAC,OAAO,EAAE;sBAC9E,IAAI;sBACJ,cAAc,EAAE,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC;mBACjE,CAAC,CAAA;eAAA,CAAA;WACH;UAED,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;OACvC,CAAC,CAAC,CAAA;MAEH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS;;UAC3D,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;UACvG,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAA;UAE9C,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,kBAAkB;cAC5E,MAAM,WAAW,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;cAExE,OAAO;kBACL,GAAG,MAAM;kBACT,GAAG,WAAW;eACf,CAAA;WACF,EAAE,EAAE,CAAC,CAAA;UAEN,MAAM,MAAM,GAAa,iBAAiB,CAAC;cACzC,GAAG,eAAe;cAClB,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;cAC5D,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;cAC1D,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;cACpD,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;cAC1D,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB;;kBAClE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,SAAS,0CAAE,OAAO,EAAE,CAAC,CAAA;eACtF,CAAC,CAAC;WACJ,CAAC,CAAA;UAEF,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE;cAC9B,MAAM,CAAC,QAAQ,GAAG,MAAA,SAAS,CAAC,MAAM,CAAC,SAAS;mBACzC,IAAI,CAAC,OAAO,CAAC,EAAE,0CACd,GAAG,CAAC,SAAS,IAAI,oCAAoC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAA;WAC3F;UAED,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE;cAC/B,MAAM,CAAC,KAAK,GAAG,IAAI;;kBAAI,OAAA,MAAC,SAAS,CAAC,MAAM,CAAC,UAAuB,0CAAE,IAAI,CAAC,OAAO,EAAE;sBAC9E,IAAI;sBACJ,cAAc,EAAE,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC;mBACjE,CAAC,CAAA;eAAA,CAAA;WACH;UAED,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;OACvC,CAAC,CAAC,CAAA;MAEH,OAAO,IAAIC,uBAAM,CAAC;UAChB,OAAO;UACP,KAAK;UACL,KAAK;OACN,CAAC,CAAA;EACJ;;WCtIwB,mBAAmB,CAAC,IAAY,EAAE,MAAc;MACtE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;UACtB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;OAC1B;MAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;UACtB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;OAC1B;MAED,OAAO,IAAI,CAAA;EACb;;QCGqB,gBAAgB;MAUnC,YAAY,UAAsB,EAAE,MAAc;UAFlD,oBAAe,GAAa,EAAE,CAAA;UAG5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;UACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;UACvC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;UAExC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS;;cAC/B,MAAM,OAAO,GAAG;kBACd,OAAO,EAAE,SAAS,CAAC,OAAO;kBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;eAC9D,CAAA;cAED,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;kBAC7B,MAAM,WAAW,GAAG,MAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,mCAAI,IAAI,CAAA;kBAE/E,IAAI,WAAW,EAAE;sBACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;mBACjD;eACF;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;kBACnD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eAClE;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;kBACnD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eAClE;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;kBAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eACpF;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE;kBACxD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eAC5E;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;kBAClD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eAChE;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;kBACjD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eAC9D;cAED,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;kBACpD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;eACpE;WACF,CAAC,CAAA;OACH;MAEO,IAAI,CAAC,UAAsB;UACjC,MAAM,eAAe,GAAG,GAAG,CAAA;UAE3B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;cAC1B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,eAAe,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC,EAAE;kBACnF,OAAO,CAAC,CAAC,CAAA;eACV;cAED,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,eAAe,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC,EAAE;kBACnF,OAAO,CAAC,CAAA;eACT;cAED,OAAO,CAAC,CAAA;WACT,CAAC,CAAA;OACH;MAED,IAAI,QAAQ;UACV,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS;cAChD,MAAM,OAAO,GAAG;kBACd,OAAO,EAAE,SAAS,CAAC,OAAO;kBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;eAC9D,CAAA;cAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE;kBACjC,OAAO,QAAQ,CAAA;eAChB;cAED,OAAO;kBACL,GAAG,QAAQ;kBACX,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;eAChD,CAAA;WACF,EAAE,EAAiB,CAAC,CAAA;OACtB;MAED,IAAI,OAAO;UACT,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;eACxB,OAAO,EAAE;eACT,GAAG,CAAC,SAAS;cACZ,MAAM,OAAO,GAAG;kBACd,OAAO,EAAE,SAAS,CAAC,OAAO;kBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;eAC9D,CAAA;cAED,MAAM,OAAO,GAAa,EAAE,CAAA;cAE5B,IAAI,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE;kBACzC,MAAM,YAAY,GAAGC,wBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;kBAElF,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;eAC3B;cAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE;kBAC1E,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;kBACjE,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM;wBACtC,CAACC,gCAAgB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;wBACzC,EAAE,CAAA;kBAEN,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAA;eAClC;cAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE;kBAC1E,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;kBAEvE,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAA;eAClC;cAED,IAAI,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE;kBAC1C,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;kBAEjF,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAA;eACpC;cAED,OAAO,OAAO,CAAA;WACf,CAAC;eACD,IAAI,EAAE,CAAA;OACV;MAED,IAAI,UAAU;UACZ,OAAO,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;OACpD;MAED,IAAI,SAAS;UACX,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;UACvB,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;UAE3D,OAAO,MAAM,CAAC,WAAW,CAAC,cAAc;eACrC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;eACnD,GAAG,CAAC,SAAS;;cACZ,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;cACzG,MAAM,OAAO,GAAG;kBACd,OAAO,EAAE,SAAS,CAAC,OAAO;kBAC1B,MAAM;kBACN,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;eACtD,CAAA;cACD,MAAM,QAAQ,GAAG,MAAA,SAAS,CAAC,MAAM,CAAC,WAAW,0CAAE,IAAI,CAAC,OAAO,CAAqB,CAAA;cAEhF,MAAM,QAAQ,GAAG,CACf,IAAqB,EACrB,IAAgB,EAChB,MAAgC,EAChC,WAAyB;kBAEzB,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;kBAEvE,OAAO,QAAQ,CAAC;sBACd,MAAM;sBACN,IAAI;sBACJ,MAAM;sBACN,WAAW;sBACX,cAAc;sBACd,SAAS;mBACV,CAAC,CAAA;eACH,CAAA;cAED,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;WACzC,CAAC,CAAC,CAAA;OACN;MAED,IAAI,eAAe;UACjB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;UACvB,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;UAE3D,OAAO,MAAM,CAAC,WAAW,CAAC,cAAc;eACrC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;eAClD,GAAG,CAAC,SAAS;cACZ,MAAM,OAAO,GAAG;kBACd,OAAO,EAAE,SAAS,CAAC,OAAO;kBAC1B,MAAM;kBACN,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;eACtD,CAAA;cAED,MAAM,cAAc,GAAG,CAAC,KAAgC,eAAK,OAAA,MAAA,SAAS,CAAC,MAAM,CAAC,UAAU,0CAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA,EAAA,CAAA;cAE9G,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;WAC/C,CAAC,CAAC,CAAA;OACN;;;QCpNkB,YAAY;MAAjC;UAEU,cAAS,GAAkC,EAAE,CAAA;OAuCtD;MArCQ,EAAE,CAAC,KAAa,EAAE,EAAY;UACnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;cAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;WAC3B;UAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;UAE9B,OAAO,IAAI,CAAA;OACZ;MAES,IAAI,CAAC,KAAa,EAAE,GAAG,IAAS;UACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;UAEvC,IAAI,SAAS,EAAE;cACb,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;WAC1D;UAED,OAAO,IAAI,CAAA;OACZ;MAEM,GAAG,CAAC,KAAa,EAAE,EAAa;UACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;UAEvC,IAAI,SAAS,EAAE;cACb,IAAI,EAAE,EAAE;kBACN,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAA;eACtE;mBAAM;kBACL,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;eAC7B;WACF;UAED,OAAO,IAAI,CAAA;OACZ;MAES,kBAAkB;UAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;OACpB;;;ECxCH;EACA;AACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAiNA;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;EACjE,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;EACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;EACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAClG;;ECnOA;EAEA,SAAS,OAAO,CAAC,OAAY;MAC3B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;EAC7D,CAAC;WAEuB,aAAa,CAAC,OAAY;MAChD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ;UAAE,OAAO,KAAK,CAAA;MAC/C,OAAO,OAAO,CAAC,WAAW,KAAK,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,SAAS,CAAA;EAC9F;;WCNwB,SAAS,CAAC,MAAiB,EAAE,MAAiB;MACpE,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;MAE5B,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;UAClD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG;cAC7B,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;kBAC9B,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE;sBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;mBAC9C;uBAAM;sBACL,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;mBAClD;eACF;mBAAM;kBACL,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;eAC9C;WACF,CAAC,CAAA;OACH;MAED,OAAO,MAAM,CAAA;EACf;;;QCyJa,SAAS;MAWpB,YAAY,MAAgC;UAV5C,SAAI,GAAG,WAAW,CAAA;UAElB,WAAM,GAAoB;cACxB,IAAI,EAAE,WAAW;cACjB,QAAQ,EAAE,GAAG;cACb,cAAc,EAAE,EAAE;WACnB,CAAA;UAuBDC,uBAAa,CAAC,OAAyB;cACrC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAY,CAAA;cAExE,OAAO,IAAI,CAAA;WACZ,EAAA;UAtBC,IAAI,CAAC,MAAM,GAAG;cACZ,GAAG,IAAI,CAAC,MAAM;cACd,GAAG,MAAM;WACV,CAAA;UAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;OAC1C;MAED,OAAO,MAAM,CAAI,MAA0B;UACzC,OAAO,IAAI,SAAS,CAAI,MAAM,CAAC,CAAA;OAChC;MAED,SAAS,CAAC,UAA4B,EAAE;;UACtC,OAAO,wBAAA,KAAA,SAAS;eACb,MAAM,CAAU,IAAI,CAAC,MAAkC,CAAC,0BAC7C,OAAO,CAAC,CAAA;OACvB;MAQD,MAAM,CAA4B,cAAyD;UACzF,OAAO,IAAI,SAAS,CAAkB;cACpC,GAAG,IAAI,CAAC,MAAM;cACd,GAAG,cAAc;WACkB,CAAC,CAAA;OACvC;GACF;;;ECpND,MAAM,WAAW,GAAG,CAClB,MAAc,EACd,IAAY,EACZ,EAAU,EACV,cAAuB,EACvB,QAAiB;MAEjB,IAAI,IAAI,GAAG,EAAE,CAAA;MACb,IAAI,SAAS,GAAG,IAAI,CAAA;MAEpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG;;UAChD,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;UAE9E,IAAI,cAAc,EAAE;cAClB,IAAI,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;cAChC,SAAS,GAAG,CAAC,cAAc,CAAA;WAC5B;eAAM,IAAI,IAAI,CAAC,MAAM,EAAE;cACtB,IAAI,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAA;cAC9D,SAAS,GAAG,CAAC,cAAc,CAAA;WAC5B;eAAM,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;cAClC,IAAI,IAAI,QAAQ,CAAA;cAChB,SAAS,GAAG,CAAC,cAAc,CAAA;WAC5B;eAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;cACrC,IAAI,IAAI,cAAc,CAAA;cACtB,SAAS,GAAG,IAAI,CAAA;WACjB;OACF,EAAE,CAAC,CAAC,CAAA;MAEL,OAAO,IAAI,CAAA;EACb,CAAC,CAAA;EAEM,MAAM,uBAAuB,GAAG,SAAS,CAAC,MAAM,CAAC;MACtD,IAAI,EAAE,UAAU;MAEhB,qBAAqB;UACnB,OAAO;cACL,IAAIC,uBAAM,CAAC;kBACT,GAAG,EAAE,IAAIC,0BAAS,CAAC,yBAAyB,CAAC;kBAC7C,KAAK,EAAE;sBACL,uBAAuB,EAAE;0BACvB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;0BACvB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;0BAE3C,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;uBAC3C;mBACF;eACF,CAAC;WACH,CAAA;OACF;GACF,CAAC;;ECxCK,MAAM,IAAI,GAAwB,MAAM,CAAC,EAAE,IAAI,EAAE;MACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAkB,CAAA;MAEvC,OAAO,CAAC,IAAI,EAAE,CAAA;MAEd,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECNM,MAAM,YAAY,GAAgC,CAAC,UAAU,GAAG,KAAK,KAAK,CAAC,EAAE,QAAQ,EAAE;MAC5F,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;EAC5C,CAAC;;;;;;;ECDM,MAAM,UAAU,GAA8B,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;MACjF,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;MAE5B,MAAM,CAAC,OAAO,CAAC,KAAK;UAClB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG;cAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;kBACrB,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;kBACvD,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;kBACrE,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;kBAE3C,IAAI,SAAS,EAAE;sBACb,MAAM,eAAe,GAAGC,+BAAU,CAAC,SAAS,CAAC,CAAA;sBAE7C,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE;0BACrC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;uBAC3E;sBAED,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,CAAC,KAAK,QAAQ,EAAE;0BAC1D,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;uBACpC;mBACF;eACF;WACF,CAAC,CAAA;OACH,CAAC,CAAA;MAEF,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EC5BM,MAAM,OAAO,GAA2B,EAAE,IAAI,KAAK;MACxD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;EAClB,CAAC;;;;;;;ECDM,MAAM,mBAAmB,GAAuC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC/F,OAAOC,uCAA2B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACrD,CAAC;;;;;;;ECHM,MAAM,WAAW,GAA+B,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE;MAC/E,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;MAE1B,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;OACpB;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECPM,MAAM,eAAe,GAAmC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACvF,OAAOC,mCAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACjD,CAAC;;;;;;;ECHM,MAAM,KAAK,GAAyB,MAAM,CAAC,EAAE,QAAQ,EAAE;MAC5D,OAAO,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;EAC3C,CAAC;;;;;;;ECDM,MAAM,QAAQ,GAA4B,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACzE,OAAOC,4BAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC1C,CAAC;;;;;;;WCbuB,YAAY,CAAC,IAAiB,EAAE,IAAc;MACpE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;UAClB,OAAM;OACP;MAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;MAEvD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;UACf,OAAM;OACP;MAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;MAE9D,IAAI,CAAC,IAAI,EAAE;UACT,OAAM;OACP;MAED,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;MAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;MAC1C,IAAI,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAA;MAC7B,IAAI,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAA;MAE3C,OAAO,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;UAC9E,UAAU,IAAI,CAAC,CAAA;UACf,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAA;OACnD;MAED,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;UAC3F,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAA;UAC9C,QAAQ,IAAI,CAAC,CAAA;OACd;MAED,OAAO;UACL,IAAI,EAAE,QAAQ;UACd,EAAE,EAAE,MAAM;OACX,CAAA;EACH;;ECtBO,MAAM,eAAe,GAAmC,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACnG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MAC7B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,CAAA;MAElC,IAAI,KAAK,IAAI,QAAQ,EAAE;UACrB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;UAEvC,IAAI,KAAK,EAAE;cACT,MAAM,YAAY,GAAGC,8BAAa,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;cAEpE,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;WAC9B;OACF;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECpBM,MAAM,KAAK,GAAyB,QAAQ,IAAI,KAAK;MAC1D,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,UAAU;YACxC,QAAQ,CAAC,KAAK,CAAC;YACf,QAAQ,CAAA;MAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;UACxC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;cACnB,OAAO,IAAI,CAAA;WACZ;OACF;MAED,OAAO,KAAK,CAAA;EACd,CAAC;;;;;;;WCzBuB,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;MACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;EAC5C;;WCFwB,OAAO,CAAC,IAAS;;MACvC,IAAI,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAK,OAAO,EAAE;UAC5D,OAAO,KAAK,CAAA;OACb;MAED,OAAO,IAAI,CAAA;EACb;;WCJwB,QAAQ,CAAC,IAAS;MACxC,QACE,IAAI;aACD,OAAO,IAAI,KAAK,QAAQ;aACxB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;aACpB,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB;EACH;;WCNwB,eAAe,CAAC,KAAc;MACpD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,YAAYA,8BAAa,CAAA;EAC1D;;ECAA,SAAS,gBAAgB,CAAC,KAAkB,EAAE,WAA0B,IAAI;MAC1E,IAAI,CAAC,QAAQ,EAAE;UACb,OAAO,IAAI,CAAA;OACZ;MAED,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,IAAI,EAAE;UAC7C,OAAO;cACL,IAAI,EAAE,CAAC;cACP,EAAE,EAAE,CAAC;WACN,CAAA;OACF;MAED,IAAI,QAAQ,KAAK,KAAK,EAAE;UACtB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAA;UAElC,OAAO;cACL,IAAI,EAAE,IAAI;cACV,EAAE,EAAE,IAAI;WACT,CAAA;OACF;MAED,OAAO;UACL,IAAI,EAAE,QAAQ;UACd,EAAE,EAAE,QAAQ;OACb,CAAA;EACH,CAAC;EAaM,MAAM,KAAK,GAAyB,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,EAC/D,MAAM,EACN,IAAI,EACJ,EAAE,EACF,QAAQ,GACT;MACC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,KAAK,EAAE;UAChE,OAAO,IAAI,CAAA;OACZ;;MAGD,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;UAC7E,IAAI,CAAC,KAAK,EAAE,CAAA;UACZ,OAAO,IAAI,CAAA;OACZ;MAED,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;MACvF,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAA;MAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;MACtD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;MACnD,MAAM,SAAS,GAAGA,8BAAa,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;MACtE,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;MAE5D,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;;;UAI1B,IAAI,eAAe,IAAI,WAAW,EAAE;cAClC,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;WAC/B;UAED,IAAI,CAAC,KAAK,EAAE,CAAA;OACb;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EC5ED;WACwB,uBAAuB,CAAC,EAAe,EAAE,QAAgB,EAAE,IAAY;MAC7F,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;MAEhC,IAAI,IAAI,GAAG,QAAQ,EAAE;UACnB,OAAM;OACP;MAED,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;MAE3B,IAAI,EAAE,IAAI,YAAYC,gCAAW,IAAI,IAAI,YAAYC,sCAAiB,CAAC,EAAE;UACvE,OAAM;OACP;MAED,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;MACjC,IAAI,GAAG,GAAG,CAAC,CAAA;MAEX,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK;UACtC,IAAI,GAAG,KAAK,CAAC,EAAE;cACb,GAAG,GAAG,KAAK,CAAA;WACZ;OACF,CAAC,CAAA;MAEF,EAAE,CAAC,YAAY,CAACC,0BAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;EAC5D;;ECZO,MAAM,aAAa,GAAiC,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;MAC3F,IAAI,QAAQ,EAAE;UACZ,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;UAE3D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;cAC/B,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;cAEtB,OAAO,IAAI,CAAA;WACZ;UAED,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;cACvB,EAAE,CAAC,eAAe,EAAE,CAAA;WACrB;UAED,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;UACvC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;OACrD;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EClBM,MAAM,UAAU,GAA8B,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACpF,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;MAE9F,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;MACxC,MAAM,KAAK,GAAGf,0BAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;MAEpE,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;UAC1C,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;OACrD;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECdM,MAAM,UAAU,GAA8B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC5G,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;MAE9F,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAElD,IAAI,CAAC,IAAI,EAAE;UACT,OAAO,KAAK,CAAA;OACb;MAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;MAEpC,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;OAClC;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECnBM,MAAM,UAAU,GAA8B,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE;MAC7E,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;MAE9F,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;OACrB;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECPM,MAAM,YAAY,GAAgC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACjF,OAAOgB,gCAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC9C,CAAC;;;;;;;ECFM,MAAM,WAAW,GAA+B,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC/E,OAAOC,+BAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC7C,CAAC;;;;;;;ECdD,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;EAErF,SAAS,gBAAgB,CAAC,IAAY;MACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;MAClC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;MAEpC,IAAI,MAAM,KAAK,OAAO,EAAE;UACtB,MAAM,GAAG,GAAG,CAAA;OACb;MAED,IAAI,GAAG,CAAA;MACP,IAAI,IAAI,CAAA;MACR,IAAI,KAAK,CAAA;MACT,IAAI,IAAI,CAAA;MAER,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;UAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;UAEpB,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;cAC/B,IAAI,GAAG,IAAI,CAAA;WACZ;eAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;cAChC,GAAG,GAAG,IAAI,CAAA;WACX;eAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;cAC1C,IAAI,GAAG,IAAI,CAAA;WACZ;eAAM,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;cAClC,KAAK,GAAG,IAAI,CAAA;WACb;eAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;cAC7B,IAAI,GAAG,EAAE;kBACP,IAAI,GAAG,IAAI,CAAA;eACZ;mBAAM;kBACL,IAAI,GAAG,IAAI,CAAA;eACZ;WACF;eAAM;cACL,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;WACtD;OACF;MAED,IAAI,GAAG,EAAE;UACP,MAAM,GAAG,OAAO,MAAM,EAAE,CAAA;OACzB;MAED,IAAI,IAAI,EAAE;UACR,MAAM,GAAG,QAAQ,MAAM,EAAE,CAAA;OAC1B;MAED,IAAI,IAAI,EAAE;UACR,MAAM,GAAG,QAAQ,MAAM,EAAE,CAAA;OAC1B;MAED,IAAI,KAAK,EAAE;UACT,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;OAC3B;MAED,OAAO,MAAM,CAAA;EACf,CAAC;EAaM,MAAM,gBAAgB,GAAoC,IAAI,IAAI,CAAC,EACxE,MAAM,EACN,IAAI,EACJ,EAAE,EACF,QAAQ,GACT;MACC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;MACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;MAC/E,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE;UACzC,GAAG,EAAE,GAAG,KAAK,OAAO;gBAChB,GAAG;gBACH,GAAG;UACP,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;UAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;UAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;UAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;UAChC,OAAO,EAAE,IAAI;UACb,UAAU,EAAE,IAAI;OACjB,CAAC,CAAA;MAEF,MAAM,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;UACpD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;OACpD,CAAC,CAAA;MAEF,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,CAAC,OAAO,CAAC,IAAI;UACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;UAEpC,IAAI,OAAO,IAAI,QAAQ,EAAE;cACvB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;WACtB;OACF,CAAC,CAAA;MAEF,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECrFM,MAAM,IAAI,GAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC5F,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;MAEtD,IAAI,CAAC,QAAQ,EAAE;UACb,OAAO,KAAK,CAAA;OACb;MAED,OAAOC,wBAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACtC,CAAC;;;;;;;ECZM,MAAM,cAAc,GAAkC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACrF,OAAOC,kCAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAChD,CAAC;;;;;;;ECAM,MAAM,YAAY,GAAgC,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACzF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAElD,OAAOC,kCAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACpD,CAAC;;;;;;;ECNM,MAAM,aAAa,GAAiC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACnF,OAAOC,iCAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC/C,CAAC;;;;;;;ECFM,MAAM,OAAO,GAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAClG,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;MACpC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;MAE1B,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;EAC7D,CAAC;;;;;;;ECCM,MAAM,YAAY,GAAgC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACvH,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;MAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;MAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;MAE3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;UACpD,OAAO,KAAK,CAAA;OACb;MAED,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;OAClD;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECjCD;;;;;WAKwB,WAAW,CAAC,GAAc,EAAE,WAA8B;MAChF,MAAM,KAAK,GAAG,OAAO,WAAW,KAAK,QAAQ;YACzC,CAAC,WAAW,CAAC;YACb,WAAW,CAAA;MAEf,OAAO,MAAM;WACV,IAAI,CAAC,GAAG,CAAC;WACT,MAAM,CAAC,CAAC,MAAiB,EAAE,IAAI;UAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;cACzB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;WACzB;UAED,OAAO,MAAM,CAAA;OACd,EAAE,EAAE,CAAC,CAAA;EACV;;ECHO,MAAM,eAAe,GAAmC,CAAC,UAAU,EAAE,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACjH,IAAI,QAAQ,GAAoB,IAAI,CAAA;MACpC,IAAI,QAAQ,GAAoB,IAAI,CAAA;MAEpC,MAAM,UAAU,GAAG,uBAAuB,CACxC,OAAO,UAAU,KAAK,QAAQ;YAC1B,UAAU;YACV,UAAU,CAAC,IAAI,EACnB,KAAK,CAAC,MAAM,CACb,CAAA;MAED,IAAI,CAAC,UAAU,EAAE;UACf,OAAO,KAAK,CAAA;OACb;MAED,IAAI,UAAU,KAAK,MAAM,EAAE;UACzB,QAAQ,GAAG,WAAW,CAAC,UAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;OAC7D;MAED,IAAI,UAAU,KAAK,MAAM,EAAE;UACzB,QAAQ,GAAG,WAAW,CAAC,UAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;OAC7D;MAED,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;cAC/B,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG;kBAC/D,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;sBACtC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;mBACtE;kBAED,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;sBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;0BACrB,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;8BAC1B,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;2BAC3F;uBACF,CAAC,CAAA;mBACH;eACF,CAAC,CAAA;WACH,CAAC,CAAA;OACH;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EC5CM,MAAM,mBAAmB,GAAuC,CAAC,UAAU,EAAE,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACzH,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;MAEzG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;MAE5B,MAAM,CAAC,OAAO,CAAC,KAAK;UAClB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG;cAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,EAAE;kBAClC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;eACtE;WACF,CAAC,CAAA;OACH,CAAC,CAAA;MAEF,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECnBM,MAAM,cAAc,GAAkC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE;MAClF,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,cAAc,EAAE,CAAA;OACpB;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECLM,MAAM,SAAS,GAA6B,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC3E,OAAOC,6BAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC3C,CAAC;;;;;;;ECFM,MAAM,kBAAkB,GAAsC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC7F,OAAOC,sCAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACpD,CAAC;;;;;;;ECFM,MAAM,iBAAiB,GAAqC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC3F,OAAOC,qCAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACnD,CAAC;;;;;;;ECFM,MAAM,gBAAgB,GAAoC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACzF,OAAOC,oCAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAClD,CAAC;;;;;;;ECQM,MAAM,UAAU,GAA8B,CAAC,OAAO,EAAE,UAAU,GAAG,KAAK,EAAE,YAAY,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;MAChI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;MAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;MACrE,MAAM,SAAS,GAAGb,8BAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;MAEhE,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;eACvB,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC;eACrC,OAAO,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,CAAA;OACzC;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECpBM,MAAM,OAAO,GAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACtG,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;MACnC,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;MACpD,MAAM,aAAa,GAAG;UACpB,GAAG,aAAa;UAChB,GAAG,UAAU;OACd,CAAA;MAED,IAAI,QAAQ,EAAE;UACZ,IAAI,KAAK,EAAE;cACT,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;WAC7C;eAAM;cACL,MAAM,CAAC,OAAO,CAAC,KAAK;kBAClB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;eACvE,CAAC,CAAA;WACH;OACF;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECrBM,MAAM,OAAO,GAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAClG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAElD,OAAOc,gCAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACxD,CAAC;;;;;;;ECJM,MAAM,YAAY,GAAgC,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACzF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAElD,OAAOC,kCAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EACpD,CAAC;;;;;;;WClBuB,qBAAqB,CAC3C,mBAAyC,EACzC,QAAgB,EAChB,UAAqB;MAErB,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM;WAC7B,OAAO,CAAC,UAAU,CAAC;WACnB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;UACb,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI;cACtD,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAA;WACpD,CAAC,CAAA;UAEF,IAAI,CAAC,kBAAkB,EAAE;cACvB,OAAO,KAAK,CAAA;WACb;UAED,OAAO,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAA;OAChD,CAAC,CAAC,CAAA;EACP;;ECdA,SAAS,cAAc,CAAC,KAAmB;MACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;UAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;UAE9B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;cAChD,OAAO,IAAI,CAAA;WACZ;OACF;MACD,OAAO,IAAI,CAAA;EACb,CAAC;EAED,SAAS,WAAW,CAAC,KAAkB,EAAE,eAA0B;MACjE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW;cACzB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;MAExE,IAAI,KAAK,EAAE;UACT,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;UAErF,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;OACpC;EACH,CAAC;EAaM,MAAM,UAAU,GAA8B,CAAC,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACnF,EAAE,EACF,KAAK,EACL,QAAQ,EACR,MAAM,GACP;MACC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;MAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;MAChC,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAA;MAC9D,MAAM,aAAa,GAAG,qBAAqB,CACzC,mBAAmB,EACnB,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EACtB,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CACnB,CAAA;MAED,IAAI,SAAS,YAAYC,8BAAa,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;UAChE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAACC,6BAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;cACpD,OAAO,KAAK,CAAA;WACb;UAED,IAAI,QAAQ,EAAE;cACZ,IAAI,SAAS,EAAE;kBACb,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;eAC5D;cAED,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAA;WACrC;UAED,OAAO,IAAI,CAAA;OACZ;MAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;UACzB,OAAO,KAAK,CAAA;OACb;MAED,IAAI,QAAQ,EAAE;UACZ,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAA;UAE1D,IAAI,SAAS,YAAYjB,8BAAa,EAAE;cACtC,EAAE,CAAC,eAAe,EAAE,CAAA;WACrB;UAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC;gBAC3B,SAAS;gBACT,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;UAEvE,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK;gBACtB,CAAC;sBACD,IAAI,EAAE,KAAK;sBACX,KAAK,EAAE,aAAa;mBACrB,CAAC;gBACA,SAAS,CAAA;UAEb,IAAI,GAAG,GAAGiB,6BAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;UAE/D,IACE,CAAC,KAAK;iBACH,CAAC,GAAG;iBACJA,6BAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EACxF;cACA,GAAG,GAAG,IAAI,CAAA;cACV,KAAK,GAAG,KAAK;oBACT,CAAC;0BACD,IAAI,EAAE,KAAK;0BACX,KAAK,EAAE,aAAa;uBACrB,CAAC;oBACA,SAAS,CAAA;WACd;UAED,IAAI,GAAG,EAAE;cACP,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;cAE7C,IACE,CAAC,KAAK;qBACH,CAAC,KAAK,CAAC,YAAY;qBACnB,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;qBAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAEC,yBAAQ,CAAC,IAAI,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE,CAAC,CAAC,EACnG;kBACA,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC,CAAA;eACrE;WACF;UAED,IAAI,SAAS,EAAE;cACb,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;WAC5D;UAED,EAAE,CAAC,cAAc,EAAE,CAAA;OACpB;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EC1GM,MAAM,aAAa,GAAiC,UAAU,IAAI,CAAC,EACxE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAC5B;;MACC,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;;;MAItC,MAAM,IAAI,GAAoB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAA;MAElD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;UACvE,OAAO,KAAK,CAAA;OACb;MAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;MAElC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;UAC7B,OAAO,KAAK,CAAA;OACb;MAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAA;MAE9D,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;;;;UAIzF,IACE,KAAK,CAAC,KAAK,KAAK,CAAC;iBACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;iBAC5B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,EACpD;cACA,OAAO,KAAK,CAAA;WACb;UAED,IAAI,QAAQ,EAAE;cACZ,IAAI,IAAI,GAAGA,yBAAQ,CAAC,KAAK,CAAA;cACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;;;cAIpC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;kBAC3E,IAAI,GAAGA,yBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;eAC/C;;cAGD,MAAM,qBAAqB,GAAG,qBAAqB,CACjD,mBAAmB,EACnB,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EACtB,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CACnB,CAAA;cACD,MAAM,QAAQ,GAAG,CAAA,MAAA,IAAI,CAAC,YAAY,CAAC,WAAW,0CAAE,aAAa,CAAC,qBAAqB,CAAC,KAAI,SAAS,CAAA;cACjG,IAAI,GAAG,IAAI,CAAC,MAAM,CAACA,yBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,CAAA;cAElF,EAAE;mBACC,OAAO,CACN,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,EACvC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACf,IAAIC,sBAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACrC;mBACA,YAAY,CAACnB,8BAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;mBAChF,cAAc,EAAE,CAAA;WACpB;UAED,OAAO,IAAI,CAAA;OACZ;MAED,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE;YACpC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW;YACzC,IAAI,CAAA;MAER,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,mBAAmB,EACnB,WAAW,CAAC,IAAI,CAAC,IAAI,EACrB,WAAW,CAAC,KAAK,CAClB,CAAA;MACD,MAAM,qBAAqB,GAAG,qBAAqB,CACjD,mBAAmB,EACnB,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EACtB,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CACnB,CAAA;MAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;MAE7B,MAAM,KAAK,GAAG,QAAQ;YAClB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;YACtF,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA;MAExC,IAAI,CAACiB,6BAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;UACnC,OAAO,KAAK,CAAA;OACb;MAED,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,cAAc,EAAE,CAAA;OAC/C;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;WCpHuB,0BAA0B,CAAC,IAAiB,EAAE,SAAoB;MAMxF,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;UACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;UAEzB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;cACnB,OAAO;kBACL,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;kBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;kBACpB,KAAK,EAAE,CAAC;kBACR,IAAI;eACL,CAAA;WACF;OACF;EACH;;WCjBwB,cAAc,CAAC,SAAoB;MACzD,OAAO,CAAC,SAAoB,KAAK,0BAA0B,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;EACzF;;WCFwB,MAAM,CAAC,IAAY,EAAE,UAAsB;MACjE,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;MACtD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;MAExE,IAAI,CAAC,SAAS,EAAE;UACd,OAAO,KAAK,CAAA;OACb;MAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;MAEnF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;UAC9B,OAAO,KAAK,CAAA;OACb;MAED,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;EAC3C;;ECFO,MAAM,UAAU,GAA8B,CAAC,cAAc,EAAE,cAAc,KAAK,CAAC,EACxF,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAClD;MACC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,CAAA;MACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAC1D,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;MAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;MAChC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;MAEnC,IAAI,CAAC,KAAK,EAAE;UACV,OAAO,KAAK,CAAA;OACb;MAED,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;MAExF,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,UAAU,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,EAAE;;UAEzE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;cACrC,OAAO,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;WACvC;;UAGD,IACE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;iBAC1C,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC9C,QAAQ,EACX;cACA,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;cAE1C,OAAO,IAAI,CAAA;WACZ;OACF;MAED,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;;MAGhD,IAAI,CAAC,aAAa,EAAE;UAClB,OAAO,KAAK,EAAE;eACX,UAAU,EAAE;eACZ,UAAU,CAAC,QAAQ,CAAC;eACpB,GAAG,EAAE,CAAA;OACT;MAED,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;EACtC,CAAC;;;;;;;EC9CM,MAAM,UAAU,GAA8B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACxG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;MAEtD,IAAI,QAAQ,EAAE;UACZ,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;OAChC;MAED,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;EAC3C,CAAC;;;;;;;ECTM,MAAM,UAAU,GAA8B,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAC1H,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,UAAU,GAAG,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;MAEtD,IAAI,QAAQ,EAAE;UACZ,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;OACpC;MAED,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;EAC3C,CAAC;;;;;;;ECTM,MAAM,UAAU,GAA8B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACxG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;MAEtD,IAAI,QAAQ,EAAE;UACZ,OAAOG,wBAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;OAC7B;MAED,OAAOC,0BAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAClD,CAAC;;;;;;;ECZM,MAAM,aAAa,GAAiC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACnF,OAAOC,mCAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC/C,CAAC;;;;;;;ECHM,MAAM,aAAa,GAAiC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACvF,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;MAEnC,IAAI,KAAK,EAAE;UACT,OAAO,IAAI,CAAA;OACZ;MAED,IAAI,QAAQ,EAAE;UACZ,MAAM;eACH,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;eAC3B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;cAChB,MAAM,CAAC,OAAO,CAAC,KAAK;kBAClB,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAW,CAAC,CAAA;eAC3D,CAAC,CAAA;WACH,CAAC,CAAA;OACL;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EChBM,MAAM,SAAS,GAA6B,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACvF,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;MAE1C,IAAI,QAAQ,EAAE;UACZ,IAAI,KAAK,EAAE;cACT,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;cAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;cAEvC,IAAI,KAAK,EAAE;kBACT,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;kBACjB,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;eACd;cAED,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;WAC9B;eAAM;cACL,MAAM,CAAC,OAAO,CAAC,KAAK;kBAClB,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;eACpD,CAAC,CAAA;WACH;UAED,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;OAC1B;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECzBM,MAAM,gBAAgB,GAAoC,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MACxH,IAAI,QAAQ,GAAoB,IAAI,CAAA;MACpC,IAAI,QAAQ,GAAoB,IAAI,CAAA;MAEpC,MAAM,UAAU,GAAG,uBAAuB,CACxC,OAAO,UAAU,KAAK,QAAQ;YAC1B,UAAU;YACV,UAAU,CAAC,IAAI,EACnB,KAAK,CAAC,MAAM,CACb,CAAA;MAED,IAAI,CAAC,UAAU,EAAE;UACf,OAAO,KAAK,CAAA;OACb;MAED,IAAI,UAAU,KAAK,MAAM,EAAE;UACzB,QAAQ,GAAG,WAAW,CAAC,UAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;OAC7D;MAED,IAAI,UAAU,KAAK,MAAM,EAAE;UACzB,QAAQ,GAAG,WAAW,CAAC,UAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;OAC7D;MAED,IAAI,QAAQ,EAAE;UACZ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;cAC/B,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG;kBAC/D,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;sBACtC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;0BAC/B,GAAG,IAAI,CAAC,KAAK;0BACb,GAAG,UAAU;uBACd,CAAC,CAAA;mBACH;kBAED,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;sBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;0BACrB,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;8BAC1B,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;kCACnD,GAAG,IAAI,CAAC,KAAK;kCACb,GAAG,UAAU;+BACd,CAAC,CAAC,CAAA;2BACJ;uBACF,CAAC,CAAA;mBACH;eACF,CAAC,CAAA;WACH,CAAC,CAAA;OACH;MAED,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;EClDM,MAAM,oBAAoB,GAAwC,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;MAChI,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAA;MAE3G,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;MACxB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;MAE5B,MAAM,CAAC,OAAO,CAAC,KAAK;UAClB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG;cAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,EAAE;kBAClC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;sBAC/B,GAAG,IAAI,CAAC,KAAK;sBACb,GAAG,UAAU;mBACd,CAAC,CAAA;eACH;WACF,CAAC,CAAA;OACH,CAAC,CAAA;MAEF,OAAO,IAAI,CAAA;EACb,CAAC;;;;;;;ECjBM,MAAM,MAAM,GAA0B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MAChG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;MAEtD,IAAI,QAAQ,EAAE;UACZ,OAAO,KAAK,CAAA;OACb;MAED,OAAOC,0BAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC1D,CAAC;;;;;;;ECVM,MAAM,UAAU,GAA8B,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;MACxG,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;MAElD,OAAOC,gCAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;EAC9D,CAAC;;;;;;;ECiFM,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;MACvC,IAAI,EAAE,UAAU;MAEhB,WAAW;UACT,OAAO;cACL,GAAGC,MAAI;cACP,GAAGC,cAAY;cACf,GAAGC,YAAU;cACb,GAAGC,SAAO;cACV,GAAGC,qBAAmB;cACtB,GAAGC,aAAW;cACd,GAAGC,iBAAe;cAClB,GAAGC,OAAK;cACR,GAAGC,UAAQ;cACX,GAAGC,iBAAe;cAClB,GAAGC,OAAK;cACR,GAAGC,OAAK;cACR,GAAGC,eAAa;cAChB,GAAGC,YAAU;cACb,GAAGC,YAAU;cACb,GAAGC,YAAU;cACb,GAAGC,cAAY;cACf,GAAGC,aAAW;cACd,GAAGC,kBAAgB;cACnB,GAAGvB,MAAI;cACP,GAAGwB,gBAAc;cACjB,GAAGC,cAAY;cACf,GAAGC,eAAa;cAChB,GAAGC,SAAO;cACV,GAAGC,cAAY;cACf,GAAGC,iBAAe;cAClB,GAAGC,qBAAmB;cACtB,GAAGC,gBAAc;cACjB,GAAGC,WAAS;cACZ,GAAGC,oBAAkB;cACrB,GAAGC,mBAAiB;cACpB,GAAGC,kBAAgB;cACnB,GAAGC,YAAU;cACb,GAAGC,SAAO;cACV,GAAGC,SAAO;cACV,GAAGC,cAAY;cACf,GAAGC,YAAU;cACb,GAAGC,eAAa;cAChB,GAAGC,YAAU;cACb,GAAGC,YAAU;cACb,GAAGC,YAAU;cACb,GAAGC,YAAU;cACb,GAAGC,eAAa;cAChB,GAAGC,eAAa;cAChB,GAAGC,WAAS;cACZ,GAAGC,kBAAgB;cACnB,GAAGC,sBAAoB;cACvB,GAAGjD,QAAM;cACT,GAAGkD,YAAU;WACd,CAAA;OACF;GACF,CAAC;;EC1JK,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;MACvC,IAAI,EAAE,UAAU;MAEhB,qBAAqB;UACnB,OAAO;cACL,IAAI7E,uBAAM,CAAC;kBACT,GAAG,EAAE,IAAIC,0BAAS,CAAC,UAAU,CAAC;kBAC9B,KAAK,EAAE;sBACL,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ;mBAC7C;eACF,CAAC;WACH,CAAA;OACF;GACF,CAAC;;ECbK,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;MAC1C,IAAI,EAAE,aAAa;MAEnB,qBAAqB;UACnB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;UAEvB,OAAO;cACL,IAAID,uBAAM,CAAC;kBACT,GAAG,EAAE,IAAIC,0BAAS,CAAC,aAAa,CAAC;kBACjC,KAAK,EAAE;sBACL,UAAU,EAAE;0BACV,QAAQ,EAAE,GAAG;uBACd;sBACD,eAAe,EAAE;0BACf,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK;8BACjB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;8BAEvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE;mCAChC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;mCAC3B,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;8BAEjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;8BAE1B,OAAO,KAAK,CAAA;2BACb;0BACD,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK;8BAChB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAA;8BAExB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE;mCAChC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;mCAC1B,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;8BAEjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;8BAE1B,OAAO,KAAK,CAAA;2BACb;uBACF;mBACF;eACF,CAAC;WACH,CAAA;OACF;GACF,CAAC;;EC1CK,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;MACrC,IAAI,EAAE,QAAQ;MAEd,oBAAoB;UAClB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK;cACzE,MAAM,QAAQ,CAAC,aAAa,EAAE;cAC9B,MAAM,QAAQ,CAAC,eAAe,EAAE;cAChC,MAAM,QAAQ,CAAC,YAAY,EAAE;cAC7B,MAAM,QAAQ,CAAC,kBAAkB,EAAE;WACpC,CAAC,CAAA;UAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK;cACtE,MAAM,QAAQ,CAAC,eAAe,EAAE;cAChC,MAAM,QAAQ,CAAC,WAAW,EAAE;cAC5B,MAAM,QAAQ,CAAC,iBAAiB,EAAE;WACnC,CAAC,CAAA;UAEF,OAAO;cACL,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK;kBACxD,MAAM,QAAQ,CAAC,aAAa,EAAE;kBAC9B,MAAM,QAAQ,CAAC,mBAAmB,EAAE;kBACpC,MAAM,QAAQ,CAAC,cAAc,EAAE;kBAC/B,MAAM,QAAQ,CAAC,UAAU,EAAE;eAC5B,CAAC;cACF,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;cAClD,SAAS,EAAE,MAAM,eAAe,EAAE;cAClC,eAAe,EAAE,MAAM,eAAe,EAAE;cACxC,MAAM,EAAE,MAAM,YAAY,EAAE;cAC5B,YAAY,EAAE,MAAM,YAAY,EAAE;;;WAGnC,CAAA;OACF;GACF,CAAC;;;;;;;;;;;ECnCF,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2DZ;;QC3BW,MAAO,SAAQ,YAAY;MAqCtC,YAAY,UAAkC,EAAE;UAC9C,KAAK,EAAE,CAAA;UA1BF,cAAS,GAAG,KAAK,CAAA;UAIjB,YAAO,GAAkB;cAC9B,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;cACtC,OAAO,EAAE,EAAE;cACX,SAAS,EAAE,IAAI;cACf,UAAU,EAAE,EAAE;cACd,SAAS,EAAE,KAAK;cAChB,QAAQ,EAAE,IAAI;cACd,WAAW,EAAE,EAAE;cACf,YAAY,EAAE,EAAE;cAChB,gBAAgB,EAAE,IAAI;cACtB,gBAAgB,EAAE,IAAI;cACtB,QAAQ,EAAE,MAAM,IAAI;cACpB,QAAQ,EAAE,MAAM,IAAI;cACpB,iBAAiB,EAAE,MAAM,IAAI;cAC7B,aAAa,EAAE,MAAM,IAAI;cACzB,OAAO,EAAE,MAAM,IAAI;cACnB,MAAM,EAAE,MAAM,IAAI;cAClB,QAAQ,EAAE,MAAM,IAAI;cACpB,SAAS,EAAE,MAAM,IAAI;WACtB,CAAA;UAsMM,2BAAsB,GAAG,KAAK,CAAA;UAE7B,wBAAmB,GAAuB,IAAI,CAAA;UApMpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;UACxB,IAAI,CAAC,sBAAsB,EAAE,CAAA;UAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAA;UAC3B,IAAI,CAAC,YAAY,EAAE,CAAA;UACnB,IAAI,CAAC,UAAU,EAAE,CAAA;UACjB,IAAI,CAAC,SAAS,EAAE,CAAA;UAChB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;UACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;UACxC,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;UAC1D,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;UAClD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;UACtC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;UACpC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;UAE1C,MAAM,CAAC,UAAU,CAAC;cAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;cAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;cAErC,IAAI,MAAM,CAAC,cAAc,EAAE;kBACzB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;sBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;mBACtC,CAAC,CAAA;kBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;eAC3C;WACF,EAAE,CAAC,CAAC,CAAA;OAEN;;;;MAKD,IAAW,QAAQ;UACjB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAA;OAC5C;;;;MAKM,KAAK;UACV,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAA;OACzC;;;;MAKM,GAAG;UACR,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;OACvC;;;;MAKO,SAAS;UACf,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,EAAE;cACtC,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;WACjC;OACF;;;;;;MAOM,UAAU,CAAC,UAAkC,EAAE;UACpD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;OAC/C;;;;MAKM,WAAW,CAAC,QAAiB;UAClC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;UAE7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;cAChD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;WAClC;OACF;;;;MAKD,IAAW,UAAU;UACnB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;OACvC;;;;MAKD,IAAW,KAAK;UACd,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;OACvB;;;;;;;MAQM,cAAc,CAAC,MAAc,EAAE,aAAkE;UACtG,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,UAAU;gBAC/C,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACzC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;UAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;UAEjD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;OAC7B;;;;;;MAOM,gBAAgB,CAAC,eAAmC;UACzD,IAAI,IAAI,CAAC,WAAW,EAAE;cACpB,OAAM;WACP;UAED,MAAM,IAAI,GAAG,OAAO,eAAe,KAAK,QAAQ;gBAC5C,GAAG,eAAe,GAAG;;gBAErB,eAAe,CAAC,GAAG,CAAA;UAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;;cAEnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;WAC3E,CAAC,CAAA;UAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;OAC7B;;;;MAKO,sBAAsB;UAC5B,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;UACnF,MAAM,aAAa,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS;cACpF,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAA;WAC/D,CAAC,CAAA;UAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;OAClE;;;;MAKO,oBAAoB;UAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;OAC/E;;;;MAKO,YAAY;UAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAA;OAC3C;;;;MAKO,UAAU;UAChB,IAAI,CAAC,IAAI,GAAG,IAAI6E,0BAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;cAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;cAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;cACxD,KAAK,EAAEC,4BAAW,CAAC,MAAM,CAAC;kBACxB,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;eAClF,CAAC;WACH,CAAC,CAAA;;;UAIF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;cACtC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;WACvC,CAAC,CAAA;UAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;UAE/B,IAAI,CAAC,eAAe,EAAE,CAAA;;;UAItB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAkB,CAAA;UACxC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;OAClB;;;;MAKM,eAAe;UACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;cACjB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;WAC3C,CAAC,CAAA;OACH;MAMM,kBAAkB,CAAC,EAAY;UACpC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAA;UAClC,EAAE,EAAE,CAAA;UACJ,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAA;UAEnC,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAA;UAEnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;UAE/B,OAAO,EAAE,CAAA;OACV;;;;;;MAOO,mBAAmB,CAAC,WAAwB;UAClD,IAAI,WAAW,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;cAC9C,OAAM;WACP;UAED,IAAI,IAAI,CAAC,sBAAsB,EAAE;cAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;kBAC7B,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAA;kBAEtC,OAAM;eACP;cAED,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,cAAI,OAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC,CAAA;cAEvE,OAAM;WACP;UAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;UAC3C,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;UAErE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;UAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;cACvB,MAAM,EAAE,IAAI;cACZ,WAAW;WACZ,CAAC,CAAA;UAEF,IAAI,mBAAmB,EAAE;cACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;kBAC3B,MAAM,EAAE,IAAI;eACb,CAAC,CAAA;WACH;UAED,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;UAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;UAExC,IAAI,KAAK,EAAE;cACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;kBACjB,MAAM,EAAE,IAAI;kBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;eACnB,CAAC,CAAA;WACH;UAED,IAAI,IAAI,EAAE;cACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;kBAChB,MAAM,EAAE,IAAI;kBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;eAClB,CAAC,CAAA;WACH;UAED,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;cACnE,OAAM;WACP;UAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;cAClB,MAAM,EAAE,IAAI;cACZ,WAAW;WACZ,CAAC,CAAA;OACH;;;;;;MAOM,iBAAiB,CAAC,IAAY;UACnC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;OAC3C;;;;;;MAOM,iBAAiB,CAAC,IAAY;UACnC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;OAC3C;MAUM,QAAQ,CAAC,gBAAwB,EAAE,qBAA0B;UAClE,MAAM,IAAI,GAAG,OAAO,gBAAgB,KAAK,QAAQ;gBAC7C,gBAAgB;gBAChB,IAAI,CAAA;UAER,MAAM,UAAU,GAAG,OAAO,gBAAgB,KAAK,QAAQ;gBACnD,qBAAqB;gBACrB,gBAAgB,CAAA;UAEpB,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;OAC9C;;;;MAKM,OAAO;UACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;OAC/B;;;;MAKM,OAAO;UACZ,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;OACxD;;;;MAKD,IAAW,OAAO;UAChB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;OACnC;;;;MAKM,iBAAiB;UACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAA;OACvC;;;;MAKM,OAAO;;UACZ,MAAA,IAAI,CAAC,cAAc,0CAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;UAE7C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;UAEpB,IAAI,IAAI,CAAC,IAAI,EAAE;cACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;WACpB;UAED,IAAI,CAAC,kBAAkB,EAAE,CAAA;UACzB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;OACxB;;;;MAKD,IAAW,WAAW;;;UAEpB,OAAO,EAAC,MAAA,IAAI,CAAC,IAAI,0CAAE,OAAO,CAAA,CAAA;OAC3B;;;;QChIU,IAAI;MAWf,YAAY,MAA2B;UAVvC,SAAI,GAAG,MAAM,CAAA;UAEb,WAAM,GAAe;cACnB,IAAI,EAAE,MAAM;cACZ,QAAQ,EAAE,GAAG;cACb,cAAc,EAAE,EAAE;WACnB,CAAA;UAuBDhF,uBAAa,CAAC,OAAyB;cACrC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAY,CAAA;cAExE,OAAO,IAAI,CAAA;WACZ,EAAA;UAtBC,IAAI,CAAC,MAAM,GAAG;cACZ,GAAG,IAAI,CAAC,MAAM;cACd,GAAG,MAAM;WACV,CAAA;UAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;OAC1C;MAED,OAAO,MAAM,CAAI,MAAqB;UACpC,OAAO,IAAI,IAAI,CAAI,MAAM,CAAC,CAAA;OAC3B;MAED,SAAS,CAAC,UAA4B,EAAE;;UACtC,OAAO,wBAAA,KAAA,IAAI;eACR,MAAM,CAAU,IAAI,CAAC,MAA6B,CAAC,0BACxC,OAAO,CAAC,CAAA;OACvB;MAQD,MAAM,CAA4B,cAAoD;UACpF,OAAO,IAAI,IAAI,CAAkB;cAC/B,GAAG,IAAI,CAAC,MAAM;cACd,GAAG,cAAc;WACa,CAAC,CAAA;OAClC;GACF;;;;QCpGY,IAAI;MAWf,YAAY,MAA2B;UAVvC,SAAI,GAAG,MAAM,CAAA;UAEb,WAAM,GAAe;cACnB,IAAI,EAAE,MAAM;cACZ,QAAQ,EAAE,GAAG;cACb,cAAc,EAAE,EAAE;WACnB,CAAA;UAuBD,qBAAa,CAAC,OAAyB;cACrC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAY,CAAA;cAExE,OAAO,IAAI,CAAA;WACZ,EAAA;UAtBC,IAAI,CAAC,MAAM,GAAG;cACZ,GAAG,IAAI,CAAC,MAAM;cACd,GAAG,MAAM;WACV,CAAA;UAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;OAC1C;MAED,OAAO,MAAM,CAAI,MAAqB;UACpC,OAAO,IAAI,IAAI,CAAI,MAAM,CAAC,CAAA;OAC3B;MAED,SAAS,CAAC,UAA4B,EAAE;;UACtC,OAAO,wBAAA,KAAA,IAAI;eACR,MAAM,CAAU,IAAI,CAAC,MAA6B,CAAC,wBACxC,OAAO,CAAC,CAAA;OACvB;MAQD,MAAM,CAA4B,cAAoD;UACpF,OAAO,IAAI,IAAI,CAAkB;cAC/B,GAAG,IAAI,CAAC,MAAM;cACd,GAAG,cAAc;WACa,CAAC,CAAA;OAClC;GACF;;;QCrRY,QAAQ;MAqBnB,YAAY,SAAoB,EAAE,KAA4B,EAAE,OAA0C;UAP1G,eAAU,GAAG,KAAK,CAAA;UAElB,YAAO,GAA4B;cACjC,SAAS,EAAE,IAAI;cACf,MAAM,EAAE,IAAI;WACb,CAAA;UAGC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;UAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;UAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAgB,CAAA;UACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;UAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;UACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;UACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;UAC1B,IAAI,CAAC,KAAK,EAAE,CAAA;OACb;MAED,KAAK;;UAEH,OAAM;OACP;MAED,IAAI,GAAG;UACL,OAAO,IAAI,CAAA;OACZ;MAED,IAAI,UAAU;UACZ,OAAO,IAAI,CAAA;OACZ;MAED,WAAW,CAAC,KAAgB;;UAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;cACb,OAAM;WACP;UAED,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;UAC5B,MAAM,MAAM,GAAI,KAAK,CAAC,MAAsB,CAAA;UAE5C,IAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,QAAQ,CAAC,MAAM,CAAC,EAAE;cACrC,OAAM;WACP;;UAGD,MAAA,KAAK,CAAC,YAAY,0CAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;UAEhD,MAAM,SAAS,GAAGuB,8BAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;UACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;UAEzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;OAC3B;MAED,SAAS,CAAC,KAAY;;UACpB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;cACb,OAAO,KAAK,CAAA;WACb;UAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE;cAChD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;WACrC;UAED,MAAM,MAAM,GAAI,KAAK,CAAC,MAAsB,CAAA;UAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAA;;UAGnF,IAAI,CAAC,WAAW,EAAE;cAChB,OAAO,KAAK,CAAA;WACb;UAED,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC7E,MAAM,CAAC,iBAAiB,CAAA;;UAG7B,IAAI,OAAO,EAAE;cACX,OAAO,IAAI,CAAA;WACZ;UAED,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;UAClC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;UAC3B,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;UACnD,MAAM,YAAY,GAAGA,8BAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;UAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAA;UACzC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAA;UAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAA;UACvC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAA;UAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAA;;;;UAK1E,IAAI,CAAC,WAAW,IAAI,YAAY,IAAI,WAAW,EAAE;cAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;WACvB;UAED,IAAI,WAAW,IAAI,WAAW,IAAI,CAAC,UAAU,EAAE;cAC7C,KAAK,CAAC,cAAc,EAAE,CAAA;cACtB,OAAO,KAAK,CAAA;WACb;;UAGD,IAAI,WAAW,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE;cAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;cACvD,MAAM,iBAAiB,GAAG,UAAU;sBAC9B,IAAI,CAAC,GAAG,KAAK,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;cAEjE,IAAI,iBAAiB,EAAE;kBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;kBAEtB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE;sBACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;mBACxB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;kBAElB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE;sBACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;mBACxB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;eACnB;WACF;;UAGD,IACE,UAAU;iBACP,WAAW;iBACX,YAAY;iBACZ,UAAU;kBACT,YAAY,IAAI,YAAY,CAAC,EACjC;cACA,OAAO,KAAK,CAAA;WACb;UAED,OAAO,IAAI,CAAA;OACZ;MAED,cAAc,CAAC,QAAiE;UAC9E,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;cACjC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;kBACpB,OAAO,IAAI,CAAA;eACZ;cAED,OAAO,KAAK,CAAA;WACb;UAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;cACpB,OAAO,IAAI,CAAA;WACZ;UAED,MAAM,oBAAoB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;iBAClE,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAA;UAExC,OAAO,oBAAoB,CAAA;OAC5B;MAED,gBAAgB,CAAC,UAAc;UAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;cAC9B,OAAM;WACP;UAED,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;UAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;UACzB,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;cACzD,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;cAClB,GAAG,UAAU;WACd,CAAC,CAAA;UAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;OACvC;;;0BC3LsB,MAAc,EAAE,IAAc,EAAE,aAAmC;MAC1F,OAAO,IAAI0D,+BAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;UACpD,MAAM,UAAU,GAAG,aAAa,YAAY,QAAQ;gBAChD,aAAa,CAAC,KAAK,CAAC;gBACpB,aAAa,CAAA;UACjB,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;UAEpB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;cACZ,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;WACxD;UAED,OAAO,EAAE,CAAA;OACV,CAAC,CAAA;EACJ;;WCbwB,eAAe,CAAC,IAAY,EAAE,EAAU,EAAE,KAAkB;MAClF,IAAI,KAAK,GAAgB,EAAE,CAAA;MAE3B,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG;UACzC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK;kBAC5C,IAAI,EAAE,GAAG;kBACT,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ;kBACvB,IAAI;eACL,CAAC,CAAC,CAAC,CAAA;OACL,CAAC,CAAA;MAEF,OAAO,KAAK,CAAA;EACd;;0BCXyB,MAAc,EAAE,QAAkB,EAAE,aAAwB;MACnF,OAAO,IAAIA,+BAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;UACpD,MAAM,UAAU,GAAG,aAAa,YAAY,QAAQ;gBAChD,aAAa,CAAC,KAAK,CAAC;gBACpB,aAAa,CAAA;UACjB,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;UACpB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;UAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;UAC1B,IAAI,OAAO,GAAG,GAAG,CAAA;UAEjB,IAAI,YAAY,EAAE;cAChB,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;cAC1C,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;cACzD,MAAM,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,MAAM,CAAA;cAE/C,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;mBACrD,MAAM,CAAC,IAAI;;;kBAGV,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;kBACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;eACtE,CAAC;mBACD,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAA;cAEtC,IAAI,aAAa,CAAC,MAAM,EAAE;kBACxB,OAAO,IAAI,CAAA;eACZ;cAED,IAAI,OAAO,GAAG,GAAG,EAAE;kBACjB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;eACxB;cAED,IAAI,SAAS,GAAG,KAAK,EAAE;kBACrB,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,EAAE,SAAS,CAAC,CAAA;eAC1C;cAED,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC,MAAM,CAAA;cAEnD,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;cAErE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;WAC9B;UAED,OAAO,EAAE,CAAA;OACV,CAAC,CAAA;EACJ;;0BC9CyB,MAAc,EAAE,IAAc,EAAE,QAA8B;MACrF,MAAM,OAAO,GAAG,CAAC,QAAkB,EAAE,MAAY;UAC/C,MAAM,KAAK,GAAU,EAAE,CAAA;UAEvB,QAAQ,CAAC,OAAO,CAAC,KAAK;cACpB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;kBAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;kBACtB,IAAI,GAAG,GAAG,CAAC,CAAA;kBACX,IAAI,KAAK,CAAA;;kBAGT,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;sBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;sBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;sBAEhD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;0BACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;0BACzB,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;0BAC9D,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAA;0BACtD,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;0BAC/E,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAA;0BACpD,MAAM,KAAK,GAAG,QAAQ,YAAY,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;;0BAGvE,IAAI,UAAU,GAAG,CAAC,EAAE;8BAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAA;2BACvC;;0BAGD,KAAK,CAAC,IAAI,CAAC,KAAK;+BACb,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;+BACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;0BAElD,GAAG,GAAG,QAAQ,CAAA;uBACf;mBACF;;kBAGD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;sBACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;mBAC3B;eACF;mBAAM;kBACL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;eACtD;WACF,CAAC,CAAA;UAEF,OAAOxD,yBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;OACjC,CAAA;MAED,OAAO,IAAIxB,uBAAM,CAAC;UAChB,GAAG,EAAE,IAAIC,0BAAS,CAAC,eAAe,CAAC;UACnC,KAAK,EAAE;cACL,eAAe,EAAE,KAAK;kBACpB,OAAO,IAAIwB,sBAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;eACzE;WACF;OACF,CAAC,CAAA;EACJ;;WCvDwB,YAAY,CAAC,GAAW,EAAE,UAAsB;MACtE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;MACpC,MAAM,WAAW,GAAGwD,qBAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;MAE9C,OAAO,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;EACjD;;WCPwB,eAAe,CAAC,KAAc;MACpD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY3D,8BAAa,CAAA;EAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|