@notmrabhi/flowforge 0.1.32 → 0.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +2 -0
  2. package/dist/GatewayBranchEdge-9YF32wwN.js +1 -0
  3. package/dist/GatewayBranchEdge-9YF32wwN.js.map +1 -0
  4. package/dist/GatewayBranchEdge-Dxoy5B1A.js +1 -0
  5. package/dist/GatewayBranchEdge-Dxoy5B1A.js.map +1 -0
  6. package/dist/{SchemaBuilderDrawer-CkUfYbGB.js → SchemaBuilderDrawer-BbkOK4Xc.js} +2 -1
  7. package/dist/SchemaBuilderDrawer-BbkOK4Xc.js.map +1 -0
  8. package/dist/{SchemaBuilderDrawer-B1dLgTM1.js → SchemaBuilderDrawer-BcaULxqB.js} +2 -1
  9. package/dist/SchemaBuilderDrawer-BcaULxqB.js.map +1 -0
  10. package/dist/bpmn-CcuE2X_Q.js +1 -0
  11. package/dist/bpmn-CcuE2X_Q.js.map +1 -0
  12. package/dist/bpmn-CtfWDaOY.js +1 -0
  13. package/dist/bpmn-CtfWDaOY.js.map +1 -0
  14. package/dist/canvas.cjs +2 -1
  15. package/dist/canvas.cjs.map +1 -0
  16. package/dist/canvas.js +2 -1
  17. package/dist/canvas.js.map +1 -0
  18. package/dist/canvasTokens-CAD6G24b.js +1 -0
  19. package/dist/canvasTokens-CAD6G24b.js.map +1 -0
  20. package/dist/canvasTokens-gKNYrPl4.js +1 -0
  21. package/dist/canvasTokens-gKNYrPl4.js.map +1 -0
  22. package/dist/core.cjs +1 -0
  23. package/dist/core.cjs.map +1 -0
  24. package/dist/core.js +1 -0
  25. package/dist/core.js.map +1 -0
  26. package/dist/defaultUi.cjs +1 -0
  27. package/dist/defaultUi.cjs.map +1 -0
  28. package/dist/defaultUi.js +1 -0
  29. package/dist/defaultUi.js.map +1 -0
  30. package/dist/form.cjs +2 -1
  31. package/dist/form.cjs.map +1 -0
  32. package/dist/form.d.ts +3 -0
  33. package/dist/form.js +3 -2
  34. package/dist/form.js.map +1 -0
  35. package/dist/index-B31-Y5uO.js +1 -0
  36. package/dist/index-B31-Y5uO.js.map +1 -0
  37. package/dist/index-B3aHpb84.js +1 -0
  38. package/dist/index-B3aHpb84.js.map +1 -0
  39. package/dist/{index-Dpl-Q8a4.js → index-B9W10Fvn.js} +2 -1
  40. package/dist/index-B9W10Fvn.js.map +1 -0
  41. package/dist/index-BnzttJ4w.js +1 -0
  42. package/dist/index-BnzttJ4w.js.map +1 -0
  43. package/dist/index-BysKSEtZ.js +1 -0
  44. package/dist/index-BysKSEtZ.js.map +1 -0
  45. package/dist/{index-8bqYHvzi.js → index-CEg1wTCw.js} +167 -161
  46. package/dist/index-CEg1wTCw.js.map +1 -0
  47. package/dist/{index-BAiSdZW3.js → index-CYdDPwd2.js} +2 -1
  48. package/dist/index-CYdDPwd2.js.map +1 -0
  49. package/dist/index-CkjEllpd.js +1 -0
  50. package/dist/index-CkjEllpd.js.map +1 -0
  51. package/dist/index-Cw9DC-tf.js +1 -0
  52. package/dist/index-Cw9DC-tf.js.map +1 -0
  53. package/dist/index-CzPi8KQC.js +1 -0
  54. package/dist/index-CzPi8KQC.js.map +1 -0
  55. package/dist/index-D14V8rKX.js +1 -0
  56. package/dist/index-D14V8rKX.js.map +1 -0
  57. package/dist/{index-Dlw7CMau.js → index-dhI8qsmP.js} +2 -1
  58. package/dist/index-dhI8qsmP.js.map +1 -0
  59. package/dist/{index-DNDp8nLT.js → index-fcb3uyVA.js} +2 -1
  60. package/dist/index-fcb3uyVA.js.map +1 -0
  61. package/dist/index-gtgq_241.js +1 -0
  62. package/dist/index-gtgq_241.js.map +1 -0
  63. package/dist/index-l6kvDx-m.js +1 -0
  64. package/dist/index-l6kvDx-m.js.map +1 -0
  65. package/dist/index-lcviy90e.js +1 -0
  66. package/dist/index-lcviy90e.js.map +1 -0
  67. package/dist/index-wOnYb3DO.js +1 -0
  68. package/dist/index-wOnYb3DO.js.map +1 -0
  69. package/dist/{index-BAg_DA8n.js → index-x1DrmceO.js} +5 -4
  70. package/dist/index-x1DrmceO.js.map +1 -0
  71. package/dist/index.cjs +2 -1
  72. package/dist/index.cjs.map +1 -0
  73. package/dist/index.d.ts +3 -0
  74. package/dist/index.js +4 -3
  75. package/dist/index.js.map +1 -0
  76. package/dist/messages-CO299wPN.js +1 -0
  77. package/dist/messages-CO299wPN.js.map +1 -0
  78. package/dist/messages-O9Tw_XXR.js +1 -0
  79. package/dist/messages-O9Tw_XXR.js.map +1 -0
  80. package/dist/nodeRegistry.cjs +1 -0
  81. package/dist/nodeRegistry.cjs.map +1 -0
  82. package/dist/nodeRegistry.js +1 -0
  83. package/dist/nodeRegistry.js.map +1 -0
  84. package/dist/templateRegistry.cjs +1 -0
  85. package/dist/templateRegistry.cjs.map +1 -0
  86. package/dist/templateRegistry.js +1 -0
  87. package/dist/templateRegistry.js.map +1 -0
  88. package/dist/{templateSkeletons-BdFN__gr.js → templateSkeletons-BPIZ_EHv.js} +2 -1
  89. package/dist/templateSkeletons-BPIZ_EHv.js.map +1 -0
  90. package/dist/{templateSkeletons-B5x8nV9i.js → templateSkeletons-CY4tkEp2.js} +2 -1
  91. package/dist/templateSkeletons-CY4tkEp2.js.map +1 -0
  92. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-l6kvDx-m.js","sources":["../node_modules/@codemirror/autocomplete/dist/index.js"],"sourcesContent":["import { Annotation, StateEffect, EditorSelection, codePointAt, codePointSize, fromCodePoint, Facet, combineConfig, StateField, Prec, Text, Transaction, MapMode, RangeValue, RangeSet, CharCategory } from '@codemirror/state';\nimport { Direction, logException, showTooltip, EditorView, ViewPlugin, getTooltip, Decoration, WidgetType, keymap } from '@codemirror/view';\nimport { syntaxTree, indentUnit } from '@codemirror/language';\n\n/**\nAn instance of this is passed to completion source functions.\n*/\nclass CompletionContext {\n /**\n Create a new completion context. (Mostly useful for testing\n completion sources—in the editor, the extension will create\n these for you.)\n */\n constructor(\n /**\n The editor state that the completion happens in.\n */\n state, \n /**\n The position at which the completion is happening.\n */\n pos, \n /**\n Indicates whether completion was activated explicitly, or\n implicitly by typing. The usual way to respond to this is to\n only return completions when either there is part of a\n completable entity before the cursor, or `explicit` is true.\n */\n explicit, \n /**\n The editor view. May be undefined if the context was created\n in a situation where there is no such view available, such as\n in synchronous updates via\n [`CompletionResult.update`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.update)\n or when called by test code.\n */\n view) {\n this.state = state;\n this.pos = pos;\n this.explicit = explicit;\n this.view = view;\n /**\n @internal\n */\n this.abortListeners = [];\n /**\n @internal\n */\n this.abortOnDocChange = false;\n }\n /**\n Get the extent, content, and (if there is a token) type of the\n token before `this.pos`.\n */\n tokenBefore(types) {\n let token = syntaxTree(this.state).resolveInner(this.pos, -1);\n while (token && types.indexOf(token.name) < 0)\n token = token.parent;\n return token ? { from: token.from, to: this.pos,\n text: this.state.sliceDoc(token.from, this.pos),\n type: token.type } : null;\n }\n /**\n Get the match of the given expression directly before the\n cursor.\n */\n matchBefore(expr) {\n let line = this.state.doc.lineAt(this.pos);\n let start = Math.max(line.from, this.pos - 250);\n let str = line.text.slice(start - line.from, this.pos - line.from);\n let found = str.search(ensureAnchor(expr, false));\n return found < 0 ? null : { from: start + found, to: this.pos, text: str.slice(found) };\n }\n /**\n Yields true when the query has been aborted. Can be useful in\n asynchronous queries to avoid doing work that will be ignored.\n */\n get aborted() { return this.abortListeners == null; }\n /**\n Allows you to register abort handlers, which will be called when\n the query is\n [aborted](https://codemirror.net/6/docs/ref/#autocomplete.CompletionContext.aborted).\n \n By default, running queries will not be aborted for regular\n typing or backspacing, on the assumption that they are likely to\n return a result with a\n [`validFor`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.validFor) field that\n allows the result to be used after all. Passing `onDocChange:\n true` will cause this query to be aborted for any document\n change.\n */\n addEventListener(type, listener, options) {\n if (type == \"abort\" && this.abortListeners) {\n this.abortListeners.push(listener);\n if (options && options.onDocChange)\n this.abortOnDocChange = true;\n }\n }\n}\nfunction toSet(chars) {\n let flat = Object.keys(chars).join(\"\");\n let words = /\\w/.test(flat);\n if (words)\n flat = flat.replace(/\\w/g, \"\");\n return `[${words ? \"\\\\w\" : \"\"}${flat.replace(/[^\\w\\s]/g, \"\\\\$&\")}]`;\n}\nfunction prefixMatch(options) {\n let first = Object.create(null), rest = Object.create(null);\n for (let { label } of options) {\n first[label[0]] = true;\n for (let i = 1; i < label.length; i++)\n rest[label[i]] = true;\n }\n let source = toSet(first) + toSet(rest) + \"*$\";\n return [new RegExp(\"^\" + source), new RegExp(source)];\n}\n/**\nGiven a a fixed array of options, return an autocompleter that\ncompletes them.\n*/\nfunction completeFromList(list) {\n let options = list.map(o => typeof o == \"string\" ? { label: o } : o);\n let [validFor, match] = options.every(o => /^\\w+$/.test(o.label)) ? [/\\w*$/, /\\w+$/] : prefixMatch(options);\n return (context) => {\n let token = context.matchBefore(match);\n return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;\n };\n}\n/**\nWrap the given completion source so that it will only fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return source(context);\n if (pos.type.isTop)\n break;\n }\n return null;\n };\n}\n/**\nWrap the given completion source so that it will not fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifNotIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return null;\n if (pos.type.isTop)\n break;\n }\n return source(context);\n };\n}\nclass Option {\n constructor(completion, source, match, score) {\n this.completion = completion;\n this.source = source;\n this.match = match;\n this.score = score;\n }\n}\nfunction cur(state) { return state.selection.main.from; }\n// Make sure the given regexp has a $ at its end and, if `start` is\n// true, a ^ at its start.\nfunction ensureAnchor(expr, start) {\n var _a;\n let { source } = expr;\n let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n if (!addStart && !addEnd)\n return expr;\n return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, (_a = expr.flags) !== null && _a !== void 0 ? _a : (expr.ignoreCase ? \"i\" : \"\"));\n}\n/**\nThis annotation is added to transactions that are produced by\npicking a completion.\n*/\nconst pickedCompletion = /*@__PURE__*/Annotation.define();\n/**\nHelper function that returns a transaction spec which inserts a\ncompletion's text in the main selection range, and any other\nselection range that has the same text in front of it.\n*/\nfunction insertCompletionText(state, text, from, to) {\n let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;\n return {\n ...state.changeByRange(range => {\n if (range != main && from != to &&\n state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))\n return { range };\n let lines = state.toText(text);\n return {\n changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },\n range: EditorSelection.cursor(range.from + fromOff + lines.length)\n };\n }),\n scrollIntoView: true,\n userEvent: \"input.complete\"\n };\n}\nconst SourceCache = /*@__PURE__*/new WeakMap();\nfunction asSource(source) {\n if (!Array.isArray(source))\n return source;\n let known = SourceCache.get(source);\n if (!known)\n SourceCache.set(source, known = completeFromList(source));\n return known;\n}\nconst startCompletionEffect = /*@__PURE__*/StateEffect.define();\nconst closeCompletionEffect = /*@__PURE__*/StateEffect.define();\n\n// A pattern matcher for fuzzy completion matching. Create an instance\n// once for a pattern, and then use that to match any number of\n// completions.\nclass FuzzyMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.chars = [];\n this.folded = [];\n // Buffers reused by calls to `match` to track matched character\n // positions.\n this.any = [];\n this.precise = [];\n this.byWord = [];\n this.score = 0;\n this.matched = [];\n for (let p = 0; p < pattern.length;) {\n let char = codePointAt(pattern, p), size = codePointSize(char);\n this.chars.push(char);\n let part = pattern.slice(p, p + size), upper = part.toUpperCase();\n this.folded.push(codePointAt(upper == part ? part.toLowerCase() : upper, 0));\n p += size;\n }\n this.astral = pattern.length != this.chars.length;\n }\n ret(score, matched) {\n this.score = score;\n this.matched = matched;\n return this;\n }\n // Matches a given word (completion) against the pattern (input).\n // Will return a boolean indicating whether there was a match and,\n // on success, set `this.score` to the score, `this.matched` to an\n // array of `from, to` pairs indicating the matched parts of `word`.\n //\n // The score is a number that is more negative the worse the match\n // is. See `Penalty` above.\n match(word) {\n if (this.pattern.length == 0)\n return this.ret(-100 /* Penalty.NotFull */, []);\n if (word.length < this.pattern.length)\n return null;\n let { chars, folded, any, precise, byWord } = this;\n // For single-character queries, only match when they occur right\n // at the start\n if (chars.length == 1) {\n let first = codePointAt(word, 0), firstSize = codePointSize(first);\n let score = firstSize == word.length ? 0 : -100 /* Penalty.NotFull */;\n if (first == chars[0]) ;\n else if (first == folded[0])\n score += -200 /* Penalty.CaseFold */;\n else\n return null;\n return this.ret(score, [0, firstSize]);\n }\n let direct = word.indexOf(this.pattern);\n if (direct == 0)\n return this.ret(word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */, [0, this.pattern.length]);\n let len = chars.length, anyTo = 0;\n if (direct < 0) {\n for (let i = 0, e = Math.min(word.length, 200); i < e && anyTo < len;) {\n let next = codePointAt(word, i);\n if (next == chars[anyTo] || next == folded[anyTo])\n any[anyTo++] = i;\n i += codePointSize(next);\n }\n // No match, exit immediately\n if (anyTo < len)\n return null;\n }\n // This tracks the extent of the precise (non-folded, not\n // necessarily adjacent) match\n let preciseTo = 0;\n // Tracks whether there is a match that hits only characters that\n // appear to be starting words. `byWordFolded` is set to true when\n // a case folded character is encountered in such a match\n let byWordTo = 0, byWordFolded = false;\n // If we've found a partial adjacent match, these track its state\n let adjacentTo = 0, adjacentStart = -1, adjacentEnd = -1;\n let hasLower = /[a-z]/.test(word), wordAdjacent = true;\n // Go over the option's text, scanning for the various kinds of matches\n for (let i = 0, e = Math.min(word.length, 200), prevType = 0 /* Tp.NonWord */; i < e && byWordTo < len;) {\n let next = codePointAt(word, i);\n if (direct < 0) {\n if (preciseTo < len && next == chars[preciseTo])\n precise[preciseTo++] = i;\n if (adjacentTo < len) {\n if (next == chars[adjacentTo] || next == folded[adjacentTo]) {\n if (adjacentTo == 0)\n adjacentStart = i;\n adjacentEnd = i + 1;\n adjacentTo++;\n }\n else {\n adjacentTo = 0;\n }\n }\n }\n let ch, type = next < 0xff\n ? (next >= 48 && next <= 57 || next >= 97 && next <= 122 ? 2 /* Tp.Lower */ : next >= 65 && next <= 90 ? 1 /* Tp.Upper */ : 0 /* Tp.NonWord */)\n : ((ch = fromCodePoint(next)) != ch.toLowerCase() ? 1 /* Tp.Upper */ : ch != ch.toUpperCase() ? 2 /* Tp.Lower */ : 0 /* Tp.NonWord */);\n if (!i || type == 1 /* Tp.Upper */ && hasLower || prevType == 0 /* Tp.NonWord */ && type != 0 /* Tp.NonWord */) {\n if (chars[byWordTo] == next || (folded[byWordTo] == next && (byWordFolded = true)))\n byWord[byWordTo++] = i;\n else if (byWord.length)\n wordAdjacent = false;\n }\n prevType = type;\n i += codePointSize(next);\n }\n if (byWordTo == len && byWord[0] == 0 && wordAdjacent)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0), byWord, word);\n if (adjacentTo == len && adjacentStart == 0)\n return this.ret(-200 /* Penalty.CaseFold */ - word.length + (adjacentEnd == word.length ? 0 : -100 /* Penalty.NotFull */), [0, adjacentEnd]);\n if (direct > -1)\n return this.ret(-700 /* Penalty.NotStart */ - word.length, [direct, direct + this.pattern.length]);\n if (adjacentTo == len)\n return this.ret(-200 /* Penalty.CaseFold */ + -700 /* Penalty.NotStart */ - word.length, [adjacentStart, adjacentEnd]);\n if (byWordTo == len)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0) + -700 /* Penalty.NotStart */ +\n (wordAdjacent ? 0 : -1100 /* Penalty.Gap */), byWord, word);\n return chars.length == 2 ? null\n : this.result((any[0] ? -700 /* Penalty.NotStart */ : 0) + -200 /* Penalty.CaseFold */ + -1100 /* Penalty.Gap */, any, word);\n }\n result(score, positions, word) {\n let result = [], i = 0;\n for (let pos of positions) {\n let to = pos + (this.astral ? codePointSize(codePointAt(word, pos)) : 1);\n if (i && result[i - 1] == pos)\n result[i - 1] = to;\n else {\n result[i++] = pos;\n result[i++] = to;\n }\n }\n return this.ret(score - word.length, result);\n }\n}\nclass StrictMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.matched = [];\n this.score = 0;\n this.folded = pattern.toLowerCase();\n }\n match(word) {\n if (word.length < this.pattern.length)\n return null;\n let start = word.slice(0, this.pattern.length);\n let match = start == this.pattern ? 0 : start.toLowerCase() == this.folded ? -200 /* Penalty.CaseFold */ : null;\n if (match == null)\n return null;\n this.matched = [0, start.length];\n this.score = match + (word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */);\n return this;\n }\n}\n\nconst completionConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n activateOnTyping: true,\n activateOnCompletion: () => false,\n activateOnTypingDelay: 100,\n selectOnOpen: true,\n override: null,\n closeOnBlur: true,\n maxRenderedOptions: 100,\n defaultKeymap: true,\n tooltipClass: () => \"\",\n optionClass: () => \"\",\n aboveCursor: false,\n icons: true,\n addToOptions: [],\n positionInfo: defaultPositionInfo,\n filterStrict: false,\n compareCompletions: (a, b) => (a.sortText || a.label).localeCompare(b.sortText || b.label),\n interactionDelay: 75,\n updateSyncTime: 100\n }, {\n defaultKeymap: (a, b) => a && b,\n closeOnBlur: (a, b) => a && b,\n icons: (a, b) => a && b,\n tooltipClass: (a, b) => c => joinClass(a(c), b(c)),\n optionClass: (a, b) => c => joinClass(a(c), b(c)),\n addToOptions: (a, b) => a.concat(b),\n filterStrict: (a, b) => a || b,\n });\n }\n});\nfunction joinClass(a, b) {\n return a ? b ? a + \" \" + b : a : b;\n}\nfunction defaultPositionInfo(view, list, option, info, space, tooltip) {\n let rtl = view.textDirection == Direction.RTL, left = rtl, narrow = false;\n let side = \"top\", offset, maxWidth;\n let spaceLeft = list.left - space.left, spaceRight = space.right - list.right;\n let infoWidth = info.right - info.left, infoHeight = info.bottom - info.top;\n if (left && spaceLeft < Math.min(infoWidth, spaceRight))\n left = false;\n else if (!left && spaceRight < Math.min(infoWidth, spaceLeft))\n left = true;\n if (infoWidth <= (left ? spaceLeft : spaceRight)) {\n offset = Math.max(space.top, Math.min(option.top, space.bottom - infoHeight)) - list.top;\n maxWidth = Math.min(400 /* Info.Width */, left ? spaceLeft : spaceRight);\n }\n else {\n narrow = true;\n maxWidth = Math.min(400 /* Info.Width */, (rtl ? list.right : space.right - list.left) - 30 /* Info.Margin */);\n let spaceBelow = space.bottom - list.bottom;\n if (spaceBelow >= infoHeight || spaceBelow > list.top) { // Below the completion\n offset = option.bottom - list.top;\n }\n else { // Above it\n side = \"bottom\";\n offset = list.bottom - option.top;\n }\n }\n let scaleY = (list.bottom - list.top) / tooltip.offsetHeight;\n let scaleX = (list.right - list.left) / tooltip.offsetWidth;\n return {\n style: `${side}: ${offset / scaleY}px; max-width: ${maxWidth / scaleX}px`,\n class: \"cm-completionInfo-\" + (narrow ? (rtl ? \"left-narrow\" : \"right-narrow\") : left ? \"left\" : \"right\")\n };\n}\n\nconst setSelectedEffect = /*@__PURE__*/StateEffect.define();\nfunction optionContent(config) {\n let content = config.addToOptions.slice();\n if (config.icons)\n content.push({\n render(completion) {\n let icon = document.createElement(\"div\");\n icon.classList.add(\"cm-completionIcon\");\n if (completion.type)\n icon.classList.add(...completion.type.split(/\\s+/g).map(cls => \"cm-completionIcon-\" + cls));\n icon.setAttribute(\"aria-hidden\", \"true\");\n return icon;\n },\n position: 20\n });\n content.push({\n render(completion, _s, _v, match) {\n let labelElt = document.createElement(\"span\");\n labelElt.className = \"cm-completionLabel\";\n let label = completion.displayLabel || completion.label, off = 0;\n for (let j = 0; j < match.length;) {\n let from = match[j++], to = match[j++];\n if (from > off)\n labelElt.appendChild(document.createTextNode(label.slice(off, from)));\n let span = labelElt.appendChild(document.createElement(\"span\"));\n span.appendChild(document.createTextNode(label.slice(from, to)));\n span.className = \"cm-completionMatchedText\";\n off = to;\n }\n if (off < label.length)\n labelElt.appendChild(document.createTextNode(label.slice(off)));\n return labelElt;\n },\n position: 50\n }, {\n render(completion) {\n if (!completion.detail)\n return null;\n let detailElt = document.createElement(\"span\");\n detailElt.className = \"cm-completionDetail\";\n detailElt.textContent = completion.detail;\n return detailElt;\n },\n position: 80\n });\n return content.sort((a, b) => a.position - b.position).map(a => a.render);\n}\nfunction rangeAroundSelected(total, selected, max) {\n if (total <= max)\n return { from: 0, to: total };\n if (selected < 0)\n selected = 0;\n if (selected <= (total >> 1)) {\n let off = Math.floor(selected / max);\n return { from: off * max, to: (off + 1) * max };\n }\n let off = Math.floor((total - selected) / max);\n return { from: total - (off + 1) * max, to: total - off * max };\n}\nclass CompletionTooltip {\n constructor(view, stateField, applyCompletion) {\n this.view = view;\n this.stateField = stateField;\n this.applyCompletion = applyCompletion;\n this.info = null;\n this.infoDestroy = null;\n this.placeInfoReq = {\n read: () => this.measureInfo(),\n write: (pos) => this.placeInfo(pos),\n key: this\n };\n this.space = null;\n this.currentClass = \"\";\n let cState = view.state.field(stateField);\n let { options, selected } = cState.open;\n let config = view.state.facet(completionConfig);\n this.optionContent = optionContent(config);\n this.optionClass = config.optionClass;\n this.tooltipClass = config.tooltipClass;\n this.range = rangeAroundSelected(options.length, selected, config.maxRenderedOptions);\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-tooltip-autocomplete\";\n this.updateTooltipClass(view.state);\n this.dom.addEventListener(\"mousedown\", (e) => {\n let { options } = view.state.field(stateField).open;\n for (let dom = e.target, match; dom && dom != this.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"LI\" && (match = /-(\\d+)$/.exec(dom.id)) && +match[1] < options.length) {\n this.applyCompletion(view, options[+match[1]]);\n e.preventDefault();\n return;\n }\n }\n if (e.target == this.list) {\n let move = this.list.classList.contains(\"cm-completionListIncompleteTop\") &&\n e.clientY < this.list.firstChild.getBoundingClientRect().top ? this.range.from - 1 :\n this.list.classList.contains(\"cm-completionListIncompleteBottom\") &&\n e.clientY > this.list.lastChild.getBoundingClientRect().bottom ? this.range.to : null;\n if (move != null) {\n view.dispatch({ effects: setSelectedEffect.of(move) });\n e.preventDefault();\n }\n }\n });\n this.dom.addEventListener(\"focusout\", (e) => {\n let state = view.state.field(this.stateField, false);\n if (state && state.tooltip && view.state.facet(completionConfig).closeOnBlur &&\n e.relatedTarget != view.contentDOM)\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n });\n this.showOptions(options, cState.id);\n }\n mount() { this.updateSel(); }\n showOptions(options, id) {\n if (this.list)\n this.list.remove();\n this.list = this.dom.appendChild(this.createListBox(options, id, this.range));\n this.list.addEventListener(\"scroll\", () => {\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n });\n }\n update(update) {\n var _a;\n let cState = update.state.field(this.stateField);\n let prevState = update.startState.field(this.stateField);\n this.updateTooltipClass(update.state);\n if (cState != prevState) {\n let { options, selected, disabled } = cState.open;\n if (!prevState.open || prevState.open.options != options) {\n this.range = rangeAroundSelected(options.length, selected, update.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(options, cState.id);\n }\n this.updateSel();\n if (disabled != ((_a = prevState.open) === null || _a === void 0 ? void 0 : _a.disabled))\n this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\", !!disabled);\n }\n }\n updateTooltipClass(state) {\n let cls = this.tooltipClass(state);\n if (cls != this.currentClass) {\n for (let c of this.currentClass.split(\" \"))\n if (c)\n this.dom.classList.remove(c);\n for (let c of cls.split(\" \"))\n if (c)\n this.dom.classList.add(c);\n this.currentClass = cls;\n }\n }\n positioned(space) {\n this.space = space;\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSel() {\n let cState = this.view.state.field(this.stateField), open = cState.open;\n if (open.selected > -1 && open.selected < this.range.from || open.selected >= this.range.to) {\n this.range = rangeAroundSelected(open.options.length, open.selected, this.view.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(open.options, cState.id);\n }\n let newSel = this.updateSelectedOption(open.selected);\n if (newSel) {\n this.destroyInfo();\n let { completion } = open.options[open.selected];\n let { info } = completion;\n if (!info)\n return;\n let infoResult = typeof info === \"string\" ? document.createTextNode(info) : info(completion);\n if (!infoResult)\n return;\n if (\"then\" in infoResult) {\n infoResult.then(obj => {\n if (obj && this.view.state.field(this.stateField, false) == cState)\n this.addInfoPane(obj, completion);\n }).catch(e => logException(this.view.state, e, \"completion info\"));\n }\n else {\n this.addInfoPane(infoResult, completion);\n newSel.setAttribute(\"aria-describedby\", this.info.id);\n }\n }\n }\n addInfoPane(content, completion) {\n this.destroyInfo();\n let wrap = this.info = document.createElement(\"div\");\n wrap.className = \"cm-tooltip cm-completionInfo\";\n wrap.id = \"cm-completionInfo-\" + Math.floor(Math.random() * 0xffff).toString(16);\n if (content.nodeType != null) {\n wrap.appendChild(content);\n this.infoDestroy = null;\n }\n else {\n let { dom, destroy } = content;\n wrap.appendChild(dom);\n this.infoDestroy = destroy || null;\n }\n this.dom.appendChild(wrap);\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSelectedOption(selected) {\n let set = null;\n for (let opt = this.list.firstChild, i = this.range.from; opt; opt = opt.nextSibling, i++) {\n if (opt.nodeName != \"LI\" || !opt.id) {\n i--; // A section header\n }\n else if (i == selected) {\n if (!opt.hasAttribute(\"aria-selected\")) {\n opt.setAttribute(\"aria-selected\", \"true\");\n set = opt;\n }\n }\n else {\n if (opt.hasAttribute(\"aria-selected\")) {\n opt.removeAttribute(\"aria-selected\");\n opt.removeAttribute(\"aria-describedby\");\n }\n }\n }\n if (set)\n scrollIntoView(this.list, set);\n return set;\n }\n measureInfo() {\n let sel = this.dom.querySelector(\"[aria-selected]\");\n if (!sel || !this.info)\n return null;\n let listRect = this.dom.getBoundingClientRect();\n let infoRect = this.info.getBoundingClientRect();\n let selRect = sel.getBoundingClientRect();\n let space = this.space;\n if (!space) {\n let docElt = this.dom.ownerDocument.documentElement;\n space = { left: 0, top: 0, right: docElt.clientWidth, bottom: docElt.clientHeight };\n }\n if (selRect.top > Math.min(space.bottom, listRect.bottom) - 10 ||\n selRect.bottom < Math.max(space.top, listRect.top) + 10)\n return null;\n return this.view.state.facet(completionConfig).positionInfo(this.view, listRect, selRect, infoRect, space, this.dom);\n }\n placeInfo(pos) {\n if (this.info) {\n if (pos) {\n if (pos.style)\n this.info.style.cssText = pos.style;\n this.info.className = \"cm-tooltip cm-completionInfo \" + (pos.class || \"\");\n }\n else {\n this.info.style.cssText = \"top: -1e6px\";\n }\n }\n }\n createListBox(options, id, range) {\n const ul = document.createElement(\"ul\");\n ul.id = id;\n ul.setAttribute(\"role\", \"listbox\");\n ul.setAttribute(\"aria-expanded\", \"true\");\n ul.setAttribute(\"aria-label\", this.view.state.phrase(\"Completions\"));\n ul.addEventListener(\"mousedown\", e => {\n // Prevent focus change when clicking the scrollbar\n if (e.target == ul)\n e.preventDefault();\n });\n let curSection = null;\n for (let i = range.from; i < range.to; i++) {\n let { completion, match } = options[i], { section } = completion;\n if (section) {\n let name = typeof section == \"string\" ? section : section.name;\n if (name != curSection && (i > range.from || range.from == 0)) {\n curSection = name;\n if (typeof section != \"string\" && section.header) {\n ul.appendChild(section.header(section));\n }\n else {\n let header = ul.appendChild(document.createElement(\"completion-section\"));\n header.textContent = name;\n }\n }\n }\n const li = ul.appendChild(document.createElement(\"li\"));\n li.id = id + \"-\" + i;\n li.setAttribute(\"role\", \"option\");\n let cls = this.optionClass(completion);\n if (cls)\n li.className = cls;\n for (let source of this.optionContent) {\n let node = source(completion, this.view.state, this.view, match);\n if (node)\n li.appendChild(node);\n }\n }\n if (range.from)\n ul.classList.add(\"cm-completionListIncompleteTop\");\n if (range.to < options.length)\n ul.classList.add(\"cm-completionListIncompleteBottom\");\n return ul;\n }\n destroyInfo() {\n if (this.info) {\n if (this.infoDestroy)\n this.infoDestroy();\n this.info.remove();\n this.info = null;\n }\n }\n destroy() {\n this.destroyInfo();\n }\n}\nfunction completionTooltip(stateField, applyCompletion) {\n return (view) => new CompletionTooltip(view, stateField, applyCompletion);\n}\nfunction scrollIntoView(container, element) {\n let parent = container.getBoundingClientRect();\n let self = element.getBoundingClientRect();\n let scaleY = parent.height / container.offsetHeight;\n if (self.top < parent.top)\n container.scrollTop -= (parent.top - self.top) / scaleY;\n else if (self.bottom > parent.bottom)\n container.scrollTop += (self.bottom - parent.bottom) / scaleY;\n}\n\n// Used to pick a preferred option when two options with the same\n// label occur in the result.\nfunction score(option) {\n return (option.boost || 0) * 100 + (option.apply ? 10 : 0) + (option.info ? 5 : 0) +\n (option.type ? 1 : 0);\n}\nfunction sortOptions(active, state) {\n let options = [];\n let sections = null, dynamicSectionScore = null;\n let addOption = (option) => {\n options.push(option);\n let { section } = option.completion;\n if (section) {\n if (!sections)\n sections = [];\n let name = typeof section == \"string\" ? section : section.name;\n if (!sections.some(s => s.name == name))\n sections.push(typeof section == \"string\" ? { name } : section);\n }\n };\n let conf = state.facet(completionConfig);\n for (let a of active)\n if (a.hasResult()) {\n let getMatch = a.result.getMatch;\n if (a.result.filter === false) {\n for (let option of a.result.options) {\n addOption(new Option(option, a.source, getMatch ? getMatch(option) : [], 1e9 - options.length));\n }\n }\n else {\n let pattern = state.sliceDoc(a.from, a.to), match;\n let matcher = conf.filterStrict ? new StrictMatcher(pattern) : new FuzzyMatcher(pattern);\n for (let option of a.result.options)\n if (match = matcher.match(option.label)) {\n let matched = !option.displayLabel ? match.matched : getMatch ? getMatch(option, match.matched) : [];\n let score = match.score + (option.boost || 0);\n addOption(new Option(option, a.source, matched, score));\n if (typeof option.section == \"object\" && option.section.rank === \"dynamic\") {\n let { name } = option.section;\n if (!dynamicSectionScore)\n dynamicSectionScore = Object.create(null);\n dynamicSectionScore[name] = Math.max(score, dynamicSectionScore[name] || -1e9);\n }\n }\n }\n }\n if (sections) {\n let sectionOrder = Object.create(null), pos = 0;\n let cmp = (a, b) => {\n return (a.rank === \"dynamic\" && b.rank === \"dynamic\" ? dynamicSectionScore[b.name] - dynamicSectionScore[a.name] : 0) ||\n (typeof a.rank == \"number\" ? a.rank : 1e9) - (typeof b.rank == \"number\" ? b.rank : 1e9) ||\n (a.name < b.name ? -1 : 1);\n };\n for (let s of sections.sort(cmp)) {\n pos -= 1e5;\n sectionOrder[s.name] = pos;\n }\n for (let option of options) {\n let { section } = option.completion;\n if (section)\n option.score += sectionOrder[typeof section == \"string\" ? section : section.name];\n }\n }\n let result = [], prev = null;\n let compare = conf.compareCompletions;\n for (let opt of options.sort((a, b) => (b.score - a.score) || compare(a.completion, b.completion))) {\n let cur = opt.completion;\n if (!prev || prev.label != cur.label || prev.detail != cur.detail ||\n (prev.type != null && cur.type != null && prev.type != cur.type) ||\n prev.apply != cur.apply || prev.boost != cur.boost)\n result.push(opt);\n else if (score(opt.completion) > score(prev))\n result[result.length - 1] = opt;\n prev = opt.completion;\n }\n return result;\n}\nclass CompletionDialog {\n constructor(options, attrs, tooltip, timestamp, selected, disabled) {\n this.options = options;\n this.attrs = attrs;\n this.tooltip = tooltip;\n this.timestamp = timestamp;\n this.selected = selected;\n this.disabled = disabled;\n }\n setSelected(selected, id) {\n return selected == this.selected || selected >= this.options.length ? this\n : new CompletionDialog(this.options, makeAttrs(id, selected), this.tooltip, this.timestamp, selected, this.disabled);\n }\n static build(active, state, id, prev, conf, didSetActive) {\n if (prev && !didSetActive && active.some(s => s.isPending))\n return prev.setDisabled();\n let options = sortOptions(active, state);\n if (!options.length)\n return prev && active.some(a => a.isPending) ? prev.setDisabled() : null;\n let selected = state.facet(completionConfig).selectOnOpen ? 0 : -1;\n if (prev && prev.selected != selected && prev.selected != -1) {\n let selectedValue = prev.options[prev.selected].completion;\n for (let i = 0; i < options.length; i++)\n if (options[i].completion == selectedValue) {\n selected = i;\n break;\n }\n }\n return new CompletionDialog(options, makeAttrs(id, selected), {\n pos: active.reduce((a, b) => b.hasResult() ? Math.min(a, b.from) : a, 1e8),\n create: createTooltip,\n above: conf.aboveCursor,\n }, prev ? prev.timestamp : Date.now(), selected, false);\n }\n map(changes) {\n return new CompletionDialog(this.options, this.attrs, { ...this.tooltip, pos: changes.mapPos(this.tooltip.pos) }, this.timestamp, this.selected, this.disabled);\n }\n setDisabled() {\n return new CompletionDialog(this.options, this.attrs, this.tooltip, this.timestamp, this.selected, true);\n }\n}\nclass CompletionState {\n constructor(active, id, open) {\n this.active = active;\n this.id = id;\n this.open = open;\n }\n static start() {\n return new CompletionState(none, \"cm-ac-\" + Math.floor(Math.random() * 2e6).toString(36), null);\n }\n update(tr) {\n let { state } = tr, conf = state.facet(completionConfig);\n let sources = conf.override ||\n state.languageDataAt(\"autocomplete\", cur(state)).map(asSource);\n let active = sources.map(source => {\n let value = this.active.find(s => s.source == source) ||\n new ActiveSource(source, this.active.some(a => a.state != 0 /* State.Inactive */) ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n return value.update(tr, conf);\n });\n if (active.length == this.active.length && active.every((a, i) => a == this.active[i]))\n active = this.active;\n let open = this.open, didSet = tr.effects.some(e => e.is(setActiveEffect));\n if (open && tr.docChanged)\n open = open.map(tr.changes);\n if (tr.selection || active.some(a => a.hasResult() && tr.changes.touchesRange(a.from, a.to)) ||\n !sameResults(active, this.active) || didSet)\n open = CompletionDialog.build(active, state, this.id, open, conf, didSet);\n else if (open && open.disabled && !active.some(a => a.isPending))\n open = null;\n if (!open && active.every(a => !a.isPending) && active.some(a => a.hasResult()))\n active = active.map(a => a.hasResult() ? new ActiveSource(a.source, 0 /* State.Inactive */) : a);\n for (let effect of tr.effects)\n if (effect.is(setSelectedEffect))\n open = open && open.setSelected(effect.value, this.id);\n return active == this.active && open == this.open ? this : new CompletionState(active, this.id, open);\n }\n get tooltip() { return this.open ? this.open.tooltip : null; }\n get attrs() { return this.open ? this.open.attrs : this.active.length ? baseAttrs : noAttrs; }\n}\nfunction sameResults(a, b) {\n if (a == b)\n return true;\n for (let iA = 0, iB = 0;;) {\n while (iA < a.length && !a[iA].hasResult())\n iA++;\n while (iB < b.length && !b[iB].hasResult())\n iB++;\n let endA = iA == a.length, endB = iB == b.length;\n if (endA || endB)\n return endA == endB;\n if (a[iA++].result != b[iB++].result)\n return false;\n }\n}\nconst baseAttrs = {\n \"aria-autocomplete\": \"list\"\n};\nconst noAttrs = {};\nfunction makeAttrs(id, selected) {\n let result = {\n \"aria-autocomplete\": \"list\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": id\n };\n if (selected > -1)\n result[\"aria-activedescendant\"] = id + \"-\" + selected;\n return result;\n}\nconst none = [];\nfunction getUpdateType(tr, conf) {\n if (tr.isUserEvent(\"input.complete\")) {\n let completion = tr.annotation(pickedCompletion);\n if (completion && conf.activateOnCompletion(completion))\n return 4 /* UpdateType.Activate */ | 8 /* UpdateType.Reset */;\n }\n let typing = tr.isUserEvent(\"input.type\");\n return typing && conf.activateOnTyping ? 4 /* UpdateType.Activate */ | 1 /* UpdateType.Typing */\n : typing ? 1 /* UpdateType.Typing */\n : tr.isUserEvent(\"delete.backward\") ? 2 /* UpdateType.Backspacing */\n : tr.selection ? 8 /* UpdateType.Reset */\n : tr.docChanged ? 16 /* UpdateType.ResetIfTouching */ : 0 /* UpdateType.None */;\n}\nclass ActiveSource {\n constructor(source, state, explicit = false) {\n this.source = source;\n this.state = state;\n this.explicit = explicit;\n }\n hasResult() { return false; }\n get isPending() { return this.state == 1 /* State.Pending */; }\n update(tr, conf) {\n let type = getUpdateType(tr, conf), value = this;\n if ((type & 8 /* UpdateType.Reset */) || (type & 16 /* UpdateType.ResetIfTouching */) && this.touches(tr))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n if ((type & 4 /* UpdateType.Activate */) && value.state == 0 /* State.Inactive */)\n value = new ActiveSource(this.source, 1 /* State.Pending */);\n value = value.updateFor(tr, type);\n for (let effect of tr.effects) {\n if (effect.is(startCompletionEffect))\n value = new ActiveSource(value.source, 1 /* State.Pending */, effect.value);\n else if (effect.is(closeCompletionEffect))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n else if (effect.is(setActiveEffect))\n for (let active of effect.value)\n if (active.source == value.source)\n value = active;\n }\n return value;\n }\n updateFor(tr, type) { return this.map(tr.changes); }\n map(changes) { return this; }\n touches(tr) {\n return tr.changes.touchesRange(cur(tr.state));\n }\n}\nclass ActiveResult extends ActiveSource {\n constructor(source, explicit, limit, result, from, to) {\n super(source, 3 /* State.Result */, explicit);\n this.limit = limit;\n this.result = result;\n this.from = from;\n this.to = to;\n }\n hasResult() { return true; }\n updateFor(tr, type) {\n var _a;\n if (!(type & 3 /* UpdateType.SimpleInteraction */))\n return this.map(tr.changes);\n let result = this.result;\n if (result.map && !tr.changes.empty)\n result = result.map(result, tr.changes);\n let from = tr.changes.mapPos(this.from), to = tr.changes.mapPos(this.to, 1);\n let pos = cur(tr.state);\n if (pos > to || !result ||\n (type & 2 /* UpdateType.Backspacing */) && (cur(tr.startState) == this.from || pos < this.limit))\n return new ActiveSource(this.source, type & 4 /* UpdateType.Activate */ ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n let limit = tr.changes.mapPos(this.limit);\n if (checkValid(result.validFor, tr.state, from, to))\n return new ActiveResult(this.source, this.explicit, limit, result, from, to);\n if (result.update &&\n (result = result.update(result, from, to, new CompletionContext(tr.state, pos, false))))\n return new ActiveResult(this.source, this.explicit, limit, result, result.from, (_a = result.to) !== null && _a !== void 0 ? _a : cur(tr.state));\n return new ActiveSource(this.source, 1 /* State.Pending */, this.explicit);\n }\n map(mapping) {\n if (mapping.empty)\n return this;\n let result = this.result.map ? this.result.map(this.result, mapping) : this.result;\n if (!result)\n return new ActiveSource(this.source, 0 /* State.Inactive */);\n return new ActiveResult(this.source, this.explicit, mapping.mapPos(this.limit), this.result, mapping.mapPos(this.from), mapping.mapPos(this.to, 1));\n }\n touches(tr) {\n return tr.changes.touchesRange(this.from, this.to);\n }\n}\nfunction checkValid(validFor, state, from, to) {\n if (!validFor)\n return false;\n let text = state.sliceDoc(from, to);\n return typeof validFor == \"function\" ? validFor(text, from, to, state) : ensureAnchor(validFor, true).test(text);\n}\nconst setActiveEffect = /*@__PURE__*/StateEffect.define({\n map(sources, mapping) { return sources.map(s => s.map(mapping)); }\n});\nconst completionState = /*@__PURE__*/StateField.define({\n create() { return CompletionState.start(); },\n update(value, tr) { return value.update(tr); },\n provide: f => [\n showTooltip.from(f, val => val.tooltip),\n EditorView.contentAttributes.from(f, state => state.attrs)\n ]\n});\nfunction applyCompletion(view, option) {\n const apply = option.completion.apply || option.completion.label;\n let result = view.state.field(completionState).active.find(a => a.source == option.source);\n if (!(result instanceof ActiveResult))\n return false;\n if (typeof apply == \"string\")\n view.dispatch({\n ...insertCompletionText(view.state, apply, result.from, result.to),\n annotations: pickedCompletion.of(option.completion)\n });\n else\n apply(view, option.completion, result.from, result.to);\n return true;\n}\nconst createTooltip = /*@__PURE__*/completionTooltip(completionState, applyCompletion);\n\n/**\nReturns a command that moves the completion selection forward or\nbackward by the given amount.\n*/\nfunction moveCompletionSelection(forward, by = \"option\") {\n return (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.open || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n let step = 1, tooltip;\n if (by == \"page\" && (tooltip = getTooltip(view, cState.open.tooltip)))\n step = Math.max(2, Math.floor(tooltip.dom.offsetHeight /\n tooltip.dom.querySelector(\"li\").offsetHeight) - 1);\n let { length } = cState.open.options;\n let selected = cState.open.selected > -1 ? cState.open.selected + step * (forward ? 1 : -1) : forward ? 0 : length - 1;\n if (selected < 0)\n selected = by == \"page\" ? 0 : length - 1;\n else if (selected >= length)\n selected = by == \"page\" ? length - 1 : 0;\n view.dispatch({ effects: setSelectedEffect.of(selected) });\n return true;\n };\n}\n/**\nAccept the current completion.\n*/\nconst acceptCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (view.state.readOnly || !cState || !cState.open || cState.open.selected < 0 || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n return applyCompletion(view, cState.open.options[cState.open.selected]);\n};\n/**\nExplicitly start autocompletion.\n*/\nconst startCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState)\n return false;\n view.dispatch({ effects: startCompletionEffect.of(true) });\n return true;\n};\n/**\nClose the currently active completion.\n*/\nconst closeCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.active.some(a => a.state != 0 /* State.Inactive */))\n return false;\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n return true;\n};\nclass RunningQuery {\n constructor(active, context) {\n this.active = active;\n this.context = context;\n this.time = Date.now();\n this.updates = [];\n // Note that 'undefined' means 'not done yet', whereas 'null' means\n // 'query returned null'.\n this.done = undefined;\n }\n}\nconst MaxUpdateCount = 50, MinAbortTime = 1000;\nconst completionPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.debounceUpdate = -1;\n this.running = [];\n this.debounceAccept = -1;\n this.pendingStart = false;\n this.composing = 0 /* CompositionState.None */;\n for (let active of view.state.field(completionState).active)\n if (active.isPending)\n this.startQuery(active);\n }\n update(update) {\n let cState = update.state.field(completionState);\n let conf = update.state.facet(completionConfig);\n if (!update.selectionSet && !update.docChanged && update.startState.field(completionState) == cState)\n return;\n let doesReset = update.transactions.some(tr => {\n let type = getUpdateType(tr, conf);\n return (type & 8 /* UpdateType.Reset */) || (tr.selection || tr.docChanged) && !(type & 3 /* UpdateType.SimpleInteraction */);\n });\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (doesReset ||\n query.context.abortOnDocChange && update.docChanged ||\n query.updates.length + update.transactions.length > MaxUpdateCount && Date.now() - query.time > MinAbortTime) {\n for (let handler of query.context.abortListeners) {\n try {\n handler();\n }\n catch (e) {\n logException(this.view.state, e);\n }\n }\n query.context.abortListeners = null;\n this.running.splice(i--, 1);\n }\n else {\n query.updates.push(...update.transactions);\n }\n }\n if (this.debounceUpdate > -1)\n clearTimeout(this.debounceUpdate);\n if (update.transactions.some(tr => tr.effects.some(e => e.is(startCompletionEffect))))\n this.pendingStart = true;\n let delay = this.pendingStart ? 50 : conf.activateOnTypingDelay;\n this.debounceUpdate = cState.active.some(a => a.isPending && !this.running.some(q => q.active.source == a.source))\n ? setTimeout(() => this.startUpdate(), delay) : -1;\n if (this.composing != 0 /* CompositionState.None */)\n for (let tr of update.transactions) {\n if (tr.isUserEvent(\"input.type\"))\n this.composing = 2 /* CompositionState.Changed */;\n else if (this.composing == 2 /* CompositionState.Changed */ && tr.selection)\n this.composing = 3 /* CompositionState.ChangedAndMoved */;\n }\n }\n startUpdate() {\n this.debounceUpdate = -1;\n this.pendingStart = false;\n let { state } = this.view, cState = state.field(completionState);\n for (let active of cState.active) {\n if (active.isPending && !this.running.some(r => r.active.source == active.source))\n this.startQuery(active);\n }\n if (this.running.length && cState.open && cState.open.disabled)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n startQuery(active) {\n let { state } = this.view, pos = cur(state);\n let context = new CompletionContext(state, pos, active.explicit, this.view);\n let pending = new RunningQuery(active, context);\n this.running.push(pending);\n Promise.resolve(active.source(context)).then(result => {\n if (!pending.context.aborted) {\n pending.done = result || null;\n this.scheduleAccept();\n }\n }, err => {\n this.view.dispatch({ effects: closeCompletionEffect.of(null) });\n logException(this.view.state, err);\n });\n }\n scheduleAccept() {\n if (this.running.every(q => q.done !== undefined))\n this.accept();\n else if (this.debounceAccept < 0)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n // For each finished query in this.running, try to create a result\n // or, if appropriate, restart the query.\n accept() {\n var _a;\n if (this.debounceAccept > -1)\n clearTimeout(this.debounceAccept);\n this.debounceAccept = -1;\n let updated = [];\n let conf = this.view.state.facet(completionConfig), cState = this.view.state.field(completionState);\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (query.done === undefined)\n continue;\n this.running.splice(i--, 1);\n if (query.done) {\n let pos = cur(query.updates.length ? query.updates[0].startState : this.view.state);\n let limit = Math.min(pos, query.done.from + (query.active.explicit ? 0 : 1));\n let active = new ActiveResult(query.active.source, query.active.explicit, limit, query.done, query.done.from, (_a = query.done.to) !== null && _a !== void 0 ? _a : pos);\n // Replay the transactions that happened since the start of\n // the request and see if that preserves the result\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (active.hasResult()) {\n updated.push(active);\n continue;\n }\n }\n let current = cState.active.find(a => a.source == query.active.source);\n if (current && current.isPending) {\n if (query.done == null) {\n // Explicitly failed. Should clear the pending status if it\n // hasn't been re-set in the meantime.\n let active = new ActiveSource(query.active.source, 0 /* State.Inactive */);\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (!active.isPending)\n updated.push(active);\n }\n else {\n // Cleared by subsequent transactions. Restart.\n this.startQuery(current);\n }\n }\n }\n if (updated.length || cState.open && cState.open.disabled)\n this.view.dispatch({ effects: setActiveEffect.of(updated) });\n }\n}, {\n eventHandlers: {\n blur(event) {\n let state = this.view.state.field(completionState, false);\n if (state && state.tooltip && this.view.state.facet(completionConfig).closeOnBlur) {\n let dialog = state.open && getTooltip(this.view, state.open.tooltip);\n if (!dialog || !dialog.dom.contains(event.relatedTarget))\n setTimeout(() => this.view.dispatch({ effects: closeCompletionEffect.of(null) }), 10);\n }\n },\n compositionstart() {\n this.composing = 1 /* CompositionState.Started */;\n },\n compositionend() {\n if (this.composing == 3 /* CompositionState.ChangedAndMoved */) {\n // Safari fires compositionend events synchronously, possibly\n // from inside an update, so dispatch asynchronously to avoid reentrancy\n setTimeout(() => this.view.dispatch({ effects: startCompletionEffect.of(false) }), 20);\n }\n this.composing = 0 /* CompositionState.None */;\n }\n }\n});\nconst windows = typeof navigator == \"object\" && /*@__PURE__*//Win/.test(navigator.platform);\nconst commitCharacters = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.domEventHandlers({\n keydown(event, view) {\n let field = view.state.field(completionState, false);\n if (!field || !field.open || field.open.disabled || field.open.selected < 0 ||\n event.key.length > 1 || event.ctrlKey && !(windows && event.altKey) || event.metaKey)\n return false;\n let option = field.open.options[field.open.selected];\n let result = field.active.find(a => a.source == option.source);\n let commitChars = option.completion.commitCharacters || result.result.commitCharacters;\n if (commitChars && commitChars.indexOf(event.key) > -1)\n applyCompletion(view, option);\n return false;\n }\n}));\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-tooltip.cm-tooltip-autocomplete\": {\n \"& > ul\": {\n fontFamily: \"monospace\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden auto\",\n maxWidth_fallback: \"700px\",\n maxWidth: \"min(700px, 95vw)\",\n minWidth: \"250px\",\n maxHeight: \"10em\",\n height: \"100%\",\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n \"& > li, & > completion-section\": {\n padding: \"1px 3px\",\n lineHeight: 1.2\n },\n \"& > li\": {\n overflowX: \"hidden\",\n textOverflow: \"ellipsis\",\n cursor: \"pointer\"\n },\n \"& > completion-section\": {\n display: \"list-item\",\n borderBottom: \"1px solid silver\",\n paddingLeft: \"0.5em\",\n opacity: 0.7\n }\n }\n },\n \"&light .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#17c\",\n color: \"white\",\n },\n \"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#777\",\n },\n \"&dark .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#347\",\n color: \"white\",\n },\n \"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#444\",\n },\n \".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\": {\n content: '\"···\"',\n opacity: 0.5,\n display: \"block\",\n textAlign: \"center\"\n },\n \".cm-tooltip.cm-completionInfo\": {\n position: \"absolute\",\n padding: \"3px 9px\",\n width: \"max-content\",\n maxWidth: `${400 /* Info.Width */}px`,\n boxSizing: \"border-box\",\n whiteSpace: \"pre-line\"\n },\n \".cm-completionInfo.cm-completionInfo-left\": { right: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-right\": { left: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-left-narrow\": { right: `${30 /* Info.Margin */}px` },\n \".cm-completionInfo.cm-completionInfo-right-narrow\": { left: `${30 /* Info.Margin */}px` },\n \"&light .cm-snippetField\": { backgroundColor: \"#00000022\" },\n \"&dark .cm-snippetField\": { backgroundColor: \"#ffffff22\" },\n \".cm-snippetFieldPosition\": {\n verticalAlign: \"text-top\",\n width: 0,\n height: \"1.15em\",\n display: \"inline-block\",\n margin: \"0 -0.7px -.7em\",\n borderLeft: \"1.4px dotted #888\"\n },\n \".cm-completionMatchedText\": {\n textDecoration: \"underline\"\n },\n \".cm-completionDetail\": {\n marginLeft: \"0.5em\",\n fontStyle: \"italic\"\n },\n \".cm-completionIcon\": {\n fontSize: \"90%\",\n width: \".8em\",\n display: \"inline-block\",\n textAlign: \"center\",\n paddingRight: \".6em\",\n opacity: \"0.6\",\n boxSizing: \"content-box\"\n },\n \".cm-completionIcon-function, .cm-completionIcon-method\": {\n \"&:after\": { content: \"'ƒ'\" }\n },\n \".cm-completionIcon-class\": {\n \"&:after\": { content: \"'○'\" }\n },\n \".cm-completionIcon-interface\": {\n \"&:after\": { content: \"'◌'\" }\n },\n \".cm-completionIcon-variable\": {\n \"&:after\": { content: \"'𝑥'\" }\n },\n \".cm-completionIcon-constant\": {\n \"&:after\": { content: \"'𝐶'\" }\n },\n \".cm-completionIcon-type\": {\n \"&:after\": { content: \"'𝑡'\" }\n },\n \".cm-completionIcon-enum\": {\n \"&:after\": { content: \"'∪'\" }\n },\n \".cm-completionIcon-property\": {\n \"&:after\": { content: \"'□'\" }\n },\n \".cm-completionIcon-keyword\": {\n \"&:after\": { content: \"'🔑\\uFE0E'\" } // Disable emoji rendering\n },\n \".cm-completionIcon-namespace\": {\n \"&:after\": { content: \"'▢'\" }\n },\n \".cm-completionIcon-text\": {\n \"&:after\": { content: \"'abc'\", fontSize: \"50%\", verticalAlign: \"middle\" }\n }\n});\n\nclass FieldPos {\n constructor(field, line, from, to) {\n this.field = field;\n this.line = line;\n this.from = from;\n this.to = to;\n }\n}\nclass FieldRange {\n constructor(field, from, to) {\n this.field = field;\n this.from = from;\n this.to = to;\n }\n map(changes) {\n let from = changes.mapPos(this.from, -1, MapMode.TrackDel);\n let to = changes.mapPos(this.to, 1, MapMode.TrackDel);\n return from == null || to == null ? null : new FieldRange(this.field, from, to);\n }\n}\nclass Snippet {\n constructor(lines, fieldPositions) {\n this.lines = lines;\n this.fieldPositions = fieldPositions;\n }\n instantiate(state, pos) {\n let text = [], lineStart = [pos];\n let lineObj = state.doc.lineAt(pos), baseIndent = /^\\s*/.exec(lineObj.text)[0];\n for (let line of this.lines) {\n if (text.length) {\n let indent = baseIndent, tabs = /^\\t*/.exec(line)[0].length;\n for (let i = 0; i < tabs; i++)\n indent += state.facet(indentUnit);\n lineStart.push(pos + indent.length - tabs);\n line = indent + line.slice(tabs);\n }\n text.push(line);\n pos += line.length + 1;\n }\n let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));\n return { text, ranges };\n }\n static parse(template) {\n let fields = [];\n let lines = [], positions = [], m;\n for (let line of template.split(/\\r\\n?|\\n/)) {\n while (m = /[#$]\\{(?:(\\d+)(?::([^{}]*))?|((?:\\\\[{}]|[^{}])*))\\}/.exec(line)) {\n let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || \"\", found = -1;\n let name = rawName.replace(/\\\\[{}]/g, m => m[1]);\n for (let i = 0; i < fields.length; i++) {\n if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)\n found = i;\n }\n if (found < 0) {\n let i = 0;\n while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))\n i++;\n fields.splice(i, 0, { seq, name });\n found = i;\n for (let pos of positions)\n if (pos.field >= found)\n pos.field++;\n }\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > m.index) {\n let snip = m[2] ? 3 + (m[1] || \"\").length : 2;\n pos.from -= snip;\n pos.to -= snip;\n }\n positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));\n line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);\n }\n line = line.replace(/\\\\([{}])/g, (_, brace, index) => {\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > index) {\n pos.from--;\n pos.to--;\n }\n return brace;\n });\n lines.push(line);\n }\n return new Snippet(lines, positions);\n }\n}\nlet fieldMarker = /*@__PURE__*/Decoration.widget({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM() {\n let span = document.createElement(\"span\");\n span.className = \"cm-snippetFieldPosition\";\n return span;\n }\n ignoreEvent() { return false; }\n } });\nlet fieldRange = /*@__PURE__*/Decoration.mark({ class: \"cm-snippetField\" });\nclass ActiveSnippet {\n constructor(ranges, active) {\n this.ranges = ranges;\n this.active = active;\n this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)), true);\n }\n map(changes) {\n let ranges = [];\n for (let r of this.ranges) {\n let mapped = r.map(changes);\n if (!mapped)\n return null;\n ranges.push(mapped);\n }\n return new ActiveSnippet(ranges, this.active);\n }\n selectionInsideField(sel) {\n return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));\n }\n}\nconst setActive = /*@__PURE__*/StateEffect.define({\n map(value, changes) { return value && value.map(changes); }\n});\nconst moveToField = /*@__PURE__*/StateEffect.define();\nconst snippetState = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setActive))\n return effect.value;\n if (effect.is(moveToField) && value)\n return new ActiveSnippet(value.ranges, effect.value);\n }\n if (value && tr.docChanged)\n value = value.map(tr.changes);\n if (value && tr.selection && !value.selectionInsideField(tr.selection))\n value = null;\n return value;\n },\n provide: f => EditorView.decorations.from(f, val => val ? val.deco : Decoration.none)\n});\nfunction fieldSelection(ranges, field) {\n return EditorSelection.create(ranges.filter(r => r.field == field).map(r => EditorSelection.range(r.from, r.to)));\n}\n/**\nConvert a snippet template to a function that can\n[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written\nusing syntax like this:\n\n \"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\\n\\t${}\\n}\"\n\nEach `${}` placeholder (you may also use `#{}`) indicates a field\nthat the user can fill in. Its name, if any, will be the default\ncontent for the field.\n\nWhen the snippet is activated by calling the returned function,\nthe code is inserted at the given position. Newlines in the\ntemplate are indented by the indentation of the start line, plus\none [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after\nthe newline.\n\nOn activation, (all instances of) the first field are selected.\nThe user can move between fields with Tab and Shift-Tab as long as\nthe fields are active. Moving to the last field or moving the\ncursor out of the current field deactivates the fields.\n\nThe order of fields defaults to textual order, but you can add\nnumbers to placeholders (`${1}` or `${1:defaultText}`) to provide\na custom order.\n\nTo include a literal `{` or `}` in your template, put a backslash\nin front of it. This will be removed and the brace will not be\ninterpreted as indicating a placeholder.\n*/\nfunction snippet(template) {\n let snippet = Snippet.parse(template);\n return (editor, completion, from, to) => {\n let { text, ranges } = snippet.instantiate(editor.state, from);\n let { main } = editor.state.selection;\n let spec = {\n changes: { from, to: to == main.from ? main.to : to, insert: Text.of(text) },\n scrollIntoView: true,\n annotations: completion ? [pickedCompletion.of(completion), Transaction.userEvent.of(\"input.complete\")] : undefined\n };\n if (ranges.length)\n spec.selection = fieldSelection(ranges, 0);\n if (ranges.some(r => r.field > 0)) {\n let active = new ActiveSnippet(ranges, 0);\n let effects = spec.effects = [setActive.of(active)];\n if (editor.state.field(snippetState, false) === undefined)\n effects.push(StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));\n }\n editor.dispatch(editor.state.update(spec));\n };\n}\nfunction moveField(dir) {\n return ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active || dir < 0 && active.active == 0)\n return false;\n let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);\n dispatch(state.update({\n selection: fieldSelection(active.ranges, next),\n effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),\n scrollIntoView: true\n }));\n return true;\n };\n}\n/**\nA command that clears the active snippet, if any.\n*/\nconst clearSnippet = ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active)\n return false;\n dispatch(state.update({ effects: setActive.of(null) }));\n return true;\n};\n/**\nMove to the next snippet field, if available.\n*/\nconst nextSnippetField = /*@__PURE__*/moveField(1);\n/**\nMove to the previous snippet field, if available.\n*/\nconst prevSnippetField = /*@__PURE__*/moveField(-1);\n/**\nCheck if there is an active snippet with a next field for\n`nextSnippetField` to move to.\n*/\nfunction hasNextSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.ranges.some(r => r.field == active.active + 1));\n}\n/**\nReturns true if there is an active snippet and a previous field\nfor `prevSnippetField` to move to.\n*/\nfunction hasPrevSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.active > 0);\n}\nconst defaultSnippetKeymap = [\n { key: \"Tab\", run: nextSnippetField, shift: prevSnippetField },\n { key: \"Escape\", run: clearSnippet }\n];\n/**\nA facet that can be used to configure the key bindings used by\nsnippets. The default binds Tab to\n[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to\n[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape\nto [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).\n*/\nconst snippetKeymap = /*@__PURE__*/Facet.define({\n combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }\n});\nconst addSnippetKeymap = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));\n/**\nCreate a completion from a snippet. Returns an object with the\nproperties from `completion`, plus an `apply` function that\napplies the snippet.\n*/\nfunction snippetCompletion(template, completion) {\n return { ...completion, apply: snippet(template) };\n}\nconst snippetPointerHandler = /*@__PURE__*/EditorView.domEventHandlers({\n mousedown(event, view) {\n let active = view.state.field(snippetState, false), pos;\n if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)\n return false;\n let match = active.ranges.find(r => r.from <= pos && r.to >= pos);\n if (!match || match.field == active.active)\n return false;\n view.dispatch({\n selection: fieldSelection(active.ranges, match.field),\n effects: setActive.of(active.ranges.some(r => r.field > match.field)\n ? new ActiveSnippet(active.ranges, match.field) : null),\n scrollIntoView: true\n });\n return true;\n }\n});\n\nfunction wordRE(wordChars) {\n let escaped = wordChars.replace(/[\\]\\-\\\\]/g, \"\\\\$&\");\n try {\n return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${escaped}]+`, \"ug\");\n }\n catch (_a) {\n return new RegExp(`[\\w${escaped}]`, \"g\");\n }\n}\nfunction mapRE(re, f) {\n return new RegExp(f(re.source), re.unicode ? \"u\" : \"\");\n}\nconst wordCaches = /*@__PURE__*/Object.create(null);\nfunction wordCache(wordChars) {\n return wordCaches[wordChars] || (wordCaches[wordChars] = new WeakMap);\n}\nfunction storeWords(doc, wordRE, result, seen, ignoreAt) {\n for (let lines = doc.iterLines(), pos = 0; !lines.next().done;) {\n let { value } = lines, m;\n wordRE.lastIndex = 0;\n while (m = wordRE.exec(value)) {\n if (!seen[m[0]] && pos + m.index != ignoreAt) {\n result.push({ type: \"text\", label: m[0] });\n seen[m[0]] = true;\n if (result.length >= 2000 /* C.MaxList */)\n return;\n }\n }\n pos += value.length + 1;\n }\n}\nfunction collectWords(doc, cache, wordRE, to, ignoreAt) {\n let big = doc.length >= 1000 /* C.MinCacheLen */;\n let cached = big && cache.get(doc);\n if (cached)\n return cached;\n let result = [], seen = Object.create(null);\n if (doc.children) {\n let pos = 0;\n for (let ch of doc.children) {\n if (ch.length >= 1000 /* C.MinCacheLen */) {\n for (let c of collectWords(ch, cache, wordRE, to - pos, ignoreAt - pos)) {\n if (!seen[c.label]) {\n seen[c.label] = true;\n result.push(c);\n }\n }\n }\n else {\n storeWords(ch, wordRE, result, seen, ignoreAt - pos);\n }\n pos += ch.length + 1;\n }\n }\n else {\n storeWords(doc, wordRE, result, seen, ignoreAt);\n }\n if (big && result.length < 2000 /* C.MaxList */)\n cache.set(doc, result);\n return result;\n}\n/**\nA completion source that will scan the document for words (using a\n[character categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer)), and\nreturn those as completions.\n*/\nconst completeAnyWord = context => {\n var _a;\n let wordChars = (_a = context.state.languageDataAt(\"wordChars\", context.pos)[0]) !== null && _a !== void 0 ? _a : \"\";\n let re = wordRE(wordChars);\n let token = context.matchBefore(mapRE(re, s => s + \"$\"));\n if (!token && !context.explicit)\n return null;\n let from = token ? token.from : context.pos;\n let options = collectWords(context.state.doc, wordCache(wordChars), re, 50000 /* C.Range */, from);\n return { from, options, validFor: mapRE(re, s => \"^\" + s) };\n};\n\nconst defaults = {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"'],\n before: \")]}:;>\",\n stringPrefixes: []\n};\nconst closeBracketEffect = /*@__PURE__*/StateEffect.define({\n map(value, mapping) {\n let mapped = mapping.mapPos(value, -1, MapMode.TrackAfter);\n return mapped == null ? undefined : mapped;\n }\n});\nconst closedBracket = /*@__PURE__*/new class extends RangeValue {\n};\nclosedBracket.startSide = 1;\nclosedBracket.endSide = -1;\nconst bracketState = /*@__PURE__*/StateField.define({\n create() { return RangeSet.empty; },\n update(value, tr) {\n value = value.map(tr.changes);\n if (tr.selection) {\n let line = tr.state.doc.lineAt(tr.selection.main.head);\n value = value.update({ filter: from => from >= line.from && from <= line.to });\n }\n for (let effect of tr.effects)\n if (effect.is(closeBracketEffect))\n value = value.update({ add: [closedBracket.range(effect.value, effect.value + 1)] });\n return value;\n }\n});\n/**\nExtension to enable bracket-closing behavior. When a closeable\nbracket is typed, its closing bracket is immediately inserted\nafter the cursor. When closing a bracket directly in front of a\nclosing bracket inserted by the extension, the cursor moves over\nthat bracket.\n*/\nfunction closeBrackets() {\n return [inputHandler, bracketState];\n}\nconst definedClosing = \"()[]{}<>«»»«[]{}\";\nfunction closing(ch) {\n for (let i = 0; i < definedClosing.length; i += 2)\n if (definedClosing.charCodeAt(i) == ch)\n return definedClosing.charAt(i + 1);\n return fromCodePoint(ch < 128 ? ch : ch + 1);\n}\nfunction config(state, pos) {\n return state.languageDataAt(\"closeBrackets\", pos)[0] || defaults;\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\nconst inputHandler = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, insert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly)\n return false;\n let sel = view.state.selection.main;\n if (insert.length > 2 || insert.length == 2 && codePointSize(codePointAt(insert, 0)) == 1 ||\n from != sel.from || to != sel.to)\n return false;\n let tr = insertBracket(view.state, insert);\n if (!tr)\n return false;\n view.dispatch(tr);\n return true;\n});\n/**\nCommand that implements deleting a pair of matching brackets when\nthe cursor is between them.\n*/\nconst deleteBracketPair = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty) {\n let before = prevChar(state.doc, range.head);\n for (let token of tokens) {\n if (token == before && nextChar(state.doc, range.head) == closing(codePointAt(token, 0)))\n return { changes: { from: range.head - token.length, to: range.head + token.length },\n range: EditorSelection.cursor(range.head - token.length) };\n }\n }\n return { range: dont = range };\n });\n if (!dont)\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete.backward\" }));\n return !dont;\n};\n/**\nClose-brackets related key bindings. Binds Backspace to\n[`deleteBracketPair`](https://codemirror.net/6/docs/ref/#autocomplete.deleteBracketPair).\n*/\nconst closeBracketsKeymap = [\n { key: \"Backspace\", run: deleteBracketPair }\n];\n/**\nImplements the extension's behavior on text insertion. If the\ngiven string counts as a bracket in the language around the\nselection, and replacing the selection with it requires custom\nbehavior (inserting a closing version or skipping past a\npreviously-closed bracket), this function returns a transaction\nrepresenting that custom behavior. (You only need this if you want\nto programmatically insert brackets—the\n[`closeBrackets`](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets) extension will\ntake care of running this for user input.)\n*/\nfunction insertBracket(state, bracket) {\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n for (let tok of tokens) {\n let closed = closing(codePointAt(tok, 0));\n if (bracket == tok)\n return closed == tok ? handleSame(state, tok, tokens.indexOf(tok + tok + tok) > -1, conf)\n : handleOpen(state, tok, closed, conf.before || defaults.before);\n if (bracket == closed && closedBracketAt(state, state.selection.main.from))\n return handleClose(state, tok, closed);\n }\n return null;\n}\nfunction closedBracketAt(state, pos) {\n let found = false;\n state.field(bracketState).between(0, state.doc.length, from => {\n if (from == pos)\n found = true;\n });\n return found;\n}\nfunction nextChar(doc, pos) {\n let next = doc.sliceString(pos, pos + 2);\n return next.slice(0, codePointSize(codePointAt(next, 0)));\n}\nfunction prevChar(doc, pos) {\n let prev = doc.sliceString(pos - 2, pos);\n return codePointSize(codePointAt(prev, 0)) == prev.length ? prev : prev.slice(1);\n}\nfunction handleOpen(state, open, close, closeBefore) {\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: open, from: range.from }, { insert: close, from: range.to }],\n effects: closeBracketEffect.of(range.to + open.length),\n range: EditorSelection.range(range.anchor + open.length, range.head + open.length) };\n let next = nextChar(state.doc, range.head);\n if (!next || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n return { changes: { insert: open + close, from: range.head },\n effects: closeBracketEffect.of(range.head + open.length),\n range: EditorSelection.cursor(range.head + open.length) };\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction handleClose(state, _open, close) {\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty && nextChar(state.doc, range.head) == close)\n return { changes: { from: range.head, to: range.head + close.length, insert: close },\n range: EditorSelection.cursor(range.head + close.length) };\n return dont = { range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\n// Handles cases where the open and close token are the same, and\n// possibly triple quotes (as in `\"\"\"abc\"\"\"`-style quoting).\nfunction handleSame(state, token, allowTriple, config) {\n let stringPrefixes = config.stringPrefixes || defaults.stringPrefixes;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: token, from: range.from }, { insert: token, from: range.to }],\n effects: closeBracketEffect.of(range.to + token.length),\n range: EditorSelection.range(range.anchor + token.length, range.head + token.length) };\n let pos = range.head, next = nextChar(state.doc, pos), start;\n if (next == token) {\n if (nodeStart(state, pos)) {\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (closedBracketAt(state, pos)) {\n let isTriple = allowTriple && state.sliceDoc(pos, pos + token.length * 3) == token + token + token;\n let content = isTriple ? token + token + token : token;\n return { changes: { from: pos, to: pos + content.length, insert: content },\n range: EditorSelection.cursor(pos + content.length) };\n }\n }\n else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token &&\n (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 &&\n nodeStart(state, start)) {\n return { changes: { insert: token + token + token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (state.charCategorizer(pos)(next) != CharCategory.Word) {\n if (canStartStringAt(state, pos, stringPrefixes) > -1 && !probablyInString(state, pos, token, stringPrefixes))\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction nodeStart(state, pos) {\n let tree = syntaxTree(state).resolveInner(pos + 1);\n return tree.parent && tree.from == pos;\n}\nfunction probablyInString(state, pos, quoteToken, prefixes) {\n let node = syntaxTree(state).resolveInner(pos, -1);\n let maxPrefix = prefixes.reduce((m, p) => Math.max(m, p.length), 0);\n for (let i = 0; i < 5; i++) {\n let start = state.sliceDoc(node.from, Math.min(node.to, node.from + quoteToken.length + maxPrefix));\n let quotePos = start.indexOf(quoteToken);\n if (!quotePos || quotePos > -1 && prefixes.indexOf(start.slice(0, quotePos)) > -1) {\n let first = node.firstChild;\n while (first && first.from == node.from && first.to - first.from > quoteToken.length + quotePos) {\n if (state.sliceDoc(first.to - quoteToken.length, first.to) == quoteToken)\n return false;\n first = first.firstChild;\n }\n return true;\n }\n let parent = node.to == pos && node.parent;\n if (!parent)\n break;\n node = parent;\n }\n return false;\n}\nfunction canStartStringAt(state, pos, prefixes) {\n let charCat = state.charCategorizer(pos);\n if (charCat(state.sliceDoc(pos - 1, pos)) != CharCategory.Word)\n return pos;\n for (let prefix of prefixes) {\n let start = pos - prefix.length;\n if (state.sliceDoc(start, pos) == prefix && charCat(state.sliceDoc(start - 1, start)) != CharCategory.Word)\n return start;\n }\n return -1;\n}\n\n/**\nReturns an extension that enables autocompletion.\n*/\nfunction autocompletion(config = {}) {\n return [\n commitCharacters,\n completionState,\n completionConfig.of(config),\n completionPlugin,\n completionKeymapExt,\n baseTheme\n ];\n}\n/**\nBasic keybindings for autocompletion.\n\n - Ctrl-Space (and Alt-\\` or Alt-i on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)\n - Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)\n - ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`\n - ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - PageUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false, \"page\")`\n - Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)\n*/\nconst completionKeymap = [\n { key: \"Ctrl-Space\", run: startCompletion },\n { mac: \"Alt-`\", run: startCompletion },\n { mac: \"Alt-i\", run: startCompletion },\n { key: \"Escape\", run: closeCompletion },\n { key: \"ArrowDown\", run: /*@__PURE__*/moveCompletionSelection(true) },\n { key: \"ArrowUp\", run: /*@__PURE__*/moveCompletionSelection(false) },\n { key: \"PageDown\", run: /*@__PURE__*/moveCompletionSelection(true, \"page\") },\n { key: \"PageUp\", run: /*@__PURE__*/moveCompletionSelection(false, \"page\") },\n { key: \"Enter\", run: acceptCompletion }\n];\nconst completionKeymapExt = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.computeN([completionConfig], state => state.facet(completionConfig).defaultKeymap ? [completionKeymap] : []));\n/**\nGet the current completion status. When completions are available,\nthis will return `\"active\"`. When completions are pending (in the\nprocess of being queried), this returns `\"pending\"`. Otherwise, it\nreturns `null`.\n*/\nfunction completionStatus(state) {\n let cState = state.field(completionState, false);\n return cState && cState.active.some(a => a.isPending) ? \"pending\"\n : cState && cState.active.some(a => a.state != 0 /* State.Inactive */) ? \"active\" : null;\n}\nconst completionArrayCache = /*@__PURE__*/new WeakMap;\n/**\nReturns the available completions as an array.\n*/\nfunction currentCompletions(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n if (!open || open.disabled)\n return [];\n let completions = completionArrayCache.get(open.options);\n if (!completions)\n completionArrayCache.set(open.options, completions = open.options.map(o => o.completion));\n return completions;\n}\n/**\nReturn the currently selected completion, if any.\n*/\nfunction selectedCompletion(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.options[open.selected].completion : null;\n}\n/**\nReturns the currently selected position in the active completion\nlist, or null if no completions are active.\n*/\nfunction selectedCompletionIndex(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.selected : null;\n}\n/**\nCreate an effect that can be attached to a transaction to change\nthe currently selected completion.\n*/\nfunction setSelectedCompletion(index) {\n return setSelectedEffect.of(index);\n}\n\nexport { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };\n"],"names":["CompletionContext","state","pos","explicit","view","types","token","syntaxTree","expr","line","start","str","found","ensureAnchor","type","listener","options","toSet","chars","flat","words","prefixMatch","first","rest","label","i","source","completeFromList","list","o","validFor","match","context","ifNotIn","nodes","Option","completion","score","cur","_a","addStart","addEnd","pickedCompletion","Annotation","insertCompletionText","text","from","to","main","fromOff","toOff","range","lines","EditorSelection","SourceCache","asSource","known","startCompletionEffect","StateEffect","closeCompletionEffect","FuzzyMatcher","pattern","p","char","codePointAt","size","codePointSize","part","upper","matched","word","folded","any","precise","byWord","firstSize","direct","len","anyTo","e","next","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","prevType","ch","fromCodePoint","positions","result","StrictMatcher","completionConfig","Facet","configs","combineConfig","defaultPositionInfo","a","b","c","joinClass","option","info","space","tooltip","rtl","Direction","left","narrow","side","offset","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","scaleY","scaleX","setSelectedEffect","optionContent","config","content","icon","cls","_s","_v","labelElt","off","j","span","detailElt","rangeAroundSelected","total","selected","max","CompletionTooltip","stateField","applyCompletion","cState","dom","move","id","update","prevState","disabled","open","newSel","infoResult","obj","logException","wrap","destroy","set","opt","scrollIntoView","sel","listRect","infoRect","selRect","docElt","ul","curSection","section","name","header","li","node","completionTooltip","container","element","parent","self","sortOptions","active","sections","dynamicSectionScore","addOption","s","conf","getMatch","matcher","sectionOrder","cmp","prev","compare","CompletionDialog","attrs","timestamp","makeAttrs","didSetActive","selectedValue","createTooltip","changes","CompletionState","none","tr","ActiveSource","didSet","setActiveEffect","sameResults","effect","baseAttrs","noAttrs","iA","iB","endA","endB","getUpdateType","typing","value","ActiveResult","limit","checkValid","mapping","sources","completionState","StateField","f","showTooltip","val","EditorView","apply","moveCompletionSelection","forward","by","step","getTooltip","length","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","ViewPlugin","doesReset","query","handler","delay","q","r","pending","err","updated","current","event","dialog","windows","commitCharacters","Prec","field","commitChars","baseTheme","FieldPos","FieldRange","MapMode","Snippet","fieldPositions","lineStart","lineObj","baseIndent","indent","tabs","indentUnit","ranges","template","fields","m","seq","rawName","snip","_","brace","index","fieldMarker","Decoration","WidgetType","fieldRange","ActiveSnippet","mapped","setActive","moveToField","snippetState","fieldSelection","snippet","editor","spec","Text","Transaction","effects","addSnippetKeymap","snippetPointerHandler","moveField","dir","dispatch","last","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","snippetKeymap","maps","keymap","snippetCompletion","defaults","closeBracketEffect","closedBracket","RangeValue","bracketState","RangeSet","closeBrackets","inputHandler","definedClosing","closing","android","insert","insertBracket","deleteBracketPair","tokens","dont","before","prevChar","nextChar","closeBracketsKeymap","bracket","tok","closed","handleSame","handleOpen","closedBracketAt","handleClose","doc","close","closeBefore","_open","allowTriple","stringPrefixes","nodeStart","canStartStringAt","CharCategory","probablyInString","tree","quoteToken","prefixes","maxPrefix","quotePos","charCat","prefix","autocompletion","completionKeymapExt","completionKeymap"],"mappings":"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","x_google_ignoreList":[0]}
@@ -611,3 +611,4 @@ export {
611
611
  ze as python,
612
612
  v as pythonLanguage
613
613
  };
614
+ //# sourceMappingURL=index-lcviy90e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-lcviy90e.js","sources":["../node_modules/@lezer/python/dist/index.js","../node_modules/@codemirror/lang-python/dist/index.js"],"sourcesContent":["import { ExternalTokenizer, ContextTracker, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst printKeyword = 1,\n indent = 194,\n dedent = 195,\n newline$1 = 196,\n blankLineStart = 197,\n newlineBracketed = 198,\n eof = 199,\n stringContent = 200,\n Escape = 2,\n replacementStart = 3,\n stringEnd = 201,\n ParenL = 24,\n ParenthesizedExpression = 25,\n TupleExpression = 49,\n ComprehensionExpression = 50,\n BracketL = 55,\n ArrayExpression = 56,\n ArrayComprehensionExpression = 57,\n BraceL = 59,\n DictionaryExpression = 60,\n DictionaryComprehensionExpression = 61,\n SetExpression = 62,\n SetComprehensionExpression = 63,\n ArgList = 65,\n subscript = 238,\n String$1 = 71,\n stringStart = 241,\n stringStartD = 242,\n stringStartL = 243,\n stringStartLD = 244,\n stringStartR = 245,\n stringStartRD = 246,\n stringStartRL = 247,\n stringStartRLD = 248,\n FormatString = 72,\n stringStartF = 249,\n stringStartFD = 250,\n stringStartFL = 251,\n stringStartFLD = 252,\n stringStartFR = 253,\n stringStartFRD = 254,\n stringStartFRL = 255,\n stringStartFRLD = 256,\n FormatReplacement = 73,\n nestedFormatReplacement = 77,\n importList = 263,\n TypeParamList = 112,\n ParamList = 130,\n SequencePattern = 151,\n MappingPattern = 152,\n PatternArgList = 155;\n\nconst newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46,\n braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92,\n letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;\n\nconst bracketed = new Set([\n ParenthesizedExpression, TupleExpression, ComprehensionExpression, importList, ArgList, ParamList,\n ArrayExpression, ArrayComprehensionExpression, subscript,\n SetExpression, SetComprehensionExpression, FormatString, FormatReplacement, nestedFormatReplacement,\n DictionaryExpression, DictionaryComprehensionExpression,\n SequencePattern, MappingPattern, PatternArgList, TypeParamList\n]);\n\nfunction isLineBreak(ch) {\n return ch == newline || ch == carriageReturn\n}\n\nfunction isHex(ch) {\n return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n}\n\nconst newlines = new ExternalTokenizer((input, stack) => {\n let prev;\n if (input.next < 0) {\n input.acceptToken(eof);\n } else if (stack.context.flags & cx_Bracketed) {\n if (isLineBreak(input.next)) input.acceptToken(newlineBracketed, 1);\n } else if (((prev = input.peek(-1)) < 0 || isLineBreak(prev)) &&\n stack.canShift(blankLineStart)) {\n let spaces = 0;\n while (input.next == space || input.next == tab) { input.advance(); spaces++; }\n if (input.next == newline || input.next == carriageReturn || input.next == hash)\n input.acceptToken(blankLineStart, -spaces);\n } else if (isLineBreak(input.next)) {\n input.acceptToken(newline$1, 1);\n }\n}, {contextual: true});\n\nconst indentation = new ExternalTokenizer((input, stack) => {\n let context = stack.context;\n if (context.flags) return\n let prev = input.peek(-1);\n if (prev == newline || prev == carriageReturn) {\n let depth = 0, chars = 0;\n for (;;) {\n if (input.next == space) depth++;\n else if (input.next == tab) depth += 8 - (depth % 8);\n else break\n input.advance();\n chars++;\n }\n if (depth != context.indent &&\n input.next != newline && input.next != carriageReturn && input.next != hash) {\n if (depth < context.indent) input.acceptToken(dedent, -chars);\n else input.acceptToken(indent);\n }\n }\n});\n\n// Flags used in Context objects\nconst cx_Bracketed = 1, cx_String = 2, cx_DoubleQuote = 4, cx_Long = 8, cx_Raw = 16, cx_Format = 32;\n\nfunction Context(parent, indent, flags) {\n this.parent = parent;\n this.indent = indent;\n this.flags = flags;\n this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + indent + (indent << 4) + flags + (flags << 6);\n}\n\nconst topIndent = new Context(null, 0, 0);\n\nfunction countIndent(space) {\n let depth = 0;\n for (let i = 0; i < space.length; i++)\n depth += space.charCodeAt(i) == tab ? 8 - (depth % 8) : 1;\n return depth\n}\n\nconst stringFlags = new Map([\n [stringStart, 0],\n [stringStartD, cx_DoubleQuote],\n [stringStartL, cx_Long],\n [stringStartLD, cx_Long | cx_DoubleQuote],\n [stringStartR, cx_Raw],\n [stringStartRD, cx_Raw | cx_DoubleQuote],\n [stringStartRL, cx_Raw | cx_Long],\n [stringStartRLD, cx_Raw | cx_Long | cx_DoubleQuote],\n [stringStartF, cx_Format],\n [stringStartFD, cx_Format | cx_DoubleQuote],\n [stringStartFL, cx_Format | cx_Long],\n [stringStartFLD, cx_Format | cx_Long | cx_DoubleQuote],\n [stringStartFR, cx_Format | cx_Raw],\n [stringStartFRD, cx_Format | cx_Raw | cx_DoubleQuote],\n [stringStartFRL, cx_Format | cx_Raw | cx_Long],\n [stringStartFRLD, cx_Format | cx_Raw | cx_Long | cx_DoubleQuote]\n].map(([term, flags]) => [term, flags | cx_String]));\n\nconst trackIndent = new ContextTracker({\n start: topIndent,\n reduce(context, term, _, input) {\n if ((context.flags & cx_Bracketed) && bracketed.has(term) ||\n (term == String$1 || term == FormatString) && (context.flags & cx_String))\n return context.parent\n return context\n },\n shift(context, term, stack, input) {\n if (term == indent)\n return new Context(context, countIndent(input.read(input.pos, stack.pos)), 0)\n if (term == dedent)\n return context.parent\n if (term == ParenL || term == BracketL || term == BraceL || term == replacementStart)\n return new Context(context, 0, cx_Bracketed)\n if (stringFlags.has(term))\n return new Context(context, 0, stringFlags.get(term) | (context.flags & cx_Bracketed))\n return context\n },\n hash(context) { return context.hash }\n});\n\nconst legacyPrint = new ExternalTokenizer(input => {\n for (let i = 0; i < 5; i++) {\n if (input.next != \"print\".charCodeAt(i)) return\n input.advance();\n }\n if (/\\w/.test(String.fromCharCode(input.next))) return\n for (let off = 0;; off++) {\n let next = input.peek(off);\n if (next == space || next == tab) continue\n if (next != parenOpen && next != dot && next != newline && next != carriageReturn && next != hash)\n input.acceptToken(printKeyword);\n return\n }\n});\n\nconst strings = new ExternalTokenizer((input, stack) => {\n let {flags} = stack.context;\n let quote = (flags & cx_DoubleQuote) ? doubleQuote : singleQuote;\n let long = (flags & cx_Long) > 0;\n let escapes = !(flags & cx_Raw);\n let format = (flags & cx_Format) > 0;\n\n let start = input.pos;\n for (;;) {\n if (input.next < 0) {\n break\n } else if (format && input.next == braceOpen) {\n if (input.peek(1) == braceOpen) {\n input.advance(2);\n } else {\n if (input.pos == start) {\n input.acceptToken(replacementStart, 1);\n return\n }\n break\n }\n } else if (escapes && input.next == backslash) {\n if (input.pos == start) {\n input.advance();\n let escaped = input.next;\n if (escaped >= 0) {\n input.advance();\n skipEscape(input, escaped);\n }\n input.acceptToken(Escape);\n return\n }\n break\n } else if (input.next == backslash && !escapes && input.peek(1) > -1) {\n // Raw strings still ignore escaped quotes, weirdly.\n input.advance(2);\n } else if (input.next == quote && (!long || input.peek(1) == quote && input.peek(2) == quote)) {\n if (input.pos == start) {\n input.acceptToken(stringEnd, long ? 3 : 1);\n return\n }\n break\n } else if (input.next == newline) {\n if (long) {\n input.advance();\n } else if (input.pos == start) {\n input.acceptToken(stringEnd);\n return\n }\n break\n } else {\n input.advance();\n }\n }\n if (input.pos > start) input.acceptToken(stringContent);\n});\n\nfunction skipEscape(input, ch) {\n if (ch == letter_o) {\n for (let i = 0; i < 2 && input.next >= 48 && input.next <= 55; i++) input.advance();\n } else if (ch == letter_x) {\n for (let i = 0; i < 2 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_u) {\n for (let i = 0; i < 4 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_U) {\n for (let i = 0; i < 8 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_N) {\n if (input.next == braceOpen) {\n input.advance();\n while (input.next >= 0 && input.next != braceClose && input.next != singleQuote &&\n input.next != doubleQuote && input.next != newline) input.advance();\n if (input.next == braceClose) input.advance();\n }\n }\n}\n\nconst pythonHighlighting = styleTags({\n \"async \\\"*\\\" \\\"**\\\" FormatConversion FormatSpec\": tags.modifier,\n \"for while if elif else try except finally return raise break continue with pass assert await yield match case\": tags.controlKeyword,\n \"in not and or is del\": tags.operatorKeyword,\n \"from def class global nonlocal lambda\": tags.definitionKeyword,\n import: tags.moduleKeyword,\n \"with as print\": tags.keyword,\n Boolean: tags.bool,\n None: tags.null,\n VariableName: tags.variableName,\n \"CallExpression/VariableName\": tags.function(tags.variableName),\n \"FunctionDefinition/VariableName\": tags.function(tags.definition(tags.variableName)),\n \"ClassDefinition/VariableName\": tags.definition(tags.className),\n PropertyName: tags.propertyName,\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n Comment: tags.lineComment,\n Number: tags.number,\n String: tags.string,\n FormatString: tags.special(tags.string),\n Escape: tags.escape,\n UpdateOp: tags.updateOperator,\n \"ArithOp!\": tags.arithmeticOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n Ellipsis: tags.punctuation,\n At: tags.meta,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \".\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,await:44, or:54, and:56, in:60, not:62, is:64, if:70, else:72, lambda:76, yield:94, from:96, async:102, for:104, None:162, True:164, False:164, del:178, pass:182, break:186, continue:190, return:194, raise:202, import:206, as:208, global:212, nonlocal:214, assert:218, type:223, elif:236, while:240, try:246, except:248, finally:250, with:254, def:258, class:268, match:279, case:285};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyO<POWO,5:aOOQS,5:a,5:aO<[QdO'#HwOOOW'#Dw'#DwOOOW'#Fz'#FzO<lOWO,5:bOOQS,5:b,5:bOOQS'#F}'#F}O<zQtO,5:iO?lQtO,5=`O@VQ#xO,5=`O@vQtO,5=`OOQS,5:},5:}OA_QeO'#GWOBqQdO,5;^OOQV,5=^,5=^OB|QtO'#IPOCkQdO,5;tOOQS-E:[-E:[OOQV,5;s,5;sO4dQdO'#FQOOQV-E9o-E9oOCsQtO,59]OEzQtO,59iOFeQdO'#HVOFpQdO'#HVO1XQdO'#HVOF{QdO'#DTOGTQdO,59mOGYQdO'#HZO'vQdO'#HZO0rQdO,5=tOOQS,5=t,5=tO0rQdO'#EROOQS'#ES'#ESOGwQdO'#GPOHXQdO,58|OHXQdO,58|O*xQdO,5:oOHgQtO'#H]OOQS,5:r,5:rOOQS,5:z,5:zOHzQdO,5;OOI]QdO'#IOO1XQdO'#H}OOQS,5;Q,5;QOOQS'#GT'#GTOIqQtO,5;QOJPQdO,5;QOJUQdO'#IQOOQS,5;T,5;TOJdQdO'#H|OOQS,5;W,5;WOJuQdO,5;YO4iQdO,5;`O4iQdO,5;cOJ}QtO'#ITO'vQdO'#ITOKXQdO,5;eO4VQdO,5;eO0rQdO,5;jO1XQdO,5;lOK^QeO'#EuOLjQgO,5;fO!!kQdO'#IUO4iQdO,5;jO!!vQdO,5;lO!#OQdO,5;qO!#ZQtO,5;vO'vQdO,5;vPOOO,5=[,5=[P!#bOSO,5=[P!#jOdO,5=[O!&bQtO1G.jO!&iQtO1G.jO!)YQtO1G.jO!)dQtO1G.jO!+}QtO1G.jO!,bQtO1G.jO!,uQdO'#HcO!-TQtO'#GuO0rQdO'#HcO!-_QdO'#HbOOQS,5:Z,5:ZO!-gQdO,5:ZO!-lQdO'#HeO!-wQdO'#HeO!.[QdO,5>OOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5<jOOQS,5<j,5<jOOQS-E9|-E9|OOQS,5<r,5<rOOQS-E:U-E:UOOQV1G0x1G0xO1XQdO'#GRO!7dQtO,5>kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5<k,5<kOOQS-E9}-E9}O!9wQdO1G.hOOQS1G0Z1G0ZO!:VQdO,5=wO!:gQdO,5=wO0rQdO1G0jO0rQdO1G0jO!:xQdO,5>jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!<RQdO,5>lO!<aQdO,5>lO!<oQdO,5>hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5<m,5<mOOQS-E:P-E:POOQS7+&z7+&zOOQS1G3]1G3]OOQS,5<^,5<^OOQS-E9p-E9pOOQS7+$s7+$sO#)bQdO,5=`O#){QdO,5=`O#*^QtO,5<aO#*qQdO1G3cOOQS-E9s-E9sOOQS7+&U7+&UO#+RQdO7+&UO#+aQdO,5<nO#+uQdO1G4UOOQS-E:Q-E:QO#,WQdO1G4UOOQS1G4T1G4TOOQS7+&W7+&WO#,iQdO7+&WOOQS,5<p,5<pO#,tQdO1G4WOOQS-E:S-E:SOOQS,5<l,5<lO#-SQdO1G4SOOQS-E:O-E:OO1XQdO'#EqO#-jQdO'#EqO#-uQdO'#IRO#-}QdO,5;[OOQS7+&`7+&`O0rQdO7+&`O#.SQgO7+&fO!JmQdO'#GXO4iQdO7+&fO4iQdO7+&iO#2QQtO,5<tO'vQdO,5<tO#2[QdO1G4ZOOQS-E:W-E:WO#2fQdO1G4ZO4iQdO7+&kO0rQdO7+&kOOQV7+&p7+&pO!KrQ!fO7+&rO!KzQdO7+&rO`QeO1G0{OOQV-E:X-E:XO4iQdO7+&lO4iQdO7+&lOOQV,5<u,5<uO#2nQdO,5<uO!JmQdO,5<uOOQV7+&l7+&lO#2yQgO7+&lO#6tQdO,5<vO#7PQdO1G4[OOQS-E:Y-E:YO#7^QdO1G4[O#7fQdO'#IWO#7tQdO'#IWO1XQdO'#IWOOQS'#IW'#IWO#8PQdO'#IVOOQS,5;n,5;nO#8XQdO,5;nO0rQdO'#FUOOQV7+&r7+&rO4iQdO7+&rOOQV7+&w7+&wO4iQdO7+&wO#8^QfO,5;xOOQV7+&|7+&|POOO7+(b7+(bO#8cQdO1G3iOOQS,5<c,5<cO#8qQdO1G3hOOQS-E9u-E9uO#9UQdO,5<dO#9aQdO,5<dO#9tQdO1G3kOOQS-E9v-E9vO#:UQdO1G3kO#:^QdO1G3kO#:nQdO1G3kO#:UQdO1G3kOOQS<<H[<<H[O#:yQtO1G1zOOQS<<Hk<<HkP#;WQdO'#FtO8vQdO1G3bO#;eQdO1G3bO#;jQdO<<HkOOQS<<Hl<<HlO#;zQdO7+)QOOQS<<Hs<<HsO#<[QtO1G1yP#<{QdO'#FsO#=YQdO7+)RO#=jQdO7+)RO#=rQdO<<HwO#=wQdO7+({OOQS<<Hy<<HyO#>nQdO,5<bO'vQdO,5<bOOQS-E9t-E9tOOQS<<Hw<<HwOOQS,5<g,5<gO0rQdO,5<gO#>sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<<IpO1XQdO1G2YP1XQdO'#GSO#AOQdO7+)pO#AaQdO7+)pOOQS<<Ir<<IrP1XQdO'#GUP0rQdO'#GQOOQS,5;],5;]O#ArQdO,5>mO#BQQdO,5>mOOQS1G0v1G0vOOQS<<Iz<<IzOOQV-E:V-E:VO4iQdO<<JQOOQV,5<s,5<sO4iQdO,5<sOOQV<<JQ<<JQOOQV<<JT<<JTO#BYQtO1G2`P#BdQdO'#GYO#BkQdO7+)uO#BuQgO<<JVO4iQdO<<JVOOQV<<J^<<J^O4iQdO<<J^O!KrQ!fO<<J^O#FpQgO7+&gOOQV<<JW<<JWO#FzQgO<<JWOOQV1G2a1G2aO1XQdO1G2aO#JuQdO1G2aO4iQdO<<JWO1XQdO1G2bP0rQdO'#G[O#KQQdO7+)vO#K_QdO7+)vOOQS'#FT'#FTO0rQdO,5>rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<<Jc<<JcO#LhQdO1G1dOOQS7+)T7+)TP#LmQdO'#FwO#L}QdO1G2OO#MbQdO1G2OO#MrQdO1G2OP#M}QdO'#FxO#N[QdO7+)VO#NlQdO7+)VO#NlQdO7+)VO#NtQdO7+)VO$ UQdO7+(|O8vQdO7+(|OOQSAN>VAN>VO$ oQdO<<LmOOQSAN>cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<<MT<<MTO$#nQdO7+(fOOQSAN?[AN?[OOQS7+'t7+'tO$$XQdO<<M[OOQS,5<q,5<qO$$jQdO1G4XOOQS-E:T-E:TOOQVAN?lAN?lOOQV1G2_1G2_O4iQdOAN?qO$$xQgOAN?qOOQVAN?xAN?xO4iQdOAN?xOOQV<<JR<<JRO4iQdOAN?rO4iQdO7+'{OOQV7+'{7+'{O1XQdO7+'{OOQVAN?rAN?rOOQS7+'|7+'|O$(sQdO<<MbOOQS1G4^1G4^O0rQdO1G4^OOQS,5<w,5<wO$)QQdO1G4]OOQS-E:Z-E:ZOOQU'#G_'#G_O$)cQfO7+'OO$)nQdO'#F_O$*uQdO7+'jO$+VQdO7+'jOOQS7+'j7+'jO$+bQdO<<LqO$+rQdO<<LqO$+rQdO<<LqO$+zQdO'#H^OOQS<<Lh<<LhO$,UQdO<<LhOOQS7+'h7+'hOOQS'#D|'#D|OOOO1G4R1G4RO$,oQdO1G4RO$,wQdO1G4RP!=hQdO'#GVOOQVG25]G25]O4iQdOG25]OOQVG25dG25dOOQVG25^G25^OOQV<<Kg<<KgO4iQdO<<KgOOQS7+)x7+)xP$-SQdO'#G]OOQU-E:]-E:]OOQV<<Jj<<JjO$-vQtO'#FaOOQS'#Fc'#FcO$.WQdO'#FbO$.xQdO'#FbOOQS'#Fb'#FbO$.}QdO'#IYO$)nQdO'#FiO$)nQdO'#FiO$/fQdO'#FjO$)nQdO'#FkO$/mQdO'#IZOOQS'#IZ'#IZO$0[QdO,5;yOOQS<<KU<<KUO$0dQdO<<KUO$0tQdOANB]O$1UQdOANB]O$1^QdO'#H_OOQS'#H_'#H_O1sQdO'#DcO$1wQdO,5=xOOQSANBSANBSOOOO7+)m7+)mO$2`QdO7+)mOOQVLD*wLD*wOOQVANARANARO5uQ!fO'#GaO$2hQtO,5<SO$)nQdO'#FmOOQS,5<W,5<WOOQS'#Fd'#FdO$3YQdO,5;|O$3_QdO,5;|OOQS'#Fg'#FgO$)nQdO'#G`O$4PQdO,5<QO$4kQdO,5>tO$4{QdO,5>tO1XQdO,5<PO$5^QdO,5<TO$5cQdO,5<TO$)nQdO'#I[O$5hQdO'#I[O$5mQdO,5<UOOQS,5<V,5<VO0rQdO'#FpOOQU1G1e1G1eO4iQdO1G1eOOQSAN@pAN@pO$5rQdOG27wO$6SQdO,59}OOQS1G3d1G3dOOOO<<MX<<MXOOQS,5<{,5<{OOQS-E:_-E:_O$6XQtO'#FaO$6`QdO'#I]O$6nQdO'#I]O$6vQdO,5<XOOQS1G1h1G1hO$6{QdO1G1hO$7QQdO,5<zOOQS-E:^-E:^O$7lQdO,5=OO$8TQdO1G4`OOQS-E:b-E:bOOQS1G1k1G1kOOQS1G1o1G1oO$8eQdO,5>vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5<YO$8sQdO,5>wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5<ZP$)nQdO'#GcO$;XQdO1G2hO$)nQdO1G2hP$;gQdO'#GbO$;nQdO<<MhO$;xQdO1G1uO$<WQdO7+(SO8vQdO'#C}O8vQdO,59bO8vQdO,59bO8vQdO,59bO$<fQtO,5=`O8vQdO1G.|O0rQdO1G/XO0rQdO7+$pP$<yQdO'#GOO'vQdO'#GtO$=WQdO,59bO$=]QdO,59bO$=dQdO,59mO$=iQdO1G/UO1sQdO'#DRO8vQdO,59j\",\n stateData: \"$>S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~\",\n goto: \"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!<S!<VP!<_!<h!=d!=g]eOn#g$j)t,P'}`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r{!cQ#c#p$R$d$p%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g}!dQ#c#p$R$d$p$u%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!P!eQ#c#p$R$d$p$u$v%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!R!fQ#c#p$R$d$p$u$v$w%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!T!gQ#c#p$R$d$p$u$v$w$x%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!V!hQ#c#p$R$d$p$u$v$w$x$y%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!Z!hQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g'}TOTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r&eVOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0n0r%oXOYZ[dnrxy}!P!Q!U!i!k#[#d#g#y#{#}$Q$h$j$}%S%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/V/Z0i0j0kQ#vqQ/[.kR0o0q't`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rh#jhz{$W$Z&l&q)S)X+f+g-RW#rq&].k0qQ$]|Q$a!OQ$n!VQ$o!WW$|!i'm*d,gS&[#s#tQ'S$iQ(s&UQ)U&nU)Y&s)Z+jW)a&w+m-T-{Q*Q']W*R'_,`-h.TQ+l)`S,_*S*TQ-Q+eQ-_,TQ-c,WQ.R-al.W-l.^._.a.z.|/R/j/o/t/y0U0Z0^Q/S.`Q/a.tQ/l/OU0P/u0S0[X0V/z0W0_0`R&Z#r!_!wYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZR%^!vQ!{YQ%x#[Q&d#}Q&g$QR,{+YT.j-s/s!Y!jQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0gQ&X#kQ'c$oR*^'dR'l$|Q%V!mR/_.r'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rS#a_#b!P.[-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rT#a_#bT#^^#_R(o%xa(l%x(n(o+`,{-y-z.oT+[(k+]R-z,{Q$PsQ+l)aQ,^*RR-e,_X#}s$O$P&fQ&y$aQ'a$nQ'd$oR)s'SQ)b&wV-S+m-T-{ZgOn$j)t,PXkOn)t,PQ$k!TQ&z$bQ&{$cQ'^$mQ'b$oQ)q'RQ)x'WQ){'XQ)|'YQ*Z'`S*]'c'dQ+s)gQ+u)hQ+v)iQ+z)oS+|)r*[Q,Q)vQ,R)wS,S)y)zQ,d*^Q-V+rQ-W+tQ-Y+{S-Z+},OQ-`,UQ-b,VQ-|-XQ.O-[Q.P-^Q.Q-_Q.p-}Q.q.RQ/W.dR/r/XWkOn)t,PR#mjQ'`$nS)r'S'aR,O)sQ,]*RR-f,^Q*['`Q+})rR-[,OZiOjn)t,PQ'f$pR*`'gT-j,e-ku.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^t.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^Q/S.`X0V/z0W0_0`!P.Z-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`Q.w.YR/f.xg.z.].{/b/i/n/|0O0Q0]0a0bu.b-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^X.u.W.b/a0PR/c.tV0R/u0S0[R/X.dQnOS#on,PR,P)tQ&^#uR(x&^S%m#R#wS(_%m(bT(b%p&`Q%a!yQ%h!}W(P%a%h(U(YQ(U%eR(Y%jQ&i$RR)O&iQ(e%qQ*{(`T+R(e*{Q'n%OR*e'nS'q%R%SY*i'q*j,m-q.hU*j'r's'tU,m*k*l*mS-q,n,oR.h-rQ#Y]R%t#YQ#_^R%y#_Q(h%vS+W(h+XR+X(iQ+](kR,|+]Q#b_R%{#bQ#ebQ%}#cW&Q#e%}({+bQ({&cR+b0gQ$OsS&e$O&fR&f$PQ&v$_R)_&vQ&V#jR(t&VQ&m$VS)T&m+hR+h)UQ$Z{R&p$ZQ&t$]R)[&tQ+n)bR-U+nQ#hfR&S#hQ)f&zR+q)fQ&}$dS)m&})nR)n'OQ'V$kR)u'VQ'[$lS*P'[,ZR,Z*QQ,a*VR-i,aWjOn)t,PR#ljQ-k,eR.U-kd.{.]/b/i/n/|0O0Q0]0a0bR/h.{U.s.W/a0PR/`.sQ/{/nS0X/{0YR0Y/|S/v/b/cR0T/vQ.}.]R/k.}R!ZPXmOn)t,PWlOn)t,PR'T$jYfOn$j)t,PR&R#g[sOn#g$j)t,PR&d#}&dQOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0n0rQ!nTQ#caQ#poU$Rt%c(SS$d!R$gQ$p!XQ$u!cQ$v!dQ$w!eQ$x!fQ$y!gQ$z!hQ%e!zQ%j#OQ%p#SQ%q#TQ&`#xQ'O$eQ'g$qQ(q&OU(|&h(}+cW)j&|)l+x+yQ*o'|Q*x(]Q+w)kQ,v+QR0g0lQ!yYQ!}ZQ$b!PQ$c!QQ%R!kQ't%S^'{%`%g(O(W*q*t*v^*f'p*h,k,l-p.g/ZQ*l'rQ*m'sQ+t)gQ,j*gQ,n*kQ-n,hQ-o,iQ-r,oQ.e-mR/Y.f[bOn#g$j)t,P!^!vYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZQ#R[Q#fdS#wrxQ$UyW$_}$Q'P)pS$l!U$hW${!i'm*d,gS%v#[+Y`&P#d%|(p(r(z+a-O0kQ&a#yQ&b#{Q&c#}Q'j$}Q'z%^W([%l(^*y*}Q(`%nQ(i%wQ(v&ZS(y&_0iQ)P&jQ)Q&kU)]&u)^+kQ)d&xQ)y'WY)}'Z*O,X,Y-dQ*b'lS*n'w0jW+P(d*z,s,wW+T(g+V,y,zQ+p)eQ,U)zQ,c*YQ,x+UQ-P+dQ-e,]Q-v,uQ.S-fR/q/VhUOn#d#g$j%|&_'w(p(r)t,P%U!uYZ[drxy}!P!Q!U!i!k#[#y#{#}$Q$h$}%S%^%`%g%l%n%w&Z&j&k&u&x'P'W'Z'l'm'p'r's(O(W(^(d(g(z)^)e)g)p)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/V/Z0i0j0kQ#qpW%W!o!s0d0nQ%X!pQ%Y!qQ%[!tQ%f0cS'v%Z0hQ'x0eQ'y0fQ,p*rQ-u,qS.i-s/sR0p0rU#uq.k0qR(w&][cOn#g$j)t,PZ!xY#[#}$Q+YQ#W[Q#zrR$TxQ%b!yQ%i!}Q%o#RQ'j${Q(V%eQ(Z%jQ(c%pQ(f%qQ*|(`Q,f*bQ-t,pQ.m-uR/].lQ$StQ(R%cR*s(SQ.l-sR/}/sR#QZR#V[R%Q!iQ%O!iV*c'm*d,g!Z!lQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0gR%T!kT#]^#_Q%x#[R,{+YQ(m%xS+_(n(oQ,}+`Q-x,{S.n-y-zR/^.oT+Z(k+]Q$`}Q&g$QQ)o'PR+{)pQ$XzQ)W&qR+i)XQ$XzQ&o$WQ)W&qR+i)XQ#khW$Vz$W&q)XQ$[{Q&r$ZZ)R&l)S+f+g-RR$^|R)c&wXlOn)t,PQ$f!RR'Q$gQ$m!UR'R$hR*X'_Q*V'_V-g,`-h.TQ.d-lQ/P.^R/Q._U.]-l.^._Q/U.aQ/b.tQ/g.zU/i.|/j/yQ/n/RQ/|/oQ0O/tU0Q/u0S0[Q0]0UQ0a0ZR0b0^R/T.`R/d.t\",\n nodeNames: \"⚠ print Escape { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard\",\n maxTerm: 277,\n context: trackIndent,\n nodeProps: [\n [\"isolate\", -5,4,71,72,73,77,\"\"],\n [\"group\", -15,6,85,87,88,90,92,94,96,98,99,100,102,105,108,110,\"Statement Statement\",-22,8,18,21,25,40,49,50,56,57,60,61,62,63,64,67,70,71,72,79,80,81,82,\"Expression\",-10,114,116,119,121,122,126,128,133,135,138,\"Statement\",-9,143,144,147,148,150,151,152,153,154,\"Pattern\"],\n [\"openedBy\", 23,\"(\",54,\"[\",58,\"{\"],\n [\"closedBy\", 24,\")\",55,\"]\",59,\"}\"]\n ],\n propSources: [pythonHighlighting],\n skippedNodes: [0,4],\n repeatNodeCount: 34,\n tokenData: \"!2|~R!`OX%TXY%oY[%T[]%o]p%Tpq%oqr'ars)Yst*xtu%Tuv,dvw-hwx.Uxy/tyz0[z{0r{|2S|}2p}!O3W!O!P4_!P!Q:Z!Q!R;k!R![>_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T\",\n tokenizers: [legacyPrint, indentation, newlines, strings, 0, 1, 2, 3, 4],\n topRules: {\"Script\":[0,5]},\n specialized: [{term: 221, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 7668\n});\n\nexport { parser };\n","import { parser } from '@lezer/python';\nimport { syntaxTree, LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Body\",\n \"FunctionDefinition\", \"ClassDefinition\", \"LambdaExpression\",\n \"ForStatement\", \"MatchClause\"\n]);\nfunction defID(type) {\n return (node, def, outer) => {\n if (outer)\n return false;\n let id = node.node.getChild(\"VariableName\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst gatherCompletions = {\n FunctionDefinition: /*@__PURE__*/defID(\"function\"),\n ClassDefinition: /*@__PURE__*/defID(\"class\"),\n ForStatement(node, def, outer) {\n if (outer)\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \"in\")\n break;\n }\n },\n ImportStatement(_node, def) {\n var _a, _b;\n let { node } = _node;\n let isFrom = ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"from\";\n for (let ch = node.getChild(\"import\"); ch; ch = ch.nextSibling) {\n if (ch.name == \"VariableName\" && ((_b = ch.nextSibling) === null || _b === void 0 ? void 0 : _b.name) != \"as\")\n def(ch, isFrom ? \"variable\" : \"namespace\");\n }\n },\n AssignStatement(node, def) {\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \":\" || child.name == \"AssignOp\")\n break;\n }\n },\n ParamList(node, def) {\n for (let prev = null, child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\" && (!prev || !/\\*|AssignOp/.test(prev.name)))\n def(child, \"variable\");\n prev = child;\n }\n },\n CapturePattern: /*@__PURE__*/defID(\"variable\"),\n AsPattern: /*@__PURE__*/defID(\"variable\"),\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def, top) || !top && ScopeNodes.has(node.name))\n return false;\n top = false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w\\xa1-\\uffff][\\w\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\"String\", \"FormatString\", \"Comment\", \"PropertyName\"];\n/**\nCompletion source that looks up locally defined names in\nPython code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nconst globals = /*@__PURE__*/[\n \"__annotations__\", \"__builtins__\", \"__debug__\", \"__doc__\", \"__import__\", \"__name__\",\n \"__loader__\", \"__package__\", \"__spec__\",\n \"False\", \"None\", \"True\"\n].map(n => ({ label: n, type: \"constant\" })).concat(/*@__PURE__*/[\n \"ArithmeticError\", \"AssertionError\", \"AttributeError\", \"BaseException\", \"BlockingIOError\",\n \"BrokenPipeError\", \"BufferError\", \"BytesWarning\", \"ChildProcessError\", \"ConnectionAbortedError\",\n \"ConnectionError\", \"ConnectionRefusedError\", \"ConnectionResetError\", \"DeprecationWarning\",\n \"EOFError\", \"Ellipsis\", \"EncodingWarning\", \"EnvironmentError\", \"Exception\", \"FileExistsError\",\n \"FileNotFoundError\", \"FloatingPointError\", \"FutureWarning\", \"GeneratorExit\", \"IOError\",\n \"ImportError\", \"ImportWarning\", \"IndentationError\", \"IndexError\", \"InterruptedError\",\n \"IsADirectoryError\", \"KeyError\", \"KeyboardInterrupt\", \"LookupError\", \"MemoryError\",\n \"ModuleNotFoundError\", \"NameError\", \"NotADirectoryError\", \"NotImplemented\", \"NotImplementedError\",\n \"OSError\", \"OverflowError\", \"PendingDeprecationWarning\", \"PermissionError\", \"ProcessLookupError\",\n \"RecursionError\", \"ReferenceError\", \"ResourceWarning\", \"RuntimeError\", \"RuntimeWarning\",\n \"StopAsyncIteration\", \"StopIteration\", \"SyntaxError\", \"SyntaxWarning\", \"SystemError\",\n \"SystemExit\", \"TabError\", \"TimeoutError\", \"TypeError\", \"UnboundLocalError\", \"UnicodeDecodeError\",\n \"UnicodeEncodeError\", \"UnicodeError\", \"UnicodeTranslateError\", \"UnicodeWarning\", \"UserWarning\",\n \"ValueError\", \"Warning\", \"ZeroDivisionError\"\n].map(n => ({ label: n, type: \"type\" }))).concat(/*@__PURE__*/[\n \"bool\", \"bytearray\", \"bytes\", \"classmethod\", \"complex\", \"float\", \"frozenset\", \"int\", \"list\",\n \"map\", \"memoryview\", \"object\", \"range\", \"set\", \"staticmethod\", \"str\", \"super\", \"tuple\", \"type\"\n].map(n => ({ label: n, type: \"class\" }))).concat(/*@__PURE__*/[\n \"abs\", \"aiter\", \"all\", \"anext\", \"any\", \"ascii\", \"bin\", \"breakpoint\", \"callable\", \"chr\",\n \"compile\", \"delattr\", \"dict\", \"dir\", \"divmod\", \"enumerate\", \"eval\", \"exec\", \"exit\", \"filter\",\n \"format\", \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\", \"input\", \"isinstance\",\n \"issubclass\", \"iter\", \"len\", \"license\", \"locals\", \"max\", \"min\", \"next\", \"oct\", \"open\",\n \"ord\", \"pow\", \"print\", \"property\", \"quit\", \"repr\", \"reversed\", \"round\", \"setattr\", \"slice\",\n \"sorted\", \"sum\", \"vars\", \"zip\"\n].map(n => ({ label: n, type: \"function\" })));\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"def ${name}(${params}):\\n\\t${}\", {\n label: \"def\",\n detail: \"function\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for ${name} in ${collection}:\\n\\t${}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while ${}:\\n\\t${}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try:\\n\\t${}\\nexcept ${error}:\\n\\t${}\", {\n label: \"try\",\n detail: \"/ except block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t\\n\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t${}\\nelse:\\n\\t${}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name}:\\n\\tdef __init__(self, ${params}):\\n\\t\\t\\t${}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${module}\", {\n label: \"import\",\n detail: \"statement\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"from ${module} import ${names}\", {\n label: \"from\",\n detail: \"import\",\n type: \"keyword\"\n })\n];\n/**\nAutocompletion for built-in Python globals and keywords.\n*/\nconst globalCompletion = /*@__PURE__*/ifNotIn(dontComplete, /*@__PURE__*/completeFromList(/*@__PURE__*/globals.concat(snippets)));\n\nfunction innerBody(context) {\n let { node, pos } = context;\n let lineIndent = context.lineIndent(pos, -1);\n let found = null;\n for (;;) {\n let before = node.childBefore(pos);\n if (!before) {\n break;\n }\n else if (before.name == \"Comment\") {\n pos = before.from;\n }\n else if (before.name == \"Body\" || before.name == \"MatchBody\") {\n if (context.baseIndentFor(before) + context.unit <= lineIndent)\n found = before;\n node = before;\n }\n else if (before.name == \"MatchClause\") {\n node = before;\n }\n else if (before.type.is(\"Statement\")) {\n node = before;\n }\n else {\n break;\n }\n }\n return found;\n}\nfunction indentBody(context, node) {\n let base = context.baseIndentFor(node);\n let line = context.lineAt(context.pos, -1), to = line.from + line.text.length;\n // Don't consider blank, deindented lines at the end of the\n // block part of the block\n if (/^\\s*($|#)/.test(line.text) &&\n context.node.to < to + 100 &&\n !/\\S/.test(context.state.sliceDoc(to, context.node.to)) &&\n context.lineIndent(context.pos, -1) <= base)\n return null;\n // A normally deindenting keyword that appears at a higher\n // indentation than the block should probably be handled by the next\n // level\n if (/^\\s*(else:|elif |except |finally:|case\\s+[^=:]+:)/.test(context.textAfter) && context.lineIndent(context.pos, -1) > base)\n return null;\n return base + context.unit;\n}\n/**\nA language provider based on the [Lezer Python\nparser](https://github.com/lezer-parser/python), extended with\nhighlighting and indentation information.\n*/\nconst pythonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"python\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Body: context => {\n var _a;\n let body = /^\\s*(#|$)/.test(context.textAfter) && innerBody(context) || context.node;\n return (_a = indentBody(context, body)) !== null && _a !== void 0 ? _a : context.continue();\n },\n MatchBody: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = indentBody(context, inner || context.node)) !== null && _a !== void 0 ? _a : context.continue();\n },\n IfStatement: cx => /^\\s*(else:|elif )/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"ForStatement WhileStatement\": cx => /^\\s*else:/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n TryStatement: cx => /^\\s*(except[ :]|finally:|else:)/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n MatchStatement: cx => {\n if (/^\\s*case /.test(cx.textAfter))\n return cx.baseIndent + cx.unit;\n return cx.continue();\n },\n \"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression\": /*@__PURE__*/delimitedIndent({ closing: \")\" }),\n \"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n \"ArrayExpression ArrayComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"]\" }),\n MemberExpression: cx => cx.baseIndent + cx.unit,\n \"String FormatString\": () => null,\n Script: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = (inner && indentBody(context, inner))) !== null && _a !== void 0 ? _a : context.continue();\n },\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"ArrayExpression DictionaryExpression SetExpression TupleExpression\": foldInside,\n Body: (node, state) => ({ from: node.from + 1, to: node.to - (node.to == state.doc.length ? 0 : 1) }),\n \"String FormatString\": (node, state) => ({ from: state.doc.lineAt(node.from).to, to: node.to })\n })\n ],\n }),\n languageData: {\n closeBrackets: {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"'],\n stringPrefixes: [\"f\", \"fr\", \"rf\", \"r\", \"u\", \"b\", \"br\", \"rb\",\n \"F\", \"FR\", \"RF\", \"R\", \"U\", \"B\", \"BR\", \"RB\"]\n },\n commentTokens: { line: \"#\" },\n // Indent logic logic are triggered upon below input patterns\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:|case\\s+[^:]*:?)$/,\n }\n});\n/**\nPython language support.\n*/\nfunction python() {\n return new LanguageSupport(pythonLanguage, [\n pythonLanguage.data.of({ autocomplete: localCompletionSource }),\n pythonLanguage.data.of({ autocomplete: globalCompletion }),\n ]);\n}\n\nexport { globalCompletion, localCompletionSource, python, pythonLanguage };\n"],"names":["printKeyword","indent","dedent","newline$1","blankLineStart","newlineBracketed","eof","stringContent","Escape","replacementStart","stringEnd","ParenL","ParenthesizedExpression","TupleExpression","ComprehensionExpression","BracketL","ArrayExpression","ArrayComprehensionExpression","BraceL","DictionaryExpression","DictionaryComprehensionExpression","SetExpression","SetComprehensionExpression","ArgList","subscript","String$1","stringStart","stringStartD","stringStartL","stringStartLD","stringStartR","stringStartRD","stringStartRL","stringStartRLD","FormatString","stringStartF","stringStartFD","stringStartFL","stringStartFLD","stringStartFR","stringStartFRD","stringStartFRL","stringStartFRLD","FormatReplacement","nestedFormatReplacement","importList","TypeParamList","ParamList","SequencePattern","MappingPattern","PatternArgList","newline","carriageReturn","space","tab","hash","parenOpen","dot","braceOpen","braceClose","singleQuote","doubleQuote","backslash","letter_o","letter_x","letter_N","letter_u","letter_U","bracketed","isLineBreak","ch","isHex","newlines","ExternalTokenizer","input","stack","prev","cx_Bracketed","spaces","indentation","context","depth","chars","cx_String","cx_DoubleQuote","cx_Long","cx_Raw","cx_Format","Context","parent","flags","topIndent","countIndent","stringFlags","term","trackIndent","ContextTracker","_","legacyPrint","i","off","next","strings","quote","long","escapes","format","start","escaped","skipEscape","pythonHighlighting","styleTags","tags","spec_identifier","parser","LRParser","value","cache","NodeWeakMap","ScopeNodes","defID","type","node","def","outer","id","gatherCompletions","child","_node","_a","_b","isFrom","getScope","doc","cached","completions","top","name","IterMode","gather","c","Identifier","dontComplete","localCompletionSource","inner","syntaxTree","isWord","options","pos","globals","n","snippets","snippetCompletion","globalCompletion","ifNotIn","completeFromList","innerBody","lineIndent","found","before","indentBody","base","line","to","pythonLanguage","LRLanguage","indentNodeProp","body","cx","delimitedIndent","foldNodeProp","foldInside","state","python","LanguageSupport"],"mappings":"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","x_google_ignoreList":[0,1]}