@stonecrop/node-editor 0.4.35 → 0.4.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-editor.umd.cjs","sources":["../../common/temp/node_modules/.pnpm/@vue-flow+core@1.45.0_vue@3.5.18_typescript@5.8.3_/node_modules/@vue-flow/core/dist/vue-flow-core.mjs","../src/components/EditableEdge.vue","../src/components/EditableNode.vue","../src/components/NodeEditor.vue","../src/components/StateEditor.vue","../src/index.ts"],"sourcesContent":["import { getCurrentScope, onScopeDispose, isRef, reactive, unref, toRefs as toRefs$1, customRef, ref, readonly, watch, getCurrentInstance, nextTick, computed, toValue as toValue$1, shallowRef, markRaw, inject, effectScope, toRef, onBeforeMount, defineComponent, createPropsRestProxy, onMounted, openBlock, createElementBlock, normalizeClass, renderSlot, h, Fragment, normalizeStyle, createCommentVNode, createElementVNode, mergeProps, createBlock, resolveDynamicComponent, createTextVNode, toDisplayString, useAttrs, provide, onBeforeUnmount, createVNode, withCtx, resolveComponent, renderList, Teleport, isMemoSame, useSlots, onUnmounted } from \"vue\";\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isDef$1 = (val) => typeof val !== \"undefined\";\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst noop$2 = () => {\n};\nfunction createFilterWrapper(filter2, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter2(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter2,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter2);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array2 = Array.from(v);\n return array2.includes(value) || array2.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\nconst defaultWindow = isClient ? window : void 0;\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop$2;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\nfunction createKeyPredicate$1(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate$1(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef$1(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\nvar noop$1 = { value: () => {\n} };\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t))\n throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames$1(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t))\n throw new Error(\"unknown type: \" + t);\n return { type: t, name };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._, T = parseTypenames$1(typename + \"\", _), t, i = -1, n = T.length;\n if (arguments.length < 2) {\n while (++i < n)\n if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name)))\n return t;\n return;\n }\n if (callback != null && typeof callback !== \"function\")\n throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type)\n _[t] = set$1(_[t], typename.name, callback);\n else if (callback == null)\n for (t in _)\n _[t] = set$1(_[t], typename.name, null);\n }\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _)\n copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0)\n for (var args = new Array(n), i = 0, n, t; i < n; ++i)\n args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n }\n};\nfunction get$1(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set$1(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop$1, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null)\n type.push({ name, value: callback });\n return type;\n}\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\nconst namespaces = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nfunction namespace(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\")\n name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;\n}\nfunction creatorInherit(name) {\n return function() {\n var document2 = this.ownerDocument, uri = this.namespaceURI;\n return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);\n };\n}\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\nfunction creator(name) {\n var fullname = namespace(name);\n return (fullname.local ? creatorFixed : creatorInherit)(fullname);\n}\nfunction none() {\n}\nfunction selector(selector2) {\n return selector2 == null ? none : function() {\n return this.querySelector(selector2);\n };\n}\nfunction selection_select(select2) {\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\nfunction empty() {\n return [];\n}\nfunction selectorAll(selector2) {\n return selector2 == null ? empty : function() {\n return this.querySelectorAll(selector2);\n };\n}\nfunction arrayAll(select2) {\n return function() {\n return array(select2.apply(this, arguments));\n };\n}\nfunction selection_selectAll(select2) {\n if (typeof select2 === \"function\")\n select2 = arrayAll(select2);\n else\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select2.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection$1(subgroups, parents);\n}\nfunction matcher(selector2) {\n return function() {\n return this.matches(selector2);\n };\n}\nfunction childMatcher(selector2) {\n return function(node) {\n return node.matches(selector2);\n };\n}\nvar find = Array.prototype.find;\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\nfunction childFirst() {\n return this.firstElementChild;\n}\nfunction selection_selectChild(match) {\n return this.select(match == null ? childFirst : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\nvar filter = Array.prototype.filter;\nfunction children() {\n return Array.from(this.children);\n}\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\nfunction selection_selectChildren(match) {\n return this.selectAll(match == null ? children : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\nfunction selection_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction sparse(update) {\n return new Array(update.length);\n}\nfunction selection_enter() {\n return new Selection$1(this._enter || this._groups.map(sparse), this._parents);\n}\nfunction EnterNode(parent, datum2) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum2;\n}\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) {\n return this._parent.insertBefore(child, this._next);\n },\n insertBefore: function(child, next) {\n return this._parent.insertBefore(child, next);\n },\n querySelector: function(selector2) {\n return this._parent.querySelector(selector2);\n },\n querySelectorAll: function(selector2) {\n return this._parent.querySelectorAll(selector2);\n }\n};\nfunction constant$3(x) {\n return function() {\n return x;\n };\n}\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0, node, groupLength = group.length, dataLength = data.length;\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue;\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {\n exit[i] = node;\n }\n }\n}\nfunction datum(node) {\n return node.__data__;\n}\nfunction selection_data(value, key) {\n if (!arguments.length)\n return Array.from(this, datum);\n var bind = key ? bindKey : bindIndex, parents = this._parents, groups = this._groups;\n if (typeof value !== \"function\")\n value = constant$3(value);\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j], group = groups[j], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), dataLength = data.length, enterGroup = enter[j] = new Array(dataLength), updateGroup = update[j] = new Array(dataLength), exitGroup = exit[j] = new Array(groupLength);\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1)\n i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength)\n ;\n previous._next = next || null;\n }\n }\n }\n update = new Selection$1(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data ? data : Array.from(data);\n}\nfunction selection_exit() {\n return new Selection$1(this._exit || this._groups.map(sparse), this._parents);\n}\nfunction selection_join(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter)\n enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update)\n update = update.selection();\n }\n if (onexit == null)\n exit.remove();\n else\n onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\nfunction selection_merge(context) {\n var selection2 = context.selection ? context.selection() : context;\n for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Selection$1(merges, this._parents);\n}\nfunction selection_order() {\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m; ) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4)\n next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n}\nfunction selection_sort(compare) {\n if (!compare)\n compare = ascending;\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n return new Selection$1(sortgroups, this._parents).order();\n}\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction selection_call() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\nfunction selection_nodes() {\n return Array.from(this);\n}\nfunction selection_node() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node)\n return node;\n }\n }\n return null;\n}\nfunction selection_size() {\n let size = 0;\n for (const node of this)\n ++size;\n return size;\n}\nfunction selection_empty() {\n return !this.node();\n}\nfunction selection_each(callback) {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n callback.call(node, node.__data__, i, group);\n }\n }\n return this;\n}\nfunction attrRemove$1(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS$1(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant$1(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\nfunction attrConstantNS$1(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\nfunction attrFunction$1(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttribute(name);\n else\n this.setAttribute(name, v);\n };\n}\nfunction attrFunctionNS$1(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttributeNS(fullname.space, fullname.local);\n else\n this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\nfunction selection_attr(name, value) {\n var fullname = namespace(name);\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);\n }\n return this.each((value == null ? fullname.local ? attrRemoveNS$1 : attrRemove$1 : typeof value === \"function\" ? fullname.local ? attrFunctionNS$1 : attrFunction$1 : fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, value));\n}\nfunction defaultView(node) {\n return node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView;\n}\nfunction styleRemove$1(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant$1(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\nfunction styleFunction$1(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.style.removeProperty(name);\n else\n this.style.setProperty(name, v, priority);\n };\n}\nfunction selection_style(name, value, priority) {\n return arguments.length > 1 ? this.each((value == null ? styleRemove$1 : typeof value === \"function\" ? styleFunction$1 : styleConstant$1)(name, value, priority == null ? \"\" : priority)) : styleValue(this.node(), name);\n}\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n delete this[name];\n else\n this[name] = v;\n };\n}\nfunction selection_property(name, value) {\n return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === \"function\" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];\n}\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.add(names[i]);\n}\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.remove(names[i]);\n}\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\nfunction selection_classed(name, value) {\n var names = classArray(name + \"\");\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n)\n if (!list.contains(names[i]))\n return false;\n return true;\n }\n return this.each((typeof value === \"function\" ? classedFunction : value ? classedTrue : classedFalse)(names, value));\n}\nfunction textRemove() {\n this.textContent = \"\";\n}\nfunction textConstant$1(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction$1(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\nfunction selection_text(value) {\n return arguments.length ? this.each(value == null ? textRemove : (typeof value === \"function\" ? textFunction$1 : textConstant$1)(value)) : this.node().textContent;\n}\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\nfunction selection_html(value) {\n return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === \"function\" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;\n}\nfunction raise() {\n if (this.nextSibling)\n this.parentNode.appendChild(this);\n}\nfunction selection_raise() {\n return this.each(raise);\n}\nfunction lower() {\n if (this.previousSibling)\n this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\nfunction selection_lower() {\n return this.each(lower);\n}\nfunction selection_append(name) {\n var create2 = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create2.apply(this, arguments));\n });\n}\nfunction constantNull() {\n return null;\n}\nfunction selection_insert(name, before) {\n var create2 = typeof name === \"function\" ? name : creator(name), select2 = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create2.apply(this, arguments), select2.apply(this, arguments) || null);\n });\n}\nfunction remove() {\n var parent = this.parentNode;\n if (parent)\n parent.removeChild(this);\n}\nfunction selection_remove() {\n return this.each(remove);\n}\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_clone(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\nfunction selection_datum(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.node().__data__;\n}\nfunction contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n return { type: t, name };\n });\n}\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on)\n return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i)\n on.length = i;\n else\n delete this.__on;\n };\n}\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on)\n for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = { type: typename.type, name: typename.name, value, listener, options };\n if (!on)\n this.__on = [o];\n else\n on.push(o);\n };\n}\nfunction selection_on(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on)\n for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i)\n this.each(on(typenames[i], value, options));\n return this;\n}\nfunction dispatchEvent(node, type, params) {\n var window2 = defaultView(node), event = window2.CustomEvent;\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window2.document.createEvent(\"Event\");\n if (params)\n event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else\n event.initEvent(type, false, false);\n }\n node.dispatchEvent(event);\n}\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\nfunction selection_dispatch(type, params) {\n return this.each((typeof params === \"function\" ? dispatchFunction : dispatchConstant)(type, params));\n}\nfunction* selection_iterator() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n yield node;\n }\n }\n}\nvar root = [null];\nfunction Selection$1(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\nfunction selection() {\n return new Selection$1([[document.documentElement]], root);\n}\nfunction selection_selection() {\n return this;\n}\nSelection$1.prototype = selection.prototype = {\n constructor: Selection$1,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\nfunction select(selector2) {\n return typeof selector2 === \"string\" ? new Selection$1([[document.querySelector(selector2)]], [document.documentElement]) : new Selection$1([[selector2]], root);\n}\nfunction sourceEvent(event) {\n let sourceEvent2;\n while (sourceEvent2 = event.sourceEvent)\n event = sourceEvent2;\n return event;\n}\nfunction pointer(event, node) {\n event = sourceEvent(event);\n if (node === void 0)\n node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\nconst nonpassive = { passive: false };\nconst nonpassivecapture = { capture: true, passive: false };\nfunction nopropagation$1(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent$1(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction dragDisable(view) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", noevent$1, nonpassivecapture);\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", noevent$1, nonpassivecapture);\n } else {\n root2.__noselect = root2.style.MozUserSelect;\n root2.style.MozUserSelect = \"none\";\n }\n}\nfunction yesdrag(view, noclick) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection2.on(\"click.drag\", noevent$1, nonpassivecapture);\n setTimeout(function() {\n selection2.on(\"click.drag\", null);\n }, 0);\n }\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", null);\n } else {\n root2.style.MozUserSelect = root2.__noselect;\n delete root2.__noselect;\n }\n}\nconst constant$2 = (x) => () => x;\nfunction DragEvent(type, {\n sourceEvent: sourceEvent2,\n subject,\n target,\n identifier,\n active,\n x,\n y,\n dx,\n dy,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n subject: { value: subject, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n identifier: { value: identifier, enumerable: true, configurable: true },\n active: { value: active, enumerable: true, configurable: true },\n x: { value: x, enumerable: true, configurable: true },\n y: { value: y, enumerable: true, configurable: true },\n dx: { value: dx, enumerable: true, configurable: true },\n dy: { value: dy, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\nfunction defaultFilter$1(event) {\n return !event.ctrlKey && !event.button;\n}\nfunction defaultContainer() {\n return this.parentNode;\n}\nfunction defaultSubject(event, d) {\n return d == null ? { x: event.x, y: event.y } : d;\n}\nfunction defaultTouchable$1() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction drag() {\n var filter2 = defaultFilter$1, container = defaultContainer, subject = defaultSubject, touchable = defaultTouchable$1, gestures = {}, listeners = dispatch(\"start\", \"drag\", \"end\"), active = 0, mousedownx, mousedowny, mousemoving, touchending, clickDistance2 = 0;\n function drag2(selection2) {\n selection2.on(\"mousedown.drag\", mousedowned).filter(touchable).on(\"touchstart.drag\", touchstarted).on(\"touchmove.drag\", touchmoved, nonpassive).on(\"touchend.drag touchcancel.drag\", touchended).style(\"touch-action\", \"none\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n function mousedowned(event, d) {\n if (touchending || !filter2.call(this, event, d))\n return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture)\n return;\n select(event.view).on(\"mousemove.drag\", mousemoved, nonpassivecapture).on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n dragDisable(event.view);\n nopropagation$1(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n function mousemoved(event) {\n noevent$1(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent$1(event);\n gestures.mouse(\"end\", event);\n }\n function touchstarted(event, d) {\n if (!filter2.call(this, event, d))\n return;\n var touches = event.changedTouches, c = container.call(this, event, d), n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation$1(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n function touchmoved(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent$1(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n function touchended(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, 500);\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation$1(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n function beforestart(that, container2, event, d, identifier, touch) {\n var dispatch2 = listeners.copy(), p = pointer(touch || event, container2), dx, dy, s;\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag2,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch: dispatch2\n }), d)) == null)\n return;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return function gesture(type, event2, touch2) {\n var p0 = p, n;\n switch (type) {\n case \"start\":\n gestures[identifier] = gesture, n = active++;\n break;\n case \"end\":\n delete gestures[identifier], --active;\n case \"drag\":\n p = pointer(touch2 || event2, container2), n = active;\n break;\n }\n dispatch2.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event2,\n subject: s,\n target: drag2,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch: dispatch2\n }),\n d\n );\n };\n }\n drag2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : filter2;\n };\n drag2.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$2(_), drag2) : container;\n };\n drag2.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$2(_), drag2) : subject;\n };\n drag2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : touchable;\n };\n drag2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag2 : value;\n };\n drag2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag2) : Math.sqrt(clickDistance2);\n };\n return drag2;\n}\nfunction define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition)\n prototype[key] = definition[key];\n return prototype;\n}\nfunction Color() {\n}\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\", reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\", reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`), reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`), reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`), reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`), reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`), reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\nvar named = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0)\n r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h2, s, l, a) {\n if (a <= 0)\n h2 = s = l = NaN;\n else if (l <= 0 || l >= 1)\n h2 = s = NaN;\n else if (s <= 0)\n h2 = NaN;\n return new Hsl(h2, s, l, a);\n}\nfunction hslConvert(o) {\n if (o instanceof Hsl)\n return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Hsl();\n if (o instanceof Hsl)\n return o;\n o = o.rgb();\n var r = o.r / 255, g = o.g / 255, b = o.b / 255, min = Math.min(r, g, b), max = Math.max(r, g, b), h2 = NaN, s = max - min, l = (max + min) / 2;\n if (s) {\n if (r === max)\n h2 = (g - b) / s + (g < b) * 6;\n else if (g === max)\n h2 = (b - r) / s + 2;\n else\n h2 = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h2 *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h2;\n }\n return new Hsl(h2, s, l, o.opacity);\n}\nfunction hsl(h2, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h2) : new Hsl(h2, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h2, s, l, opacity) {\n this.h = +h2;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h2 = this.h % 360 + (this.h < 0) * 360, s = isNaN(h2) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h2 >= 240 ? h2 - 240 : h2 + 120, m1, m2),\n hsl2rgb(h2, m1, m2),\n hsl2rgb(h2 < 120 ? h2 + 240 : h2 - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\nfunction hsl2rgb(h2, m1, m2) {\n return (h2 < 60 ? m1 + (m2 - m1) * h2 / 60 : h2 < 180 ? m2 : h2 < 240 ? m1 + (m2 - m1) * (240 - h2) / 60 : m1) * 255;\n}\nconst constant$1 = (x) => () => x;\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a);\n };\n}\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant$1(isNaN(a) ? b : a);\n}\nconst interpolateRgb = function rgbGamma(y) {\n var color2 = gamma(y);\n function rgb$1(start2, end) {\n var r = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color2(start2.g, end.g), b = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity);\n return function(t) {\n start2.r = r(t);\n start2.g = g(t);\n start2.b = b(t);\n start2.opacity = opacity(t);\n return start2 + \"\";\n };\n }\n rgb$1.gamma = rgbGamma;\n return rgb$1;\n}(1);\nfunction numberArray(a, b) {\n if (!b)\n b = [];\n var n = a ? Math.min(b.length, a.length) : 0, c = b.slice(), i;\n return function(t) {\n for (i = 0; i < n; ++i)\n c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x = new Array(na), c = new Array(nb), i;\n for (i = 0; i < na; ++i)\n x[i] = interpolate$1(a[i], b[i]);\n for (; i < nb; ++i)\n c[i] = b[i];\n return function(t) {\n for (i = 0; i < na; ++i)\n c[i] = x[i](t);\n return c;\n };\n}\nfunction date(a, b) {\n var d = /* @__PURE__ */ new Date();\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\nfunction interpolateNumber(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction object(a, b) {\n var i = {}, c = {}, k;\n if (a === null || typeof a !== \"object\")\n a = {};\n if (b === null || typeof b !== \"object\")\n b = {};\n for (k in b) {\n if (k in a) {\n i[k] = interpolate$1(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i)\n c[k] = i[k](t);\n return c;\n };\n}\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n return function() {\n return b;\n };\n}\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\nfunction interpolateString(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i])\n s[i] += bm;\n else\n s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({ i, x: interpolateNumber(am, bm) });\n }\n bi = reB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function(t) {\n for (var i2 = 0, o; i2 < b; ++i2)\n s[(o = q[i2]).i] = o.x(t);\n return s.join(\"\");\n });\n}\nfunction interpolate$1(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant$1(b) : (t === \"number\" ? interpolateNumber : t === \"string\" ? (c = color(b)) ? (b = c, interpolateRgb) : interpolateString : b instanceof color ? interpolateRgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : interpolateNumber)(a, b);\n}\nvar degrees = 180 / Math.PI;\nvar identity$1 = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b))\n a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d)\n c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d))\n c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c)\n a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX,\n scaleY\n };\n}\nvar svgNode;\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity$1 : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nfunction parseSvg(value) {\n if (value == null)\n return identity$1;\n if (!svgNode)\n svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate()))\n return identity$1;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180)\n b += 360;\n else if (b - a > 180)\n a += 360;\n q.push({ i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({ i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function(a, b) {\n var s = [], q = [];\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n)\n s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\nvar epsilon2 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nconst interpolateZoom = function zoomRho(rho, rho2, rho4) {\n function zoom2(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S, coshr0 = cosh(r0), u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n };\n }\n i.duration = S * 1e3 * rho / Math.SQRT2;\n return i;\n }\n zoom2.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom2;\n}(Math.SQRT2, 2, 4);\nvar frame = 0, timeout$1 = 0, interval = 0, pokeDelay = 1e3, taskHead, taskTail, clockLast = 0, clockNow = 0, clockSkew = 0, clock = typeof performance === \"object\" && performance.now ? performance : Date, setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) {\n setTimeout(f, 17);\n};\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nfunction Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\")\n throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail)\n taskTail._next = this;\n else\n taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nfunction timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nfunction timerFlush() {\n now();\n ++frame;\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0)\n t._call.call(void 0, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout$1 = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now2 = clock.now(), delay = now2 - clockLast;\n if (delay > pokeDelay)\n clockSkew -= delay, clockLast = now2;\n}\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time)\n time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame)\n return;\n if (timeout$1)\n timeout$1 = clearTimeout(timeout$1);\n var delay = time - clockNow;\n if (delay > 24) {\n if (time < Infinity)\n timeout$1 = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval)\n interval = clearInterval(interval);\n } else {\n if (!interval)\n clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\nfunction timeout(callback, delay, time) {\n var t = new Timer();\n delay = delay == null ? 0 : +delay;\n t.restart((elapsed) => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\nfunction schedule(node, name, id2, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules)\n node.__transition = {};\n else if (id2 in schedules)\n return;\n create(node, id2, {\n name,\n index,\n // For context during callback.\n group,\n // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\nfunction init(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > CREATED)\n throw new Error(\"too late; already scheduled\");\n return schedule2;\n}\nfunction set(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > STARTED)\n throw new Error(\"too late; already running\");\n return schedule2;\n}\nfunction get(node, id2) {\n var schedule2 = node.__transition;\n if (!schedule2 || !(schedule2 = schedule2[id2]))\n throw new Error(\"transition not found\");\n return schedule2;\n}\nfunction create(node, id2, self) {\n var schedules = node.__transition, tween;\n schedules[id2] = self;\n self.timer = timer(schedule2, 0, self.time);\n function schedule2(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start2, self.delay, self.time);\n if (self.delay <= elapsed)\n start2(elapsed - self.delay);\n }\n function start2(elapsed) {\n var i, j, n, o;\n if (self.state !== SCHEDULED)\n return stop();\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name)\n continue;\n if (o.state === STARTED)\n return timeout(start2);\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n } else if (+i < id2) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING)\n return;\n self.state = STARTED;\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), i = -1, n = tween.length;\n while (++i < n) {\n tween[i].call(node, t);\n }\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id2];\n for (var i in schedules)\n return;\n delete node.__transition;\n }\n}\nfunction interrupt(node, name) {\n var schedules = node.__transition, schedule2, active, empty2 = true, i;\n if (!schedules)\n return;\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule2 = schedules[i]).name !== name) {\n empty2 = false;\n continue;\n }\n active = schedule2.state > STARTING && schedule2.state < ENDING;\n schedule2.state = ENDED;\n schedule2.timer.stop();\n schedule2.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule2.index, schedule2.group);\n delete schedules[i];\n }\n if (empty2)\n delete node.__transition;\n}\nfunction selection_interrupt(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\nfunction tweenRemove(id2, name) {\n var tween0, tween1;\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n schedule2.tween = tween1;\n };\n}\nfunction tweenFunction(id2, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = { name, value }, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n)\n tween1.push(t);\n }\n schedule2.tween = tween1;\n };\n}\nfunction transition_tween(name, value) {\n var id2 = this._id;\n name += \"\";\n if (arguments.length < 2) {\n var tween = get(this.node(), id2).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n return this.each((value == null ? tweenRemove : tweenFunction)(id2, name, value));\n}\nfunction tweenValue(transition, name, value) {\n var id2 = transition._id;\n transition.each(function() {\n var schedule2 = set(this, id2);\n (schedule2.value || (schedule2.value = {}))[name] = value.apply(this, arguments);\n });\n return function(node) {\n return get(node, id2).value[name];\n };\n}\nfunction interpolate(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber : b instanceof color ? interpolateRgb : (c = color(b)) ? (b = c, interpolateRgb) : interpolateString)(a, b);\n}\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrConstantNS(fullname, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction attrFunctionNS(fullname, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction transition_attr(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransformSvg : interpolate;\n return this.attrTween(name, typeof value === \"function\" ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value)) : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_attrTween(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\nfunction delayFunction(id2, value) {\n return function() {\n init(this, id2).delay = +value.apply(this, arguments);\n };\n}\nfunction delayConstant(id2, value) {\n return value = +value, function() {\n init(this, id2).delay = value;\n };\n}\nfunction transition_delay(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? delayFunction : delayConstant)(id2, value)) : get(this.node(), id2).delay;\n}\nfunction durationFunction(id2, value) {\n return function() {\n set(this, id2).duration = +value.apply(this, arguments);\n };\n}\nfunction durationConstant(id2, value) {\n return value = +value, function() {\n set(this, id2).duration = value;\n };\n}\nfunction transition_duration(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? durationFunction : durationConstant)(id2, value)) : get(this.node(), id2).duration;\n}\nfunction easeConstant(id2, value) {\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n set(this, id2).ease = value;\n };\n}\nfunction transition_ease(value) {\n var id2 = this._id;\n return arguments.length ? this.each(easeConstant(id2, value)) : get(this.node(), id2).ease;\n}\nfunction easeVarying(id2, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\")\n throw new Error();\n set(this, id2).ease = v;\n };\n}\nfunction transition_easeVarying(value) {\n if (typeof value !== \"function\")\n throw new Error();\n return this.each(easeVarying(this._id, value));\n}\nfunction transition_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\nfunction transition_merge(transition) {\n if (transition._id !== this._id)\n throw new Error();\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Transition(merges, this._parents, this._name, this._id);\n}\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0)\n t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\nfunction onFunction(id2, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule2 = sit(this, id2), on = schedule2.on;\n if (on !== on0)\n (on1 = (on0 = on).copy()).on(name, listener);\n schedule2.on = on1;\n };\n}\nfunction transition_on(name, listener) {\n var id2 = this._id;\n return arguments.length < 2 ? get(this.node(), id2).on.on(name) : this.each(onFunction(id2, name, listener));\n}\nfunction removeFunction(id2) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition)\n if (+i !== id2)\n return;\n if (parent)\n parent.removeChild(this);\n };\n}\nfunction transition_remove() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\nfunction transition_select(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id2, i, subgroup, get(node, id2));\n }\n }\n }\n return new Transition(subgroups, this._parents, name, id2);\n}\nfunction transition_selectAll(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children2 = select2.call(node, node.__data__, i, group), child, inherit2 = get(node, id2), k = 0, l = children2.length; k < l; ++k) {\n if (child = children2[k]) {\n schedule(child, name, id2, k, children2, inherit2);\n }\n }\n subgroups.push(children2);\n parents.push(node);\n }\n }\n }\n return new Transition(subgroups, parents, name, id2);\n}\nvar Selection = selection.prototype.constructor;\nfunction transition_selection() {\n return new Selection(this._groups, this._parents);\n}\nfunction styleNull(name, interpolate2) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), string1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, string10 = string1);\n };\n}\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = styleValue(this, name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction styleFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), value1 = value(this), string1 = value1 + \"\";\n if (value1 == null)\n string1 = value1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction styleMaybeRemove(id2, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove2;\n return function() {\n var schedule2 = set(this, id2), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name)) : void 0;\n if (on !== on0 || listener0 !== listener)\n (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n schedule2.on = on1;\n };\n}\nfunction transition_style(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransformCss : interpolate;\n return value == null ? this.styleTween(name, styleNull(name, i)).on(\"end.style.\" + name, styleRemove(name)) : typeof value === \"function\" ? this.styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant(name, i, value), priority).on(\"end.style.\" + name, null);\n}\nfunction styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_styleTween(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\nfunction transition_text(value) {\n return this.tween(\"text\", typeof value === \"function\" ? textFunction(tweenValue(this, \"text\", value)) : textConstant(value == null ? \"\" : value + \"\"));\n}\nfunction textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_textTween(value) {\n var key = \"text\";\n if (arguments.length < 1)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, textTween(value));\n}\nfunction transition_transition() {\n var name = this._name, id0 = this._id, id1 = newId();\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit2 = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit2.time + inherit2.delay + inherit2.duration,\n delay: 0,\n duration: inherit2.duration,\n ease: inherit2.ease\n });\n }\n }\n }\n return new Transition(groups, this._parents, name, id1);\n}\nfunction transition_end() {\n var on0, on1, that = this, id2 = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = { value: reject }, end = { value: function() {\n if (--size === 0)\n resolve();\n } };\n that.each(function() {\n var schedule2 = set(this, id2), on = schedule2.on;\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n schedule2.on = on1;\n });\n if (size === 0)\n resolve();\n });\n}\nvar id = 0;\nfunction Transition(groups, parents, name, id2) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id2;\n}\nfunction newId() {\n return ++id;\n}\nvar selection_prototype = selection.prototype;\nTransition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\nvar defaultTiming = {\n time: null,\n // Set on use.\n delay: 0,\n duration: 250,\n ease: cubicInOut\n};\nfunction inherit(node, id2) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id2])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id2} not found`);\n }\n }\n return timing;\n}\nfunction selection_transition(name) {\n var id2, timing;\n if (name instanceof Transition) {\n id2 = name._id, name = name._name;\n } else {\n id2 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id2, i, group, timing || inherit(node, id2));\n }\n }\n }\n return new Transition(groups, this._parents, name, id2);\n}\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\nconst constant = (x) => () => x;\nfunction ZoomEvent(type, {\n sourceEvent: sourceEvent2,\n target,\n transform,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n transform: { value: transform, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nfunction Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\nvar identity = new Transform(1, 0, 0);\nTransform.prototype;\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === \"wheel\") && !event.button;\n}\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * (event.ctrlKey ? 10 : 1);\n}\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\nfunction zoom() {\n var filter2 = defaultFilter, extent = defaultExtent, constrain = defaultConstrain, wheelDelta = defaultWheelDelta, touchable = defaultTouchable, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], duration = 250, interpolate2 = interpolateZoom, listeners = dispatch(\"start\", \"zoom\", \"end\"), touchstarting, touchfirst, touchending, touchDelay = 500, wheelDelay = 150, clickDistance2 = 0, tapDistance = 10;\n function zoom2(selection2) {\n selection2.property(\"__zoom\", defaultTransform).on(\"wheel.zoom\", wheeled, { passive: false }).on(\"mousedown.zoom\", mousedowned).on(\"dblclick.zoom\", dblclicked).filter(touchable).on(\"touchstart.zoom\", touchstarted).on(\"touchmove.zoom\", touchmoved).on(\"touchend.zoom touchcancel.zoom\", touchended).style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n zoom2.transform = function(collection, transform, point, event) {\n var selection2 = collection.selection ? collection.selection() : collection;\n selection2.property(\"__zoom\", defaultTransform);\n if (collection !== selection2) {\n schedule2(collection, transform, point, event);\n } else {\n selection2.interrupt().each(function() {\n gesture(this, arguments).event(event).start().zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform).end();\n });\n }\n };\n zoom2.scaleBy = function(selection2, k, p, event) {\n zoom2.scaleTo(selection2, function() {\n var k0 = this.__zoom.k, k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n zoom2.scaleTo = function(selection2, k, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t0 = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p, p1 = t0.invert(p0), k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n zoom2.translateBy = function(selection2, x, y, event) {\n zoom2.transform(selection2, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n zoom2.translateTo = function(selection2, x, y, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n function centroid(extent2) {\n return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2];\n }\n function schedule2(transition, transform, point, event) {\n transition.on(\"start.zoom\", function() {\n gesture(this, arguments).event(event).start();\n }).on(\"interrupt.zoom end.zoom\", function() {\n gesture(this, arguments).event(event).end();\n }).tween(\"zoom\", function() {\n var that = this, args = arguments, g = gesture(that, args).event(event), e = extent.apply(that, args), p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a = that.__zoom, b = typeof transform === \"function\" ? transform.apply(that, args) : transform, i = interpolate2(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1)\n t = b;\n else {\n var l = i(t), k = w / l[2];\n t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);\n }\n g.zoom(null, t);\n };\n });\n }\n function gesture(that, args, clean) {\n return !clean && that.__zooming || new Gesture(that, args);\n }\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n Gesture.prototype = {\n event: function(event) {\n if (event)\n this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\")\n this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\")\n this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\")\n this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom2,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n function wheeled(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var g = gesture(this, args).event(event), t = this.__zoom, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = pointer(event);\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n } else if (t.k === k)\n return;\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n function mousedowned(event, ...args) {\n if (touchending || !filter2.apply(this, arguments))\n return;\n var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true), p = pointer(event, currentTarget), x0 = event.clientX, y0 = event.clientY;\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n function mousemoved(event2) {\n noevent(event2);\n if (!g.moved) {\n var dx = event2.clientX - x0, dy = event2.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event2).zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event2, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n function mouseupped(event2) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n yesdrag(event2.view, g.moved);\n noevent(event2);\n g.event(event2).end();\n }\n }\n function dblclicked(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var t0 = this.__zoom, p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), p1 = t0.invert(p0), k1 = t0.k * (event.shiftKey ? 0.5 : 2), t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n noevent(event);\n if (duration > 0)\n select(this).transition().duration(duration).call(schedule2, t1, p0, event);\n else\n select(this).call(zoom2.transform, t1, p0, event);\n }\n function touchstarted(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var touches = event.touches, n = touches.length, g = gesture(this, args, event.changedTouches.length === n).event(event), started, i, t, p;\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0)\n g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2])\n g.touch1 = p, g.taps = 0;\n }\n if (touchstarting)\n touchstarting = clearTimeout(touchstarting);\n if (started) {\n if (g.taps < 2)\n touchfirst = p[0], touchstarting = setTimeout(function() {\n touchstarting = null;\n }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n function touchmoved(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t, p, l;\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier)\n g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1], p1 = g.touch1[0], l1 = g.touch1[1], dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n } else if (g.touch0)\n p = g.touch0[0], l = g.touch0[1];\n else\n return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n function touchended(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t;\n nopropagation(event);\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier)\n delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n delete g.touch1;\n }\n if (g.touch1 && !g.touch0)\n g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0)\n g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p)\n p.apply(this, arguments);\n }\n }\n }\n }\n zoom2.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom2) : wheelDelta;\n };\n zoom2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : filter2;\n };\n zoom2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : touchable;\n };\n zoom2.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom2) : extent;\n };\n zoom2.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom2) : [scaleExtent[0], scaleExtent[1]];\n };\n zoom2.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom2) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n zoom2.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom2) : constrain;\n };\n zoom2.duration = function(_) {\n return arguments.length ? (duration = +_, zoom2) : duration;\n };\n zoom2.interpolate = function(_) {\n return arguments.length ? (interpolate2 = _, zoom2) : interpolate2;\n };\n zoom2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom2 : value;\n };\n zoom2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom2) : Math.sqrt(clickDistance2);\n };\n zoom2.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom2) : tapDistance;\n };\n return zoom2;\n}\nvar Position = /* @__PURE__ */ ((Position2) => {\n Position2[\"Left\"] = \"left\";\n Position2[\"Top\"] = \"top\";\n Position2[\"Right\"] = \"right\";\n Position2[\"Bottom\"] = \"bottom\";\n return Position2;\n})(Position || {});\nvar SelectionMode = /* @__PURE__ */ ((SelectionMode2) => {\n SelectionMode2[\"Partial\"] = \"partial\";\n SelectionMode2[\"Full\"] = \"full\";\n return SelectionMode2;\n})(SelectionMode || {});\nvar ConnectionLineType = /* @__PURE__ */ ((ConnectionLineType2) => {\n ConnectionLineType2[\"Bezier\"] = \"default\";\n ConnectionLineType2[\"SimpleBezier\"] = \"simple-bezier\";\n ConnectionLineType2[\"Straight\"] = \"straight\";\n ConnectionLineType2[\"Step\"] = \"step\";\n ConnectionLineType2[\"SmoothStep\"] = \"smoothstep\";\n return ConnectionLineType2;\n})(ConnectionLineType || {});\nvar ConnectionMode = /* @__PURE__ */ ((ConnectionMode2) => {\n ConnectionMode2[\"Strict\"] = \"strict\";\n ConnectionMode2[\"Loose\"] = \"loose\";\n return ConnectionMode2;\n})(ConnectionMode || {});\nvar MarkerType = /* @__PURE__ */ ((MarkerType2) => {\n MarkerType2[\"Arrow\"] = \"arrow\";\n MarkerType2[\"ArrowClosed\"] = \"arrowclosed\";\n return MarkerType2;\n})(MarkerType || {});\nvar PanOnScrollMode = /* @__PURE__ */ ((PanOnScrollMode2) => {\n PanOnScrollMode2[\"Free\"] = \"free\";\n PanOnScrollMode2[\"Vertical\"] = \"vertical\";\n PanOnScrollMode2[\"Horizontal\"] = \"horizontal\";\n return PanOnScrollMode2;\n})(PanOnScrollMode || {});\nvar PanelPosition = /* @__PURE__ */ ((PanelPosition2) => {\n PanelPosition2[\"TopLeft\"] = \"top-left\";\n PanelPosition2[\"TopCenter\"] = \"top-center\";\n PanelPosition2[\"TopRight\"] = \"top-right\";\n PanelPosition2[\"BottomLeft\"] = \"bottom-left\";\n PanelPosition2[\"BottomCenter\"] = \"bottom-center\";\n PanelPosition2[\"BottomRight\"] = \"bottom-right\";\n return PanelPosition2;\n})(PanelPosition || {});\nconst inputTags = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\nconst defaultDoc = typeof document !== \"undefined\" ? document : null;\nfunction isInputDOMNode(event) {\n var _a, _b;\n const target = ((_b = (_a = event.composedPath) == null ? void 0 : _a.call(event)) == null ? void 0 : _b[0]) || event.target;\n const hasAttribute = typeof (target == null ? void 0 : target.hasAttribute) === \"function\" ? target.hasAttribute(\"contenteditable\") : false;\n const closest = typeof (target == null ? void 0 : target.closest) === \"function\" ? target.closest(\".nokey\") : null;\n return inputTags.includes(target == null ? void 0 : target.nodeName) || hasAttribute || !!closest;\n}\nfunction wasModifierPressed(event) {\n return event.ctrlKey || event.metaKey || event.shiftKey || event.altKey;\n}\nfunction isKeyMatch(pressedKey, keyToMatch, pressedKeys, isKeyUp) {\n const keyCombination = keyToMatch.replace(\"+\", \"\\n\").replace(\"\\n\\n\", \"\\n+\").split(\"\\n\").map((k) => k.trim().toLowerCase());\n if (keyCombination.length === 1) {\n return pressedKey.toLowerCase() === keyToMatch.toLowerCase();\n }\n if (!isKeyUp) {\n pressedKeys.add(pressedKey.toLowerCase());\n }\n const isMatch = keyCombination.every(\n (key, index) => pressedKeys.has(key) && Array.from(pressedKeys.values())[index] === keyCombination[index]\n );\n if (isKeyUp) {\n pressedKeys.delete(pressedKey.toLowerCase());\n }\n return isMatch;\n}\nfunction createKeyPredicate(keyFilter, pressedKeys) {\n return (event) => {\n if (!event.code && !event.key) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keyFilter);\n if (Array.isArray(keyFilter)) {\n return keyFilter.some((key) => isKeyMatch(event[keyOrCode], key, pressedKeys, event.type === \"keyup\"));\n }\n return isKeyMatch(event[keyOrCode], keyFilter, pressedKeys, event.type === \"keyup\");\n };\n}\nfunction useKeyOrCode(code, keysToWatch) {\n return keysToWatch.includes(code) ? \"code\" : \"key\";\n}\nfunction useKeyPress(keyFilter, options) {\n const target = computed(() => toValue$1(options == null ? void 0 : options.target) ?? defaultDoc);\n const isPressed = shallowRef(toValue$1(keyFilter) === true);\n let modifierPressed = false;\n const pressedKeys = /* @__PURE__ */ new Set();\n let currentFilter = createKeyFilterFn(toValue$1(keyFilter));\n watch(\n () => toValue$1(keyFilter),\n (nextKeyFilter, previousKeyFilter) => {\n if (typeof previousKeyFilter === \"boolean\" && typeof nextKeyFilter !== \"boolean\") {\n reset();\n }\n currentFilter = createKeyFilterFn(nextKeyFilter);\n },\n {\n immediate: true\n }\n );\n useEventListener([\"blur\", \"contextmenu\"], reset);\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n var _a, _b;\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n const preventDefault = toValue$1(options == null ? void 0 : options.preventDefault) ?? false;\n modifierPressed = wasModifierPressed(e);\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n const target2 = ((_b = (_a = e.composedPath) == null ? void 0 : _a.call(e)) == null ? void 0 : _b[0]) || e.target;\n const isInteractiveElement = (target2 == null ? void 0 : target2.nodeName) === \"BUTTON\" || (target2 == null ? void 0 : target2.nodeName) === \"A\";\n if (!preventDefault && (modifierPressed || !isInteractiveElement)) {\n e.preventDefault();\n }\n isPressed.value = true;\n },\n { eventName: \"keydown\", target }\n );\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n if (isPressed.value) {\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n modifierPressed = false;\n isPressed.value = false;\n }\n },\n { eventName: \"keyup\", target }\n );\n function reset() {\n modifierPressed = false;\n pressedKeys.clear();\n isPressed.value = toValue$1(keyFilter) === true;\n }\n function createKeyFilterFn(keyFilter2) {\n if (keyFilter2 === null) {\n reset();\n return () => false;\n }\n if (typeof keyFilter2 === \"boolean\") {\n reset();\n isPressed.value = keyFilter2;\n return () => false;\n }\n if (Array.isArray(keyFilter2) || typeof keyFilter2 === \"string\") {\n return createKeyPredicate(keyFilter2, pressedKeys);\n }\n return keyFilter2;\n }\n return isPressed;\n}\nconst ARIA_NODE_DESC_KEY = \"vue-flow__node-desc\";\nconst ARIA_EDGE_DESC_KEY = \"vue-flow__edge-desc\";\nconst ARIA_LIVE_MESSAGE = \"vue-flow__aria-live\";\nconst elementSelectionKeys = [\"Enter\", \" \", \"Escape\"];\nconst arrowKeyDiffs = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 }\n};\nfunction nodeToRect(node) {\n return {\n ...node.computedPosition || { x: 0, y: 0 },\n width: node.dimensions.width || 0,\n height: node.dimensions.height || 0\n };\n}\nfunction getOverlappingArea(rectA, rectB) {\n const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n return Math.ceil(xOverlap * yOverlap);\n}\nfunction getDimensions(node) {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n}\nfunction clamp(val, min = 0, max = 1) {\n return Math.min(Math.max(val, min), max);\n}\nfunction clampPosition(position, extent) {\n return {\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1])\n };\n}\nfunction getHostForElement(element) {\n const doc = element.getRootNode();\n if (\"elementFromPoint\" in doc) {\n return doc;\n }\n return window.document;\n}\nfunction isEdge(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"source\" in element && \"target\" in element;\n}\nfunction isGraphEdge(element) {\n return isEdge(element) && \"sourceNode\" in element && \"targetNode\" in element;\n}\nfunction isNode(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"position\" in element && !isEdge(element);\n}\nfunction isGraphNode(element) {\n return isNode(element) && \"computedPosition\" in element;\n}\nfunction isNumeric(n) {\n return !Number.isNaN(n) && Number.isFinite(n);\n}\nfunction isRect(obj) {\n return isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n}\nfunction parseNode(node, existingNode, parentNode) {\n const initialState = {\n id: node.id.toString(),\n type: node.type ?? \"default\",\n dimensions: markRaw({\n width: 0,\n height: 0\n }),\n computedPosition: markRaw({\n z: 0,\n ...node.position\n }),\n // todo: shouldn't be defined initially, as we want to use handleBounds to check if a node was actually initialized or not\n handleBounds: {\n source: [],\n target: []\n },\n draggable: void 0,\n selectable: void 0,\n connectable: void 0,\n focusable: void 0,\n selected: false,\n dragging: false,\n resizing: false,\n initialized: false,\n isParent: false,\n position: {\n x: 0,\n y: 0\n },\n data: isDef(node.data) ? node.data : {},\n events: markRaw(isDef(node.events) ? node.events : {})\n };\n return Object.assign(existingNode ?? initialState, node, { id: node.id.toString(), parentNode });\n}\nfunction parseEdge(edge, existingEdge, defaultEdgeOptions) {\n var _a, _b;\n const initialState = {\n id: edge.id.toString(),\n type: edge.type ?? (existingEdge == null ? void 0 : existingEdge.type) ?? \"default\",\n source: edge.source.toString(),\n target: edge.target.toString(),\n sourceHandle: (_a = edge.sourceHandle) == null ? void 0 : _a.toString(),\n targetHandle: (_b = edge.targetHandle) == null ? void 0 : _b.toString(),\n updatable: edge.updatable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.updatable),\n selectable: edge.selectable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.selectable),\n focusable: edge.focusable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.focusable),\n data: isDef(edge.data) ? edge.data : {},\n events: markRaw(isDef(edge.events) ? edge.events : {}),\n label: edge.label ?? \"\",\n interactionWidth: edge.interactionWidth ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.interactionWidth),\n ...defaultEdgeOptions ?? {}\n };\n return Object.assign(existingEdge ?? initialState, edge, { id: edge.id.toString() });\n}\nfunction getConnectedElements(nodeOrId, nodes, edges, dir) {\n const id2 = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const connectedIds = /* @__PURE__ */ new Set();\n const origin = dir === \"source\" ? \"target\" : \"source\";\n for (const edge of edges) {\n if (edge[origin] === id2) {\n connectedIds.add(edge[dir]);\n }\n }\n return nodes.filter((n) => connectedIds.has(n.id));\n}\nfunction getOutgoers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"target\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const outgoers = elements.filter((el) => isEdge(el) && el.source === nodeId);\n return outgoers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.target));\n}\nfunction getIncomers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"source\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const incomers = elements.filter((el) => isEdge(el) && el.target === nodeId);\n return incomers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.source));\n}\nfunction getEdgeId({ source, sourceHandle, target, targetHandle }) {\n return `vueflow__edge-${source}${sourceHandle ?? \"\"}-${target}${targetHandle ?? \"\"}`;\n}\nfunction connectionExists(edge, elements) {\n return elements.some(\n (el) => isEdge(el) && el.source === edge.source && el.target === edge.target && (el.sourceHandle === edge.sourceHandle || !el.sourceHandle && !edge.sourceHandle) && (el.targetHandle === edge.targetHandle || !el.targetHandle && !edge.targetHandle)\n );\n}\nfunction addEdge(edgeParams, elements, defaults) {\n if (!edgeParams.source || !edgeParams.target) {\n warn(\"Can't create edge. An edge needs a source and a target.\");\n return elements;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaults);\n if (connectionExists(edge, elements)) {\n return elements;\n }\n elements.push(edge);\n return elements;\n}\nfunction updateEdge(oldEdge, newConnection, elements) {\n if (!newConnection.source || !newConnection.target) {\n warn(\"Can't create new edge. An edge needs a source and a target.\");\n return elements;\n }\n const foundEdge = elements.find((e) => isEdge(e) && e.id === oldEdge.id);\n if (!foundEdge) {\n warn(`The old edge with id=${oldEdge.id} does not exist.`);\n return elements;\n }\n const edge = {\n ...oldEdge,\n id: getEdgeId(newConnection),\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n elements.splice(elements.indexOf(foundEdge), 1, edge);\n return elements.filter((e) => e.id !== oldEdge.id);\n}\nfunction rendererPointToPoint({ x, y }, { x: tx, y: ty, zoom: tScale }) {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty\n };\n}\nfunction pointToRendererPoint({ x, y }, { x: tx, y: ty, zoom: tScale }, snapToGrid = false, snapGrid = [1, 1]) {\n const position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale\n };\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n}\nfunction getBoundsOfBoxes(box1, box2) {\n return {\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2)\n };\n}\nfunction rectToBox({ x, y, width, height }) {\n return {\n x,\n y,\n x2: x + width,\n y2: y + height\n };\n}\nfunction boxToRect({ x, y, x2, y2 }) {\n return {\n x,\n y,\n width: x2 - x,\n height: y2 - y\n };\n}\nfunction getBoundsofRects(rect1, rect2) {\n return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n}\nfunction getRectOfNodes(nodes) {\n let box = {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY,\n x2: Number.NEGATIVE_INFINITY,\n y2: Number.NEGATIVE_INFINITY\n };\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n box = getBoundsOfBoxes(\n box,\n rectToBox({\n ...node.computedPosition,\n ...node.dimensions\n })\n );\n }\n return boxToRect(box);\n}\nfunction getNodesInside(nodes, rect, viewport = { x: 0, y: 0, zoom: 1 }, partially = false, excludeNonSelectableNodes = false) {\n const paneRect = {\n ...pointToRendererPoint(rect, viewport),\n width: rect.width / viewport.zoom,\n height: rect.height / viewport.zoom\n };\n const visibleNodes = [];\n for (const node of nodes) {\n const { dimensions, selectable = true, hidden = false } = node;\n const width = dimensions.width ?? node.width ?? null;\n const height = dimensions.height ?? node.height ?? null;\n if (excludeNonSelectableNodes && !selectable || hidden) {\n continue;\n }\n const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));\n const notInitialized = width === null || height === null;\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible = notInitialized || partiallyVisible || overlappingArea >= area;\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n return visibleNodes;\n}\nfunction getConnectedEdges(nodesOrId, edges) {\n const nodeIds = /* @__PURE__ */ new Set();\n if (typeof nodesOrId === \"string\") {\n nodeIds.add(nodesOrId);\n } else if (nodesOrId.length >= 1) {\n for (const n of nodesOrId) {\n nodeIds.add(n.id);\n }\n }\n return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target));\n}\nfunction getTransformForBounds(bounds, width, height, minZoom, maxZoom, padding = 0.1, offset = { x: 0, y: 0 }) {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom2 = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom2, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom + (offset.x ?? 0);\n const y = height / 2 - boundsCenterY * clampedZoom + (offset.y ?? 0);\n return { x, y, zoom: clampedZoom };\n}\nfunction getXYZPos(parentPos, computedPosition) {\n return {\n x: computedPosition.x + parentPos.x,\n y: computedPosition.y + parentPos.y,\n z: (parentPos.z > computedPosition.z ? parentPos.z : computedPosition.z) + 1\n };\n}\nfunction isParentSelected(node, findNode) {\n if (!node.parentNode) {\n return false;\n }\n const parent = findNode(node.parentNode);\n if (!parent) {\n return false;\n }\n if (parent.selected) {\n return true;\n }\n return isParentSelected(parent, findNode);\n}\nfunction getMarkerId(marker, vueFlowId) {\n if (typeof marker === \"undefined\") {\n return \"\";\n }\n if (typeof marker === \"string\") {\n return marker;\n }\n const idPrefix = vueFlowId ? `${vueFlowId}__` : \"\";\n return `${idPrefix}${Object.keys(marker).sort().map((key) => `${key}=${marker[key]}`).join(\"&\")}`;\n}\nfunction calcAutoPanVelocity(value, min, max) {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, min) / min;\n }\n if (value > max) {\n return -clamp(Math.abs(value - max), 1, min) / min;\n }\n return 0;\n}\nfunction calcAutoPan(pos, bounds, speed = 15, distance2 = 40) {\n const xMovement = calcAutoPanVelocity(pos.x, distance2, bounds.width - distance2) * speed;\n const yMovement = calcAutoPanVelocity(pos.y, distance2, bounds.height - distance2) * speed;\n return [xMovement, yMovement];\n}\nfunction handleParentExpand(updateItem, parent) {\n if (parent) {\n const extendWidth = updateItem.position.x + updateItem.dimensions.width - parent.dimensions.width;\n const extendHeight = updateItem.position.y + updateItem.dimensions.height - parent.dimensions.height;\n if (extendWidth > 0 || extendHeight > 0 || updateItem.position.x < 0 || updateItem.position.y < 0) {\n let parentStyles = {};\n if (typeof parent.style === \"function\") {\n parentStyles = { ...parent.style(parent) };\n } else if (parent.style) {\n parentStyles = { ...parent.style };\n }\n parentStyles.width = parentStyles.width ?? `${parent.dimensions.width}px`;\n parentStyles.height = parentStyles.height ?? `${parent.dimensions.height}px`;\n if (extendWidth > 0) {\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + extendWidth}px`;\n } else {\n parentStyles.width += extendWidth;\n }\n }\n if (extendHeight > 0) {\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + extendHeight}px`;\n } else {\n parentStyles.height += extendHeight;\n }\n }\n if (updateItem.position.x < 0) {\n const xDiff = Math.abs(updateItem.position.x);\n parent.position.x = parent.position.x - xDiff;\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + xDiff}px`;\n } else {\n parentStyles.width += xDiff;\n }\n updateItem.position.x = 0;\n }\n if (updateItem.position.y < 0) {\n const yDiff = Math.abs(updateItem.position.y);\n parent.position.y = parent.position.y - yDiff;\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + yDiff}px`;\n } else {\n parentStyles.height += yDiff;\n }\n updateItem.position.y = 0;\n }\n parent.dimensions.width = Number(parentStyles.width.toString().replace(\"px\", \"\"));\n parent.dimensions.height = Number(parentStyles.height.toString().replace(\"px\", \"\"));\n if (typeof parent.style === \"function\") {\n parent.style = (p) => {\n const styleFunc = parent.style;\n return {\n ...styleFunc(p),\n ...parentStyles\n };\n };\n } else {\n parent.style = {\n ...parent.style,\n ...parentStyles\n };\n }\n }\n }\n}\nfunction applyChanges(changes, elements) {\n var _a, _b;\n const addRemoveChanges = changes.filter((c) => c.type === \"add\" || c.type === \"remove\");\n for (const change of addRemoveChanges) {\n if (change.type === \"add\") {\n const index = elements.findIndex((el) => el.id === change.item.id);\n if (index === -1) {\n elements.push(change.item);\n }\n } else if (change.type === \"remove\") {\n const index = elements.findIndex((el) => el.id === change.id);\n if (index !== -1) {\n elements.splice(index, 1);\n }\n }\n }\n const elementIds = elements.map((el) => el.id);\n for (const element of elements) {\n for (const currentChange of changes) {\n if (currentChange.id !== element.id) {\n continue;\n }\n switch (currentChange.type) {\n case \"select\":\n element.selected = currentChange.selected;\n break;\n case \"position\":\n if (isGraphNode(element)) {\n if (typeof currentChange.position !== \"undefined\") {\n element.position = currentChange.position;\n }\n if (typeof currentChange.dragging !== \"undefined\") {\n element.dragging = currentChange.dragging;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n handleParentExpand(element, parent);\n }\n }\n }\n break;\n case \"dimensions\":\n if (isGraphNode(element)) {\n if (typeof currentChange.dimensions !== \"undefined\") {\n element.dimensions = currentChange.dimensions;\n }\n if (typeof currentChange.updateStyle !== \"undefined\" && currentChange.updateStyle) {\n element.style = {\n ...element.style || {},\n width: `${(_a = currentChange.dimensions) == null ? void 0 : _a.width}px`,\n height: `${(_b = currentChange.dimensions) == null ? void 0 : _b.height}px`\n };\n }\n if (typeof currentChange.resizing !== \"undefined\") {\n element.resizing = currentChange.resizing;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n const parentInit = !!parent.dimensions.width && !!parent.dimensions.height;\n if (!parentInit) {\n nextTick(() => {\n handleParentExpand(element, parent);\n });\n } else {\n handleParentExpand(element, parent);\n }\n }\n }\n }\n break;\n }\n }\n }\n return elements;\n}\nfunction applyEdgeChanges(changes, edges) {\n return applyChanges(changes, edges);\n}\nfunction applyNodeChanges(changes, nodes) {\n return applyChanges(changes, nodes);\n}\nfunction createSelectionChange(id2, selected) {\n return {\n id: id2,\n type: \"select\",\n selected\n };\n}\nfunction createAdditionChange(item) {\n return {\n item,\n type: \"add\"\n };\n}\nfunction createNodeRemoveChange(id2) {\n return {\n id: id2,\n type: \"remove\"\n };\n}\nfunction createEdgeRemoveChange(id2, source, target, sourceHandle, targetHandle) {\n return {\n id: id2,\n source,\n target,\n sourceHandle: sourceHandle || null,\n targetHandle: targetHandle || null,\n type: \"remove\"\n };\n}\nfunction getSelectionChanges(items, selectedIds = /* @__PURE__ */ new Set(), mutateItem = false) {\n const changes = [];\n for (const [id2, item] of items) {\n const willBeSelected = selectedIds.has(id2);\n if (!(item.selected === void 0 && !willBeSelected) && item.selected !== willBeSelected) {\n if (mutateItem) {\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n return changes;\n}\nfunction createExtendedEventHook(defaultHandler) {\n const fns = /* @__PURE__ */ new Set();\n let hasDefaultHandler = false;\n const hasListeners = () => fns.size > 0;\n if (defaultHandler) {\n hasDefaultHandler = true;\n fns.add(defaultHandler);\n }\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n if (defaultHandler && hasDefaultHandler) {\n fns.delete(defaultHandler);\n }\n fns.add(fn);\n const offFn = () => {\n off(fn);\n if (defaultHandler && hasDefaultHandler) {\n fns.add(defaultHandler);\n }\n };\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger,\n hasListeners,\n fns\n };\n}\nfunction hasSelector(target, selector2, node) {\n let current = target;\n do {\n if (current && current.matches(selector2)) {\n return true;\n } else if (current === node) {\n return false;\n }\n current = current.parentElement;\n } while (current);\n return false;\n}\nfunction getDragItems(nodes, nodesDraggable, mousePos, findNode, nodeId) {\n var _a, _b;\n const dragItems = [];\n for (const node of nodes) {\n if ((node.selected || node.id === nodeId) && (!node.parentNode || !isParentSelected(node, findNode)) && (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\")) {\n dragItems.push(\n markRaw({\n id: node.id,\n position: node.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - ((_a = node.computedPosition) == null ? void 0 : _a.x) || 0,\n y: mousePos.y - ((_b = node.computedPosition) == null ? void 0 : _b.y) || 0\n },\n from: node.computedPosition,\n extent: node.extent,\n parentNode: node.parentNode,\n dimensions: node.dimensions,\n expandParent: node.expandParent\n })\n );\n }\n }\n return dragItems;\n}\nfunction getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n}) {\n const extendedDragItems = [];\n for (const dragItem of dragItems) {\n const node = findNode(dragItem.id);\n if (node) {\n extendedDragItems.push(node);\n }\n }\n return [id2 ? extendedDragItems.find((n) => n.id === id2) : extendedDragItems[0], extendedDragItems];\n}\nfunction getExtentPadding(padding) {\n if (Array.isArray(padding)) {\n switch (padding.length) {\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n case 2:\n return [padding[0], padding[1], padding[0], padding[1]];\n case 3:\n return [padding[0], padding[1], padding[2], padding[1]];\n case 4:\n return padding;\n default:\n return [0, 0, 0, 0];\n }\n }\n return [padding, padding, padding, padding];\n}\nfunction getParentExtent(currentExtent, node, parent) {\n const [top, right, bottom, left] = typeof currentExtent !== \"string\" ? getExtentPadding(currentExtent.padding) : [0, 0, 0, 0];\n if (parent && typeof parent.computedPosition.x !== \"undefined\" && typeof parent.computedPosition.y !== \"undefined\" && typeof parent.dimensions.width !== \"undefined\" && typeof parent.dimensions.height !== \"undefined\") {\n return [\n [parent.computedPosition.x + left, parent.computedPosition.y + top],\n [\n parent.computedPosition.x + parent.dimensions.width - right,\n parent.computedPosition.y + parent.dimensions.height - bottom\n ]\n ];\n }\n return false;\n}\nfunction getExtent(item, triggerError, extent, parent) {\n let currentExtent = item.extent || extent;\n if ((currentExtent === \"parent\" || !Array.isArray(currentExtent) && (currentExtent == null ? void 0 : currentExtent.range) === \"parent\") && !item.expandParent) {\n if (item.parentNode && parent && item.dimensions.width && item.dimensions.height) {\n const parentExtent = getParentExtent(currentExtent, item, parent);\n if (parentExtent) {\n currentExtent = parentExtent;\n }\n } else {\n triggerError(new VueFlowError(ErrorCode.NODE_EXTENT_INVALID, item.id));\n currentExtent = extent;\n }\n } else if (Array.isArray(currentExtent)) {\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent[0][0] + parentX, currentExtent[0][1] + parentY],\n [currentExtent[1][0] + parentX, currentExtent[1][1] + parentY]\n ];\n } else if (currentExtent !== \"parent\" && (currentExtent == null ? void 0 : currentExtent.range) && Array.isArray(currentExtent.range)) {\n const [top, right, bottom, left] = getExtentPadding(currentExtent.padding);\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent.range[0][0] + parentX + left, currentExtent.range[0][1] + parentY + top],\n [currentExtent.range[1][0] + parentX - right, currentExtent.range[1][1] + parentY - bottom]\n ];\n }\n return currentExtent === \"parent\" ? [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ] : currentExtent;\n}\nfunction clampNodeExtent({ width, height }, extent) {\n return [extent[0], [extent[1][0] - (width || 0), extent[1][1] - (height || 0)]];\n}\nfunction calcNextPosition(node, nextPosition, triggerError, nodeExtent, parentNode) {\n const extent = clampNodeExtent(node.dimensions, getExtent(node, triggerError, nodeExtent, parentNode));\n const clampedPos = clampPosition(nextPosition, extent);\n return {\n position: {\n x: clampedPos.x - ((parentNode == null ? void 0 : parentNode.computedPosition.x) || 0),\n y: clampedPos.y - ((parentNode == null ? void 0 : parentNode.computedPosition.y) || 0)\n },\n computedPosition: clampedPos\n };\n}\nfunction getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) {\n const x = ((handle == null ? void 0 : handle.x) ?? 0) + node.computedPosition.x;\n const y = ((handle == null ? void 0 : handle.y) ?? 0) + node.computedPosition.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n if (center) {\n return { x: x + width / 2, y: y + height / 2 };\n }\n const position = (handle == null ? void 0 : handle.position) ?? fallbackPosition;\n switch (position) {\n case Position.Top:\n return { x: x + width / 2, y };\n case Position.Right:\n return { x: x + width, y: y + height / 2 };\n case Position.Bottom:\n return { x: x + width / 2, y: y + height };\n case Position.Left:\n return { x, y: y + height / 2 };\n }\n}\nfunction getEdgeHandle(bounds, handleId) {\n if (!bounds) {\n return null;\n }\n return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null;\n}\nfunction isEdgeVisible({\n sourcePos,\n targetPos,\n sourceWidth,\n sourceHeight,\n targetWidth,\n targetHeight,\n width,\n height,\n viewport\n}) {\n const edgeBox = {\n x: Math.min(sourcePos.x, targetPos.x),\n y: Math.min(sourcePos.y, targetPos.y),\n x2: Math.max(sourcePos.x + sourceWidth, targetPos.x + targetWidth),\n y2: Math.max(sourcePos.y + sourceHeight, targetPos.y + targetHeight)\n };\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n const viewBox = rectToBox({\n x: (0 - viewport.x) / viewport.zoom,\n y: (0 - viewport.y) / viewport.zoom,\n width: width / viewport.zoom,\n height: height / viewport.zoom\n });\n const xOverlap = Math.max(0, Math.min(viewBox.x2, edgeBox.x2) - Math.max(viewBox.x, edgeBox.x));\n const yOverlap = Math.max(0, Math.min(viewBox.y2, edgeBox.y2) - Math.max(viewBox.y, edgeBox.y));\n const overlappingArea = Math.ceil(xOverlap * yOverlap);\n return overlappingArea > 0;\n}\nfunction getEdgeZIndex(edge, findNode, elevateEdgesOnSelect = false) {\n const hasZIndex = typeof edge.zIndex === \"number\";\n let z = hasZIndex ? edge.zIndex : 0;\n const source = findNode(edge.source);\n const target = findNode(edge.target);\n if (!source || !target) {\n return 0;\n }\n if (elevateEdgesOnSelect) {\n z = hasZIndex ? edge.zIndex : Math.max(source.computedPosition.z || 0, target.computedPosition.z || 0);\n }\n return z;\n}\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[\"MISSING_STYLES\"] = \"MISSING_STYLES\";\n ErrorCode2[\"MISSING_VIEWPORT_DIMENSIONS\"] = \"MISSING_VIEWPORT_DIMENSIONS\";\n ErrorCode2[\"NODE_INVALID\"] = \"NODE_INVALID\";\n ErrorCode2[\"NODE_NOT_FOUND\"] = \"NODE_NOT_FOUND\";\n ErrorCode2[\"NODE_MISSING_PARENT\"] = \"NODE_MISSING_PARENT\";\n ErrorCode2[\"NODE_TYPE_MISSING\"] = \"NODE_TYPE_MISSING\";\n ErrorCode2[\"NODE_EXTENT_INVALID\"] = \"NODE_EXTENT_INVALID\";\n ErrorCode2[\"EDGE_INVALID\"] = \"EDGE_INVALID\";\n ErrorCode2[\"EDGE_NOT_FOUND\"] = \"EDGE_NOT_FOUND\";\n ErrorCode2[\"EDGE_SOURCE_MISSING\"] = \"EDGE_SOURCE_MISSING\";\n ErrorCode2[\"EDGE_TARGET_MISSING\"] = \"EDGE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_TYPE_MISSING\"] = \"EDGE_TYPE_MISSING\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_SAME\"] = \"EDGE_SOURCE_TARGET_SAME\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_MISSING\"] = \"EDGE_SOURCE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_ORPHANED\"] = \"EDGE_ORPHANED\";\n ErrorCode2[\"USEVUEFLOW_OPTIONS\"] = \"USEVUEFLOW_OPTIONS\";\n return ErrorCode2;\n})(ErrorCode || {});\nconst messages = {\n [\n \"MISSING_STYLES\"\n /* MISSING_STYLES */\n ]: () => `It seems that you haven't loaded the necessary styles. Please import '@vue-flow/core/dist/style.css' to ensure that the graph is rendered correctly`,\n [\n \"MISSING_VIEWPORT_DIMENSIONS\"\n /* MISSING_VIEWPORT_DIMENSIONS */\n ]: () => \"The Vue Flow parent container needs a width and a height to render the graph\",\n [\n \"NODE_INVALID\"\n /* NODE_INVALID */\n ]: (id2) => `Node is invalid\nNode: ${id2}`,\n [\n \"NODE_NOT_FOUND\"\n /* NODE_NOT_FOUND */\n ]: (id2) => `Node not found\nNode: ${id2}`,\n [\n \"NODE_MISSING_PARENT\"\n /* NODE_MISSING_PARENT */\n ]: (id2, parentId) => `Node is missing a parent\nNode: ${id2}\nParent: ${parentId}`,\n [\n \"NODE_TYPE_MISSING\"\n /* NODE_TYPE_MISSING */\n ]: (type) => `Node type is missing\nType: ${type}`,\n [\n \"NODE_EXTENT_INVALID\"\n /* NODE_EXTENT_INVALID */\n ]: (id2) => `Only child nodes can use a parent extent\nNode: ${id2}`,\n [\n \"EDGE_INVALID\"\n /* EDGE_INVALID */\n ]: (id2) => `An edge needs a source and a target\nEdge: ${id2}`,\n [\n \"EDGE_SOURCE_MISSING\"\n /* EDGE_SOURCE_MISSING */\n ]: (id2, source) => `Edge source is missing\nEdge: ${id2} \nSource: ${source}`,\n [\n \"EDGE_TARGET_MISSING\"\n /* EDGE_TARGET_MISSING */\n ]: (id2, target) => `Edge target is missing\nEdge: ${id2} \nTarget: ${target}`,\n [\n \"EDGE_TYPE_MISSING\"\n /* EDGE_TYPE_MISSING */\n ]: (type) => `Edge type is missing\nType: ${type}`,\n [\n \"EDGE_SOURCE_TARGET_SAME\"\n /* EDGE_SOURCE_TARGET_SAME */\n ]: (id2, source, target) => `Edge source and target are the same\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_SOURCE_TARGET_MISSING\"\n /* EDGE_SOURCE_TARGET_MISSING */\n ]: (id2, source, target) => `Edge source or target is missing\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_ORPHANED\"\n /* EDGE_ORPHANED */\n ]: (id2) => `Edge was orphaned (suddenly missing source or target) and has been removed\nEdge: ${id2}`,\n [\n \"EDGE_NOT_FOUND\"\n /* EDGE_NOT_FOUND */\n ]: (id2) => `Edge not found\nEdge: ${id2}`,\n // deprecation errors\n [\n \"USEVUEFLOW_OPTIONS\"\n /* USEVUEFLOW_OPTIONS */\n ]: () => `The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead`\n};\nclass VueFlowError extends Error {\n constructor(code, ...args) {\n var _a;\n super((_a = messages[code]) == null ? void 0 : _a.call(messages, ...args));\n this.name = \"VueFlowError\";\n this.code = code;\n this.args = args;\n }\n}\nfunction isErrorOfType(error, code) {\n return error.code === code;\n}\nfunction isMouseEvent(event) {\n return \"clientX\" in event;\n}\nfunction isUseDragEvent(event) {\n return \"sourceEvent\" in event;\n}\nfunction getEventPosition(event, bounds) {\n const isMouse = isMouseEvent(event);\n let evtX;\n let evtY;\n if (isMouse) {\n evtX = event.clientX;\n evtY = event.clientY;\n } else if (\"touches\" in event && event.touches.length > 0) {\n evtX = event.touches[0].clientX;\n evtY = event.touches[0].clientY;\n } else if (\"changedTouches\" in event && event.changedTouches.length > 0) {\n evtX = event.changedTouches[0].clientX;\n evtY = event.changedTouches[0].clientY;\n } else {\n evtX = 0;\n evtY = 0;\n }\n return {\n x: evtX - ((bounds == null ? void 0 : bounds.left) ?? 0),\n y: evtY - ((bounds == null ? void 0 : bounds.top) ?? 0)\n };\n}\nconst isMacOs = () => {\n var _a;\n return typeof navigator !== \"undefined\" && ((_a = navigator == null ? void 0 : navigator.userAgent) == null ? void 0 : _a.indexOf(\"Mac\")) >= 0;\n};\nfunction getNodeDimensions(node) {\n var _a, _b;\n return {\n width: ((_a = node.dimensions) == null ? void 0 : _a.width) ?? node.width ?? 0,\n height: ((_b = node.dimensions) == null ? void 0 : _b.height) ?? node.height ?? 0\n };\n}\nfunction snapPosition(position, snapGrid = [1, 1]) {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1])\n };\n}\nconst alwaysValid$1 = () => true;\nfunction resetRecentHandle(handleDomNode) {\n handleDomNode == null ? void 0 : handleDomNode.classList.remove(\"valid\", \"connecting\", \"vue-flow__handle-valid\", \"vue-flow__handle-connecting\");\n}\nfunction getNodesWithinDistance(position, nodeLookup, distance2) {\n const nodes = [];\n const rect = {\n x: position.x - distance2,\n y: position.y - distance2,\n width: distance2 * 2,\n height: distance2 * 2\n };\n for (const node of nodeLookup.values()) {\n if (getOverlappingArea(rect, nodeToRect(node)) > 0) {\n nodes.push(node);\n }\n }\n return nodes;\n}\nconst ADDITIONAL_DISTANCE = 250;\nfunction getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {\n var _a, _b;\n let closestHandles = [];\n let minDistance = Number.POSITIVE_INFINITY;\n const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);\n for (const node of closeNodes) {\n const allHandles = [...((_a = node.handleBounds) == null ? void 0 : _a.source) ?? [], ...((_b = node.handleBounds) == null ? void 0 : _b.target) ?? []];\n for (const handle of allHandles) {\n if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {\n continue;\n }\n const { x, y } = getHandlePosition(node, handle, handle.position, true);\n const distance2 = Math.sqrt((x - position.x) ** 2 + (y - position.y) ** 2);\n if (distance2 > connectionRadius) {\n continue;\n }\n if (distance2 < minDistance) {\n closestHandles = [{ ...handle, x, y }];\n minDistance = distance2;\n } else if (distance2 === minDistance) {\n closestHandles.push({ ...handle, x, y });\n }\n }\n }\n if (!closestHandles.length) {\n return null;\n }\n if (closestHandles.length > 1) {\n const oppositeHandleType = fromHandle.type === \"source\" ? \"target\" : \"source\";\n return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];\n }\n return closestHandles[0];\n}\nfunction isValidHandle(event, {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid$1\n}, edges, nodes, findNode) {\n const isTarget = fromType === \"target\";\n const handleDomNode = handle ? doc.querySelector(`.${lib}-flow__handle[data-id=\"${flowId}-${handle == null ? void 0 : handle.nodeId}-${handle == null ? void 0 : handle.id}-${handle == null ? void 0 : handle.type}\"]`) : null;\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n const handleToCheck = (handleBelow == null ? void 0 : handleBelow.classList.contains(`${lib}-flow__handle`)) ? handleBelow : handleDomNode;\n const result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n toHandle: null\n };\n if (handleToCheck) {\n const handleType = getHandleType(void 0, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute(\"data-nodeid\");\n const handleId = handleToCheck.getAttribute(\"data-handleid\");\n const connectable = handleToCheck.classList.contains(\"connectable\");\n const connectableEnd = handleToCheck.classList.contains(\"connectableend\");\n if (!handleNodeId || !handleType) {\n return result;\n }\n const connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId\n };\n result.connection = connection;\n const isConnectable = connectable && connectableEnd;\n const isValid = isConnectable && (connectionMode === ConnectionMode.Strict ? isTarget && handleType === \"source\" || !isTarget && handleType === \"target\" : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n result.isValid = isValid && isValidConnection(connection, {\n nodes,\n edges,\n sourceNode: findNode(fromNodeId),\n targetNode: findNode(handleNodeId)\n });\n result.toHandle = handle;\n }\n return result;\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"target\")) {\n return \"target\";\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"source\")) {\n return \"source\";\n }\n return null;\n}\nfunction getConnectionStatus(isInsideConnectionRadius, isHandleValid) {\n let connectionStatus = null;\n if (isHandleValid) {\n connectionStatus = \"valid\";\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = \"invalid\";\n }\n return connectionStatus;\n}\nfunction isConnectionValid(isInsideConnectionRadius, isHandleValid) {\n let isValid = null;\n if (isHandleValid) {\n isValid = true;\n } else if (isInsideConnectionRadius && !isHandleValid) {\n isValid = false;\n }\n return isValid;\n}\nfunction getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) {\n var _a, _b, _c;\n const node = nodeLookup.get(nodeId);\n if (!node) {\n return null;\n }\n const handles = connectionMode === ConnectionMode.Strict ? (_a = node.handleBounds) == null ? void 0 : _a[handleType] : [...((_b = node.handleBounds) == null ? void 0 : _b.source) ?? [], ...((_c = node.handleBounds) == null ? void 0 : _c.target) ?? []];\n const handle = (handleId ? handles == null ? void 0 : handles.find((h2) => h2.id === handleId) : handles == null ? void 0 : handles[0]) ?? null;\n return handle && withAbsolutePosition ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) } : handle;\n}\nconst oppositePosition = {\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top\n};\nconst productionEnvs = [\"production\", \"prod\"];\nfunction warn(message, ...args) {\n if (isDev()) {\n console.warn(`[Vue Flow]: ${message}`, ...args);\n }\n}\nfunction isDev() {\n return !productionEnvs.includes(process.env.NODE_ENV || \"\");\n}\nfunction getHandleBounds(type, nodeElement, nodeBounds, zoom2, nodeId) {\n const handles = nodeElement.querySelectorAll(`.vue-flow__handle.${type}`);\n if (!(handles == null ? void 0 : handles.length)) {\n return null;\n }\n return Array.from(handles).map((handle) => {\n const handleBounds = handle.getBoundingClientRect();\n return {\n id: handle.getAttribute(\"data-handleid\"),\n type,\n nodeId,\n position: handle.getAttribute(\"data-handlepos\"),\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n ...getDimensions(handle)\n };\n });\n}\nfunction handleNodeClick(node, multiSelectionActive, addSelectedNodes, removeSelectedNodes, nodesSelectionActive, unselect = false, nodeEl) {\n nodesSelectionActive.value = false;\n if (!node.selected) {\n addSelectedNodes([node]);\n } else if (unselect || node.selected && multiSelectionActive) {\n removeSelectedNodes([node]);\n nextTick(() => {\n nodeEl.blur();\n });\n }\n}\nfunction isDef(val) {\n const unrefVal = unref(val);\n return typeof unrefVal !== \"undefined\";\n}\nfunction addEdgeToStore(edgeParams, edges, triggerError, defaultEdgeOptions) {\n if (!edgeParams || !edgeParams.source || !edgeParams.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, (edgeParams == null ? void 0 : edgeParams.id) ?? `[ID UNKNOWN]`));\n return false;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = edgeParams;\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaultEdgeOptions);\n if (connectionExists(edge, edges)) {\n return false;\n }\n return edge;\n}\nfunction updateEdgeAction(edge, newConnection, prevEdge, shouldReplaceId, triggerError) {\n if (!newConnection.source || !newConnection.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n return false;\n }\n if (!prevEdge) {\n triggerError(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edge.id));\n return false;\n }\n const { id: id2, ...rest } = edge;\n return {\n ...rest,\n id: shouldReplaceId ? getEdgeId(newConnection) : id2,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n}\nfunction createGraphNodes(nodes, findNode, triggerError) {\n const parentNodes = {};\n const nextNodes = [];\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n if (!isNode(node)) {\n triggerError(\n new VueFlowError(ErrorCode.NODE_INVALID, node == null ? void 0 : node.id) || `[ID UNKNOWN|INDEX ${i}]`\n );\n continue;\n }\n const parsed = parseNode(node, findNode(node.id), node.parentNode);\n if (node.parentNode) {\n parentNodes[node.parentNode] = true;\n }\n nextNodes[i] = parsed;\n }\n for (const node of nextNodes) {\n const parentNode = findNode(node.parentNode) || nextNodes.find((n) => n.id === node.parentNode);\n if (node.parentNode && !parentNode) {\n triggerError(new VueFlowError(ErrorCode.NODE_MISSING_PARENT, node.id, node.parentNode));\n }\n if (node.parentNode || parentNodes[node.id]) {\n if (parentNodes[node.id]) {\n node.isParent = true;\n }\n if (parentNode) {\n parentNode.isParent = true;\n }\n }\n }\n return nextNodes;\n}\nfunction addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {\n let key = nodeId;\n const nodeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, nodeMap.set(connectionKey, connection));\n key = `${nodeId}-${type}`;\n const typeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, typeMap.set(connectionKey, connection));\n if (handleId) {\n key = `${nodeId}-${type}-${handleId}`;\n const handleMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, handleMap.set(connectionKey, connection));\n }\n}\nfunction updateConnectionLookup(connectionLookup, edgeLookup, edges) {\n connectionLookup.clear();\n for (const edge of edges) {\n const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge;\n const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle };\n const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`;\n const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`;\n addConnectionToLookup(\"source\", connection, targetKey, connectionLookup, sourceNode, sourceHandle);\n addConnectionToLookup(\"target\", connection, sourceKey, connectionLookup, targetNode, targetHandle);\n }\n}\nfunction handleConnectionChange(a, b, cb) {\n if (!cb) {\n return;\n }\n const diff = [];\n for (const key of a.keys()) {\n if (!b.has(key)) {\n diff.push(a.get(key));\n }\n }\n if (diff.length) {\n cb(diff);\n }\n}\nfunction areConnectionMapsEqual(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.size !== b.size) {\n return false;\n }\n if (!a.size && !b.size) {\n return true;\n }\n for (const key of a.keys()) {\n if (!b.has(key)) {\n return false;\n }\n }\n return true;\n}\nfunction areSetsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n}\nfunction createGraphEdges(nextEdges, isValidConnection, findNode, findEdge, onError, defaultEdgeOptions, nodes, edges) {\n const validEdges = [];\n for (const edgeOrConnection of nextEdges) {\n const edge = isEdge(edgeOrConnection) ? edgeOrConnection : addEdgeToStore(edgeOrConnection, edges, onError, defaultEdgeOptions);\n if (!edge) {\n continue;\n }\n const sourceNode = findNode(edge.source);\n const targetNode = findNode(edge.target);\n if (!sourceNode || !targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.id, edge.source, edge.target));\n continue;\n }\n if (!sourceNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.id, edge.source));\n continue;\n }\n if (!targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.id, edge.target));\n continue;\n }\n if (isValidConnection) {\n const isValid = isValidConnection(edge, {\n edges,\n nodes,\n sourceNode,\n targetNode\n });\n if (!isValid) {\n onError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n continue;\n }\n }\n const existingEdge = findEdge(edge.id);\n validEdges.push({\n ...parseEdge(edge, existingEdge, defaultEdgeOptions),\n sourceNode,\n targetNode\n });\n }\n return validEdges;\n}\nconst VueFlow = Symbol(\"vueFlow\");\nconst NodeId = Symbol(\"nodeId\");\nconst NodeRef = Symbol(\"nodeRef\");\nconst EdgeId = Symbol(\"edgeId\");\nconst EdgeRef = Symbol(\"edgeRef\");\nconst Slots = Symbol(\"slots\");\nfunction useDrag(params) {\n const {\n vueFlowRef,\n snapToGrid,\n snapGrid,\n noDragClassName,\n nodes,\n nodeExtent,\n nodeDragThreshold,\n viewport,\n autoPanOnNodeDrag,\n autoPanSpeed,\n nodesDraggable,\n panBy,\n findNode,\n multiSelectionActive,\n nodesSelectionActive,\n selectNodesOnDrag,\n removeSelectedElements,\n addSelectedNodes,\n updateNodePositions,\n emits\n } = useVueFlow();\n const { onStart, onDrag, onStop, onClick, el, disabled, id: id2, selectable, dragHandle } = params;\n const dragging = shallowRef(false);\n let dragItems = [];\n let dragHandler;\n let containerBounds = null;\n let lastPos = { x: void 0, y: void 0 };\n let mousePosition = { x: 0, y: 0 };\n let dragEvent = null;\n let dragStarted = false;\n let autoPanId = 0;\n let autoPanStarted = false;\n const getPointerPosition = useGetPointerPosition();\n const updateNodes = ({ x, y }) => {\n lastPos = { x, y };\n let hasChange = false;\n dragItems = dragItems.map((n) => {\n const nextPosition = { x: x - n.distance.x, y: y - n.distance.y };\n const { computedPosition } = calcNextPosition(\n n,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n n.parentNode ? findNode(n.parentNode) : void 0\n );\n hasChange = hasChange || n.position.x !== computedPosition.x || n.position.y !== computedPosition.y;\n n.position = computedPosition;\n return n;\n });\n if (!hasChange) {\n return;\n }\n updateNodePositions(dragItems, true, true);\n dragging.value = true;\n if (dragEvent) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onDrag({ event: dragEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const autoPan = () => {\n if (!containerBounds) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed.value);\n if (xMovement !== 0 || yMovement !== 0) {\n const nextPos = {\n x: (lastPos.x ?? 0) - xMovement / viewport.value.zoom,\n y: (lastPos.y ?? 0) - yMovement / viewport.value.zoom\n };\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(nextPos);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n };\n const startDrag = (event, nodeEl) => {\n dragStarted = true;\n const node = findNode(id2);\n if (!selectNodesOnDrag.value && !multiSelectionActive.value && node) {\n if (!node.selected) {\n removeSelectedElements();\n }\n }\n if (node && toValue$1(selectable) && selectNodesOnDrag.value) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedElements,\n nodesSelectionActive,\n false,\n nodeEl\n );\n }\n const pointerPos = getPointerPosition(event.sourceEvent);\n lastPos = pointerPos;\n dragItems = getDragItems(nodes.value, nodesDraggable.value, pointerPos, findNode, id2);\n if (dragItems.length) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStart({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const eventStart = (event, nodeEl) => {\n var _a;\n if (event.sourceEvent.type === \"touchmove\" && event.sourceEvent.touches.length > 1) {\n return;\n }\n if (nodeDragThreshold.value === 0) {\n startDrag(event, nodeEl);\n }\n lastPos = getPointerPosition(event.sourceEvent);\n containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n };\n const eventDrag = (event, nodeEl) => {\n const pointerPos = getPointerPosition(event.sourceEvent);\n if (!autoPanStarted && dragStarted && autoPanOnNodeDrag.value) {\n autoPanStarted = true;\n autoPan();\n }\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 > nodeDragThreshold.value) {\n startDrag(event, nodeEl);\n }\n }\n if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems.length && dragStarted) {\n dragEvent = event.sourceEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n updateNodes(pointerPos);\n }\n };\n const eventEnd = (event) => {\n let isClick = false;\n if (!dragStarted && !dragging.value && !multiSelectionActive.value) {\n const evt = event.sourceEvent;\n const pointerPos = getPointerPosition(evt);\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 !== 0 && distance2 <= nodeDragThreshold.value) {\n onClick == null ? void 0 : onClick(evt);\n isClick = true;\n }\n }\n if (dragItems.length && !isClick) {\n updateNodePositions(dragItems, false, false);\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStop({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n dragItems = [];\n dragging.value = false;\n autoPanStarted = false;\n dragStarted = false;\n lastPos = { x: void 0, y: void 0 };\n cancelAnimationFrame(autoPanId);\n };\n watch([() => toValue$1(disabled), el], ([isDisabled, nodeEl], _, onCleanup) => {\n if (nodeEl) {\n const selection2 = select(nodeEl);\n if (!isDisabled) {\n dragHandler = drag().on(\"start\", (event) => eventStart(event, nodeEl)).on(\"drag\", (event) => eventDrag(event, nodeEl)).on(\"end\", (event) => eventEnd(event)).filter((event) => {\n const target = event.target;\n const unrefDragHandle = toValue$1(dragHandle);\n return !event.button && (!noDragClassName.value || !hasSelector(target, `.${noDragClassName.value}`, nodeEl) && (!unrefDragHandle || hasSelector(target, unrefDragHandle, nodeEl)));\n });\n selection2.call(dragHandler);\n }\n onCleanup(() => {\n selection2.on(\".drag\", null);\n if (dragHandler) {\n dragHandler.on(\"start\", null);\n dragHandler.on(\"drag\", null);\n dragHandler.on(\"end\", null);\n }\n });\n }\n });\n return dragging;\n}\nfunction useEdge(id2) {\n const edgeId = id2 ?? inject(EdgeId, \"\");\n const edgeEl = inject(EdgeRef, ref(null));\n const { findEdge, emits } = useVueFlow();\n const edge = findEdge(edgeId);\n if (!edge) {\n emits.error(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edgeId));\n }\n return {\n id: edgeId,\n edge,\n edgeEl\n };\n}\nfunction createEdgeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n updateStart: createExtendedEventHook(),\n update: createExtendedEventHook(),\n updateEnd: createExtendedEventHook()\n };\n}\nfunction useEdgeHooks(edge, emits) {\n const edgeHooks = createEdgeHooks();\n edgeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.edgeDoubleClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.click.on((event) => {\n var _a, _b;\n emits.edgeClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.edgeMouseEnter(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.edgeMouseMove(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.edgeMouseLeave(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.edgeContextMenu(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateStart.on((event) => {\n var _a, _b;\n emits.edgeUpdateStart(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateStart) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.update.on((event) => {\n var _a, _b;\n emits.edgeUpdate(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.update) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateEnd.on((event) => {\n var _a, _b;\n emits.edgeUpdateEnd(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateEnd) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(edgeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useGetPointerPosition() {\n const { viewport, snapGrid, snapToGrid, vueFlowRef } = useVueFlow();\n return (event) => {\n var _a;\n const containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? { left: 0, top: 0 };\n const evt = isUseDragEvent(event) ? event.sourceEvent : event;\n const { x, y } = getEventPosition(evt, containerBounds);\n const pointerPos = pointToRendererPoint({ x, y }, viewport.value);\n const { x: xSnapped, y: ySnapped } = snapToGrid.value ? snapPosition(pointerPos, snapGrid.value) : pointerPos;\n return {\n xSnapped,\n ySnapped,\n ...pointerPos\n };\n };\n}\nfunction alwaysValid() {\n return true;\n}\nfunction useHandle({\n handleId,\n nodeId,\n type,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n}) {\n const {\n id: flowId,\n vueFlowRef,\n connectionMode,\n connectionRadius,\n connectOnClick,\n connectionClickStartHandle,\n nodesConnectable,\n autoPanOnConnect,\n autoPanSpeed,\n findNode,\n panBy,\n startConnection,\n updateConnection,\n endConnection,\n emits,\n viewport,\n edges,\n nodes,\n isValidConnection: isValidConnectionProp,\n nodeLookup\n } = useVueFlow();\n let connection = null;\n let isValid = false;\n let handleDomNode = null;\n function handlePointerDown(event) {\n var _a;\n const isTarget = toValue$1(type) === \"target\";\n const isMouseTriggered = isMouseEvent(event);\n const doc = getHostForElement(event.target);\n if (isMouseTriggered && event.button === 0 || !isMouseTriggered) {\n let onPointerMove = function(event2) {\n connectionPosition = getEventPosition(event2, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, viewport.value, false, [1, 1]),\n connectionRadius.value,\n nodeLookup.value,\n fromHandle\n );\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n const result = isValidHandle(\n event2,\n {\n handle: closestHandle,\n connectionMode: connectionMode.value,\n fromNodeId: toValue$1(nodeId),\n fromHandleId: toValue$1(handleId),\n fromType: isTarget ? \"target\" : \"source\",\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = isConnectionValid(!!closestHandle, result.isValid);\n const newConnection2 = {\n // from stays the same\n ...previousConnection,\n isValid,\n to: result.toHandle && isValid ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, viewport.value) : connectionPosition,\n toHandle: result.toHandle,\n toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],\n toNode: result.toHandle ? nodeLookup.value.get(result.toHandle.nodeId) : null\n };\n if (isValid && closestHandle && (previousConnection == null ? void 0 : previousConnection.toHandle) && newConnection2.toHandle && previousConnection.toHandle.type === newConnection2.toHandle.type && previousConnection.toHandle.nodeId === newConnection2.toHandle.nodeId && previousConnection.toHandle.id === newConnection2.toHandle.id && previousConnection.to.x === newConnection2.to.x && previousConnection.to.y === newConnection2.to.y) {\n return;\n }\n updateConnection(\n closestHandle && isValid ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y\n },\n viewport.value\n ) : connectionPosition,\n result.toHandle,\n getConnectionStatus(!!closestHandle, isValid)\n );\n previousConnection = newConnection2;\n if (!closestHandle && !isValid && !handleDomNode) {\n return resetRecentHandle(prevActiveHandle);\n }\n if (connection && connection.source !== connection.target && handleDomNode) {\n resetRecentHandle(prevActiveHandle);\n prevActiveHandle = handleDomNode;\n handleDomNode.classList.add(\"connecting\", \"vue-flow__handle-connecting\");\n handleDomNode.classList.toggle(\"valid\", !!isValid);\n handleDomNode.classList.toggle(\"vue-flow__handle-valid\", !!isValid);\n }\n }, onPointerUp = function(event2) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n if (!onEdgeUpdate) {\n emits.connect(connection);\n } else {\n onEdgeUpdate(event2, connection);\n }\n }\n emits.connectEnd(event2);\n if (edgeUpdaterType) {\n onEdgeUpdateEnd == null ? void 0 : onEdgeUpdateEnd(event2);\n }\n resetRecentHandle(prevActiveHandle);\n cancelAnimationFrame(autoPanId);\n endConnection(event2);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n doc.removeEventListener(\"mousemove\", onPointerMove);\n doc.removeEventListener(\"mouseup\", onPointerUp);\n doc.removeEventListener(\"touchmove\", onPointerMove);\n doc.removeEventListener(\"touchend\", onPointerUp);\n };\n const node = findNode(toValue$1(nodeId));\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n let closestHandle;\n let autoPanId = 0;\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc == null ? void 0 : doc.elementFromPoint(x, y);\n const handleType = getHandleType(toValue$1(edgeUpdaterType), clickedHandle);\n const containerBounds = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!containerBounds || !handleType) {\n return;\n }\n const fromHandleInternal = getHandle(toValue$1(nodeId), handleType, toValue$1(handleId), nodeLookup.value, connectionMode.value);\n if (!fromHandleInternal) {\n return;\n }\n let prevActiveHandle;\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n const autoPan = () => {\n if (!autoPanOnConnect.value) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(connectionPosition, containerBounds, autoPanSpeed.value);\n panBy({ x: xMovement, y: yMovement });\n autoPanId = requestAnimationFrame(autoPan);\n };\n const fromHandle = {\n ...fromHandleInternal,\n nodeId: toValue$1(nodeId),\n type: handleType,\n position: fromHandleInternal.position\n };\n const fromNodeInternal = nodeLookup.value.get(toValue$1(nodeId));\n const from = getHandlePosition(fromNodeInternal, fromHandle, Position.Left, true);\n const newConnection = {\n inProgress: true,\n isValid: null,\n from,\n fromHandle,\n fromPosition: fromHandle.position,\n fromNode: fromNodeInternal,\n to: connectionPosition,\n toHandle: null,\n toPosition: oppositePosition[fromHandle.position],\n toNode: null\n };\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: handleType,\n position: (clickedHandle == null ? void 0 : clickedHandle.getAttribute(\"data-handlepos\")) || Position.Top,\n ...connectionPosition\n },\n {\n x: x - containerBounds.left,\n y: y - containerBounds.top\n }\n );\n emits.connectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId), handleType });\n let previousConnection = newConnection;\n doc.addEventListener(\"mousemove\", onPointerMove);\n doc.addEventListener(\"mouseup\", onPointerUp);\n doc.addEventListener(\"touchmove\", onPointerMove);\n doc.addEventListener(\"touchend\", onPointerUp);\n }\n }\n function handleClick(event) {\n var _a, _b;\n if (!connectOnClick.value) {\n return;\n }\n const isTarget = toValue$1(type) === \"target\";\n if (!connectionClickStartHandle.value) {\n emits.clickConnectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId) });\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n type: toValue$1(type),\n id: toValue$1(handleId),\n position: Position.Top,\n ...getEventPosition(event)\n },\n void 0,\n true\n );\n return;\n }\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n const node = findNode(toValue$1(nodeId));\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n if (node && (typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable) === false) {\n return;\n }\n const doc = getHostForElement(event.target);\n const result = isValidHandle(\n event,\n {\n handle: {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: toValue$1(type),\n position: Position.Top,\n ...getEventPosition(event)\n },\n connectionMode: connectionMode.value,\n fromNodeId: connectionClickStartHandle.value.nodeId,\n fromHandleId: connectionClickStartHandle.value.id ?? null,\n fromType: connectionClickStartHandle.value.type,\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n const isOwnHandle = ((_a = result.connection) == null ? void 0 : _a.source) === ((_b = result.connection) == null ? void 0 : _b.target);\n if (result.isValid && result.connection && !isOwnHandle) {\n emits.connect(result.connection);\n }\n emits.clickConnectEnd(event);\n endConnection(event, true);\n }\n return {\n handlePointerDown,\n handleClick\n };\n}\nfunction useNodeId() {\n return inject(NodeId, \"\");\n}\nfunction useNode(id2) {\n const nodeId = id2 ?? useNodeId() ?? \"\";\n const nodeEl = inject(NodeRef, ref(null));\n const { findNode, edges, emits } = useVueFlow();\n const node = findNode(nodeId);\n if (!node) {\n emits.error(new VueFlowError(ErrorCode.NODE_NOT_FOUND, nodeId));\n }\n return {\n id: nodeId,\n nodeEl,\n node,\n parentNode: computed(() => findNode(node.parentNode)),\n connectedEdges: computed(() => getConnectedEdges([node], edges.value))\n };\n}\nfunction createNodeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n dragStart: createExtendedEventHook(),\n drag: createExtendedEventHook(),\n dragStop: createExtendedEventHook()\n };\n}\nfunction useNodeHooks(node, emits) {\n const nodeHooks = createNodeHooks();\n nodeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.nodeDoubleClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.click.on((event) => {\n var _a, _b;\n emits.nodeClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.nodeMouseEnter(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.nodeMouseMove(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.nodeMouseLeave(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.nodeContextMenu(event);\n (_b = (_a = node.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStart.on((event) => {\n var _a, _b;\n emits.nodeDragStart(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStart) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.drag.on((event) => {\n var _a, _b;\n emits.nodeDrag(event);\n (_b = (_a = node.events) == null ? void 0 : _a.drag) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStop.on((event) => {\n var _a, _b;\n emits.nodeDragStop(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStop) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(nodeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useUpdateNodePositions() {\n const { getSelectedNodes, nodeExtent, updateNodePositions, findNode, snapGrid, snapToGrid, nodesDraggable, emits } = useVueFlow();\n return (positionDiff, isShiftPressed = false) => {\n const xVelo = snapToGrid.value ? snapGrid.value[0] : 5;\n const yVelo = snapToGrid.value ? snapGrid.value[1] : 5;\n const factor = isShiftPressed ? 4 : 1;\n const positionDiffX = positionDiff.x * xVelo * factor;\n const positionDiffY = positionDiff.y * yVelo * factor;\n const nodeUpdates = [];\n for (const node of getSelectedNodes.value) {\n if (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\") {\n const nextPosition = { x: node.computedPosition.x + positionDiffX, y: node.computedPosition.y + positionDiffY };\n const { computedPosition } = calcNextPosition(\n node,\n nextPosition,\n emits.error,\n nodeExtent.value,\n node.parentNode ? findNode(node.parentNode) : void 0\n );\n nodeUpdates.push({\n id: node.id,\n position: computedPosition,\n from: node.position,\n distance: { x: positionDiff.x, y: positionDiff.y },\n dimensions: node.dimensions\n });\n }\n }\n updateNodePositions(nodeUpdates, true, false);\n };\n}\nconst DEFAULT_PADDING = 0.1;\nconst defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\nfunction noop() {\n warn(\"Viewport not initialized yet.\");\n return Promise.resolve(false);\n}\nconst initialViewportHelper = {\n zoomIn: noop,\n zoomOut: noop,\n zoomTo: noop,\n fitView: noop,\n setCenter: noop,\n fitBounds: noop,\n project: (position) => position,\n screenToFlowCoordinate: (position) => position,\n flowToScreenCoordinate: (position) => position,\n setViewport: noop,\n setTransform: noop,\n getViewport: () => ({ x: 0, y: 0, zoom: 1 }),\n getTransform: () => ({ x: 0, y: 0, zoom: 1 }),\n viewportInitialized: false\n};\nfunction useViewportHelper(state) {\n function zoom2(scale, transitionOptions) {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleBy(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n scale\n );\n } else {\n resolve(false);\n }\n });\n }\n function transformViewport(x, y, zoom22, transitionOptions) {\n return new Promise((resolve) => {\n var _a;\n const { x: clampedX, y: clampedY } = clampPosition({ x: -x, y: -y }, state.translateExtent);\n const nextTransform = identity.translate(-clampedX, -clampedY).scale(zoom22);\n if (state.d3Selection && state.d3Zoom) {\n (_a = state.d3Zoom) == null ? void 0 : _a.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).transform(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n nextTransform\n );\n } else {\n resolve(false);\n }\n });\n }\n return computed(() => {\n const isInitialized = state.d3Zoom && state.d3Selection && state.dimensions.width && state.dimensions.height;\n if (!isInitialized) {\n return initialViewportHelper;\n }\n return {\n viewportInitialized: true,\n // todo: allow passing scale as option\n zoomIn: (options) => {\n return zoom2(1.2, options);\n },\n zoomOut: (options) => {\n return zoom2(1 / 1.2, options);\n },\n zoomTo: (zoomLevel, options) => {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((options == null ? void 0 : options.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleTo(\n getD3Transition(state.d3Selection, options == null ? void 0 : options.duration, options == null ? void 0 : options.ease, () => {\n resolve(true);\n }),\n zoomLevel\n );\n } else {\n resolve(false);\n }\n });\n },\n setViewport: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n setTransform: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n getViewport: () => ({\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n }),\n getTransform: () => {\n return {\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n };\n },\n fitView: (options = {\n padding: DEFAULT_PADDING,\n includeHiddenNodes: false,\n duration: 0\n }) => {\n var _a, _b;\n const nodesToFit = [];\n for (const node of state.nodes) {\n const isVisible = node.dimensions.width && node.dimensions.height && ((options == null ? void 0 : options.includeHiddenNodes) || !node.hidden);\n if (isVisible) {\n if (!((_a = options.nodes) == null ? void 0 : _a.length) || ((_b = options.nodes) == null ? void 0 : _b.length) && options.nodes.includes(node.id)) {\n nodesToFit.push(node);\n }\n }\n }\n if (!nodesToFit.length) {\n return Promise.resolve(false);\n }\n const bounds = getRectOfNodes(nodesToFit);\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n options.minZoom ?? state.minZoom,\n options.maxZoom ?? state.maxZoom,\n options.padding ?? DEFAULT_PADDING,\n options.offset\n );\n return transformViewport(x, y, zoom22, options);\n },\n setCenter: (x, y, options) => {\n const nextZoom = typeof (options == null ? void 0 : options.zoom) !== \"undefined\" ? options.zoom : state.maxZoom;\n const centerX = state.dimensions.width / 2 - x * nextZoom;\n const centerY = state.dimensions.height / 2 - y * nextZoom;\n return transformViewport(centerX, centerY, nextZoom, options);\n },\n fitBounds: (bounds, options = { padding: DEFAULT_PADDING }) => {\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n state.minZoom,\n state.maxZoom,\n options.padding\n );\n return transformViewport(x, y, zoom22, options);\n },\n project: (position) => pointToRendererPoint(position, state.viewport, state.snapToGrid, state.snapGrid),\n screenToFlowCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x - domX,\n y: position.y - domY\n };\n return pointToRendererPoint(correctedPosition, state.viewport, state.snapToGrid, state.snapGrid);\n }\n return { x: 0, y: 0 };\n },\n flowToScreenCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x + domX,\n y: position.y + domY\n };\n return rendererPointToPoint(correctedPosition, state.viewport);\n }\n return { x: 0, y: 0 };\n }\n };\n });\n}\nfunction getD3Transition(selection2, duration = 0, ease = defaultEase, onEnd = () => {\n}) {\n const hasDuration = typeof duration === \"number\" && duration > 0;\n if (!hasDuration) {\n onEnd();\n }\n return hasDuration ? selection2.transition().duration(duration).ease(ease).on(\"end\", onEnd) : selection2;\n}\nfunction useWatchProps(models, props, store) {\n const scope = effectScope(true);\n scope.run(() => {\n const watchModelValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!(store.nodes.value.length || store.edges.value.length);\n pauseModel = watchPausable([models.modelValue, () => {\n var _a, _b;\n return (_b = (_a = models.modelValue) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([elements]) => {\n if (elements && Array.isArray(elements)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setElements(elements);\n if (!pauseStore && !immediateStore && elements.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, store.edges, () => store.edges.value.length, () => store.nodes.value.length],\n ([nodes, edges]) => {\n var _a;\n if (((_a = models.modelValue) == null ? void 0 : _a.value) && Array.isArray(models.modelValue.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.modelValue.value = [...nodes, ...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchNodesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.nodes.value.length;\n pauseModel = watchPausable([models.nodes, () => {\n var _a, _b;\n return (_b = (_a = models.nodes) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([nodes]) => {\n if (nodes && Array.isArray(nodes)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setNodes(nodes);\n if (!pauseStore && !immediateStore && nodes.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, () => store.nodes.value.length],\n ([nodes]) => {\n var _a;\n if (((_a = models.nodes) == null ? void 0 : _a.value) && Array.isArray(models.nodes.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.nodes.value = [...nodes];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchEdgesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.edges.value.length;\n pauseModel = watchPausable([models.edges, () => {\n var _a, _b;\n return (_b = (_a = models.edges) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([edges]) => {\n if (edges && Array.isArray(edges)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setEdges(edges);\n if (!pauseStore && !immediateStore && edges.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.edges, () => store.edges.value.length],\n ([edges]) => {\n var _a;\n if (((_a = models.edges) == null ? void 0 : _a.value) && Array.isArray(models.edges.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.edges.value = [...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchMaxZoom = () => {\n scope.run(() => {\n watch(\n () => props.maxZoom,\n () => {\n if (props.maxZoom && isDef(props.maxZoom)) {\n store.setMaxZoom(props.maxZoom);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchMinZoom = () => {\n scope.run(() => {\n watch(\n () => props.minZoom,\n () => {\n if (props.minZoom && isDef(props.minZoom)) {\n store.setMinZoom(props.minZoom);\n }\n },\n { immediate: true }\n );\n });\n };\n const watchTranslateExtent = () => {\n scope.run(() => {\n watch(\n () => props.translateExtent,\n () => {\n if (props.translateExtent && isDef(props.translateExtent)) {\n store.setTranslateExtent(props.translateExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchNodeExtent = () => {\n scope.run(() => {\n watch(\n () => props.nodeExtent,\n () => {\n if (props.nodeExtent && isDef(props.nodeExtent)) {\n store.setNodeExtent(props.nodeExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchApplyDefault = () => {\n scope.run(() => {\n watch(\n () => props.applyDefault,\n () => {\n if (isDef(props.applyDefault)) {\n store.applyDefault.value = props.applyDefault;\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchAutoConnect = () => {\n scope.run(() => {\n const autoConnector = async (params) => {\n let connection = params;\n if (typeof props.autoConnect === \"function\") {\n connection = await props.autoConnect(params);\n }\n if (connection !== false) {\n store.addEdges([connection]);\n }\n };\n watch(\n () => props.autoConnect,\n () => {\n if (isDef(props.autoConnect)) {\n store.autoConnect.value = props.autoConnect;\n }\n },\n { immediate: true }\n );\n watch(\n store.autoConnect,\n (autoConnectEnabled, _, onCleanup) => {\n if (autoConnectEnabled) {\n store.onConnect(autoConnector);\n } else {\n store.hooks.value.connect.off(autoConnector);\n }\n onCleanup(() => {\n store.hooks.value.connect.off(autoConnector);\n });\n },\n { immediate: true }\n );\n });\n };\n const watchRest = () => {\n const skip = [\n \"id\",\n \"modelValue\",\n \"translateExtent\",\n \"nodeExtent\",\n \"edges\",\n \"nodes\",\n \"maxZoom\",\n \"minZoom\",\n \"applyDefault\",\n \"autoConnect\"\n ];\n for (const key of Object.keys(props)) {\n const propKey = key;\n if (!skip.includes(propKey)) {\n const propValue = toRef(() => props[propKey]);\n const storeRef = store[propKey];\n if (isRef(storeRef)) {\n scope.run(() => {\n watch(\n propValue,\n (nextValue) => {\n if (isDef(nextValue)) {\n storeRef.value = nextValue;\n }\n },\n { immediate: true }\n );\n });\n }\n }\n }\n };\n const runAll = () => {\n watchModelValue();\n watchNodesValue();\n watchEdgesValue();\n watchMinZoom();\n watchMaxZoom();\n watchTranslateExtent();\n watchNodeExtent();\n watchApplyDefault();\n watchAutoConnect();\n watchRest();\n };\n runAll();\n });\n return () => scope.stop();\n}\nfunction useZoomPanHelper(vueFlowId) {\n const state = useVueFlow({ id: vueFlowId });\n const viewportHelper = useViewportHelper(toReactive(state));\n return {\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params)\n };\n}\nfunction createHooks() {\n return {\n edgesChange: createExtendedEventHook(),\n nodesChange: createExtendedEventHook(),\n nodeDoubleClick: createExtendedEventHook(),\n nodeClick: createExtendedEventHook(),\n nodeMouseEnter: createExtendedEventHook(),\n nodeMouseMove: createExtendedEventHook(),\n nodeMouseLeave: createExtendedEventHook(),\n nodeContextMenu: createExtendedEventHook(),\n nodeDragStart: createExtendedEventHook(),\n nodeDrag: createExtendedEventHook(),\n nodeDragStop: createExtendedEventHook(),\n nodesInitialized: createExtendedEventHook(),\n miniMapNodeClick: createExtendedEventHook(),\n miniMapNodeDoubleClick: createExtendedEventHook(),\n miniMapNodeMouseEnter: createExtendedEventHook(),\n miniMapNodeMouseMove: createExtendedEventHook(),\n miniMapNodeMouseLeave: createExtendedEventHook(),\n connect: createExtendedEventHook(),\n connectStart: createExtendedEventHook(),\n connectEnd: createExtendedEventHook(),\n clickConnectStart: createExtendedEventHook(),\n clickConnectEnd: createExtendedEventHook(),\n paneReady: createExtendedEventHook(),\n init: createExtendedEventHook(),\n move: createExtendedEventHook(),\n moveStart: createExtendedEventHook(),\n moveEnd: createExtendedEventHook(),\n selectionDragStart: createExtendedEventHook(),\n selectionDrag: createExtendedEventHook(),\n selectionDragStop: createExtendedEventHook(),\n selectionContextMenu: createExtendedEventHook(),\n selectionStart: createExtendedEventHook(),\n selectionEnd: createExtendedEventHook(),\n viewportChangeStart: createExtendedEventHook(),\n viewportChange: createExtendedEventHook(),\n viewportChangeEnd: createExtendedEventHook(),\n paneScroll: createExtendedEventHook(),\n paneClick: createExtendedEventHook(),\n paneContextMenu: createExtendedEventHook(),\n paneMouseEnter: createExtendedEventHook(),\n paneMouseMove: createExtendedEventHook(),\n paneMouseLeave: createExtendedEventHook(),\n edgeContextMenu: createExtendedEventHook(),\n edgeMouseEnter: createExtendedEventHook(),\n edgeMouseMove: createExtendedEventHook(),\n edgeMouseLeave: createExtendedEventHook(),\n edgeDoubleClick: createExtendedEventHook(),\n edgeClick: createExtendedEventHook(),\n edgeUpdateStart: createExtendedEventHook(),\n edgeUpdate: createExtendedEventHook(),\n edgeUpdateEnd: createExtendedEventHook(),\n updateNodeInternals: createExtendedEventHook(),\n error: createExtendedEventHook((err) => warn(err.message))\n };\n}\nfunction useHooks(emit, hooks) {\n onBeforeMount(() => {\n for (const [key, value] of Object.entries(hooks.value)) {\n const listener = (data) => {\n emit(key, data);\n };\n value.fns.add(listener);\n tryOnScopeDispose(() => {\n value.off(listener);\n });\n }\n });\n}\nfunction useState() {\n return {\n vueFlowRef: null,\n viewportRef: null,\n nodes: [],\n edges: [],\n connectionLookup: /* @__PURE__ */ new Map(),\n nodeTypes: {},\n edgeTypes: {},\n initialized: false,\n dimensions: {\n width: 0,\n height: 0\n },\n viewport: { x: 0, y: 0, zoom: 1 },\n d3Zoom: null,\n d3Selection: null,\n d3ZoomHandler: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n nodeExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n selectionMode: SelectionMode.Full,\n paneDragging: false,\n preventScrolling: true,\n zoomOnScroll: true,\n zoomOnPinch: true,\n zoomOnDoubleClick: true,\n panOnScroll: false,\n panOnScrollSpeed: 0.5,\n panOnScrollMode: PanOnScrollMode.Free,\n paneClickDistance: 0,\n panOnDrag: true,\n edgeUpdaterRadius: 10,\n onlyRenderVisibleElements: false,\n defaultViewport: { x: 0, y: 0, zoom: 1 },\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n defaultMarkerColor: \"#b1b1b7\",\n connectionLineStyle: {},\n connectionLineType: null,\n connectionLineOptions: {\n type: ConnectionLineType.Bezier,\n style: {}\n },\n connectionMode: ConnectionMode.Loose,\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectionPosition: { x: Number.NaN, y: Number.NaN },\n connectionRadius: 20,\n connectOnClick: true,\n connectionStatus: null,\n isValidConnection: null,\n snapGrid: [15, 15],\n snapToGrid: false,\n edgesUpdatable: false,\n edgesFocusable: true,\n nodesFocusable: true,\n nodesConnectable: true,\n nodesDraggable: true,\n nodeDragThreshold: 1,\n elementsSelectable: true,\n selectNodesOnDrag: true,\n multiSelectionActive: false,\n selectionKeyCode: \"Shift\",\n multiSelectionKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n zoomActivationKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n deleteKeyCode: \"Backspace\",\n panActivationKeyCode: \"Space\",\n hooks: createHooks(),\n applyDefault: true,\n autoConnect: false,\n fitViewOnInit: false,\n fitViewOnInitDone: false,\n noDragClassName: \"nodrag\",\n noWheelClassName: \"nowheel\",\n noPanClassName: \"nopan\",\n defaultEdgeOptions: void 0,\n elevateEdgesOnSelect: false,\n elevateNodesOnSelect: true,\n autoPanOnNodeDrag: true,\n autoPanOnConnect: true,\n autoPanSpeed: 15,\n disableKeyboardA11y: false,\n ariaLiveMessage: \"\"\n };\n}\nconst storeOptionsToSkip = [\n \"id\",\n \"vueFlowRef\",\n \"viewportRef\",\n \"initialized\",\n \"modelValue\",\n \"nodes\",\n \"edges\",\n \"maxZoom\",\n \"minZoom\",\n \"translateExtent\",\n \"hooks\",\n \"defaultEdgeOptions\"\n];\nfunction useActions(state, nodeLookup, edgeLookup) {\n const viewportHelper = useViewportHelper(state);\n const updateNodeInternals = (ids) => {\n const updateIds = ids ?? [];\n state.hooks.updateNodeInternals.trigger(updateIds);\n };\n const getIncomers$1 = (nodeOrId) => {\n return getIncomers(nodeOrId, state.nodes, state.edges);\n };\n const getOutgoers$1 = (nodeOrId) => {\n return getOutgoers(nodeOrId, state.nodes, state.edges);\n };\n const getConnectedEdges$1 = (nodesOrId) => {\n return getConnectedEdges(nodesOrId, state.edges);\n };\n const getHandleConnections = ({ id: id2, type, nodeId }) => {\n var _a;\n return Array.from(((_a = state.connectionLookup.get(`${nodeId}-${type}-${id2 ?? null}`)) == null ? void 0 : _a.values()) ?? []);\n };\n const findNode = (id2) => {\n if (!id2) {\n return;\n }\n return nodeLookup.value.get(id2);\n };\n const findEdge = (id2) => {\n if (!id2) {\n return;\n }\n return edgeLookup.value.get(id2);\n };\n const updateNodePositions = (dragItems, changed, dragging) => {\n var _a, _b;\n const changes = [];\n for (const node of dragItems) {\n const change = {\n id: node.id,\n type: \"position\",\n dragging,\n from: node.from\n };\n if (changed) {\n change.position = node.position;\n if (node.parentNode) {\n const parentNode = findNode(node.parentNode);\n change.position = {\n x: change.position.x - (((_a = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _a.x) ?? 0),\n y: change.position.y - (((_b = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _b.y) ?? 0)\n };\n }\n }\n changes.push(change);\n }\n if (changes == null ? void 0 : changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const updateNodeDimensions = (updates) => {\n if (!state.vueFlowRef) {\n return;\n }\n const viewportNode = state.vueFlowRef.querySelector(\".vue-flow__transformationpane\");\n if (!viewportNode) {\n return;\n }\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const changes = [];\n for (const element of updates) {\n const update = element;\n const node = findNode(update.id);\n if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const doUpdate = !!(dimensions.width && dimensions.height && (node.dimensions.width !== dimensions.width || node.dimensions.height !== dimensions.height || update.forceUpdate));\n if (doUpdate) {\n const nodeBounds = update.nodeElement.getBoundingClientRect();\n node.dimensions = dimensions;\n node.handleBounds.source = getHandleBounds(\"source\", update.nodeElement, nodeBounds, zoom2, node.id);\n node.handleBounds.target = getHandleBounds(\"target\", update.nodeElement, nodeBounds, zoom2, node.id);\n changes.push({\n id: node.id,\n type: \"dimensions\",\n dimensions\n });\n }\n }\n }\n if (!state.fitViewOnInitDone && state.fitViewOnInit) {\n viewportHelper.value.fitView().then(() => {\n state.fitViewOnInitDone = true;\n });\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const elementSelectionHandler = (elements, selected) => {\n const nodeIds = /* @__PURE__ */ new Set();\n const edgeIds = /* @__PURE__ */ new Set();\n for (const element of elements) {\n if (isNode(element)) {\n nodeIds.add(element.id);\n } else if (isEdge(element)) {\n edgeIds.add(element.id);\n }\n }\n const changedNodes = getSelectionChanges(nodeLookup.value, nodeIds, true);\n const changedEdges = getSelectionChanges(edgeLookup.value, edgeIds);\n if (state.multiSelectionActive) {\n for (const nodeId of nodeIds) {\n changedNodes.push(createSelectionChange(nodeId, selected));\n }\n for (const edgeId of edgeIds) {\n changedEdges.push(createSelectionChange(edgeId, selected));\n }\n }\n if (changedNodes.length) {\n state.hooks.nodesChange.trigger(changedNodes);\n }\n if (changedEdges.length) {\n state.hooks.edgesChange.trigger(changedEdges);\n }\n };\n const addSelectedNodes = (nodes) => {\n if (state.multiSelectionActive) {\n const nodeChanges = nodes.map((node) => createSelectionChange(node.id, true));\n state.hooks.nodesChange.trigger(nodeChanges);\n return;\n }\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, new Set(nodes.map((n) => n.id)), true));\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value));\n };\n const addSelectedEdges = (edges) => {\n if (state.multiSelectionActive) {\n const changedEdges = edges.map((edge) => createSelectionChange(edge.id, true));\n state.hooks.edgesChange.trigger(changedEdges);\n return;\n }\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value, new Set(edges.map((e) => e.id))));\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, /* @__PURE__ */ new Set(), true));\n };\n const addSelectedElements = (elements) => {\n elementSelectionHandler(elements, true);\n };\n const removeSelectedNodes = (nodes) => {\n const nodesToUnselect = nodes || state.nodes;\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n state.hooks.nodesChange.trigger(nodeChanges);\n };\n const removeSelectedEdges = (edges) => {\n const edgesToUnselect = edges || state.edges;\n const edgeChanges = edgesToUnselect.map((e) => {\n e.selected = false;\n return createSelectionChange(e.id, false);\n });\n state.hooks.edgesChange.trigger(edgeChanges);\n };\n const removeSelectedElements = (elements) => {\n if (!elements || !elements.length) {\n return elementSelectionHandler([], false);\n }\n const changes = elements.reduce(\n (changes2, curr) => {\n const selectionChange = createSelectionChange(curr.id, false);\n if (isNode(curr)) {\n changes2.nodes.push(selectionChange);\n } else {\n changes2.edges.push(selectionChange);\n }\n return changes2;\n },\n { nodes: [], edges: [] }\n );\n if (changes.nodes.length) {\n state.hooks.nodesChange.trigger(changes.nodes);\n }\n if (changes.edges.length) {\n state.hooks.edgesChange.trigger(changes.edges);\n }\n };\n const setMinZoom = (minZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([minZoom, state.maxZoom]);\n state.minZoom = minZoom;\n };\n const setMaxZoom = (maxZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([state.minZoom, maxZoom]);\n state.maxZoom = maxZoom;\n };\n const setTranslateExtent = (translateExtent) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.translateExtent(translateExtent);\n state.translateExtent = translateExtent;\n };\n const setNodeExtent = (nodeExtent) => {\n state.nodeExtent = nodeExtent;\n updateNodeInternals();\n };\n const setPaneClickDistance = (clickDistance) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.clickDistance(clickDistance);\n };\n const setInteractive = (isInteractive) => {\n state.nodesDraggable = isInteractive;\n state.nodesConnectable = isInteractive;\n state.elementsSelectable = isInteractive;\n };\n const setNodes = (nodes) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n if (!state.initialized && !nextNodes.length) {\n return;\n }\n state.nodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n };\n const setEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n if (!state.initialized && !nextEdges.length) {\n return;\n }\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, validEdges);\n state.edges = validEdges;\n };\n const setElements = (elements) => {\n const nextElements = elements instanceof Function ? elements([...state.nodes, ...state.edges]) : elements;\n if (!state.initialized && !nextElements.length) {\n return;\n }\n setNodes(nextElements.filter(isNode));\n setEdges(nextElements.filter(isEdge));\n };\n const addNodes = (nodes) => {\n let nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n nextNodes = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const graphNodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n const changes = [];\n for (const node of graphNodes) {\n changes.push(createAdditionChange(node));\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const addEdges = (params) => {\n let nextEdges = params instanceof Function ? params(state.edges) : params;\n nextEdges = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n const changes = [];\n for (const edge of validEdges) {\n changes.push(createAdditionChange(edge));\n }\n if (changes.length) {\n state.hooks.edgesChange.trigger(changes);\n }\n };\n const removeNodes = (nodes, removeConnectedEdges = true, removeChildren = false) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n const nodesToRemove = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const nodeChanges = [];\n const edgeChanges = [];\n function createEdgeRemovalChanges(nodes2) {\n const connectedEdges = getConnectedEdges$1(nodes2);\n for (const edge of connectedEdges) {\n if (isDef(edge.deletable) ? edge.deletable : true) {\n edgeChanges.push(createEdgeRemoveChange(edge.id, edge.source, edge.target, edge.sourceHandle, edge.targetHandle));\n }\n }\n }\n function createChildrenRemovalChanges(id2) {\n const children2 = [];\n for (const node of state.nodes) {\n if (node.parentNode === id2) {\n children2.push(node);\n }\n }\n if (children2.length) {\n for (const child of children2) {\n nodeChanges.push(createNodeRemoveChange(child.id));\n }\n if (removeConnectedEdges) {\n createEdgeRemovalChanges(children2);\n }\n for (const child of children2) {\n createChildrenRemovalChanges(child.id);\n }\n }\n }\n for (const item of nodesToRemove) {\n const currNode = typeof item === \"string\" ? findNode(item) : item;\n if (!currNode) {\n continue;\n }\n if (isDef(currNode.deletable) && !currNode.deletable) {\n continue;\n }\n nodeChanges.push(createNodeRemoveChange(currNode.id));\n if (removeConnectedEdges) {\n createEdgeRemovalChanges([currNode]);\n }\n if (removeChildren) {\n createChildrenRemovalChanges(currNode.id);\n }\n }\n if (edgeChanges.length) {\n state.hooks.edgesChange.trigger(edgeChanges);\n }\n if (nodeChanges.length) {\n state.hooks.nodesChange.trigger(nodeChanges);\n }\n };\n const removeEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n const edgesToRemove = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const changes = [];\n for (const item of edgesToRemove) {\n const currEdge = typeof item === \"string\" ? findEdge(item) : item;\n if (!currEdge) {\n continue;\n }\n if (isDef(currEdge.deletable) && !currEdge.deletable) {\n continue;\n }\n changes.push(\n createEdgeRemoveChange(\n typeof item === \"string\" ? item : item.id,\n currEdge.source,\n currEdge.target,\n currEdge.sourceHandle,\n currEdge.targetHandle\n )\n );\n }\n state.hooks.edgesChange.trigger(changes);\n };\n const updateEdge2 = (oldEdge, newConnection, shouldReplaceId = true) => {\n const prevEdge = findEdge(oldEdge.id);\n if (!prevEdge) {\n return false;\n }\n const prevEdgeIndex = state.edges.indexOf(prevEdge);\n const newEdge = updateEdgeAction(oldEdge, newConnection, prevEdge, shouldReplaceId, state.hooks.error.trigger);\n if (newEdge) {\n const [validEdge] = createGraphEdges(\n [newEdge],\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n state.edges = state.edges.map((edge, index) => index === prevEdgeIndex ? validEdge : edge);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, [validEdge]);\n return validEdge;\n }\n return false;\n };\n const updateEdgeData = (id2, dataUpdate, options = { replace: false }) => {\n const edge = findEdge(id2);\n if (!edge) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(edge) : dataUpdate;\n edge.data = options.replace ? nextData : { ...edge.data, ...nextData };\n };\n const applyNodeChanges2 = (changes) => {\n return applyChanges(changes, state.nodes);\n };\n const applyEdgeChanges2 = (changes) => {\n const changedEdges = applyChanges(changes, state.edges);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, changedEdges);\n return changedEdges;\n };\n const updateNode = (id2, nodeUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextNode = typeof nodeUpdate === \"function\" ? nodeUpdate(node) : nodeUpdate;\n if (options.replace) {\n state.nodes.splice(state.nodes.indexOf(node), 1, nextNode);\n } else {\n Object.assign(node, nextNode);\n }\n };\n const updateNodeData = (id2, dataUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(node) : dataUpdate;\n node.data = options.replace ? nextData : { ...node.data, ...nextData };\n };\n const startConnection = (startHandle, position, isClick = false) => {\n if (isClick) {\n state.connectionClickStartHandle = startHandle;\n } else {\n state.connectionStartHandle = startHandle;\n }\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (position) {\n state.connectionPosition = position;\n }\n };\n const updateConnection = (position, result = null, status = null) => {\n if (state.connectionStartHandle) {\n state.connectionPosition = position;\n state.connectionEndHandle = result;\n state.connectionStatus = status;\n }\n };\n const endConnection = (event, isClick) => {\n state.connectionPosition = { x: Number.NaN, y: Number.NaN };\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (isClick) {\n state.connectionClickStartHandle = null;\n } else {\n state.connectionStartHandle = null;\n }\n };\n const getNodeRect = (nodeOrRect) => {\n const isRectObj = isRect(nodeOrRect);\n const node = isRectObj ? null : isGraphNode(nodeOrRect) ? nodeOrRect : findNode(nodeOrRect.id);\n if (!isRectObj && !node) {\n return [null, null, isRectObj];\n }\n const nodeRect = isRectObj ? nodeOrRect : nodeToRect(node);\n return [nodeRect, node, isRectObj];\n };\n const getIntersectingNodes = (nodeOrRect, partially = true, nodes = state.nodes) => {\n const [nodeRect, node, isRect2] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return [];\n }\n const intersections = [];\n for (const n of nodes || state.nodes) {\n if (!isRect2 && (n.id === node.id || !n.computedPosition)) {\n continue;\n }\n const currNodeRect = nodeToRect(n);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n if (partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height)) {\n intersections.push(n);\n }\n }\n return intersections;\n };\n const isNodeIntersecting = (nodeOrRect, area, partially = true) => {\n const [nodeRect] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return false;\n }\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n return partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height);\n };\n const panBy = (delta) => {\n const { viewport, dimensions, d3Zoom, d3Selection, translateExtent } = state;\n if (!d3Zoom || !d3Selection || !delta.x && !delta.y) {\n return false;\n }\n const nextTransform = identity.translate(viewport.x + delta.x, viewport.y + delta.y).scale(viewport.zoom);\n const extent = [\n [0, 0],\n [dimensions.width, dimensions.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(nextTransform, extent, translateExtent);\n const transformChanged = state.viewport.x !== constrainedTransform.x || state.viewport.y !== constrainedTransform.y || state.viewport.zoom !== constrainedTransform.k;\n d3Zoom.transform(d3Selection, constrainedTransform);\n return transformChanged;\n };\n const setState = (options) => {\n const opts = options instanceof Function ? options(state) : options;\n const exclude = [\n \"d3Zoom\",\n \"d3Selection\",\n \"d3ZoomHandler\",\n \"viewportRef\",\n \"vueFlowRef\",\n \"dimensions\",\n \"hooks\"\n ];\n if (isDef(opts.defaultEdgeOptions)) {\n state.defaultEdgeOptions = opts.defaultEdgeOptions;\n }\n const elements = opts.modelValue || opts.nodes || opts.edges ? [] : void 0;\n if (elements) {\n if (opts.modelValue) {\n elements.push(...opts.modelValue);\n }\n if (opts.nodes) {\n elements.push(...opts.nodes);\n }\n if (opts.edges) {\n elements.push(...opts.edges);\n }\n setElements(elements);\n }\n const setSkippedOptions = () => {\n if (isDef(opts.maxZoom)) {\n setMaxZoom(opts.maxZoom);\n }\n if (isDef(opts.minZoom)) {\n setMinZoom(opts.minZoom);\n }\n if (isDef(opts.translateExtent)) {\n setTranslateExtent(opts.translateExtent);\n }\n };\n for (const o of Object.keys(opts)) {\n const key = o;\n const option = opts[key];\n if (![...storeOptionsToSkip, ...exclude].includes(key) && isDef(option)) {\n state[key] = option;\n }\n }\n until(() => state.d3Zoom).not.toBeNull().then(setSkippedOptions);\n if (!state.initialized) {\n state.initialized = true;\n }\n };\n const toObject = () => {\n const nodes = [];\n const edges = [];\n for (const node of state.nodes) {\n const {\n computedPosition: _,\n handleBounds: __,\n selected: ___,\n dimensions: ____,\n isParent: _____,\n resizing: ______,\n dragging: _______,\n events: _________,\n ...rest\n } = node;\n nodes.push(rest);\n }\n for (const edge of state.edges) {\n const { selected: _, sourceNode: __, targetNode: ___, events: ____, ...rest } = edge;\n edges.push(rest);\n }\n return JSON.parse(\n JSON.stringify({\n nodes,\n edges,\n position: [state.viewport.x, state.viewport.y],\n zoom: state.viewport.zoom,\n viewport: state.viewport\n })\n );\n };\n const fromObject = (obj) => {\n return new Promise((resolve) => {\n const { nodes, edges, position, zoom: zoom2, viewport } = obj;\n if (nodes) {\n setNodes(nodes);\n }\n if (edges) {\n setEdges(edges);\n }\n if ((viewport == null ? void 0 : viewport.x) && (viewport == null ? void 0 : viewport.y) || position) {\n const x = (viewport == null ? void 0 : viewport.x) || position[0];\n const y = (viewport == null ? void 0 : viewport.y) || position[1];\n const nextZoom = (viewport == null ? void 0 : viewport.zoom) || zoom2 || state.viewport.zoom;\n return until(() => viewportHelper.value.viewportInitialized).toBe(true).then(() => {\n viewportHelper.value.setViewport({\n x,\n y,\n zoom: nextZoom\n }).then(() => {\n resolve(true);\n });\n });\n } else {\n resolve(true);\n }\n });\n };\n const $reset = () => {\n const resetState = useState();\n state.edges = [];\n state.nodes = [];\n if (state.d3Zoom && state.d3Selection) {\n const updatedTransform = identity.translate(resetState.defaultViewport.x ?? 0, resetState.defaultViewport.y ?? 0).scale(clamp(resetState.defaultViewport.zoom ?? 1, resetState.minZoom, resetState.maxZoom));\n const bbox = state.viewportRef.getBoundingClientRect();\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = state.d3Zoom.constrain()(updatedTransform, extent, resetState.translateExtent);\n state.d3Zoom.transform(state.d3Selection, constrainedTransform);\n }\n setState(resetState);\n };\n return {\n updateNodePositions,\n updateNodeDimensions,\n setElements,\n setNodes,\n setEdges,\n addNodes,\n addEdges,\n removeNodes,\n removeEdges,\n findNode,\n findEdge,\n updateEdge: updateEdge2,\n updateEdgeData,\n updateNode,\n updateNodeData,\n applyEdgeChanges: applyEdgeChanges2,\n applyNodeChanges: applyNodeChanges2,\n addSelectedElements,\n addSelectedNodes,\n addSelectedEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n setPaneClickDistance,\n removeSelectedElements,\n removeSelectedNodes,\n removeSelectedEdges,\n startConnection,\n updateConnection,\n endConnection,\n setInteractive,\n setState,\n getIntersectingNodes,\n getIncomers: getIncomers$1,\n getOutgoers: getOutgoers$1,\n getConnectedEdges: getConnectedEdges$1,\n getHandleConnections,\n isNodeIntersecting,\n panBy,\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params),\n screenToFlowCoordinate: (params) => viewportHelper.value.screenToFlowCoordinate(params),\n flowToScreenCoordinate: (params) => viewportHelper.value.flowToScreenCoordinate(params),\n toObject,\n fromObject,\n updateNodeInternals,\n viewportHelper,\n $reset,\n $destroy: () => {\n }\n };\n}\nconst _hoisted_1$9 = [\"data-id\", \"data-handleid\", \"data-nodeid\", \"data-handlepos\"];\nconst __default__$f = {\n name: \"Handle\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$f = /* @__PURE__ */ defineComponent({\n ...__default__$f,\n props: {\n id: { default: null },\n type: {},\n position: { default: () => Position.Top },\n isValidConnection: { type: Function },\n connectable: { type: [Boolean, Number, String, Function], default: void 0 },\n connectableStart: { type: Boolean, default: true },\n connectableEnd: { type: Boolean, default: true }\n },\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"position\", \"connectable\", \"connectableStart\", \"connectableEnd\", \"id\"]);\n const type = toRef(() => props.type ?? \"source\");\n const isValidConnection = toRef(() => props.isValidConnection ?? null);\n const {\n id: flowId,\n connectionStartHandle,\n connectionClickStartHandle,\n connectionEndHandle,\n vueFlowRef,\n nodesConnectable,\n noDragClassName,\n noPanClassName\n } = useVueFlow();\n const { id: nodeId, node, nodeEl, connectedEdges } = useNode();\n const handle = ref();\n const isConnectableStart = toRef(() => typeof __props.connectableStart !== \"undefined\" ? __props.connectableStart : true);\n const isConnectableEnd = toRef(() => typeof __props.connectableEnd !== \"undefined\" ? __props.connectableEnd : true);\n const isConnecting = toRef(\n () => {\n var _a, _b, _c, _d, _e, _f;\n return ((_a = connectionStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionStartHandle.value) == null ? void 0 : _c.type) === type.value || ((_d = connectionEndHandle.value) == null ? void 0 : _d.nodeId) === nodeId && ((_e = connectionEndHandle.value) == null ? void 0 : _e.id) === __props.id && ((_f = connectionEndHandle.value) == null ? void 0 : _f.type) === type.value;\n }\n );\n const isClickConnecting = toRef(\n () => {\n var _a, _b, _c;\n return ((_a = connectionClickStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionClickStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionClickStartHandle.value) == null ? void 0 : _c.type) === type.value;\n }\n );\n const { handlePointerDown, handleClick } = useHandle({\n nodeId,\n handleId: __props.id,\n isValidConnection,\n type\n });\n const isConnectable = computed(() => {\n if (typeof __props.connectable === \"string\" && __props.connectable === \"single\") {\n return !connectedEdges.value.some((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n });\n }\n if (typeof __props.connectable === \"number\") {\n return connectedEdges.value.filter((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n }).length < __props.connectable;\n }\n if (typeof __props.connectable === \"function\") {\n return __props.connectable(node, connectedEdges.value);\n }\n return isDef(__props.connectable) ? __props.connectable : nodesConnectable.value;\n });\n onMounted(() => {\n var _a;\n if (!node.dimensions.width || !node.dimensions.height) {\n return;\n }\n const existingBounds = (_a = node.handleBounds[type.value]) == null ? void 0 : _a.find((b) => b.id === __props.id);\n if (!vueFlowRef.value || existingBounds) {\n return;\n }\n const viewportNode = vueFlowRef.value.querySelector(\".vue-flow__transformationpane\");\n if (!nodeEl.value || !handle.value || !viewportNode || !__props.id) {\n return;\n }\n const nodeBounds = nodeEl.value.getBoundingClientRect();\n const handleBounds = handle.value.getBoundingClientRect();\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const nextBounds = {\n id: __props.id,\n position: __props.position,\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n type: type.value,\n nodeId,\n ...getDimensions(handle.value)\n };\n node.handleBounds[type.value] = [...node.handleBounds[type.value] ?? [], nextBounds];\n });\n function onPointerDown(event) {\n const isMouseTriggered = isMouseEvent(event);\n if (isConnectable.value && isConnectableStart.value && (isMouseTriggered && event.button === 0 || !isMouseTriggered)) {\n handlePointerDown(event);\n }\n }\n function onClick(event) {\n if (!nodeId || !connectionClickStartHandle.value && !isConnectableStart.value) {\n return;\n }\n if (isConnectable.value) {\n handleClick(event);\n }\n }\n __expose({\n handleClick,\n handlePointerDown,\n onClick,\n onPointerDown\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"handle\",\n ref: handle,\n \"data-id\": `${unref(flowId)}-${unref(nodeId)}-${__props.id}-${type.value}`,\n \"data-handleid\": __props.id,\n \"data-nodeid\": unref(nodeId),\n \"data-handlepos\": _ctx.position,\n class: normalizeClass([\"vue-flow__handle\", [\n `vue-flow__handle-${_ctx.position}`,\n `vue-flow__handle-${__props.id}`,\n unref(noDragClassName),\n unref(noPanClassName),\n type.value,\n {\n connectable: isConnectable.value,\n connecting: isClickConnecting.value,\n connectablestart: isConnectableStart.value,\n connectableend: isConnectableEnd.value,\n connectionindicator: isConnectable.value && (isConnectableStart.value && !isConnecting.value || isConnectableEnd.value && isConnecting.value)\n }\n ]]),\n onMousedown: onPointerDown,\n onTouchstartPassive: onPointerDown,\n onClick\n }, [\n renderSlot(_ctx.$slots, \"default\", { id: _ctx.id })\n ], 42, _hoisted_1$9);\n };\n }\n});\nconst DefaultNode = function({\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nDefaultNode.props = [\"sourcePosition\", \"targetPosition\", \"label\", \"isValidTargetPos\", \"isValidSourcePos\", \"connectable\", \"data\"];\nDefaultNode.inheritAttrs = false;\nDefaultNode.compatConfig = { MODE: 3 };\nconst DefaultNode$1 = DefaultNode;\nconst OutputNode = function({\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label])\n ];\n};\nOutputNode.props = [\"targetPosition\", \"label\", \"isValidTargetPos\", \"connectable\", \"data\"];\nOutputNode.inheritAttrs = false;\nOutputNode.compatConfig = { MODE: 3 };\nconst OutputNode$1 = OutputNode;\nconst InputNode = function({\n sourcePosition = Position.Bottom,\n label: _label,\n connectable = true,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nInputNode.props = [\"sourcePosition\", \"label\", \"isValidSourcePos\", \"connectable\", \"data\"];\nInputNode.inheritAttrs = false;\nInputNode.compatConfig = { MODE: 3 };\nconst InputNode$1 = InputNode;\nconst _hoisted_1$8 = [\"transform\"];\nconst _hoisted_2$2 = [\"width\", \"height\", \"x\", \"y\", \"rx\", \"ry\"];\nconst _hoisted_3$1 = [\"y\"];\nconst __default__$e = {\n name: \"EdgeText\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$e = /* @__PURE__ */ defineComponent({\n ...__default__$e,\n props: {\n x: {},\n y: {},\n label: {},\n labelStyle: { default: () => ({}) },\n labelShowBg: { type: Boolean, default: true },\n labelBgStyle: { default: () => ({}) },\n labelBgPadding: { default: () => [2, 4] },\n labelBgBorderRadius: { default: 2 }\n },\n setup(__props) {\n const box = ref({ x: 0, y: 0, width: 0, height: 0 });\n const el = ref(null);\n const transform = computed(() => `translate(${__props.x - box.value.width / 2} ${__props.y - box.value.height / 2})`);\n onMounted(getBox);\n watch([() => __props.x, () => __props.y, el, () => __props.label], getBox);\n function getBox() {\n if (!el.value) {\n return;\n }\n const nextBox = el.value.getBBox();\n if (nextBox.width !== box.value.width || nextBox.height !== box.value.height) {\n box.value = nextBox;\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"g\", {\n transform: transform.value,\n class: \"vue-flow__edge-textwrapper\"\n }, [\n _ctx.labelShowBg ? (openBlock(), createElementBlock(\"rect\", {\n key: 0,\n class: \"vue-flow__edge-textbg\",\n width: `${box.value.width + 2 * _ctx.labelBgPadding[0]}px`,\n height: `${box.value.height + 2 * _ctx.labelBgPadding[1]}px`,\n x: -_ctx.labelBgPadding[0],\n y: -_ctx.labelBgPadding[1],\n style: normalizeStyle(_ctx.labelBgStyle),\n rx: _ctx.labelBgBorderRadius,\n ry: _ctx.labelBgBorderRadius\n }, null, 12, _hoisted_2$2)) : createCommentVNode(\"\", true),\n createElementVNode(\"text\", mergeProps(_ctx.$attrs, {\n ref_key: \"el\",\n ref: el,\n class: \"vue-flow__edge-text\",\n y: box.value.height / 2,\n dy: \"0.3em\",\n style: _ctx.labelStyle\n }), [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n typeof _ctx.label !== \"string\" ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.label), { key: 0 })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ], 64))\n ])\n ], 16, _hoisted_3$1)\n ], 8, _hoisted_1$8);\n };\n }\n});\nconst _hoisted_1$7 = [\"id\", \"d\", \"marker-end\", \"marker-start\"];\nconst _hoisted_2$1 = [\"d\", \"stroke-width\"];\nconst __default__$d = {\n name: \"BaseEdge\",\n inheritAttrs: false,\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$d = /* @__PURE__ */ defineComponent({\n ...__default__$d,\n props: {\n id: {},\n labelX: {},\n labelY: {},\n path: {},\n label: {},\n markerStart: {},\n markerEnd: {},\n interactionWidth: { default: 20 },\n labelStyle: {},\n labelShowBg: { type: Boolean },\n labelBgStyle: {},\n labelBgPadding: {},\n labelBgBorderRadius: {}\n },\n setup(__props, { expose: __expose }) {\n const pathEl = ref(null);\n const interactionEl = ref(null);\n const labelEl = ref(null);\n const attrs = useAttrs();\n __expose({\n pathEl,\n interactionEl,\n labelEl\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"path\", mergeProps(unref(attrs), {\n id: _ctx.id,\n ref_key: \"pathEl\",\n ref: pathEl,\n d: _ctx.path,\n class: \"vue-flow__edge-path\",\n \"marker-end\": _ctx.markerEnd,\n \"marker-start\": _ctx.markerStart\n }), null, 16, _hoisted_1$7),\n _ctx.interactionWidth ? (openBlock(), createElementBlock(\"path\", {\n key: 0,\n ref_key: \"interactionEl\",\n ref: interactionEl,\n fill: \"none\",\n d: _ctx.path,\n \"stroke-width\": _ctx.interactionWidth,\n \"stroke-opacity\": 0,\n class: \"vue-flow__edge-interaction\"\n }, null, 8, _hoisted_2$1)) : createCommentVNode(\"\", true),\n _ctx.label && _ctx.labelX && _ctx.labelY ? (openBlock(), createBlock(_sfc_main$e, {\n key: 1,\n ref_key: \"labelEl\",\n ref: labelEl,\n x: _ctx.labelX,\n y: _ctx.labelY,\n label: _ctx.label,\n \"label-show-bg\": _ctx.labelShowBg,\n \"label-bg-style\": _ctx.labelBgStyle,\n \"label-bg-padding\": _ctx.labelBgPadding,\n \"label-bg-border-radius\": _ctx.labelBgBorderRadius,\n \"label-style\": _ctx.labelStyle\n }, null, 8, [\"x\", \"y\", \"label\", \"label-show-bg\", \"label-bg-style\", \"label-bg-padding\", \"label-bg-border-radius\", \"label-style\"])) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n}) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n}\nfunction getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n}) {\n const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n return [centerX, centerY, offsetX, offsetY];\n}\nfunction calculateControlOffset(distance2, curvature) {\n if (distance2 >= 0) {\n return 0.5 * distance2;\n } else {\n return curvature * 25 * Math.sqrt(-distance2);\n }\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n ctX = x1 - calculateControlOffset(x1 - x2, c);\n ctY = y1;\n break;\n case Position.Right:\n ctX = x1 + calculateControlOffset(x2 - x1, c);\n ctY = y1;\n break;\n case Position.Top:\n ctX = x1;\n ctY = y1 - calculateControlOffset(y1 - y2, c);\n break;\n case Position.Bottom:\n ctX = x1;\n ctY = y1 + calculateControlOffset(y2 - y1, c);\n break;\n }\n return [ctX, ctY];\n}\nfunction getBezierPath(bezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25\n } = bezierPathParams;\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY\n ];\n}\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n case Position.Right:\n ctX = 0.5 * (x1 + x2);\n ctY = y1;\n break;\n case Position.Top:\n case Position.Bottom:\n ctX = x1;\n ctY = 0.5 * (y1 + y2);\n break;\n }\n return [ctX, ctY];\n}\nfunction getSimpleBezierPath(simpleBezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top\n } = simpleBezierPathParams;\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY\n });\n const [centerX, centerY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n centerX,\n centerY,\n offsetX,\n offsetY\n ];\n}\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 }\n};\nfunction getDirection({\n source,\n sourcePosition = Position.Bottom,\n target\n}) {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n}\nfunction distance(a, b) {\n return Math.sqrt((b.x - a.x) ** 2 + (b.y - a.y) ** 2);\n}\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset\n}) {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped\n });\n const dirAccessor = dir.x !== 0 ? \"x\" : \"y\";\n const currDir = dir[dirAccessor];\n let points;\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] = getSimpleEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y\n });\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n const verticalSplit = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y }\n ];\n const horizontalSplit = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY }\n ];\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === \"x\" ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === \"x\" ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n if (dirAccessor === \"x\") {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n }\n }\n }\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === \"x\" ? \"y\" : \"x\";\n const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget = sourceDir[dirAccessor] === 1 && (!isSameDir && sourceGtTargetOppo || isSameDir && sourceLtTargetOppo) || sourceDir[dirAccessor] !== 1 && (!isSameDir && sourceLtTargetOppo || isSameDir && sourceGtTargetOppo);\n if (flipSourceTarget) {\n points = dirAccessor === \"x\" ? sourceTarget : targetSource;\n }\n }\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target\n ];\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n if (a.x === x && x === c.x || a.y === y && y === c.y) {\n return `L${x} ${y}`;\n }\n if (a.y === y) {\n const xDir2 = a.x < c.x ? -1 : 1;\n const yDir2 = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir2},${y}Q ${x},${y} ${x},${y + bendSize * yDir2}`;\n }\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\nfunction getSmoothStepPath(smoothStepPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20\n } = smoothStepPathParams;\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset\n });\n const path = points.reduce((res, p, i) => {\n let segment;\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? \"M\" : \"L\"}${p.x} ${p.y}`;\n }\n res += segment;\n return res;\n }, \"\");\n return [path, labelX, labelY, offsetX, offsetY];\n}\nfunction getStraightPath(straightEdgeParams) {\n const { sourceX, sourceY, targetX, targetY } = straightEdgeParams;\n const [centerX, centerY, offsetX, offsetY] = getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n });\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, centerX, centerY, offsetX, offsetY];\n}\nconst StraightEdge = defineComponent({\n name: \"StraightEdge\",\n props: [\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getStraightPath(props);\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst StraightEdge$1 = StraightEdge;\nconst SmoothStepEdge = defineComponent({\n name: \"SmoothStepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"borderRadius\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\",\n \"offset\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSmoothStepPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SmoothStepEdge$1 = SmoothStepEdge;\nconst StepEdge = defineComponent({\n name: \"StepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n setup(props, { attrs }) {\n return () => h(SmoothStepEdge$1, { ...props, ...attrs, borderRadius: 0 });\n }\n});\nconst StepEdge$1 = StepEdge;\nconst BezierEdge = defineComponent({\n name: \"BezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"curvature\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst BezierEdge$1 = BezierEdge;\nconst SimpleBezierEdge = defineComponent({\n name: \"SimpleBezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SimpleBezierEdge$1 = SimpleBezierEdge;\nconst defaultNodeTypes = {\n input: InputNode$1,\n default: DefaultNode$1,\n output: OutputNode$1\n};\nconst defaultEdgeTypes = {\n default: BezierEdge$1,\n straight: StraightEdge$1,\n step: StepEdge$1,\n smoothstep: SmoothStepEdge$1,\n simplebezier: SimpleBezierEdge$1\n};\nfunction useGetters(state, nodeLookup, edgeLookup) {\n const getNode = computed(() => (id2) => nodeLookup.value.get(id2));\n const getEdge = computed(() => (id2) => edgeLookup.value.get(id2));\n const getEdgeTypes = computed(() => {\n const edgeTypes = {\n ...defaultEdgeTypes,\n ...state.edgeTypes\n };\n const keys = Object.keys(edgeTypes);\n for (const e of state.edges) {\n e.type && !keys.includes(e.type) && (edgeTypes[e.type] = e.type);\n }\n return edgeTypes;\n });\n const getNodeTypes = computed(() => {\n const nodeTypes = {\n ...defaultNodeTypes,\n ...state.nodeTypes\n };\n const keys = Object.keys(nodeTypes);\n for (const n of state.nodes) {\n n.type && !keys.includes(n.type) && (nodeTypes[n.type] = n.type);\n }\n return nodeTypes;\n });\n const getNodes = computed(() => {\n if (state.onlyRenderVisibleElements) {\n return getNodesInside(\n state.nodes,\n {\n x: 0,\n y: 0,\n width: state.dimensions.width,\n height: state.dimensions.height\n },\n state.viewport,\n true\n );\n }\n return state.nodes;\n });\n const getEdges = computed(() => {\n if (state.onlyRenderVisibleElements) {\n const visibleEdges = [];\n for (const edge of state.edges) {\n const source = nodeLookup.value.get(edge.source);\n const target = nodeLookup.value.get(edge.target);\n if (isEdgeVisible({\n sourcePos: source.computedPosition || { x: 0, y: 0 },\n targetPos: target.computedPosition || { x: 0, y: 0 },\n sourceWidth: source.dimensions.width,\n sourceHeight: source.dimensions.height,\n targetWidth: target.dimensions.width,\n targetHeight: target.dimensions.height,\n width: state.dimensions.width,\n height: state.dimensions.height,\n viewport: state.viewport\n })) {\n visibleEdges.push(edge);\n }\n }\n return visibleEdges;\n }\n return state.edges;\n });\n const getElements = computed(() => [...getNodes.value, ...getEdges.value]);\n const getSelectedNodes = computed(() => {\n const selectedNodes = [];\n for (const node of state.nodes) {\n if (node.selected) {\n selectedNodes.push(node);\n }\n }\n return selectedNodes;\n });\n const getSelectedEdges = computed(() => {\n const selectedEdges = [];\n for (const edge of state.edges) {\n if (edge.selected) {\n selectedEdges.push(edge);\n }\n }\n return selectedEdges;\n });\n const getSelectedElements = computed(() => [\n ...getSelectedNodes.value,\n ...getSelectedEdges.value\n ]);\n const getNodesInitialized = computed(() => {\n const initializedNodes = [];\n for (const node of state.nodes) {\n if (!!node.dimensions.width && !!node.dimensions.height && node.handleBounds !== void 0) {\n initializedNodes.push(node);\n }\n }\n return initializedNodes;\n });\n const areNodesInitialized = computed(\n () => getNodes.value.length > 0 && getNodesInitialized.value.length === getNodes.value.length\n );\n return {\n getNode,\n getEdge,\n getElements,\n getEdgeTypes,\n getNodeTypes,\n getEdges,\n getNodes,\n getSelectedElements,\n getSelectedNodes,\n getSelectedEdges,\n getNodesInitialized,\n areNodesInitialized\n };\n}\nclass Storage {\n constructor() {\n this.currentId = 0;\n this.flows = /* @__PURE__ */ new Map();\n }\n static getInstance() {\n var _a;\n const vueApp = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app;\n const existingInstance = (vueApp == null ? void 0 : vueApp.config.globalProperties.$vueFlowStorage) ?? Storage.instance;\n Storage.instance = existingInstance ?? new Storage();\n if (vueApp) {\n vueApp.config.globalProperties.$vueFlowStorage = Storage.instance;\n }\n return Storage.instance;\n }\n set(id2, flow) {\n return this.flows.set(id2, flow);\n }\n get(id2) {\n return this.flows.get(id2);\n }\n remove(id2) {\n return this.flows.delete(id2);\n }\n create(id2, preloadedState) {\n const state = useState();\n const reactiveState = reactive(state);\n const hooksOn = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n const name = `on${n.charAt(0).toUpperCase() + n.slice(1)}`;\n hooksOn[name] = h2.on;\n }\n const emits = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n emits[n] = h2.trigger;\n }\n const nodeLookup = computed(() => {\n const nodesMap = /* @__PURE__ */ new Map();\n for (const node of reactiveState.nodes) {\n nodesMap.set(node.id, node);\n }\n return nodesMap;\n });\n const edgeLookup = computed(() => {\n const edgesMap = /* @__PURE__ */ new Map();\n for (const edge of reactiveState.edges) {\n edgesMap.set(edge.id, edge);\n }\n return edgesMap;\n });\n const getters = useGetters(reactiveState, nodeLookup, edgeLookup);\n const actions = useActions(reactiveState, nodeLookup, edgeLookup);\n actions.setState({ ...reactiveState, ...preloadedState });\n const flow = {\n ...hooksOn,\n ...getters,\n ...actions,\n ...toRefs(reactiveState),\n nodeLookup,\n edgeLookup,\n emits,\n id: id2,\n vueFlowVersion: \"1.45.0\",\n $destroy: () => {\n this.remove(id2);\n }\n };\n this.set(id2, flow);\n return flow;\n }\n getId() {\n return `vue-flow-${this.currentId++}`;\n }\n}\nfunction useVueFlow(idOrOpts) {\n const storage = Storage.getInstance();\n const scope = getCurrentScope();\n const isOptsObj = typeof idOrOpts === \"object\";\n const options = isOptsObj ? idOrOpts : { id: idOrOpts };\n const id2 = options.id;\n const vueFlowId = id2 ?? (scope == null ? void 0 : scope.vueFlowId);\n let vueFlow;\n if (scope) {\n const injectedState = inject(VueFlow, null);\n if (typeof injectedState !== \"undefined\" && injectedState !== null && (!vueFlowId || injectedState.id === vueFlowId)) {\n vueFlow = injectedState;\n }\n }\n if (!vueFlow) {\n if (vueFlowId) {\n vueFlow = storage.get(vueFlowId);\n }\n }\n if (!vueFlow || vueFlowId && vueFlow.id !== vueFlowId) {\n const name = id2 ?? storage.getId();\n const state = storage.create(name, options);\n vueFlow = state;\n const vfScope = scope ?? effectScope(true);\n vfScope.run(() => {\n watch(\n state.applyDefault,\n (shouldApplyDefault, __, onCleanup) => {\n const nodesChangeHandler = (changes) => {\n state.applyNodeChanges(changes);\n };\n const edgesChangeHandler = (changes) => {\n state.applyEdgeChanges(changes);\n };\n if (shouldApplyDefault) {\n state.onNodesChange(nodesChangeHandler);\n state.onEdgesChange(edgesChangeHandler);\n } else {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n }\n onCleanup(() => {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n });\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n if (vueFlow) {\n const storedInstance = storage.get(vueFlow.id);\n if (storedInstance) {\n storedInstance.$destroy();\n } else {\n warn(`No store instance found for id ${vueFlow.id} in storage.`);\n }\n }\n });\n });\n } else {\n if (isOptsObj) {\n vueFlow.setState(options);\n }\n }\n if (scope) {\n provide(VueFlow, vueFlow);\n scope.vueFlowId = vueFlow.id;\n }\n if (isOptsObj) {\n const instance = getCurrentInstance();\n if ((instance == null ? void 0 : instance.type.name) !== \"VueFlow\") {\n vueFlow.emits.error(new VueFlowError(ErrorCode.USEVUEFLOW_OPTIONS));\n }\n }\n return vueFlow;\n}\nfunction useResizeHandler(viewportEl) {\n const { emits, dimensions } = useVueFlow();\n let resizeObserver;\n onMounted(() => {\n const rendererNode = viewportEl.value;\n const updateDimensions = () => {\n if (!rendererNode) {\n return;\n }\n const size = getDimensions(rendererNode);\n if (size.width === 0 || size.height === 0) {\n emits.error(new VueFlowError(ErrorCode.MISSING_VIEWPORT_DIMENSIONS));\n }\n dimensions.value = { width: size.width || 500, height: size.height || 500 };\n };\n updateDimensions();\n window.addEventListener(\"resize\", updateDimensions);\n if (rendererNode) {\n resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(rendererNode);\n }\n onBeforeUnmount(() => {\n window.removeEventListener(\"resize\", updateDimensions);\n if (resizeObserver && rendererNode) {\n resizeObserver.unobserve(rendererNode);\n }\n });\n });\n}\nconst __default__$c = {\n name: \"UserSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n ...__default__$c,\n props: {\n userSelectionRect: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__selection vue-flow__container\",\n style: normalizeStyle({\n width: `${_ctx.userSelectionRect.width}px`,\n height: `${_ctx.userSelectionRect.height}px`,\n transform: `translate(${_ctx.userSelectionRect.x}px, ${_ctx.userSelectionRect.y}px)`\n })\n }, null, 4);\n };\n }\n});\nconst _hoisted_1$6 = [\"tabIndex\"];\nconst __default__$b = {\n name: \"NodesSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n ...__default__$b,\n setup(__props) {\n const { emits, viewport, getSelectedNodes, noPanClassName, disableKeyboardA11y, userSelectionActive } = useVueFlow();\n const updatePositions = useUpdateNodePositions();\n const el = ref(null);\n const dragging = useDrag({\n el,\n onStart(args) {\n emits.selectionDragStart(args);\n },\n onDrag(args) {\n emits.selectionDrag(args);\n },\n onStop(args) {\n emits.selectionDragStop(args);\n }\n });\n onMounted(() => {\n var _a;\n if (!disableKeyboardA11y.value) {\n (_a = el.value) == null ? void 0 : _a.focus({ preventScroll: true });\n }\n });\n const selectedNodesBBox = computed(() => getRectOfNodes(getSelectedNodes.value));\n const innerStyle = computed(() => ({\n width: `${selectedNodesBBox.value.width}px`,\n height: `${selectedNodesBBox.value.height}px`,\n top: `${selectedNodesBBox.value.y}px`,\n left: `${selectedNodesBBox.value.x}px`\n }));\n function onContextMenu(event) {\n emits.selectionContextMenu({ event, nodes: getSelectedNodes.value });\n }\n function onKeyDown(event) {\n if (disableKeyboardA11y) {\n return;\n }\n if (arrowKeyDiffs[event.key]) {\n event.preventDefault();\n updatePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n return (_ctx, _cache) => {\n return !unref(userSelectionActive) && selectedNodesBBox.value.width && selectedNodesBBox.value.height ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vue-flow__nodesselection vue-flow__container\", unref(noPanClassName)]),\n style: normalizeStyle({ transform: `translate(${unref(viewport).x}px,${unref(viewport).y}px) scale(${unref(viewport).zoom})` })\n }, [\n createElementVNode(\"div\", {\n ref_key: \"el\",\n ref: el,\n class: normalizeClass([{ dragging: unref(dragging) }, \"vue-flow__nodesselection-rect\"]),\n style: normalizeStyle(innerStyle.value),\n tabIndex: unref(disableKeyboardA11y) ? void 0 : -1,\n onContextmenu: onContextMenu,\n onKeydown: onKeyDown\n }, null, 46, _hoisted_1$6)\n ], 6)) : createCommentVNode(\"\", true);\n };\n }\n});\nfunction getMousePosition(event, containerBounds) {\n return {\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n };\n}\nconst __default__$a = {\n name: \"Pane\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n ...__default__$a,\n props: {\n isSelecting: { type: Boolean },\n selectionKeyPressed: { type: Boolean }\n },\n setup(__props) {\n const {\n vueFlowRef,\n nodes,\n viewport,\n emits,\n userSelectionActive,\n removeSelectedElements,\n userSelectionRect,\n elementsSelectable,\n nodesSelectionActive,\n getSelectedEdges,\n getSelectedNodes,\n removeNodes,\n removeEdges,\n selectionMode,\n deleteKeyCode,\n multiSelectionKeyCode,\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n connectionLookup,\n defaultEdgeOptions,\n connectionStartHandle\n } = useVueFlow();\n const container = ref(null);\n const selectedNodeIds = ref(/* @__PURE__ */ new Set());\n const selectedEdgeIds = ref(/* @__PURE__ */ new Set());\n const containerBounds = ref();\n const hasActiveSelection = toRef(() => elementsSelectable.value && (__props.isSelecting || userSelectionActive.value));\n const connectionInProgress = toRef(() => connectionStartHandle.value !== null);\n let selectionInProgress = false;\n let selectionStarted = false;\n const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });\n const multiSelectKeyPressed = useKeyPress(multiSelectionKeyCode);\n watch(deleteKeyPressed, (isKeyPressed) => {\n if (!isKeyPressed) {\n return;\n }\n removeNodes(getSelectedNodes.value);\n removeEdges(getSelectedEdges.value);\n nodesSelectionActive.value = false;\n });\n watch(multiSelectKeyPressed, (isKeyPressed) => {\n multiSelectionActive.value = isKeyPressed;\n });\n function wrapHandler(handler, containerRef) {\n return (event) => {\n if (event.target !== containerRef) {\n return;\n }\n handler == null ? void 0 : handler(event);\n };\n }\n function onClick(event) {\n if (selectionInProgress || connectionInProgress.value) {\n selectionInProgress = false;\n return;\n }\n emits.paneClick(event);\n removeSelectedElements();\n nodesSelectionActive.value = false;\n }\n function onContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n emits.paneContextMenu(event);\n }\n function onWheel(event) {\n emits.paneScroll(event);\n }\n function onPointerDown(event) {\n var _a, _b, _c;\n containerBounds.value = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!elementsSelectable.value || !__props.isSelecting || event.button !== 0 || event.target !== container.value || !containerBounds.value) {\n return;\n }\n (_c = (_b = event.target) == null ? void 0 : _b.setPointerCapture) == null ? void 0 : _c.call(_b, event.pointerId);\n const { x, y } = getMousePosition(event, containerBounds.value);\n selectionStarted = true;\n selectionInProgress = false;\n removeSelectedElements();\n userSelectionRect.value = {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y\n };\n emits.selectionStart(event);\n }\n function onPointerMove(event) {\n var _a;\n if (!containerBounds.value || !userSelectionRect.value) {\n return;\n }\n selectionInProgress = true;\n const { x: mouseX, y: mouseY } = getEventPosition(event, containerBounds.value);\n const { startX = 0, startY = 0 } = userSelectionRect.value;\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY)\n };\n const prevSelectedNodeIds = selectedNodeIds.value;\n const prevSelectedEdgeIds = selectedEdgeIds.value;\n selectedNodeIds.value = new Set(\n getNodesInside(nodes.value, nextUserSelectRect, viewport.value, selectionMode.value === SelectionMode.Partial, true).map(\n (node) => node.id\n )\n );\n selectedEdgeIds.value = /* @__PURE__ */ new Set();\n const edgesSelectable = ((_a = defaultEdgeOptions.value) == null ? void 0 : _a.selectable) ?? true;\n for (const nodeId of selectedNodeIds.value) {\n const connections = connectionLookup.value.get(nodeId);\n if (!connections) {\n continue;\n }\n for (const { edgeId } of connections.values()) {\n const edge = edgeLookup.value.get(edgeId);\n if (edge && (edge.selectable ?? edgesSelectable)) {\n selectedEdgeIds.value.add(edgeId);\n }\n }\n }\n if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.value)) {\n const changes = getSelectionChanges(nodeLookup.value, selectedNodeIds.value, true);\n emits.nodesChange(changes);\n }\n if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.value)) {\n const changes = getSelectionChanges(edgeLookup.value, selectedEdgeIds.value);\n emits.edgesChange(changes);\n }\n userSelectionRect.value = nextUserSelectRect;\n userSelectionActive.value = true;\n nodesSelectionActive.value = false;\n }\n function onPointerUp(event) {\n var _a;\n if (event.button !== 0 || !selectionStarted) {\n return;\n }\n (_a = event.target) == null ? void 0 : _a.releasePointerCapture(event.pointerId);\n if (!userSelectionActive.value && userSelectionRect.value && event.target === container.value) {\n onClick(event);\n }\n userSelectionActive.value = false;\n userSelectionRect.value = null;\n nodesSelectionActive.value = selectedNodeIds.value.size > 0;\n emits.selectionEnd(event);\n if (__props.selectionKeyPressed) {\n selectionInProgress = false;\n }\n selectionStarted = false;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: normalizeClass([\"vue-flow__pane vue-flow__container\", { selection: _ctx.isSelecting }]),\n onClick: _cache[0] || (_cache[0] = (event) => hasActiveSelection.value ? void 0 : wrapHandler(onClick, container.value)(event)),\n onContextmenu: _cache[1] || (_cache[1] = ($event) => wrapHandler(onContextMenu, container.value)($event)),\n onWheelPassive: _cache[2] || (_cache[2] = ($event) => wrapHandler(onWheel, container.value)($event)),\n onPointerenter: _cache[3] || (_cache[3] = (event) => hasActiveSelection.value ? void 0 : unref(emits).paneMouseEnter(event)),\n onPointerdown: _cache[4] || (_cache[4] = (event) => hasActiveSelection.value ? onPointerDown(event) : unref(emits).paneMouseMove(event)),\n onPointermove: _cache[5] || (_cache[5] = (event) => hasActiveSelection.value ? onPointerMove(event) : unref(emits).paneMouseMove(event)),\n onPointerup: _cache[6] || (_cache[6] = (event) => hasActiveSelection.value ? onPointerUp(event) : void 0),\n onPointerleave: _cache[7] || (_cache[7] = ($event) => unref(emits).paneMouseLeave($event))\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n unref(userSelectionActive) && unref(userSelectionRect) ? (openBlock(), createBlock(_sfc_main$c, {\n key: 0,\n \"user-selection-rect\": unref(userSelectionRect)\n }, null, 8, [\"user-selection-rect\"])) : createCommentVNode(\"\", true),\n unref(nodesSelectionActive) && unref(getSelectedNodes).length ? (openBlock(), createBlock(_sfc_main$b, { key: 1 })) : createCommentVNode(\"\", true)\n ], 34);\n };\n }\n});\nconst __default__$9 = {\n name: \"Transform\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n ...__default__$9,\n setup(__props) {\n const { viewport, fitViewOnInit, fitViewOnInitDone } = useVueFlow();\n const isHidden = computed(() => {\n if (fitViewOnInit.value) {\n return !fitViewOnInitDone.value;\n }\n return false;\n });\n const transform = computed(() => `translate(${viewport.value.x}px,${viewport.value.y}px) scale(${viewport.value.zoom})`);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__transformationpane vue-flow__container\",\n style: normalizeStyle({ transform: transform.value, opacity: isHidden.value ? 0 : void 0 })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 4);\n };\n }\n});\nconst __default__$8 = {\n name: \"Viewport\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n ...__default__$8,\n setup(__props) {\n const {\n minZoom,\n maxZoom,\n defaultViewport,\n translateExtent,\n zoomActivationKeyCode,\n selectionKeyCode,\n panActivationKeyCode,\n panOnScroll,\n panOnScrollMode,\n panOnScrollSpeed,\n panOnDrag,\n zoomOnDoubleClick,\n zoomOnPinch,\n zoomOnScroll,\n preventScrolling,\n noWheelClassName,\n noPanClassName,\n emits,\n connectionStartHandle,\n userSelectionActive,\n paneDragging,\n d3Zoom: storeD3Zoom,\n d3Selection: storeD3Selection,\n d3ZoomHandler: storeD3ZoomHandler,\n viewport,\n viewportRef,\n paneClickDistance\n } = useVueFlow();\n useResizeHandler(viewportRef);\n const isZoomingOrPanning = shallowRef(false);\n const isPanScrolling = shallowRef(false);\n let panScrollTimeout = null;\n let zoomedWithRightMouseButton = false;\n let mouseButton = 0;\n let prevTransform = {\n x: 0,\n y: 0,\n zoom: 0\n };\n const panKeyPressed = useKeyPress(panActivationKeyCode);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const zoomKeyPressed = useKeyPress(zoomActivationKeyCode);\n const shouldPanOnDrag = toRef(\n () => (!selectionKeyPressed.value || selectionKeyPressed.value && selectionKeyCode.value === true) && (panKeyPressed.value || panOnDrag.value)\n );\n const shouldPanOnScroll = toRef(() => panKeyPressed.value || panOnScroll.value);\n const isSelecting = toRef(() => selectionKeyPressed.value || selectionKeyCode.value === true && shouldPanOnDrag.value !== true);\n onMounted(() => {\n if (!viewportRef.value) {\n warn(\"Viewport element is missing\");\n return;\n }\n const viewportElement = viewportRef.value;\n const bbox = viewportElement.getBoundingClientRect();\n const d3Zoom = zoom().clickDistance(paneClickDistance.value).scaleExtent([minZoom.value, maxZoom.value]).translateExtent(translateExtent.value);\n const d3Selection = select(viewportElement).call(d3Zoom);\n const d3ZoomHandler = d3Selection.on(\"wheel.zoom\");\n const updatedTransform = identity.translate(defaultViewport.value.x ?? 0, defaultViewport.value.y ?? 0).scale(clamp(defaultViewport.value.zoom ?? 1, minZoom.value, maxZoom.value));\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(updatedTransform, extent, translateExtent.value);\n d3Zoom.transform(d3Selection, constrainedTransform);\n d3Zoom.wheelDelta(wheelDelta);\n storeD3Zoom.value = d3Zoom;\n storeD3Selection.value = d3Selection;\n storeD3ZoomHandler.value = d3ZoomHandler;\n viewport.value = { x: constrainedTransform.x, y: constrainedTransform.y, zoom: constrainedTransform.k };\n d3Zoom.on(\"start\", (event) => {\n var _a;\n if (!event.sourceEvent) {\n return null;\n }\n mouseButton = event.sourceEvent.button;\n isZoomingOrPanning.value = true;\n const flowTransform = eventToFlowTransform(event.transform);\n if (((_a = event.sourceEvent) == null ? void 0 : _a.type) === \"mousedown\") {\n paneDragging.value = true;\n }\n prevTransform = flowTransform;\n emits.viewportChangeStart(flowTransform);\n emits.moveStart({ event, flowTransform });\n });\n d3Zoom.on(\"end\", (event) => {\n if (!event.sourceEvent) {\n return null;\n }\n isZoomingOrPanning.value = false;\n paneDragging.value = false;\n if (isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0) && !zoomedWithRightMouseButton) {\n emits.paneContextMenu(event.sourceEvent);\n }\n zoomedWithRightMouseButton = false;\n if (viewChanged(prevTransform, event.transform)) {\n const flowTransform = eventToFlowTransform(event.transform);\n prevTransform = flowTransform;\n emits.viewportChangeEnd(flowTransform);\n emits.moveEnd({ event, flowTransform });\n }\n });\n d3Zoom.filter((event) => {\n var _a;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const eventButton = event.button;\n if (eventButton === 1 && event.type === \"mousedown\" && (isWrappedWithClass(event, \"vue-flow__node\") || isWrappedWithClass(event, \"vue-flow__edge\"))) {\n return true;\n }\n if (!shouldPanOnDrag.value && !zoomScroll && !shouldPanOnScroll.value && !zoomOnDoubleClick.value && !zoomOnPinch.value) {\n return false;\n }\n if (userSelectionActive.value) {\n return false;\n }\n if (!zoomOnDoubleClick.value && event.type === \"dblclick\") {\n return false;\n }\n if (isWrappedWithClass(event, noWheelClassName.value) && event.type === \"wheel\") {\n return false;\n }\n if (isWrappedWithClass(event, noPanClassName.value) && (event.type !== \"wheel\" || shouldPanOnScroll.value && event.type === \"wheel\" && !zoomKeyPressed.value)) {\n return false;\n }\n if (!zoomOnPinch.value && event.ctrlKey && event.type === \"wheel\") {\n return false;\n }\n if (!zoomScroll && !shouldPanOnScroll.value && !pinchZoom && event.type === \"wheel\") {\n return false;\n }\n if (!zoomOnPinch && event.type === \"touchstart\" && ((_a = event.touches) == null ? void 0 : _a.length) > 1) {\n event.preventDefault();\n return false;\n }\n if (!shouldPanOnDrag.value && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n if (selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && panOnDrag.value.includes(0) && eventButton === 0) {\n return false;\n }\n if (Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(eventButton) && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n const buttonAllowed = Array.isArray(panOnDrag.value) && panOnDrag.value.includes(eventButton) || selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(0) || !eventButton || eventButton <= 1;\n return (!event.ctrlKey || panKeyPressed.value || event.type === \"wheel\") && buttonAllowed;\n });\n watch(\n [userSelectionActive, shouldPanOnDrag],\n () => {\n if (userSelectionActive.value && !isZoomingOrPanning.value) {\n d3Zoom.on(\"zoom\", null);\n } else if (!userSelectionActive.value) {\n d3Zoom.on(\"zoom\", (event) => {\n viewport.value = { x: event.transform.x, y: event.transform.y, zoom: event.transform.k };\n const flowTransform = eventToFlowTransform(event.transform);\n zoomedWithRightMouseButton = isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0);\n emits.viewportChange(flowTransform);\n emits.move({ event, flowTransform });\n });\n }\n },\n { immediate: true }\n );\n watch(\n [userSelectionActive, shouldPanOnScroll, panOnScrollMode, zoomKeyPressed, zoomOnPinch, preventScrolling, noWheelClassName],\n () => {\n if (shouldPanOnScroll.value && !zoomKeyPressed.value && !userSelectionActive.value) {\n d3Selection.on(\n \"wheel.zoom\",\n (event) => {\n if (isWrappedWithClass(event, noWheelClassName.value)) {\n return false;\n }\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventEnabled = !preventScrolling.value || shouldPanOnScroll.value || zoomScroll || pinchZoom;\n if (!scrollEventEnabled) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n const currentZoom = d3Selection.property(\"__zoom\").k || 1;\n const _isMacOs = isMacOs();\n if (!panKeyPressed.value && event.ctrlKey && zoomOnPinch.value && _isMacOs) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom2 = currentZoom * 2 ** pinchDelta;\n d3Zoom.scaleTo(d3Selection, zoom2, point, event);\n return;\n }\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX = panOnScrollMode.value === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n let deltaY = panOnScrollMode.value === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n if (!_isMacOs && event.shiftKey && panOnScrollMode.value !== PanOnScrollMode.Vertical && !deltaX && deltaY) {\n deltaX = deltaY;\n deltaY = 0;\n }\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed.value,\n -(deltaY / currentZoom) * panOnScrollSpeed.value\n );\n const nextViewport = eventToFlowTransform(d3Selection.property(\"__zoom\"));\n if (panScrollTimeout) {\n clearTimeout(panScrollTimeout);\n }\n if (!isPanScrolling.value) {\n isPanScrolling.value = true;\n emits.moveStart({ event, flowTransform: nextViewport });\n emits.viewportChangeStart(nextViewport);\n } else {\n emits.move({ event, flowTransform: nextViewport });\n emits.viewportChange(nextViewport);\n panScrollTimeout = setTimeout(() => {\n emits.moveEnd({ event, flowTransform: nextViewport });\n emits.viewportChangeEnd(nextViewport);\n isPanScrolling.value = false;\n }, 150);\n }\n },\n { passive: false }\n );\n } else if (typeof d3ZoomHandler !== \"undefined\") {\n d3Selection.on(\n \"wheel.zoom\",\n function(event, d) {\n const invalidEvent = !preventScrolling.value && event.type === \"wheel\" && !event.ctrlKey;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventsDisabled = !zoomScroll && !panOnScroll.value && !pinchZoom && event.type === \"wheel\";\n if (scrollEventsDisabled || invalidEvent || isWrappedWithClass(event, noWheelClassName.value)) {\n return null;\n }\n event.preventDefault();\n d3ZoomHandler.call(this, event, d);\n },\n { passive: false }\n );\n }\n },\n { immediate: true }\n );\n });\n function isRightClickPan(pan, usedButton) {\n return usedButton === 2 && Array.isArray(pan) && pan.includes(2);\n }\n function wheelDelta(event) {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * factor;\n }\n function viewChanged(prevViewport, eventTransform) {\n return prevViewport.x !== eventTransform.x && !Number.isNaN(eventTransform.x) || prevViewport.y !== eventTransform.y && !Number.isNaN(eventTransform.y) || prevViewport.zoom !== eventTransform.k && !Number.isNaN(eventTransform.k);\n }\n function eventToFlowTransform(eventTransform) {\n return {\n x: eventTransform.x,\n y: eventTransform.y,\n zoom: eventTransform.k\n };\n }\n function isWrappedWithClass(event, className) {\n return event.target.closest(`.${className}`);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"viewportRef\",\n ref: viewportRef,\n class: \"vue-flow__viewport vue-flow__container\"\n }, [\n createVNode(_sfc_main$a, {\n \"is-selecting\": isSelecting.value,\n \"selection-key-pressed\": unref(selectionKeyPressed),\n class: normalizeClass({\n connecting: !!unref(connectionStartHandle),\n dragging: unref(paneDragging),\n draggable: unref(panOnDrag) === true || Array.isArray(unref(panOnDrag)) && unref(panOnDrag).includes(0)\n })\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$9, null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n })\n ]),\n _: 3\n }, 8, [\"is-selecting\", \"selection-key-pressed\", \"class\"])\n ], 512);\n };\n }\n});\nconst _hoisted_1$5 = [\"id\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"id\"];\nconst __default__$7 = {\n name: \"A11yDescriptions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n ...__default__$7,\n setup(__props) {\n const { id: id2, disableKeyboardA11y, ariaLiveMessage } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", {\n id: `${unref(ARIA_NODE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select a node. \" + toDisplayString(!unref(disableKeyboardA11y) ? \"You can then use the arrow keys to move the node around.\" : \"\") + \" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. \", 9, _hoisted_1$5),\n createElementVNode(\"div\", {\n id: `${unref(ARIA_EDGE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. \", 8, _hoisted_2),\n !unref(disableKeyboardA11y) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: `${unref(ARIA_LIVE_MESSAGE)}-${unref(id2)}`,\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n style: { \"position\": \"absolute\", \"width\": \"1px\", \"height\": \"1px\", \"margin\": \"-1px\", \"border\": \"0\", \"padding\": \"0\", \"overflow\": \"hidden\", \"clip\": \"rect(0px, 0px, 0px, 0px)\", \"clip-path\": \"inset(100%)\" }\n }, toDisplayString(unref(ariaLiveMessage)), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction useOnInitHandler() {\n const vfInstance = useVueFlow();\n watch(\n () => vfInstance.viewportHelper.value.viewportInitialized,\n (isInitialized) => {\n if (isInitialized) {\n setTimeout(() => {\n vfInstance.emits.init(vfInstance);\n vfInstance.emits.paneReady(vfInstance);\n }, 1);\n }\n }\n );\n}\nfunction shiftX(x, shift, position) {\n if (position === Position.Left) {\n return x - shift;\n }\n if (position === Position.Right) {\n return x + shift;\n }\n return x;\n}\nfunction shiftY(y, shift, position) {\n if (position === Position.Top) {\n return y - shift;\n }\n if (position === Position.Bottom) {\n return y + shift;\n }\n return y;\n}\nconst EdgeAnchor = function({\n radius = 10,\n centerX = 0,\n centerY = 0,\n position = Position.Top,\n type\n}) {\n return h(\"circle\", {\n class: `vue-flow__edgeupdater vue-flow__edgeupdater-${type}`,\n cx: shiftX(centerX, radius, position),\n cy: shiftY(centerY, radius, position),\n r: radius,\n stroke: \"transparent\",\n fill: \"transparent\"\n });\n};\nEdgeAnchor.props = [\"radius\", \"centerX\", \"centerY\", \"position\", \"type\"];\nEdgeAnchor.compatConfig = { MODE: 3 };\nconst EdgeAnchor$1 = EdgeAnchor;\nconst EdgeWrapper = defineComponent({\n name: \"Edge\",\n compatConfig: { MODE: 3 },\n props: [\"id\"],\n setup(props) {\n const {\n id: vueFlowId,\n addSelectedEdges,\n connectionMode,\n edgeUpdaterRadius,\n emits,\n nodesSelectionActive,\n noPanClassName,\n getEdgeTypes,\n removeSelectedEdges,\n findEdge,\n findNode,\n isValidConnection,\n multiSelectionActive,\n disableKeyboardA11y,\n elementsSelectable,\n edgesUpdatable,\n edgesFocusable,\n hooks\n } = useVueFlow();\n const edge = computed(() => findEdge(props.id));\n const { emit, on } = useEdgeHooks(edge.value, emits);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const mouseOver = ref(false);\n const updating = ref(false);\n const nodeId = ref(\"\");\n const handleId = ref(null);\n const edgeUpdaterType = ref(\"source\");\n const edgeEl = ref(null);\n const isSelectable = toRef(\n () => typeof edge.value.selectable === \"undefined\" ? elementsSelectable.value : edge.value.selectable\n );\n const isUpdatable = toRef(() => typeof edge.value.updatable === \"undefined\" ? edgesUpdatable.value : edge.value.updatable);\n const isFocusable = toRef(() => typeof edge.value.focusable === \"undefined\" ? edgesFocusable.value : edge.value.focusable);\n provide(EdgeId, props.id);\n provide(EdgeRef, edgeEl);\n const edgeClass = computed(() => edge.value.class instanceof Function ? edge.value.class(edge.value) : edge.value.class);\n const edgeStyle = computed(() => edge.value.style instanceof Function ? edge.value.style(edge.value) : edge.value.style);\n const edgeCmp = computed(() => {\n const name = edge.value.type || \"default\";\n const slot = slots == null ? void 0 : slots[`edge-${name}`];\n if (slot) {\n return slot;\n }\n let edgeType = edge.value.template ?? getEdgeTypes.value[name];\n if (typeof edgeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n edgeType = resolveComponent(name, false);\n }\n }\n }\n if (edgeType && typeof edgeType !== \"string\") {\n return edgeType;\n }\n emits.error(new VueFlowError(ErrorCode.EDGE_TYPE_MISSING, edgeType));\n return false;\n });\n const { handlePointerDown } = useHandle({\n nodeId,\n handleId,\n type: edgeUpdaterType,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n });\n return () => {\n const sourceNode = findNode(edge.value.source);\n const targetNode = findNode(edge.value.target);\n const pathOptions = \"pathOptions\" in edge.value ? edge.value.pathOptions : {};\n if (!sourceNode && !targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.value.id, edge.value.source, edge.value.target));\n return null;\n }\n if (!sourceNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.value.id, edge.value.source));\n return null;\n }\n if (!targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.value.id, edge.value.target));\n return null;\n }\n if (!edge.value || edge.value.hidden || sourceNode.hidden || targetNode.hidden) {\n return null;\n }\n let sourceNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n sourceNodeHandles = sourceNode.handleBounds.source;\n } else {\n sourceNodeHandles = [...sourceNode.handleBounds.source || [], ...sourceNode.handleBounds.target || []];\n }\n const sourceHandle = getEdgeHandle(sourceNodeHandles, edge.value.sourceHandle);\n let targetNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n targetNodeHandles = targetNode.handleBounds.target;\n } else {\n targetNodeHandles = [...targetNode.handleBounds.target || [], ...targetNode.handleBounds.source || []];\n }\n const targetHandle = getEdgeHandle(targetNodeHandles, edge.value.targetHandle);\n const sourcePosition = (sourceHandle == null ? void 0 : sourceHandle.position) || Position.Bottom;\n const targetPosition = (targetHandle == null ? void 0 : targetHandle.position) || Position.Top;\n const { x: sourceX, y: sourceY } = getHandlePosition(sourceNode, sourceHandle, sourcePosition);\n const { x: targetX, y: targetY } = getHandlePosition(targetNode, targetHandle, targetPosition);\n edge.value.sourceX = sourceX;\n edge.value.sourceY = sourceY;\n edge.value.targetX = targetX;\n edge.value.targetY = targetY;\n return h(\n \"g\",\n {\n \"ref\": edgeEl,\n \"key\": props.id,\n \"data-id\": props.id,\n \"class\": [\n \"vue-flow__edge\",\n `vue-flow__edge-${edgeCmp.value === false ? \"default\" : edge.value.type || \"default\"}`,\n noPanClassName.value,\n edgeClass.value,\n {\n updating: mouseOver.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n inactive: !isSelectable.value && !hooks.value.edgeClick.hasListeners()\n }\n ],\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"aria-label\": edge.value.ariaLabel === null ? void 0 : edge.value.ariaLabel ?? `Edge from ${edge.value.source} to ${edge.value.target}`,\n \"aria-describedby\": isFocusable.value ? `${ARIA_EDGE_DESC_KEY}-${vueFlowId}` : void 0,\n \"aria-roledescription\": \"edge\",\n \"role\": isFocusable.value ? \"group\" : \"img\",\n ...edge.value.domAttributes,\n \"onClick\": onEdgeClick,\n \"onContextmenu\": onEdgeContextMenu,\n \"onDblclick\": onDoubleClick,\n \"onMouseenter\": onEdgeMouseEnter,\n \"onMousemove\": onEdgeMouseMove,\n \"onMouseleave\": onEdgeMouseLeave,\n \"onKeyDown\": isFocusable.value ? onKeyDown : void 0\n },\n [\n updating.value ? null : h(edgeCmp.value === false ? getEdgeTypes.value.default : edgeCmp.value, {\n id: props.id,\n sourceNode,\n targetNode,\n source: edge.value.source,\n target: edge.value.target,\n type: edge.value.type,\n updatable: isUpdatable.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n label: edge.value.label,\n labelStyle: edge.value.labelStyle,\n labelShowBg: edge.value.labelShowBg,\n labelBgStyle: edge.value.labelBgStyle,\n labelBgPadding: edge.value.labelBgPadding,\n labelBgBorderRadius: edge.value.labelBgBorderRadius,\n data: edge.value.data,\n events: { ...edge.value.events, ...on },\n style: edgeStyle.value,\n markerStart: `url('#${getMarkerId(edge.value.markerStart, vueFlowId)}')`,\n markerEnd: `url('#${getMarkerId(edge.value.markerEnd, vueFlowId)}')`,\n sourcePosition,\n targetPosition,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceHandleId: edge.value.sourceHandle,\n targetHandleId: edge.value.targetHandle,\n interactionWidth: edge.value.interactionWidth,\n ...pathOptions\n }),\n [\n isUpdatable.value === \"source\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterSourceMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": sourcePosition,\n \"centerX\": sourceX,\n \"centerY\": sourceY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"source\",\n \"data-type\": \"source\"\n })\n )\n ] : null,\n isUpdatable.value === \"target\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterTargetMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": targetPosition,\n \"centerX\": targetX,\n \"centerY\": targetY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"target\",\n \"data-type\": \"target\"\n })\n )\n ] : null\n ]\n ]\n );\n };\n function onEdgeUpdaterMouseEnter() {\n mouseOver.value = true;\n }\n function onEdgeUpdaterMouseOut() {\n mouseOver.value = false;\n }\n function onEdgeUpdate(event, connection) {\n emit.update({ event, edge: edge.value, connection });\n }\n function onEdgeUpdateEnd(event) {\n emit.updateEnd({ event, edge: edge.value });\n updating.value = false;\n }\n function handleEdgeUpdater(event, isSourceHandle) {\n if (event.button !== 0) {\n return;\n }\n updating.value = true;\n nodeId.value = isSourceHandle ? edge.value.target : edge.value.source;\n handleId.value = (isSourceHandle ? edge.value.targetHandle : edge.value.sourceHandle) ?? null;\n edgeUpdaterType.value = isSourceHandle ? \"target\" : \"source\";\n emit.updateStart({ event, edge: edge.value });\n handlePointerDown(event);\n }\n function onEdgeClick(event) {\n var _a;\n const data = { event, edge: edge.value };\n if (isSelectable.value) {\n nodesSelectionActive.value = false;\n if (edge.value.selected && multiSelectionActive.value) {\n removeSelectedEdges([edge.value]);\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n } else {\n addSelectedEdges([edge.value]);\n }\n }\n emit.click(data);\n }\n function onEdgeContextMenu(event) {\n emit.contextMenu({ event, edge: edge.value });\n }\n function onDoubleClick(event) {\n emit.doubleClick({ event, edge: edge.value });\n }\n function onEdgeMouseEnter(event) {\n emit.mouseEnter({ event, edge: edge.value });\n }\n function onEdgeMouseMove(event) {\n emit.mouseMove({ event, edge: edge.value });\n }\n function onEdgeMouseLeave(event) {\n emit.mouseLeave({ event, edge: edge.value });\n }\n function onEdgeUpdaterSourceMouseDown(event) {\n handleEdgeUpdater(event, true);\n }\n function onEdgeUpdaterTargetMouseDown(event) {\n handleEdgeUpdater(event, false);\n }\n function onKeyDown(event) {\n var _a;\n if (!disableKeyboardA11y.value && elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n if (unselect) {\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n removeSelectedEdges([findEdge(props.id)]);\n } else {\n addSelectedEdges([findEdge(props.id)]);\n }\n }\n }\n }\n});\nconst EdgeWrapper$1 = EdgeWrapper;\nconst ConnectionLine = defineComponent({\n name: \"ConnectionLine\",\n compatConfig: { MODE: 3 },\n setup() {\n var _a;\n const {\n id: id2,\n connectionMode,\n connectionStartHandle,\n connectionEndHandle,\n connectionPosition,\n connectionLineType,\n connectionLineStyle,\n connectionLineOptions,\n connectionStatus,\n viewport,\n findNode\n } = useVueFlow();\n const connectionLineComponent = (_a = inject(Slots)) == null ? void 0 : _a[\"connection-line\"];\n const fromNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionStartHandle.value) == null ? void 0 : _a2.nodeId);\n });\n const toNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionEndHandle.value) == null ? void 0 : _a2.nodeId) ?? null;\n });\n const toXY = computed(() => {\n return {\n x: (connectionPosition.value.x - viewport.value.x) / viewport.value.zoom,\n y: (connectionPosition.value.y - viewport.value.y) / viewport.value.zoom\n };\n });\n const markerStart = computed(\n () => connectionLineOptions.value.markerStart ? `url(#${getMarkerId(connectionLineOptions.value.markerStart, id2)})` : \"\"\n );\n const markerEnd = computed(\n () => connectionLineOptions.value.markerEnd ? `url(#${getMarkerId(connectionLineOptions.value.markerEnd, id2)})` : \"\"\n );\n return () => {\n var _a2, _b, _c;\n if (!fromNode.value || !connectionStartHandle.value) {\n return null;\n }\n const startHandleId = connectionStartHandle.value.id;\n const handleType = connectionStartHandle.value.type;\n const fromHandleBounds = fromNode.value.handleBounds;\n let handleBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType]) ?? [];\n if (connectionMode.value === ConnectionMode.Loose) {\n const oppositeBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType === \"source\" ? \"target\" : \"source\"]) ?? [];\n handleBounds = [...handleBounds, ...oppositeBounds];\n }\n if (!handleBounds) {\n return null;\n }\n const fromHandle = (startHandleId ? handleBounds.find((d) => d.id === startHandleId) : handleBounds[0]) ?? null;\n const fromPosition = (fromHandle == null ? void 0 : fromHandle.position) ?? Position.Top;\n const { x: fromX, y: fromY } = getHandlePosition(fromNode.value, fromHandle, fromPosition);\n let toHandle = null;\n if (toNode.value) {\n if (connectionMode.value === ConnectionMode.Strict) {\n toHandle = ((_a2 = toNode.value.handleBounds[handleType === \"source\" ? \"target\" : \"source\"]) == null ? void 0 : _a2.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n } else {\n toHandle = ((_b = [...toNode.value.handleBounds.source ?? [], ...toNode.value.handleBounds.target ?? []]) == null ? void 0 : _b.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n }\n }\n const toPosition = ((_c = connectionEndHandle.value) == null ? void 0 : _c.position) ?? (fromPosition ? oppositePosition[fromPosition] : null);\n if (!fromPosition || !toPosition) {\n return null;\n }\n const type = connectionLineType.value ?? connectionLineOptions.value.type ?? ConnectionLineType.Bezier;\n let dAttr = \"\";\n const pathParams = {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition\n };\n if (type === ConnectionLineType.Bezier) {\n [dAttr] = getBezierPath(pathParams);\n } else if (type === ConnectionLineType.Step) {\n [dAttr] = getSmoothStepPath({\n ...pathParams,\n borderRadius: 0\n });\n } else if (type === ConnectionLineType.SmoothStep) {\n [dAttr] = getSmoothStepPath(pathParams);\n } else if (type === ConnectionLineType.SimpleBezier) {\n [dAttr] = getSimpleBezierPath(pathParams);\n } else {\n dAttr = `M${fromX},${fromY} ${toXY.value.x},${toXY.value.y}`;\n }\n return h(\n \"svg\",\n { class: \"vue-flow__edges vue-flow__connectionline vue-flow__container\" },\n h(\n \"g\",\n { class: \"vue-flow__connection\" },\n connectionLineComponent ? h(connectionLineComponent, {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition,\n sourceNode: fromNode.value,\n sourceHandle: fromHandle,\n targetNode: toNode.value,\n targetHandle: toHandle,\n markerEnd: markerEnd.value,\n markerStart: markerStart.value,\n connectionStatus: connectionStatus.value\n }) : h(\"path\", {\n \"d\": dAttr,\n \"class\": [connectionLineOptions.value.class, connectionStatus, \"vue-flow__connection-path\"],\n \"style\": {\n ...connectionLineStyle.value,\n ...connectionLineOptions.value.style\n },\n \"marker-end\": markerEnd.value,\n \"marker-start\": markerStart.value\n })\n )\n );\n };\n }\n});\nconst ConnectionLine$1 = ConnectionLine;\nconst _hoisted_1$4 = [\"id\", \"markerWidth\", \"markerHeight\", \"markerUnits\", \"orient\"];\nconst __default__$6 = {\n name: \"MarkerType\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n ...__default__$6,\n props: {\n id: {},\n type: {},\n color: { default: \"none\" },\n width: { default: 12.5 },\n height: { default: 12.5 },\n markerUnits: { default: \"strokeWidth\" },\n orient: { default: \"auto-start-reverse\" },\n strokeWidth: { default: 1 }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"marker\", {\n id: _ctx.id,\n class: \"vue-flow__arrowhead\",\n viewBox: \"-10 -10 20 20\",\n refX: \"0\",\n refY: \"0\",\n markerWidth: `${_ctx.width}`,\n markerHeight: `${_ctx.height}`,\n markerUnits: _ctx.markerUnits,\n orient: _ctx.orient\n }, [\n _ctx.type === unref(MarkerType).ArrowClosed ? (openBlock(), createElementBlock(\"polyline\", {\n key: 0,\n style: normalizeStyle({\n stroke: _ctx.color,\n fill: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n points: \"-5,-4 0,0 -5,4 -5,-4\"\n }, null, 4)) : createCommentVNode(\"\", true),\n _ctx.type === unref(MarkerType).Arrow ? (openBlock(), createElementBlock(\"polyline\", {\n key: 1,\n style: normalizeStyle({\n stroke: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n fill: \"none\",\n points: \"-5,-4 0,0 -5,4\"\n }, null, 4)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1$4);\n };\n }\n});\nconst _hoisted_1$3 = {\n class: \"vue-flow__marker vue-flow__container\",\n \"aria-hidden\": \"true\"\n};\nconst __default__$5 = {\n name: \"MarkerDefinitions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$5 = /* @__PURE__ */ defineComponent({\n ...__default__$5,\n setup(__props) {\n const { id: vueFlowId, edges, connectionLineOptions, defaultMarkerColor: defaultColor } = useVueFlow();\n const markers = computed(() => {\n const ids = /* @__PURE__ */ new Set();\n const markers2 = [];\n const createMarkers = (marker) => {\n if (marker) {\n const markerId = getMarkerId(marker, vueFlowId);\n if (!ids.has(markerId)) {\n if (typeof marker === \"object\") {\n markers2.push({ ...marker, id: markerId, color: marker.color || defaultColor.value });\n } else {\n markers2.push({ id: markerId, color: defaultColor.value, type: marker });\n }\n ids.add(markerId);\n }\n }\n };\n for (const marker of [connectionLineOptions.value.markerEnd, connectionLineOptions.value.markerStart]) {\n createMarkers(marker);\n }\n for (const edge of edges.value) {\n for (const marker of [edge.markerStart, edge.markerEnd]) {\n createMarkers(marker);\n }\n }\n return markers2.sort((a, b) => a.id.localeCompare(b.id));\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$3, [\n createElementVNode(\"defs\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(markers.value, (marker) => {\n return openBlock(), createBlock(_sfc_main$6, {\n id: marker.id,\n key: marker.id,\n type: marker.type,\n color: marker.color,\n width: marker.width,\n height: marker.height,\n markerUnits: marker.markerUnits,\n \"stroke-width\": marker.strokeWidth,\n orient: marker.orient\n }, null, 8, [\"id\", \"type\", \"color\", \"width\", \"height\", \"markerUnits\", \"stroke-width\", \"orient\"]);\n }), 128))\n ])\n ]);\n };\n }\n});\nconst __default__$4 = {\n name: \"Edges\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n ...__default__$4,\n setup(__props) {\n const { findNode, getEdges, elevateEdgesOnSelect } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(_sfc_main$5),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getEdges), (edge) => {\n return openBlock(), createElementBlock(\"svg\", {\n key: edge.id,\n class: \"vue-flow__edges vue-flow__container\",\n style: normalizeStyle({ zIndex: unref(getEdgeZIndex)(edge, unref(findNode), unref(elevateEdgesOnSelect)) })\n }, [\n createVNode(unref(EdgeWrapper$1), {\n id: edge.id\n }, null, 8, [\"id\"])\n ], 4);\n }), 128)),\n createVNode(unref(ConnectionLine$1))\n ], 64);\n };\n }\n});\nconst NodeWrapper = defineComponent({\n name: \"Node\",\n compatConfig: { MODE: 3 },\n props: [\"id\", \"resizeObserver\"],\n setup(props) {\n const {\n id: vueFlowId,\n noPanClassName,\n selectNodesOnDrag,\n nodesSelectionActive,\n multiSelectionActive,\n emits,\n removeSelectedNodes,\n addSelectedNodes,\n updateNodeDimensions,\n onUpdateNodeInternals,\n getNodeTypes,\n nodeExtent,\n elevateNodesOnSelect,\n disableKeyboardA11y,\n ariaLiveMessage,\n snapToGrid,\n snapGrid,\n nodeDragThreshold,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n hooks\n } = useVueFlow();\n const nodeElement = ref(null);\n provide(NodeRef, nodeElement);\n provide(NodeId, props.id);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const updateNodePositions = useUpdateNodePositions();\n const { node, parentNode } = useNode(props.id);\n const { emit, on } = useNodeHooks(node, emits);\n const isDraggable = toRef(() => typeof node.draggable === \"undefined\" ? nodesDraggable.value : node.draggable);\n const isSelectable = toRef(() => typeof node.selectable === \"undefined\" ? elementsSelectable.value : node.selectable);\n const isConnectable = toRef(() => typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable);\n const isFocusable = toRef(() => typeof node.focusable === \"undefined\" ? nodesFocusable.value : node.focusable);\n const hasPointerEvents = computed(\n () => isSelectable.value || isDraggable.value || hooks.value.nodeClick.hasListeners() || hooks.value.nodeDoubleClick.hasListeners() || hooks.value.nodeMouseEnter.hasListeners() || hooks.value.nodeMouseMove.hasListeners() || hooks.value.nodeMouseLeave.hasListeners()\n );\n const isInit = toRef(() => !!node.dimensions.width && !!node.dimensions.height);\n const nodeCmp = computed(() => {\n const name = node.type || \"default\";\n const slot = slots == null ? void 0 : slots[`node-${name}`];\n if (slot) {\n return slot;\n }\n let nodeType = node.template || getNodeTypes.value[name];\n if (typeof nodeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n nodeType = resolveComponent(name, false);\n }\n }\n }\n if (nodeType && typeof nodeType !== \"string\") {\n return nodeType;\n }\n emits.error(new VueFlowError(ErrorCode.NODE_TYPE_MISSING, nodeType));\n return false;\n });\n const dragging = useDrag({\n id: props.id,\n el: nodeElement,\n disabled: () => !isDraggable.value,\n selectable: isSelectable,\n dragHandle: () => node.dragHandle,\n onStart(event) {\n emit.dragStart(event);\n },\n onDrag(event) {\n emit.drag(event);\n },\n onStop(event) {\n emit.dragStop(event);\n },\n onClick(event) {\n onSelectNode(event);\n }\n });\n const getClass = computed(() => node.class instanceof Function ? node.class(node) : node.class);\n const getStyle = computed(() => {\n const styles = (node.style instanceof Function ? node.style(node) : node.style) || {};\n const width = node.width instanceof Function ? node.width(node) : node.width;\n const height = node.height instanceof Function ? node.height(node) : node.height;\n if (!styles.width && width) {\n styles.width = typeof width === \"string\" ? width : `${width}px`;\n }\n if (!styles.height && height) {\n styles.height = typeof height === \"string\" ? height : `${height}px`;\n }\n return styles;\n });\n const zIndex = toRef(() => Number(node.zIndex ?? getStyle.value.zIndex ?? 0));\n onUpdateNodeInternals((updateIds) => {\n if (updateIds.includes(props.id) || !updateIds.length) {\n updateInternals();\n }\n });\n onMounted(() => {\n watch(\n () => node.hidden,\n (isHidden = false, _, onCleanup) => {\n if (!isHidden && nodeElement.value) {\n props.resizeObserver.observe(nodeElement.value);\n onCleanup(() => {\n if (nodeElement.value) {\n props.resizeObserver.unobserve(nodeElement.value);\n }\n });\n }\n },\n { immediate: true, flush: \"post\" }\n );\n });\n watch([() => node.type, () => node.sourcePosition, () => node.targetPosition], () => {\n nextTick(() => {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n });\n });\n watch(\n [\n () => node.position.x,\n () => node.position.y,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.x;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.y;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.z;\n },\n zIndex,\n () => node.selected,\n () => node.dimensions.height,\n () => node.dimensions.width,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.height;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.width;\n }\n ],\n ([newX, newY, parentX, parentY, parentZ, nodeZIndex]) => {\n const xyzPos = {\n x: newX,\n y: newY,\n z: nodeZIndex + (elevateNodesOnSelect.value ? node.selected ? 1e3 : 0 : 0)\n };\n if (typeof parentX !== \"undefined\" && typeof parentY !== \"undefined\") {\n node.computedPosition = getXYZPos({ x: parentX, y: parentY, z: parentZ }, xyzPos);\n } else {\n node.computedPosition = xyzPos;\n }\n },\n { flush: \"post\", immediate: true }\n );\n watch([() => node.extent, nodeExtent], ([nodeExtent2, globalExtent], [oldNodeExtent, oldGlobalExtent]) => {\n if (nodeExtent2 !== oldNodeExtent || globalExtent !== oldGlobalExtent) {\n clampPosition2();\n }\n });\n if (node.extent === \"parent\" || typeof node.extent === \"object\" && \"range\" in node.extent && node.extent.range === \"parent\") {\n until(() => isInit).toBe(true).then(clampPosition2);\n } else {\n clampPosition2();\n }\n return () => {\n if (node.hidden) {\n return null;\n }\n return h(\n \"div\",\n {\n \"ref\": nodeElement,\n \"data-id\": node.id,\n \"class\": [\n \"vue-flow__node\",\n `vue-flow__node-${nodeCmp.value === false ? \"default\" : node.type || \"default\"}`,\n {\n [noPanClassName.value]: isDraggable.value,\n dragging: dragging == null ? void 0 : dragging.value,\n draggable: isDraggable.value,\n selected: node.selected,\n selectable: isSelectable.value,\n parent: node.isParent\n },\n getClass.value\n ],\n \"style\": {\n visibility: isInit.value ? \"visible\" : \"hidden\",\n zIndex: node.computedPosition.z ?? zIndex.value,\n transform: `translate(${node.computedPosition.x}px,${node.computedPosition.y}px)`,\n pointerEvents: hasPointerEvents.value ? \"all\" : \"none\",\n ...getStyle.value\n },\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"role\": isFocusable.value ? \"group\" : void 0,\n \"aria-describedby\": disableKeyboardA11y.value ? void 0 : `${ARIA_NODE_DESC_KEY}-${vueFlowId}`,\n \"aria-label\": node.ariaLabel,\n \"aria-roledescription\": \"node\",\n ...node.domAttributes,\n \"onMouseenter\": onMouseEnter,\n \"onMousemove\": onMouseMove,\n \"onMouseleave\": onMouseLeave,\n \"onContextmenu\": onContextMenu,\n \"onClick\": onSelectNode,\n \"onDblclick\": onDoubleClick,\n \"onKeydown\": onKeyDown\n },\n [\n h(nodeCmp.value === false ? getNodeTypes.value.default : nodeCmp.value, {\n id: node.id,\n type: node.type,\n data: node.data,\n events: { ...node.events, ...on },\n selected: node.selected,\n resizing: node.resizing,\n dragging: dragging.value,\n connectable: isConnectable.value,\n position: node.computedPosition,\n dimensions: node.dimensions,\n isValidTargetPos: node.isValidTargetPos,\n isValidSourcePos: node.isValidSourcePos,\n parent: node.parentNode,\n parentNodeId: node.parentNode,\n zIndex: node.computedPosition.z ?? zIndex.value,\n targetPosition: node.targetPosition,\n sourcePosition: node.sourcePosition,\n label: node.label,\n dragHandle: node.dragHandle,\n onUpdateNodeInternals: updateInternals\n })\n ]\n );\n };\n function clampPosition2() {\n const nextPosition = node.computedPosition;\n const { computedPosition, position } = calcNextPosition(\n node,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n parentNode.value\n );\n if (node.computedPosition.x !== computedPosition.x || node.computedPosition.y !== computedPosition.y) {\n node.computedPosition = { ...node.computedPosition, ...computedPosition };\n }\n if (node.position.x !== position.x || node.position.y !== position.y) {\n node.position = position;\n }\n }\n function updateInternals() {\n if (nodeElement.value) {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n }\n }\n function onMouseEnter(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseEnter({ event, node });\n }\n }\n function onMouseMove(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseMove({ event, node });\n }\n }\n function onMouseLeave(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseLeave({ event, node });\n }\n }\n function onContextMenu(event) {\n return emit.contextMenu({ event, node });\n }\n function onDoubleClick(event) {\n return emit.doubleClick({ event, node });\n }\n function onSelectNode(event) {\n if (isSelectable.value && (!selectNodesOnDrag.value || !isDraggable.value || nodeDragThreshold.value > 0)) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n false,\n nodeElement.value\n );\n }\n emit.click({ event, node });\n }\n function onKeyDown(event) {\n if (isInputDOMNode(event) || disableKeyboardA11y.value) {\n return;\n }\n if (elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n unselect,\n nodeElement.value\n );\n } else if (isDraggable.value && node.selected && arrowKeyDiffs[event.key]) {\n event.preventDefault();\n ariaLiveMessage.value = `Moved selected node ${event.key.replace(\"Arrow\", \"\").toLowerCase()}. New position, x: ${~~node.position.x}, y: ${~~node.position.y}`;\n updateNodePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n }\n});\nconst NodeWrapper$1 = NodeWrapper;\nconst _hoisted_1$2 = {\n height: \"0\",\n width: \"0\"\n};\nconst __default__$3 = {\n name: \"EdgeLabelRenderer\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n ...__default__$3,\n setup(__props) {\n const { viewportRef } = useVueFlow();\n const teleportTarget = toRef(() => {\n var _a;\n return (_a = viewportRef.value) == null ? void 0 : _a.getElementsByClassName(\"vue-flow__edge-labels\")[0];\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", null, [\n (openBlock(), createElementBlock(\"foreignObject\", _hoisted_1$2, [\n (openBlock(), createBlock(Teleport, {\n to: teleportTarget.value,\n disabled: !teleportTarget.value\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, [\"to\", \"disabled\"]))\n ]))\n ]);\n };\n }\n});\nfunction useNodesInitialized(options = { includeHiddenNodes: false }) {\n const { nodes } = useVueFlow();\n return computed(() => {\n if (nodes.value.length === 0) {\n return false;\n }\n for (const node of nodes.value) {\n if (options.includeHiddenNodes || !node.hidden) {\n if ((node == null ? void 0 : node.handleBounds) === void 0 || node.dimensions.width === 0 || node.dimensions.height === 0) {\n return false;\n }\n }\n }\n return true;\n });\n}\nconst _hoisted_1$1 = { class: \"vue-flow__nodes vue-flow__container\" };\nconst __default__$2 = {\n name: \"Nodes\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n ...__default__$2,\n setup(__props) {\n const { getNodes, updateNodeDimensions, emits } = useVueFlow();\n const nodesInitialized = useNodesInitialized();\n const resizeObserver = ref();\n watch(\n nodesInitialized,\n (isInit) => {\n if (isInit) {\n nextTick(() => {\n emits.nodesInitialized(getNodes.value);\n });\n }\n },\n { immediate: true }\n );\n onMounted(() => {\n resizeObserver.value = new ResizeObserver((entries) => {\n const updates = entries.map((entry) => {\n const id2 = entry.target.getAttribute(\"data-id\");\n return {\n id: id2,\n nodeElement: entry.target,\n forceUpdate: true\n };\n });\n nextTick(() => updateNodeDimensions(updates));\n });\n });\n onBeforeUnmount(() => {\n var _a;\n return (_a = resizeObserver.value) == null ? void 0 : _a.disconnect();\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n resizeObserver.value ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(getNodes), (node, __, ___, _cached) => {\n const _memo = [node.id];\n if (_cached && _cached.key === node.id && isMemoSame(_cached, _memo))\n return _cached;\n const _item = (openBlock(), createBlock(unref(NodeWrapper$1), {\n id: node.id,\n key: node.id,\n \"resize-observer\": resizeObserver.value\n }, null, 8, [\"id\", \"resize-observer\"]));\n _item.memo = _memo;\n return _item;\n }, _cache, 0), 128)) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nfunction useStylesLoadedWarning() {\n const { emits } = useVueFlow();\n onMounted(() => {\n if (isDev()) {\n const pane = document.querySelector(\".vue-flow__pane\");\n if (pane && !(window.getComputedStyle(pane).zIndex === \"1\")) {\n emits.error(new VueFlowError(ErrorCode.MISSING_STYLES));\n }\n }\n });\n}\nconst _hoisted_1 = /* @__PURE__ */ createElementVNode(\"div\", { class: \"vue-flow__edge-labels\" }, null, -1);\nconst __default__$1 = {\n name: \"VueFlow\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n ...__default__$1,\n props: {\n id: {},\n modelValue: {},\n nodes: {},\n edges: {},\n edgeTypes: {},\n nodeTypes: {},\n connectionMode: {},\n connectionLineType: {},\n connectionLineStyle: { default: void 0 },\n connectionLineOptions: { default: void 0 },\n connectionRadius: {},\n isValidConnection: { type: [Function, null], default: void 0 },\n deleteKeyCode: { default: void 0 },\n selectionKeyCode: { type: [Boolean, null], default: void 0 },\n multiSelectionKeyCode: { default: void 0 },\n zoomActivationKeyCode: { default: void 0 },\n panActivationKeyCode: { default: void 0 },\n snapToGrid: { type: Boolean, default: void 0 },\n snapGrid: {},\n onlyRenderVisibleElements: { type: Boolean, default: void 0 },\n edgesUpdatable: { type: [Boolean, String], default: void 0 },\n nodesDraggable: { type: Boolean, default: void 0 },\n nodesConnectable: { type: Boolean, default: void 0 },\n nodeDragThreshold: {},\n elementsSelectable: { type: Boolean, default: void 0 },\n selectNodesOnDrag: { type: Boolean, default: void 0 },\n panOnDrag: { type: [Boolean, Array], default: void 0 },\n minZoom: {},\n maxZoom: {},\n defaultViewport: {},\n translateExtent: {},\n nodeExtent: {},\n defaultMarkerColor: {},\n zoomOnScroll: { type: Boolean, default: void 0 },\n zoomOnPinch: { type: Boolean, default: void 0 },\n panOnScroll: { type: Boolean, default: void 0 },\n panOnScrollSpeed: {},\n panOnScrollMode: {},\n paneClickDistance: {},\n zoomOnDoubleClick: { type: Boolean, default: void 0 },\n preventScrolling: { type: Boolean, default: void 0 },\n selectionMode: {},\n edgeUpdaterRadius: {},\n fitViewOnInit: { type: Boolean, default: void 0 },\n connectOnClick: { type: Boolean, default: void 0 },\n applyDefault: { type: Boolean, default: void 0 },\n autoConnect: { type: [Boolean, Function], default: void 0 },\n noDragClassName: {},\n noWheelClassName: {},\n noPanClassName: {},\n defaultEdgeOptions: {},\n elevateEdgesOnSelect: { type: Boolean, default: void 0 },\n elevateNodesOnSelect: { type: Boolean, default: void 0 },\n disableKeyboardA11y: { type: Boolean, default: void 0 },\n edgesFocusable: { type: Boolean, default: void 0 },\n nodesFocusable: { type: Boolean, default: void 0 },\n autoPanOnConnect: { type: Boolean, default: void 0 },\n autoPanOnNodeDrag: { type: Boolean, default: void 0 },\n autoPanSpeed: {}\n },\n emits: [\"nodesChange\", \"edgesChange\", \"nodesInitialized\", \"paneReady\", \"init\", \"updateNodeInternals\", \"error\", \"connect\", \"connectStart\", \"connectEnd\", \"clickConnectStart\", \"clickConnectEnd\", \"moveStart\", \"move\", \"moveEnd\", \"selectionDragStart\", \"selectionDrag\", \"selectionDragStop\", \"selectionContextMenu\", \"selectionStart\", \"selectionEnd\", \"viewportChangeStart\", \"viewportChange\", \"viewportChangeEnd\", \"paneScroll\", \"paneClick\", \"paneContextMenu\", \"paneMouseEnter\", \"paneMouseMove\", \"paneMouseLeave\", \"edgeUpdate\", \"edgeContextMenu\", \"edgeMouseEnter\", \"edgeMouseMove\", \"edgeMouseLeave\", \"edgeDoubleClick\", \"edgeClick\", \"edgeUpdateStart\", \"edgeUpdateEnd\", \"nodeContextMenu\", \"nodeMouseEnter\", \"nodeMouseMove\", \"nodeMouseLeave\", \"nodeDoubleClick\", \"nodeClick\", \"nodeDragStart\", \"nodeDrag\", \"nodeDragStop\", \"miniMapNodeClick\", \"miniMapNodeDoubleClick\", \"miniMapNodeMouseEnter\", \"miniMapNodeMouseMove\", \"miniMapNodeMouseLeave\", \"update:modelValue\", \"update:nodes\", \"update:edges\"],\n setup(__props, { expose: __expose, emit }) {\n const props = __props;\n const slots = useSlots();\n const modelValue = useVModel(props, \"modelValue\", emit);\n const modelNodes = useVModel(props, \"nodes\", emit);\n const modelEdges = useVModel(props, \"edges\", emit);\n const instance = useVueFlow(props);\n const dispose = useWatchProps({ modelValue, nodes: modelNodes, edges: modelEdges }, props, instance);\n useHooks(emit, instance.hooks);\n useOnInitHandler();\n useStylesLoadedWarning();\n provide(Slots, slots);\n onUnmounted(() => {\n dispose();\n });\n __expose(instance);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: unref(instance).vueFlowRef,\n class: \"vue-flow\"\n }, [\n createVNode(_sfc_main$8, null, {\n default: withCtx(() => [\n createVNode(_sfc_main$4),\n _hoisted_1,\n createVNode(_sfc_main$2),\n renderSlot(_ctx.$slots, \"zoom-pane\")\n ]),\n _: 3\n }),\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(_sfc_main$7)\n ], 512);\n };\n }\n});\nconst __default__ = {\n name: \"Panel\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n position: {}\n },\n setup(__props) {\n const props = __props;\n const { userSelectionActive } = useVueFlow();\n const positionClasses = computed(() => `${props.position}`.split(\"-\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vue-flow__panel\", positionClasses.value]),\n style: normalizeStyle({ pointerEvents: unref(userSelectionActive) ? \"none\" : \"all\" })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nfunction useConnection() {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionStatus: status,\n connectionPosition: position\n } = useVueFlow();\n return {\n startHandle,\n endHandle,\n status,\n position\n };\n}\nfunction useHandleConnections(params) {\n const { type, id: id2, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const currentNodeId = toRef(() => toValue$1(nodeId) ?? _nodeId);\n const handleType = toRef(() => toValue$1(type));\n const handleId = toRef(() => toValue$1(id2) ?? null);\n const prevConnections = ref(null);\n const connections = ref();\n watch(\n () => connectionLookup.value.get(`${currentNodeId.value}-${handleType.value}-${handleId.value}`),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodeConnections(params = {}) {\n const { handleType, handleId, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const prevConnections = ref(null);\n const connections = ref();\n const lookupKey = computed(() => {\n const currNodeId = toValue$1(nodeId) ?? _nodeId;\n const currentHandleType = toValue$1(handleType);\n const currHandleId = toValue$1(handleId);\n let handleSuffix = \"\";\n if (currentHandleType) {\n handleSuffix = currHandleId ? `-${currentHandleType}-${currHandleId}` : `-${currentHandleType}`;\n }\n return `${currNodeId}${handleSuffix}`;\n });\n watch(\n () => connectionLookup.value.get(lookupKey.value),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodesData(_nodeIds) {\n const { findNode } = useVueFlow();\n return computed({\n get() {\n const nodeIds = toValue$1(_nodeIds);\n if (!Array.isArray(nodeIds)) {\n const node = findNode(nodeIds);\n if (node) {\n return {\n id: node.id,\n type: node.type,\n data: node.data\n };\n }\n return null;\n }\n const data = [];\n for (const nodeId of nodeIds) {\n const node = findNode(nodeId);\n if (node) {\n data.push({\n id: node.id,\n type: node.type,\n data: node.data\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set node data via useNodesData. This is not supported.\");\n }\n });\n}\nfunction useEdgesData(_edgeIds) {\n const { findEdge } = useVueFlow();\n return computed({\n get() {\n const edgeIds = toValue$1(_edgeIds);\n if (!Array.isArray(edgeIds)) {\n const edge = findEdge(edgeIds);\n if (edge) {\n return {\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n };\n }\n return null;\n }\n const data = [];\n for (const edgeId of edgeIds) {\n const edge = findEdge(edgeId);\n if (edge) {\n data.push({\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set edge data via useEdgesData. This is not supported.\");\n }\n });\n}\nexport {\n _sfc_main$d as BaseEdge,\n BezierEdge$1 as BezierEdge,\n ConnectionLineType,\n ConnectionMode,\n _sfc_main$3 as EdgeLabelRenderer,\n _sfc_main$e as EdgeText,\n ErrorCode,\n _sfc_main$f as Handle,\n MarkerType,\n NodeId as NodeIdInjection,\n PanOnScrollMode,\n _sfc_main as Panel,\n PanelPosition,\n Position,\n SelectionMode,\n SimpleBezierEdge$1 as SimpleBezierEdge,\n SmoothStepEdge$1 as SmoothStepEdge,\n StepEdge$1 as StepEdge,\n StraightEdge$1 as StraightEdge,\n _sfc_main$1 as VueFlow,\n VueFlowError,\n VueFlow as VueFlowInjection,\n addEdge,\n applyChanges,\n applyEdgeChanges,\n applyNodeChanges,\n clamp,\n connectionExists,\n defaultEdgeTypes,\n defaultNodeTypes,\n getBezierEdgeCenter,\n getBezierPath,\n getBoundsofRects,\n getConnectedEdges,\n getIncomers,\n getMarkerId,\n getNodesInside,\n getOutgoers,\n getRectOfNodes,\n getSimpleBezierPath,\n getSimpleEdgeCenter,\n getSmoothStepPath,\n getStraightPath,\n getTransformForBounds,\n rendererPointToPoint as graphPosToZoomedPos,\n isEdge,\n isErrorOfType,\n isGraphEdge,\n isGraphNode,\n isNode,\n pointToRendererPoint,\n rendererPointToPoint,\n updateEdge,\n useConnection,\n useEdge,\n useEdgesData,\n useGetPointerPosition,\n useHandle,\n useHandleConnections,\n useKeyPress,\n useNode,\n useNodeConnections,\n useNodeId,\n useNodesData,\n useNodesInitialized,\n useVueFlow,\n useZoomPanHelper\n};\n","<template>\n\t<path :id=\"id\" :style=\"style\" class=\"vue-flow__edge-path\" :d=\"path[0]\" :marker-end=\"markerEnd\" />\n\n\t<EdgeLabelRenderer>\n\t\t<div\n\t\t\t:style=\"{\n\t\t\t\tpointerEvents: 'all',\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttransform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`,\n\t\t\t}\"\n\t\t\tclass=\"nodrag nopan editable-edge-label\"\n\t\t\t@click=\"labelOnClick()\">\n\t\t\t<div class=\"vue-flow__edge-label\">{{ label }}</div>\n\t\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t\t<input\n\t\t\t\t\tref=\"labelInput\"\n\t\t\t\t\tclass=\"label-input\"\n\t\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t\t</div>\n\t\t</div>\n\t</EdgeLabelRenderer>\n</template>\n\n<script setup lang=\"ts\">\nimport { type EdgeProps, EdgeLabelRenderer, getBezierPath /* useVueFlow */ } from '@vue-flow/core'\nimport { computed, ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<EdgeProps>()\nconst emit = defineEmits(['change'])\n\n// TODO: Implement edge removal\n// const { removeEdges } = useVueFlow()\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<EdgeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst labelOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n\nconst path = computed(() => getBezierPath(props))\n</script>\n\n<script lang=\"ts\">\nexport default {\n\tinheritAttrs: false,\n}\n</script>\n\n<style>\n.editable-edge-label {\n\tbackground-color: white;\n\tposition: relative;\n\tfont-size: 12px;\n}\n\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n\twidth: 40ch;\n}\n</style>\n","<template>\n\t<div @click=\"nodeOnClick()\">\n\t\t<div>{{ label }}</div>\n\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t<input\n\t\t\t\tref=\"labelInput\"\n\t\t\t\tclass=\"label-input\"\n\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t</div>\n\t\t<Handle v-if=\"data.hasInput\" id=\"a\" type=\"target\" :position=\"targetPosition\" />\n\t\t<Handle v-if=\"data.hasOutput\" id=\"b\" type=\"source\" :position=\"sourcePosition\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { NodeProps, Handle } from '@vue-flow/core'\nimport { ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<NodeProps>()\nconst emit = defineEmits(['change'])\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<NodeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst nodeOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n</script>\n\n<style>\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n}\n</style>\n","<template>\n\t<div class=\"node-editor-wrapper\" :class=\"nodeContainerClass\" @mouseover=\"hover = true\" @mouseleave=\"hover = false\">\n\t\t<div class=\"chart-controls\">\n\t\t\t<div class=\"chart-controls-left\">\n\t\t\t\t<div><b>Selected Node:</b> {{ activeElementKey ? activeElementKey : 'none' }}</div>\n\t\t\t</div>\n\t\t\t<div class=\"chart-controls-right\">\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"addNode\">Add Node</button>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"fitView\">Center</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftInput\">Shift Input Position</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftOutput\">Shift Output Position</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<VueFlow\n\t\t\tv-if=\"vueFlowElements && vueFlowElements.length\"\n\t\t\tclass=\"nowheel\"\n\t\t\t:prevent-scrolling=\"true\"\n\t\t\t:zoom-on-scroll=\"false\"\n\t\t\t:fit-view-on-init=\"true\"\n\t\t\tv-model=\"vueFlowElements\"\n\t\t\t@wheel.prevent=\"onWheel\">\n\t\t\t<template #node-editable=\"props\">\n\t\t\t\t<EditableNode v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t\t<template #edge-editable=\"props\">\n\t\t\t\t<EditableEdge v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t</VueFlow>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type VueFlowStore, Position, VueFlow, useVueFlow, Connection, Node } from '@vue-flow/core'\nimport { type HTMLAttributes, ref, computed, defineEmits, onBeforeUnmount, onMounted } from 'vue'\n\nimport EditableEdge from './EditableEdge.vue'\nimport EditableNode from './EditableNode.vue'\nimport type { FlowElements } from '../types'\n\nconst { modelValue, nodeContainerClass } = defineProps<{\n\tmodelValue: FlowElements\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\nconst emit = defineEmits(['update:modelValue'])\n\nconst hover = ref(false)\nconst vueFlowElements = ref<FlowElements>([])\nconst vueFlowInstance = ref<VueFlowStore>()\n\nconst activeElementKey = ref('')\nconst activeElementIndex = computed(() => {\n\tvueFlowElements.value.forEach((element, index) => {\n\t\tif (element.id === activeElementKey.value) {\n\t\t\treturn index\n\t\t}\n\t})\n\n\treturn -1\n})\n\nconst elements = computed({\n\tget: () => {\n\t\tconst _elements = modelValue\n\n\t\t// Add data to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.data = {}\n\t\t\tif (_element.type === 'input') {\n\t\t\t\t_element.data.hasInput = false\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t} else if (_element.type === 'output') {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = false\n\t\t\t} else {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t}\n\t\t\t_element.class = 'vue-flow__node-default'\n\t\t\t_element.type = 'editable'\n\t\t}\n\n\t\t// Add click event to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.events = {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = _element.id\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn _elements\n\t},\n\tset: newValue => {\n\t\temit('update:modelValue', JSON.parse(JSON.stringify(newValue)))\n\t},\n})\nconst { onConnect, addEdges, onEdgeContextMenu, onPaneReady, removeEdges } = useVueFlow()\n\nonMounted(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n\tdocument.addEventListener('keypress', handleKeypress)\n})\n\nonBeforeUnmount(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n})\n\nonPaneReady(instance => {\n\tvueFlowInstance.value = instance\n})\n\nvueFlowElements.value = elements.value\n\n// Methods\nconst shiftTerminal = (currentTerminal: Position) => {\n\treturn {\n\t\t[Position.Top]: Position.Right,\n\t\t[Position.Right]: Position.Bottom,\n\t\t[Position.Bottom]: Position.Left,\n\t\t[Position.Left]: Position.Top,\n\t}[currentTerminal]\n}\n\nconst shiftOutput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.sourcePosition = shiftTerminal(activeNode.sourcePosition)\n\t}\n}\n\nconst shiftInput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.targetPosition = shiftTerminal(activeNode.targetPosition)\n\t}\n}\n\nconst onWheel = (event: WheelEvent) => {\n\twindow.scrollBy(0, event.deltaY)\n}\n\nconst handleKeypress = (event: KeyboardEvent) => {\n\tif (hover.value && event.ctrlKey == true) {\n\t\tif (event.key == '+' || event.key == '=') {\n\t\t\tvoid vueFlowInstance.value.zoomIn()\n\t\t}\n\t\tif (event.key == '-') {\n\t\t\tvoid vueFlowInstance.value.zoomOut()\n\t\t}\n\t}\n}\n\nconst fitView = async () => {\n\tawait vueFlowInstance.value.fitView()\n}\n\nconst addNode = () => {\n\tlet makeEdge = false\n\tlet newNodePosition = { x: Math.random() * 200, y: Math.random() * 200 }\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value]\n\t\tif (activeNode.data.hasOutput) {\n\t\t\tnewNodePosition = { x: (activeNode as Node).position.x + 200, y: (activeNode as Node).position.y + 50 }\n\t\t\tmakeEdge = true\n\t\t}\n\t}\n\n\tconst id = vueFlowElements.value.length\n\tconst nodeId = `node-${id}`\n\tvueFlowElements.value.push({\n\t\tid: nodeId,\n\t\tlabel: 'Node ' + id,\n\t\tsourcePosition: Position.Right,\n\t\ttargetPosition: Position.Left,\n\t\tclass: 'vue-flow__node-default',\n\t\ttype: 'editable',\n\t\tdata: {\n\t\t\thasInput: true,\n\t\t\thasOutput: true,\n\t\t},\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = nodeId\n\t\t\t},\n\t\t},\n\t\t// position: { x: Math.random() * vueFlowInstance.value.dimensions.width, y: Math.random() * vueFlowInstance.value.dimensions.height }\n\t\tposition: newNodePosition,\n\t})\n\n\tif (makeEdge) {\n\t\tlet edgeId = `edge-${id + 1}`\n\t\tvueFlowElements.value.push({\n\t\t\tid: edgeId,\n\t\t\tsource: activeElementKey.value,\n\t\t\ttarget: nodeId,\n\t\t\ttype: 'editable',\n\t\t\tlabel: `EDGE ${id + 1}`,\n\t\t\tanimated: true,\n\t\t\tevents: {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = edgeId\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n}\n\nconst labelChanged = (e, id) => {\n\tfor (let j = 0; j < vueFlowElements.value.length; j++) {\n\t\tif (vueFlowElements.value[j].id == id) {\n\t\t\tvueFlowElements.value[j].label = e\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nconst handleConnect = (connection: Connection) => {\n\tconst id = vueFlowElements.value.length\n\tconst newEdge = {\n\t\tid: `edge-${id}`,\n\t\tsource: connection.source,\n\t\ttarget: connection.target,\n\t\ttype: 'editable',\n\t\tlabel: `New Edge`,\n\t\tinteractionWidth: 400,\n\t\tanimated: true,\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = newEdge.id\n\t\t\t},\n\t\t},\n\t}\n\taddEdges([newEdge])\n}\n\nonConnect(handleConnect)\n\nconst handleEdgeRemove = edgeId => {\n\tremoveEdges(edgeId)\n}\n\nonEdgeContextMenu(({ event, edge }) => {\n\thandleEdgeRemove(edge.id)\n})\n</script>\n\n<style>\n@import '@vue-flow/core/dist/style.css';\n@import '@vue-flow/core/dist/theme-default.css';\n\n.chart-controls-left,\n.chart-controls-right {\n\theight: 1.8em;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding-top: 0.2em;\n}\n\n.chart-controls-right div {\n\tmargin-left: 5px;\n}\n\n.chart-controls {\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n\theight: 1.8em;\n\tborder-bottom: 1px solid #ccc;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n}\n\n.chart-controls div {\n\tmargin-bottom: 5px;\n}\n\n.defaultContainerClass {\n\theight: 90vh;\n\twidth: 100%;\n\tborder: 1px solid #ccc;\n}\n\n.default-input-node.vue-flow__node-input,\n.default-output-node.vue-flow__node-output {\n\tborder-color: #000;\n}\n\n.default-input-node.vue-flow__node-input .vue-flow__handle,\n.default-output-node.vue-flow__node-output .vue-flow__handle {\n\tbackground-color: #000;\n}\n\n.default-input-node.vue-flow__node-input.selected,\n.default-output-node.vue-flow__node-output.selected {\n\tbox-shadow: 0 0 0 0.5px #000;\n}\n\nbutton.button-default {\n\tbackground-color: #ffffff;\n\tpadding: 1px 12px;\n\tborder-radius: 3px;\n\tborder: 1px solid #ccc;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\nbutton.button-default:hover {\n\tbackground-color: #f2f2f2;\n}\n\n.vue-flow {\n\tbackground-size: 40px 40px;\n\tbackground-image: linear-gradient(to right, #ccc 1px, transparent 1px),\n\t\tlinear-gradient(to bottom, #ccc 1px, transparent 1px);\n}\n\ninput.label-editor {\n\tposition: absolute;\n}\n\n.node-editor-wrapper {\n\tposition: relative;\n}\n</style>\n","<template>\n\t<div>\n\t\t<NodeEditor v-model=\"elements\" :node-container-class=\"nodeContainerClass\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type Node, Position } from '@vue-flow/core'\nimport { type HTMLAttributes, computed } from 'vue'\n\nimport NodeEditor from './NodeEditor.vue'\nimport type { EditorStates, FlowElement, FlowElements, Layout } from '../types'\n\nconst emit = defineEmits(['update:modelValue'])\nconst states = defineModel<EditorStates>()\nconst { layout, nodeContainerClass } = defineProps<{\n\tlayout: Layout\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\n\nconst elements = computed<FlowElements>({\n\tget: () => {\n\t\tconst hasInputs = {}\n\t\tconst stateElements: FlowElements = []\n\t\tconst stateHash: Record<string, FlowElement> = {}\n\n\t\tif (!states.value) {\n\t\t\treturn stateElements\n\t\t}\n\n\t\tlet index = 0\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tconst el: Node = {\n\t\t\t\tid: key,\n\t\t\t\tlabel: key,\n\t\t\t\tposition: layout[key]?.position || { x: 200 * index, y: 100 },\n\t\t\t\ttargetPosition: layout[key]?.targetPosition || Position.Left,\n\t\t\t\tsourcePosition: layout[key]?.sourcePosition || Position.Right,\n\t\t\t}\n\n\t\t\tif (value?.type === 'final') {\n\t\t\t\tel.type = 'output'\n\t\t\t\tel.class = 'default-output-node'\n\t\t\t}\n\n\t\t\tstateHash[key] = el\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tif (value?.on) {\n\t\t\t\tfor (const [edgeKey, edgeValue] of Object.entries(value.on)) {\n\t\t\t\t\t// NOTE: If the proxy array 'value.on' has more than one edge, 'edgeValue' will contain a proxy object\n\t\t\t\t\t// where 'target' can be accessed. Otherwise, 'edgeValue' will be available directly.\n\n\t\t\t\t\t// TODO: resolve type issues with xstate\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tconst target = edgeValue.target || edgeValue\n\t\t\t\t\tstateElements.push({\n\t\t\t\t\t\tid: `${key}-${target}`,\n\t\t\t\t\t\tsource: key,\n\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\tlabel: edgeKey,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t})\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\thasInputs[target] = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex++\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(stateHash)) {\n\t\t\tif (!hasInputs[key]) {\n\t\t\t\tvalue['type'] = 'input'\n\t\t\t\tvalue['class'] = 'default-input-node'\n\t\t\t}\n\t\t\tstateElements.push(value)\n\t\t}\n\n\t\treturn stateElements\n\t},\n\n\tset: newValue => {\n\t\t// update modelValue when elements change\n\t\tonElementsChange(newValue)\n\n\t\t// TODO: emit('update:modelValue', modelValue)\n\t},\n})\nconst onElementsChange = (elements: FlowElements) => {\n\tconst edges: Record<string, Record<string, any>> = {}\n\tconst idToLabel: Record<string, string> = {}\n\tconst states: EditorStates = {}\n\n\tfor (const el of elements) {\n\t\tconst label = el.label as string\n\n\t\tif (el.type === 'input') {\n\t\t\t// it's an input node\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t} else if (el.type === 'output') {\n\t\t\t// it's an output node\n\t\t\tstates[label] = {\n\t\t\t\ttype: 'final',\n\t\t\t}\n\t\t} else if (el.source && el.target) {\n\t\t\t// it's an edge\n\t\t\tedges[el.source] = edges[el.source] || {}\n\t\t\tedges[el.source][label] = {\n\t\t\t\ttarget: el.target,\n\t\t\t}\n\t\t} else {\n\t\t\t// it's a state\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t}\n\t\tidToLabel[el.id] = label\n\t}\n\n\tfor (const [edgeKey, edgeValue] of Object.entries(edges)) {\n\t\t// add edges to states\n\t\tconst label = idToLabel[edgeKey]\n\t\tfor (const [key, value] of Object.entries(edgeValue)) {\n\t\t\tif (!states[label]) {\n\t\t\t\tstates[label] = { on: {} }\n\t\t\t}\n\t\t\tstates[label].on[key] = value\n\t\t}\n\t}\n\n\temit('update:modelValue', states)\n}\n</script>\n","import { App } from 'vue'\n\nimport NodeEditor from './components/NodeEditor.vue'\nimport StateEditor from './components/StateEditor.vue'\nexport type * from './types'\n\n/**\n * Install all Node Editor components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App) {\n\tapp.component('NodeEditor', NodeEditor)\n\tapp.component('StateEditor', StateEditor)\n}\n\nexport { install, NodeEditor, StateEditor }\n"],"names":["tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","toValue","r","unref","isClient","isDef$1","val","toString","isObject","noop$2","createFilterWrapper","filter2","wrapper","args","resolve","reject","bypassFilter","invoke","pausableFilter","extendFilter","isActive","ref","pause","resume","eventFilter","readonly","promiseTimeout","ms","throwOnTimeout","reason","watchWithFilter","source","cb","options","watchOptions","watch","watchPausable","toRefs","objectRef","isRef","toRefs$1","result","key","customRef","v","_a","copy","newObject","createUntil","isNot","toMatch","condition","flush","deep","timeout2","stop","promises","toBe","value","v1","v2","toBeTruthy","toBeNull","toBeUndefined","toBeNaN","toContains","array2","changed","changedTimes","n","count","until","unrefElement","elRef","plain","defaultWindow","useEventListener","target","events","listeners","cleanups","cleanup","register","el","event","listener","options2","stopWatch","optionsClone","createKeyPredicate$1","keyFilter","onKeyStroke","handler","eventName","passive","dedupe","predicate","e","cloneFnJSON","useVModel","props","emit","_b","_c","clone","defaultValue","shouldEmit","vm","getCurrentInstance","_emit","cloneFn","getValue","triggerEmit","initialValue","proxy","isUpdating","nextTick","computed","noop$1","dispatch","i","_","t","Dispatch","parseTypenames$1","typenames","types","name","typename","callback","T","get$1","set$1","type","that","c","xhtml","namespaces","namespace","prefix","creatorInherit","document2","uri","creatorFixed","fullname","creator","none","selector","selector2","selection_select","select2","groups","m","subgroups","j","group","subgroup","node","subnode","Selection$1","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum2","child","next","constant$3","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","datum","selection_data","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection2","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","a","b","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove$1","attrRemoveNS$1","attrConstant$1","attrConstantNS$1","attrFunction$1","attrFunctionNS$1","selection_attr","defaultView","styleRemove$1","styleConstant$1","priority","styleFunction$1","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant$1","textFunction$1","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create2","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","selection_cloneDeep","selection_clone","selection_datum","contextListener","parseTypenames","onRemove","on","o","onAdd","selection_on","dispatchEvent","params","window2","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection","selection_selection","select","sourceEvent","sourceEvent2","pointer","svg","point","rect","nonpassive","nonpassivecapture","nopropagation$1","noevent$1","dragDisable","view","root2","yesdrag","noclick","constant$2","DragEvent","subject","identifier","active","y","dx","dy","dispatch2","defaultFilter$1","defaultContainer","defaultSubject","d","defaultTouchable$1","drag","container","touchable","gestures","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","touches","container2","touch","p","s","event2","touch2","p0","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h2","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","constant$1","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","color2","rgb$1","start2","end","numberArray","isNumberArray","genericArray","nb","na","interpolate$1","date","interpolateNumber","object","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","i2","degrees","identity$1","decompose","f","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom2","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","_1","_2","_4","frame","timeout$1","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","now2","t0","t1","t2","timeout","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id2","index","timing","schedules","create","init","schedule2","get","set","self","tween","tick","interrupt","empty2","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","attrRemove","attrRemoveNS","attrConstant","interpolate2","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","string10","attrFunctionNS","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","start","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","children2","inherit2","Selection","transition_selection","styleNull","styleRemove","styleConstant","styleFunction","styleMaybeRemove","listener0","remove2","transition_style","styleInterpolate","styleTween","transition_styleTween","textConstant","textFunction","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","cancel","id","selection_prototype","cubicInOut","defaultTiming","inherit","selection_transition","constant","ZoomEvent","transform","Transform","location","identity","nopropagation","noevent","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","zoom","constrain","wheelDelta","scaleExtent","duration","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","k0","k1","centroid","extent2","w","clean","Gesture","wheelidled","currentTarget","x0","y0","started","l0","l1","dp","dl","Position","Position2","SelectionMode","SelectionMode2","ConnectionLineType","ConnectionLineType2","ConnectionMode","ConnectionMode2","MarkerType","MarkerType2","PanOnScrollMode","PanOnScrollMode2","inputTags","defaultDoc","isInputDOMNode","hasAttribute","closest","wasModifierPressed","isKeyMatch","pressedKey","keyToMatch","pressedKeys","isKeyUp","keyCombination","isMatch","createKeyPredicate","keyOrCode","useKeyOrCode","code","keysToWatch","useKeyPress","toValue$1","isPressed","shallowRef","modifierPressed","currentFilter","createKeyFilterFn","nextKeyFilter","previousKeyFilter","reset","actInsideInputWithModifier","preventDefault","target2","isInteractiveElement","keyFilter2","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","ARIA_LIVE_MESSAGE","elementSelectionKeys","arrowKeyDiffs","nodeToRect","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","getDimensions","clamp","clampPosition","position","getHostForElement","element","doc","isEdge","isNode","isGraphNode","isNumeric","isRect","obj","parseNode","existingNode","parentNode","initialState","markRaw","isDef","parseEdge","edge","existingEdge","defaultEdgeOptions","getConnectedElements","nodeOrId","nodes","edges","dir","connectedIds","origin","getOutgoers","nodeOrId2","elements","nodeId","getIncomers","getEdgeId","sourceHandle","targetHandle","connectionExists","rendererPointToPoint","tx","ty","tScale","pointToRendererPoint","snapToGrid","snapGrid","snapPosition","getBoundsOfBoxes","box1","box2","rectToBox","width","height","boxToRect","x2","y2","getRectOfNodes","box","getNodesInside","viewport","partially","excludeNonSelectableNodes","paneRect","visibleNodes","dimensions","selectable","hidden","overlappingArea","notInitialized","partiallyVisible","area","getConnectedEdges","nodesOrId","nodeIds","getTransformForBounds","bounds","minZoom","maxZoom","padding","offset","xZoom","yZoom","clampedZoom","boundsCenterX","boundsCenterY","getXYZPos","parentPos","computedPosition","isParentSelected","findNode","getMarkerId","marker","vueFlowId","calcAutoPanVelocity","calcAutoPan","pos","speed","distance2","xMovement","yMovement","handleParentExpand","updateItem","extendWidth","extendHeight","parentStyles","currWidth","xDiff","yDiff","styleFunc","applyChanges","changes","addRemoveChanges","change","elementIds","currentChange","createSelectionChange","selected","createAdditionChange","item","createNodeRemoveChange","createEdgeRemoveChange","getSelectionChanges","items","selectedIds","mutateItem","willBeSelected","createExtendedEventHook","defaultHandler","fns","hasDefaultHandler","hasListeners","off","offFn","param","hasSelector","current","getDragItems","nodesDraggable","mousePos","dragItems","getEventHandlerParams","extendedDragItems","dragItem","getExtentPadding","getParentExtent","currentExtent","top","right","bottom","left","getExtent","triggerError","parentExtent","VueFlowError","ErrorCode","parentX","parentY","clampNodeExtent","calcNextPosition","nextPosition","nodeExtent","clampedPos","getHandlePosition","handle","fallbackPosition","center","getNodeDimensions","getEdgeHandle","handleId","isEdgeVisible","sourcePos","targetPos","sourceWidth","sourceHeight","targetWidth","targetHeight","edgeBox","viewBox","getEdgeZIndex","elevateEdgesOnSelect","hasZIndex","z","ErrorCode2","messages","parentId","isMouseEvent","isUseDragEvent","getEventPosition","isMouse","evtX","evtY","isMacOs","alwaysValid$1","resetRecentHandle","handleDomNode","getNodesWithinDistance","nodeLookup","ADDITIONAL_DISTANCE","getClosestHandle","connectionRadius","fromHandle","closestHandles","minDistance","closeNodes","allHandles","oppositeHandleType","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","lib","flowId","isValidConnection","isTarget","handleBelow","handleToCheck","handleType","getHandleType","handleNodeId","connectable","connectableEnd","connection","isValid","edgeUpdaterType","getConnectionStatus","isInsideConnectionRadius","isHandleValid","connectionStatus","isConnectionValid","getHandle","withAbsolutePosition","handles","oppositePosition","productionEnvs","warn","message","isDev","getHandleBounds","nodeElement","nodeBounds","handleBounds","handleNodeClick","multiSelectionActive","addSelectedNodes","removeSelectedNodes","nodesSelectionActive","unselect","nodeEl","addEdgeToStore","edgeParams","updateEdgeAction","newConnection","prevEdge","shouldReplaceId","rest","createGraphNodes","parentNodes","nextNodes","parsed","addConnectionToLookup","connectionKey","connectionLookup","nodeMap","typeMap","handleMap","updateConnectionLookup","edgeLookup","sourceNode","targetNode","sourceKey","targetKey","areSetsEqual","createGraphEdges","nextEdges","findEdge","onError","validEdges","edgeOrConnection","VueFlow","NodeId","NodeRef","EdgeId","EdgeRef","Slots","useDrag","vueFlowRef","noDragClassName","nodeDragThreshold","autoPanOnNodeDrag","autoPanSpeed","panBy","selectNodesOnDrag","removeSelectedElements","updateNodePositions","emits","useVueFlow","onStart","onDrag","onStop","onClick","disabled","dragHandle","dragging","dragHandler","containerBounds","lastPos","mousePosition","dragEvent","dragStarted","autoPanId","autoPanStarted","getPointerPosition","useGetPointerPosition","updateNodes","hasChange","currentNode","nodes2","autoPan","nextPos","startDrag","pointerPos","eventStart","eventDrag","eventEnd","isClick","evt","isDisabled","onCleanup","unrefDragHandle","createEdgeHooks","useEdgeHooks","edgeHooks","hooks","xSnapped","ySnapped","alwaysValid","useHandle","onEdgeUpdate","onEdgeUpdateEnd","connectOnClick","connectionClickStartHandle","nodesConnectable","autoPanOnConnect","startConnection","updateConnection","endConnection","isValidConnectionProp","handlePointerDown","isMouseTriggered","onPointerMove","connectionPosition","closestHandle","isValidConnectionHandler","newConnection2","previousConnection","prevActiveHandle","onPointerUp","clickedHandle","fromHandleInternal","fromNodeInternal","handleClick","isOwnHandle","useNodeId","inject","useNode","createNodeHooks","useNodeHooks","nodeHooks","useUpdateNodePositions","getSelectedNodes","positionDiff","isShiftPressed","xVelo","yVelo","factor","positionDiffX","positionDiffY","nodeUpdates","DEFAULT_PADDING","defaultEase","noop","initialViewportHelper","useViewportHelper","state","transitionOptions","getD3Transition","transformViewport","zoom22","clampedX","clampedY","nextTransform","zoomLevel","nodesToFit","nextZoom","centerX","centerY","domX","domY","correctedPosition","ease","onEnd","hasDuration","useWatchProps","models","store","scope","effectScope","watchModelValue","pauseModel","pauseStore","immediateStore","watchNodesValue","watchEdgesValue","watchMaxZoom","watchMinZoom","watchTranslateExtent","watchNodeExtent","watchApplyDefault","watchAutoConnect","autoConnector","autoConnectEnabled","watchRest","skip","propKey","propValue","toRef","storeRef","nextValue","createHooks","err","useHooks","onBeforeMount","useState","storeOptionsToSkip","useActions","viewportHelper","updateNodeInternals","ids","updateIds","getIncomers$1","getOutgoers$1","getConnectedEdges$1","getHandleConnections","updateNodeDimensions","updates","viewportNode","style","elementSelectionHandler","edgeIds","changedNodes","changedEdges","edgeId","nodeChanges","addSelectedEdges","addSelectedElements","removeSelectedEdges","edgeChanges","changes2","curr","selectionChange","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","setPaneClickDistance","clickDistance","setInteractive","isInteractive","setNodes","setEdges","setElements","nextElements","addNodes","graphNodes","addEdges","removeNodes","removeConnectedEdges","removeChildren","nodesToRemove","createEdgeRemovalChanges","connectedEdges","createChildrenRemovalChanges","currNode","removeEdges","edgesToRemove","currEdge","updateEdge2","oldEdge","prevEdgeIndex","newEdge","validEdge","updateEdgeData","dataUpdate","nextData","applyNodeChanges2","applyEdgeChanges2","updateNode","nodeUpdate","nextNode","updateNodeData","startHandle","status","getNodeRect","nodeOrRect","isRectObj","getIntersectingNodes","nodeRect","isRect2","intersections","currNodeRect","isNodeIntersecting","delta","d3Zoom","d3Selection","constrainedTransform","transformChanged","setState","opts","exclude","setSkippedOptions","option","transitionOpts","__","___","____","_____","______","_______","_________","resetState","updatedTransform","bbox","_hoisted_1$9","__default__$f","_sfc_main$f","defineComponent","__props","__expose","createPropsRestProxy","connectionStartHandle","connectionEndHandle","noPanClassName","isConnectableStart","isConnectableEnd","isConnecting","_d","_e","_f","isClickConnecting","isConnectable","onMounted","existingBounds","nextBounds","onPointerDown","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","DefaultNode","sourcePosition","targetPosition","_label","isValidTargetPos","isValidSourcePos","label","h","Fragment","DefaultNode$1","OutputNode","OutputNode$1","InputNode","InputNode$1","_hoisted_1$8","_hoisted_2$2","_hoisted_3$1","__default__$e","_sfc_main$e","getBox","nextBox","normalizeStyle","createCommentVNode","createElementVNode","mergeProps","createBlock","resolveDynamicComponent","createTextVNode","toDisplayString","_hoisted_1$7","_hoisted_2$1","__default__$d","_sfc_main$d","pathEl","interactionEl","labelEl","attrs","useAttrs","getSimpleEdgeCenter","sourceX","sourceY","targetX","targetY","xOffset","yOffset","getBezierEdgeCenter","sourceControlX","sourceControlY","targetControlX","targetControlY","offsetX","offsetY","calculateControlOffset","curvature","getControlWithCurvature","x1","y1","ctX","ctY","getBezierPath","bezierPathParams","labelX","labelY","getControl","getSimpleBezierPath","simpleBezierPathParams","handleDirections","getDirection","distance","getPoints","sourceDir","targetDir","sourceGapped","targetGapped","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","maxXDistance","maxYDistance","getBend","bendSize","xDir2","yDir2","xDir","yDir","getSmoothStepPath","smoothStepPathParams","borderRadius","res","segment","getStraightPath","straightEdgeParams","StraightEdge$1","path","SmoothStepEdge$1","StepEdge$1","BezierEdge$1","SimpleBezierEdge$1","defaultNodeTypes","defaultEdgeTypes","useGetters","getNode","getEdge","getEdgeTypes","edgeTypes","keys","getNodeTypes","nodeTypes","getNodes","getEdges","visibleEdges","getElements","selectedNodes","getSelectedEdges","selectedEdges","getSelectedElements","getNodesInitialized","initializedNodes","areNodesInitialized","Storage","vueApp","existingInstance","flow","preloadedState","reactiveState","reactive","hooksOn","nodesMap","edgesMap","getters","actions","idOrOpts","storage","isOptsObj","vueFlow","injectedState","shouldApplyDefault","nodesChangeHandler","edgesChangeHandler","storedInstance","provide","instance","useResizeHandler","viewportEl","resizeObserver","rendererNode","updateDimensions","onBeforeUnmount","__default__$c","_sfc_main$c","_hoisted_1$6","__default__$b","_sfc_main$b","disableKeyboardA11y","userSelectionActive","updatePositions","selectedNodesBBox","innerStyle","onContextMenu","onKeyDown","getMousePosition","__default__$a","_sfc_main$a","userSelectionRect","elementsSelectable","selectionMode","deleteKeyCode","multiSelectionKeyCode","selectedNodeIds","selectedEdgeIds","hasActiveSelection","connectionInProgress","selectionInProgress","selectionStarted","deleteKeyPressed","multiSelectKeyPressed","isKeyPressed","wrapHandler","containerRef","onWheel","mouseX","mouseY","startX","startY","nextUserSelectRect","prevSelectedNodeIds","prevSelectedEdgeIds","edgesSelectable","connections","$event","__default__$9","_sfc_main$9","fitViewOnInit","fitViewOnInitDone","isHidden","__default__$8","_sfc_main$8","defaultViewport","zoomActivationKeyCode","selectionKeyCode","panActivationKeyCode","panOnScroll","panOnScrollMode","panOnScrollSpeed","panOnDrag","zoomOnDoubleClick","zoomOnPinch","zoomOnScroll","preventScrolling","noWheelClassName","paneDragging","storeD3Zoom","storeD3Selection","storeD3ZoomHandler","viewportRef","paneClickDistance","isZoomingOrPanning","isPanScrolling","panScrollTimeout","zoomedWithRightMouseButton","mouseButton","prevTransform","panKeyPressed","selectionKeyPressed","zoomKeyPressed","shouldPanOnDrag","shouldPanOnScroll","isSelecting","viewportElement","d3ZoomHandler","flowTransform","eventToFlowTransform","isRightClickPan","viewChanged","zoomScroll","pinchZoom","eventButton","isWrappedWithClass","buttonAllowed","currentZoom","_isMacOs","pinchDelta","deltaNormalize","deltaX","deltaY","nextViewport","invalidEvent","pan","usedButton","prevViewport","eventTransform","className","createVNode","withCtx","_hoisted_1$5","_hoisted_2","_hoisted_3","__default__$7","_sfc_main$7","ariaLiveMessage","useOnInitHandler","vfInstance","isInitialized","shiftX","shift","shiftY","EdgeAnchor","radius","EdgeAnchor$1","EdgeWrapper$1","edgeUpdaterRadius","edgesUpdatable","edgesFocusable","slots","mouseOver","updating","edgeEl","isSelectable","isUpdatable","isFocusable","edgeClass","edgeStyle","edgeCmp","slot","edgeType","components","resolveComponent","pathOptions","sourceNodeHandles","targetNodeHandles","onEdgeClick","onEdgeContextMenu","onDoubleClick","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","onEdgeUpdaterSourceMouseDown","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","onEdgeUpdaterTargetMouseDown","handleEdgeUpdater","isSourceHandle","ConnectionLine$1","connectionLineType","connectionLineStyle","connectionLineOptions","connectionLineComponent","fromNode","_a2","toNode","toXY","markerStart","markerEnd","startHandleId","fromHandleBounds","oppositeBounds","fromPosition","fromX","fromY","toHandle","_a3","toPosition","dAttr","pathParams","_hoisted_1$4","__default__$6","_sfc_main$6","_hoisted_1$3","__default__$5","_sfc_main$5","defaultColor","markers","markers2","createMarkers","markerId","renderList","__default__$4","_sfc_main$4","NodeWrapper$1","onUpdateNodeInternals","elevateNodesOnSelect","nodesFocusable","isDraggable","hasPointerEvents","isInit","nodeCmp","nodeType","onSelectNode","getClass","getStyle","styles","zIndex","updateInternals","newX","newY","parentZ","nodeZIndex","xyzPos","nodeExtent2","globalExtent","oldNodeExtent","oldGlobalExtent","clampPosition2","onMouseEnter","onMouseMove","onMouseLeave","_hoisted_1$2","__default__$3","_sfc_main$3","teleportTarget","Teleport","useNodesInitialized","_hoisted_1$1","__default__$2","_sfc_main$2","nodesInitialized","entries","entry","_cached","_memo","isMemoSame","_item","useStylesLoadedWarning","pane","_hoisted_1","__default__$1","_sfc_main$1","useSlots","modelValue","modelNodes","modelEdges","dispose","onUnmounted","__default__","__emit","inputRef","useTemplateRef","newLabel","showInput","lastClick","labelOnClick","showLabelInput","submitNewLabel","_createElementVNode","_createVNode","_unref","EdgeLabelRenderer","_normalizeStyle","_toDisplayString","_openBlock","_createElementBlock","nodeOnClick","_createBlock","Handle","hover","vueFlowElements","vueFlowInstance","activeElementKey","activeElementIndex","_elements","_element","newValue","onConnect","onPaneReady","handleKeypress","shiftTerminal","currentTerminal","shiftOutput","activeNode","shiftInput","fitView","addNode","makeEdge","newNodePosition","labelChanged","handleEdgeRemove","_normalizeClass","nodeContainerClass","_hoisted_4","_hoisted_5","_withCtx","EditableNode","_mergeProps","EditableEdge","states","_useModel","hasInputs","stateElements","stateHash","edgeKey","edgeValue","onElementsChange","idToLabel","NodeEditor","install","app","StateEditor"],"mappings":"oRACA,SAASA,GAAkBC,EAAI,CAC7B,OAAIC,EAAAA,gBAAe,GACjBC,EAAAA,eAAeF,CAAE,EACV,IAEF,EACT,CACA,SAASG,GAAQC,EAAG,CAClB,OAAO,OAAOA,GAAM,WAAaA,EAAC,EAAKC,EAAAA,MAAMD,CAAC,CAChD,CAiCA,MAAME,GAAW,OAAO,OAAW,KAAe,OAAO,SAAa,IAChEC,GAAWC,GAAQ,OAAOA,EAAQ,IAClCC,GAAW,OAAO,UAAU,SAC5BC,GAAYF,GAAQC,GAAS,KAAKD,CAAG,IAAM,kBAC3CG,GAAS,IAAM,CACrB,EACA,SAASC,GAAoBC,EAASb,EAAI,CACxC,SAASc,KAAWC,EAAM,CACxB,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,QAAQ,QAAQJ,EAAQ,IAAMb,EAAG,MAAM,KAAMe,CAAI,EAAG,CAAE,GAAAf,EAAI,QAAS,KAAM,KAAAe,CAAI,CAAE,CAAC,EAAE,KAAKC,CAAO,EAAE,MAAMC,CAAM,CAClH,CAAK,CACL,CACE,OAAOH,CACT,CACA,MAAMI,GAAgBC,GACbA,EAAM,EAEf,SAASC,GAAeC,EAAeH,GAAc,CACnD,MAAMI,EAAWC,EAAAA,IAAI,EAAI,EACzB,SAASC,GAAQ,CACfF,EAAS,MAAQ,EACrB,CACE,SAASG,GAAS,CAChBH,EAAS,MAAQ,EACrB,CACE,MAAMI,EAAc,IAAIX,IAAS,CAC3BO,EAAS,OACXD,EAAa,GAAGN,CAAI,CAC1B,EACE,MAAO,CAAE,SAAUY,WAASL,CAAQ,EAAG,MAAAE,EAAO,OAAAC,EAAQ,YAAAC,CAAW,CACnE,CACA,SAASE,GAAeC,EAAIC,EAAiB,GAAOC,EAAS,UAAW,CACtE,OAAO,IAAI,QAAQ,CAACf,EAASC,IAAW,CAEpC,WADEa,EACS,IAAMb,EAAOc,CAAM,EAEnBf,EAFsBa,CAAE,CAGzC,CAAG,CACH,CACA,SAASG,GAAgBC,EAAQC,EAAIC,EAAU,CAAA,EAAI,CACjD,KAAM,CACJ,YAAAT,EAAcR,GACd,GAAGkB,CACP,EAAMD,EACJ,OAAOE,EAAAA,MACLJ,EACArB,GACEc,EACAQ,CACN,EACIE,CACJ,CACA,CACA,SAASE,GAAcL,EAAQC,EAAIC,EAAU,CAAA,EAAI,CAC/C,KAAM,CACJ,YAAatB,EACb,GAAGuB,CACP,EAAMD,EACE,CAAE,YAAAT,EAAa,MAAAF,EAAO,OAAAC,EAAQ,SAAAH,CAAQ,EAAKF,GAAeP,CAAO,EASvE,MAAO,CAAE,KARImB,GACXC,EACAC,EACA,CACE,GAAGE,EACH,YAAAV,CACN,CACA,EACiB,MAAAF,EAAO,OAAAC,EAAQ,SAAAH,CAAQ,CACxC,CACA,SAASiB,GAAOC,EAAWL,EAAU,GAAI,CACvC,GAAI,CAACM,EAAAA,MAAMD,CAAS,EAClB,OAAOE,EAAAA,OAASF,CAAS,EAC3B,MAAMG,EAAS,MAAM,QAAQH,EAAU,KAAK,EAAI,MAAM,KAAK,CAAE,OAAQA,EAAU,MAAM,MAAM,CAAE,EAAI,CAAA,EACjG,UAAWI,KAAOJ,EAAU,MAC1BG,EAAOC,CAAG,EAAIC,EAAAA,UAAU,KAAO,CAC7B,KAAM,CACJ,OAAOL,EAAU,MAAMI,CAAG,CAClC,EACM,IAAIE,EAAG,CACL,IAAIC,EAEJ,IADoBA,EAAK5C,GAAQgC,EAAQ,UAAU,IAAM,KAAOY,EAAK,GAEnE,GAAI,MAAM,QAAQP,EAAU,KAAK,EAAG,CAClC,MAAMQ,EAAO,CAAC,GAAGR,EAAU,KAAK,EAChCQ,EAAKJ,CAAG,EAAIE,EACZN,EAAU,MAAQQ,CAC9B,KAAiB,CACL,MAAMC,EAAY,CAAE,GAAGT,EAAU,MAAO,CAACI,CAAG,EAAGE,CAAC,EAChD,OAAO,eAAeG,EAAW,OAAO,eAAeT,EAAU,KAAK,CAAC,EACvEA,EAAU,MAAQS,CAC9B,MAEUT,EAAU,MAAMI,CAAG,EAAIE,CAEjC,CACA,EAAM,EAEJ,OAAOH,CACT,CACA,SAASO,GAAY9C,EAAG+C,EAAQ,GAAO,CACrC,SAASC,EAAQC,EAAW,CAAE,MAAAC,EAAQ,OAAQ,KAAAC,EAAO,GAAO,QAASC,EAAU,eAAA1B,CAAc,EAAK,CAAA,EAAI,CACpG,IAAI2B,EAAO,KAiBX,MAAMC,EAAW,CAhBD,IAAI,QAAS1C,GAAY,CACvCyC,EAAOpB,EAAAA,MACLjC,EACC0C,GAAM,CACDO,EAAUP,CAAC,IAAMK,IACKM,IAAI,EAC5BzC,EAAQ8B,CAAC,EAErB,EACQ,CACE,MAAAQ,EACA,KAAAC,EACA,UAAW,EACrB,CACA,CACA,CAAK,CACwB,EACzB,OAAIC,GAAY,MACdE,EAAS,KACP9B,GAAe4B,EAAU1B,CAAc,EAAE,KAAK,IAAM3B,GAAQC,CAAC,CAAC,EAAE,QAAQ,IAA8BqD,IAAI,CAAE,CACpH,EAEW,QAAQ,KAAKC,CAAQ,CAChC,CACE,SAASC,EAAKC,EAAOzB,EAAS,CAC5B,GAAI,CAACM,EAAAA,MAAMmB,CAAK,EACd,OAAOR,EAASN,GAAMA,IAAMc,EAAOzB,CAAO,EAC5C,KAAM,CAAE,MAAAmB,EAAQ,OAAQ,KAAAC,EAAO,GAAO,QAASC,EAAU,eAAA1B,CAAc,EAAKK,GAA4B,CAAA,EACxG,IAAIsB,EAAO,KAiBX,MAAMC,EAAW,CAhBD,IAAI,QAAS1C,GAAY,CACvCyC,EAAOpB,EAAAA,MACL,CAACjC,EAAGwD,CAAK,EACT,CAAC,CAACC,EAAIC,CAAE,IAAM,CACRX,KAAWU,IAAOC,KACIL,IAAI,EAC5BzC,EAAQ6C,CAAE,EAEtB,EACQ,CACE,MAAAP,EACA,KAAAC,EACA,UAAW,EACrB,CACA,CACA,CAAK,CACwB,EACzB,OAAIC,GAAY,MACdE,EAAS,KACP9B,GAAe4B,EAAU1B,CAAc,EAAE,KAAK,IAAM3B,GAAQC,CAAC,CAAC,EAAE,QAAQ,KAC9CqD,IAAI,EACrBtD,GAAQC,CAAC,EACjB,CACT,EAEW,QAAQ,KAAKsD,CAAQ,CAChC,CACE,SAASK,EAAW5B,EAAS,CAC3B,OAAOiB,EAASN,GAAM,EAAQA,EAAIX,CAAO,CAC7C,CACE,SAAS6B,EAAS7B,EAAS,CACzB,OAAOwB,EAAK,KAAMxB,CAAO,CAC7B,CACE,SAAS8B,EAAc9B,EAAS,CAC9B,OAAOwB,EAAK,OAAQxB,CAAO,CAC/B,CACE,SAAS+B,EAAQ/B,EAAS,CACxB,OAAOiB,EAAQ,OAAO,MAAOjB,CAAO,CACxC,CACE,SAASgC,EAAWP,EAAOzB,EAAS,CAClC,OAAOiB,EAASN,GAAM,CACpB,MAAMsB,EAAS,MAAM,KAAKtB,CAAC,EAC3B,OAAOsB,EAAO,SAASR,CAAK,GAAKQ,EAAO,SAASjE,GAAQyD,CAAK,CAAC,CACrE,EAAOzB,CAAO,CACd,CACE,SAASkC,EAAQlC,EAAS,CACxB,OAAOmC,EAAa,EAAGnC,CAAO,CAClC,CACE,SAASmC,EAAaC,EAAI,EAAGpC,EAAS,CACpC,IAAIqC,EAAQ,GACZ,OAAOpB,EAAQ,KACboB,GAAS,EACFA,GAASD,GACfpC,CAAO,CACd,CACE,OAAI,MAAM,QAAQhC,GAAQC,CAAC,CAAC,EACT,CACf,QAAAgD,EACA,WAAAe,EACA,QAAAE,EACA,aAAAC,EACA,IAAI,KAAM,CACR,OAAOpB,GAAY9C,EAAG,CAAC+C,CAAK,CACpC,CACA,EAGqB,CACf,QAAAC,EACA,KAAAO,EACA,WAAAI,EACA,SAAAC,EACA,QAAAE,EACA,cAAAD,EACA,QAAAI,EACA,aAAAC,EACA,IAAI,KAAM,CACR,OAAOpB,GAAY9C,EAAG,CAAC+C,CAAK,CACpC,CACA,CAGA,CACA,SAASsB,GAAMrE,EAAG,CAChB,OAAO8C,GAAY9C,CAAC,CACtB,CACA,SAASsE,GAAaC,EAAO,CAC3B,IAAI5B,EACJ,MAAM6B,EAAQzE,GAAQwE,CAAK,EAC3B,OAAQ5B,EAA8B6B,GAAM,MAAQ,KAAO7B,EAAK6B,CAClE,CACA,MAAMC,GAAgBvE,GAAW,OAAS,OAC1C,SAASwE,MAAoB/D,EAAM,CACjC,IAAIgE,EACAC,EACAC,EACA9C,EAOJ,GANI,OAAOpB,EAAK,CAAC,GAAM,UAAY,MAAM,QAAQA,EAAK,CAAC,CAAC,GACtD,CAACiE,EAAQC,EAAW9C,CAAO,EAAIpB,EAC/BgE,EAASF,IAET,CAACE,EAAQC,EAAQC,EAAW9C,CAAO,EAAIpB,EAErC,CAACgE,EACH,OAAOpE,GACJ,MAAM,QAAQqE,CAAM,IACvBA,EAAS,CAACA,CAAM,GACb,MAAM,QAAQC,CAAS,IAC1BA,EAAY,CAACA,CAAS,GACxB,MAAMC,EAAW,CAAA,EACXC,EAAU,IAAM,CACpBD,EAAS,QAASlF,GAAOA,EAAE,CAAE,EAC7BkF,EAAS,OAAS,CACtB,EACQE,EAAW,CAACC,EAAIC,EAAOC,EAAUC,KACrCH,EAAG,iBAAiBC,EAAOC,EAAUC,CAAQ,EACtC,IAAMH,EAAG,oBAAoBC,EAAOC,EAAUC,CAAQ,GAEzDC,EAAYpD,EAAAA,MAChB,IAAM,CAACqC,GAAaK,CAAM,EAAG5E,GAAQgC,CAAO,CAAC,EAC7C,CAAC,CAACkD,EAAIG,CAAQ,IAAM,CAElB,GADAL,EAAO,EACH,CAACE,EACH,OACF,MAAMK,EAAehF,GAAS8E,CAAQ,EAAI,CAAE,GAAGA,CAAQ,EAAKA,EAC5DN,EAAS,KACP,GAAGF,EAAO,QAASM,GACVL,EAAU,IAAKM,GAAaH,EAASC,EAAIC,EAAOC,EAAUG,CAAY,CAAC,CAC/E,CACT,CACA,EACI,CAAE,UAAW,GAAM,MAAO,MAAM,CACpC,EACQjC,EAAO,IAAM,CACjBgC,EAAS,EACTN,EAAO,CACX,EACE,OAAApF,GAAkB0D,CAAI,EACfA,CACT,CACA,SAASkC,GAAqBC,EAAW,CACvC,OAAI,OAAOA,GAAc,WAChBA,EACA,OAAOA,GAAc,SACpBN,GAAUA,EAAM,MAAQM,EACzB,MAAM,QAAQA,CAAS,EACtBN,GAAUM,EAAU,SAASN,EAAM,GAAG,EACzC,IAAM,EACf,CACA,SAASO,MAAe9E,EAAM,CAC5B,IAAI6B,EACAkD,EACA3D,EAAU,CAAA,EACVpB,EAAK,SAAW,GAClB6B,EAAM7B,EAAK,CAAC,EACZ+E,EAAU/E,EAAK,CAAC,EAChBoB,EAAUpB,EAAK,CAAC,GACPA,EAAK,SAAW,EACrB,OAAOA,EAAK,CAAC,GAAM,UACrB6B,EAAM,GACNkD,EAAU/E,EAAK,CAAC,EAChBoB,EAAUpB,EAAK,CAAC,IAEhB6B,EAAM7B,EAAK,CAAC,EACZ+E,EAAU/E,EAAK,CAAC,IAGlB6B,EAAM,GACNkD,EAAU/E,EAAK,CAAC,GAElB,KAAM,CACJ,OAAAgE,EAASF,GACT,UAAAkB,EAAY,UACZ,QAAAC,EAAU,GACV,OAAAC,EAAS,EACb,EAAM9D,EACE+D,EAAYP,GAAqB/C,CAAG,EAO1C,OAAOkC,GAAiBC,EAAQgB,EANdI,GAAM,CAClBA,EAAE,QAAUhG,GAAQ8F,CAAM,GAE1BC,EAAUC,CAAC,GACbL,EAAQK,CAAC,CACf,EACuDH,CAAO,CAC9D,CACA,SAASI,GAAYnE,EAAQ,CAC3B,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAM,CAAC,CAC1C,CACA,SAASoE,GAAUC,EAAO1D,EAAK2D,EAAMpE,EAAU,CAAA,EAAI,CACjD,IAAIY,EAAIyD,EAAIC,EACZ,KAAM,CACJ,MAAAC,EAAQ,GACR,QAAAV,EAAU,GACV,UAAAD,EACA,KAAAxC,EAAO,GACP,aAAAoD,EACA,WAAAC,CACJ,EAAMzE,EACE0E,EAAKC,EAAAA,mBAAkB,EACvBC,EAAQR,GAA+BM,GAAG,QAAW9D,EAA2B8D,GAAG,QAAU,KAAO,OAAS9D,EAAG,KAAK8D,CAAE,MAAQJ,GAAMD,EAA2BK,GAAG,QAAU,KAAO,OAASL,EAAG,QAAU,KAAO,OAASC,EAAG,KAA2BI,GAAG,KAAK,GACtQ,IAAIvB,EAAQS,EACPnD,IAEDA,EAAM,cAGV0C,EAAQA,GAAS,UAAU1C,EAAI,SAAQ,CAAE,GACzC,MAAMoE,EAAWxG,GAASkG,EAAc,OAAOA,GAAU,WAAaA,EAAMlG,CAAG,EAAI4F,GAAY5F,CAAG,EAAhEA,EAC5ByG,EAAW,IAAM1G,GAAQ+F,EAAM1D,CAAG,CAAC,EAAIoE,EAAQV,EAAM1D,CAAG,CAAC,EAAI+D,EAC7DO,EAAetD,GAAU,CACzBgD,EACEA,EAAWhD,CAAK,GAClBmD,EAAMzB,EAAO1B,CAAK,EAEpBmD,EAAMzB,EAAO1B,CAAK,CAExB,EACE,GAAIoC,EAAS,CACX,MAAMmB,EAAeF,EAAQ,EACvBG,EAAQ7F,EAAAA,IAAI4F,CAAY,EAC9B,IAAIE,EAAa,GACjBhF,OAAAA,EAAAA,MACE,IAAMiE,EAAM1D,CAAG,EACdE,GAAM,CACAuE,IACHA,EAAa,GACbD,EAAM,MAAQJ,EAAQlE,CAAC,EACvBwE,WAAS,IAAMD,EAAa,EAAK,EAE3C,CACA,EACIhF,EAAAA,MACE+E,EACCtE,GAAM,CACD,CAACuE,IAAevE,IAAMwD,EAAM1D,CAAG,GAAKW,IACtC2D,EAAYpE,CAAC,CACvB,EACM,CAAE,KAAAS,CAAI,CACZ,EACW6D,CACX,KACI,QAAOG,WAAS,CACd,KAAM,CACJ,OAAON,EAAQ,CACvB,EACM,IAAIrD,EAAO,CACTsD,EAAYtD,CAAK,CACzB,CACA,CAAK,CAEL,CACA,IAAI4D,GAAS,CAAE,MAAO,IAAM,CAC5B,CAAC,EACD,SAASC,IAAW,CAClB,QAASC,EAAI,EAAGnD,EAAI,UAAU,OAAQoD,EAAI,CAAA,EAAIC,EAAGF,EAAInD,EAAG,EAAEmD,EAAG,CAC3D,GAAI,EAAEE,EAAI,UAAUF,CAAC,EAAI,KAAOE,KAAKD,GAAK,QAAQ,KAAKC,CAAC,EACtD,MAAM,IAAI,MAAM,iBAAmBA,CAAC,EACtCD,EAAEC,CAAC,EAAI,CAAA,CACX,CACE,OAAO,IAAIC,GAASF,CAAC,CACvB,CACA,SAASE,GAASF,EAAG,CACnB,KAAK,EAAIA,CACX,CACA,SAASG,GAAiBC,EAAWC,EAAO,CAC1C,OAAOD,EAAU,OAAO,MAAM,OAAO,EAAE,IAAI,SAASH,EAAG,CACrD,IAAIK,EAAO,GAAI,EAAIL,EAAE,QAAQ,GAAG,EAGhC,GAFI,GAAK,IACPK,EAAOL,EAAE,MAAM,EAAI,CAAC,EAAGA,EAAIA,EAAE,MAAM,EAAG,CAAC,GACrCA,GAAK,CAACI,EAAM,eAAeJ,CAAC,EAC9B,MAAM,IAAI,MAAM,iBAAmBA,CAAC,EACtC,MAAO,CAAE,KAAMA,EAAG,KAAAK,CAAI,CAC1B,CAAG,CACH,CACAJ,GAAS,UAAYJ,GAAS,UAAY,CACxC,YAAaI,GACb,GAAI,SAASK,EAAUC,EAAU,CAC/B,IAAIR,EAAI,KAAK,EAAGS,EAAIN,GAAiBI,EAAW,GAAIP,CAAC,EAAGC,EAAGF,EAAI,GAAInD,EAAI6D,EAAE,OACzE,GAAI,UAAU,OAAS,EAAG,CACxB,KAAO,EAAEV,EAAInD,GACX,IAAKqD,GAAKM,EAAWE,EAAEV,CAAC,GAAG,QAAUE,EAAIS,GAAMV,EAAEC,CAAC,EAAGM,EAAS,IAAI,GAChE,OAAON,EACX,MACN,CACI,GAAIO,GAAY,MAAQ,OAAOA,GAAa,WAC1C,MAAM,IAAI,MAAM,qBAAuBA,CAAQ,EACjD,KAAO,EAAET,EAAInD,GACX,GAAIqD,GAAKM,EAAWE,EAAEV,CAAC,GAAG,KACxBC,EAAEC,CAAC,EAAIU,GAAMX,EAAEC,CAAC,EAAGM,EAAS,KAAMC,CAAQ,UACnCA,GAAY,KACnB,IAAKP,KAAKD,EACRA,EAAEC,CAAC,EAAIU,GAAMX,EAAEC,CAAC,EAAGM,EAAS,KAAM,IAAI,EAE5C,OAAO,IACX,EACE,KAAM,UAAW,CACf,IAAIlF,EAAO,CAAA,EAAI2E,EAAI,KAAK,EACxB,QAASC,KAAKD,EACZ3E,EAAK4E,CAAC,EAAID,EAAEC,CAAC,EAAE,MAAK,EACtB,OAAO,IAAIC,GAAS7E,CAAI,CAC5B,EACE,KAAM,SAASuF,EAAMC,EAAM,CACzB,IAAKjE,EAAI,UAAU,OAAS,GAAK,EAC/B,QAASxD,EAAO,IAAI,MAAMwD,CAAC,EAAGmD,EAAI,EAAGnD,EAAGqD,EAAGF,EAAInD,EAAG,EAAEmD,EAClD3G,EAAK2G,CAAC,EAAI,UAAUA,EAAI,CAAC,EAC7B,GAAI,CAAC,KAAK,EAAE,eAAea,CAAI,EAC7B,MAAM,IAAI,MAAM,iBAAmBA,CAAI,EACzC,IAAKX,EAAI,KAAK,EAAEW,CAAI,EAAGb,EAAI,EAAGnD,EAAIqD,EAAE,OAAQF,EAAInD,EAAG,EAAEmD,EACnDE,EAAEF,CAAC,EAAE,MAAM,MAAMc,EAAMzH,CAAI,CACjC,EACE,MAAO,SAASwH,EAAMC,EAAMzH,EAAM,CAChC,GAAI,CAAC,KAAK,EAAE,eAAewH,CAAI,EAC7B,MAAM,IAAI,MAAM,iBAAmBA,CAAI,EACzC,QAASX,EAAI,KAAK,EAAEW,CAAI,EAAG,EAAI,EAAGhE,EAAIqD,EAAE,OAAQ,EAAIrD,EAAG,EAAE,EACvDqD,EAAE,CAAC,EAAE,MAAM,MAAMY,EAAMzH,CAAI,CACjC,CACA,EACA,SAASsH,GAAME,EAAMN,EAAM,CACzB,QAASP,EAAI,EAAGnD,EAAIgE,EAAK,OAAQE,EAAGf,EAAInD,EAAG,EAAEmD,EAC3C,IAAKe,EAAIF,EAAKb,CAAC,GAAG,OAASO,EACzB,OAAOQ,EAAE,KAGf,CACA,SAASH,GAAMC,EAAMN,EAAME,EAAU,CACnC,QAAST,EAAI,EAAGnD,EAAIgE,EAAK,OAAQb,EAAInD,EAAG,EAAEmD,EACxC,GAAIa,EAAKb,CAAC,EAAE,OAASO,EAAM,CACzBM,EAAKb,CAAC,EAAIF,GAAQe,EAAOA,EAAK,MAAM,EAAGb,CAAC,EAAE,OAAOa,EAAK,MAAMb,EAAI,CAAC,CAAC,EAClE,KACN,CAEE,OAAIS,GAAY,MACdI,EAAK,KAAK,CAAE,KAAAN,EAAM,MAAOE,CAAQ,CAAE,EAC9BI,CACT,CACA,IAAIG,GAAQ,+BACZ,MAAMC,GAAa,CACjB,IAAK,6BACL,MAAAD,GACA,MAAO,+BACP,IAAK,uCACL,MAAO,+BACT,EACA,SAASE,GAAUX,EAAM,CACvB,IAAIY,EAASZ,GAAQ,GAAIP,EAAImB,EAAO,QAAQ,GAAG,EAC/C,OAAInB,GAAK,IAAMmB,EAASZ,EAAK,MAAM,EAAGP,CAAC,KAAO,UAC5CO,EAAOA,EAAK,MAAMP,EAAI,CAAC,GAClBiB,GAAW,eAAeE,CAAM,EAAI,CAAE,MAAOF,GAAWE,CAAM,EAAG,MAAOZ,CAAI,EAAKA,CAC1F,CACA,SAASa,GAAeb,EAAM,CAC5B,OAAO,UAAW,CAChB,IAAIc,EAAY,KAAK,cAAeC,EAAM,KAAK,aAC/C,OAAOA,IAAQN,IAASK,EAAU,gBAAgB,eAAiBL,GAAQK,EAAU,cAAcd,CAAI,EAAIc,EAAU,gBAAgBC,EAAKf,CAAI,CAClJ,CACA,CACA,SAASgB,GAAaC,EAAU,CAC9B,OAAO,UAAW,CAChB,OAAO,KAAK,cAAc,gBAAgBA,EAAS,MAAOA,EAAS,KAAK,CAC5E,CACA,CACA,SAASC,GAAQlB,EAAM,CACrB,IAAIiB,EAAWN,GAAUX,CAAI,EAC7B,OAAQiB,EAAS,MAAQD,GAAeH,IAAgBI,CAAQ,CAClE,CACA,SAASE,IAAO,CAChB,CACA,SAASC,GAASC,EAAW,CAC3B,OAAOA,GAAa,KAAOF,GAAO,UAAW,CAC3C,OAAO,KAAK,cAAcE,CAAS,CACvC,CACA,CACA,SAASC,GAAiBC,EAAS,CAC7B,OAAOA,GAAY,aACrBA,EAAUH,GAASG,CAAO,GAC5B,QAASC,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQC,EAAWH,EAAUC,CAAC,EAAI,IAAI,MAAMrF,CAAC,EAAGwF,EAAMC,EAAStC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GAC9GqC,EAAOF,EAAMnC,CAAC,KAAOsC,EAAUR,EAAQ,KAAKO,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,KACxE,aAAcE,IAChBC,EAAQ,SAAWD,EAAK,UAC1BD,EAASpC,CAAC,EAAIsC,GAIpB,OAAO,IAAIC,GAAYN,EAAW,KAAK,QAAQ,CACjD,CACA,SAASO,GAAMC,EAAG,CAChB,OAAOA,GAAK,KAAO,CAAA,EAAK,MAAM,QAAQA,CAAC,EAAIA,EAAI,MAAM,KAAKA,CAAC,CAC7D,CACA,SAASC,IAAQ,CACf,MAAO,CAAA,CACT,CACA,SAASC,GAAYf,EAAW,CAC9B,OAAOA,GAAa,KAAOc,GAAQ,UAAW,CAC5C,OAAO,KAAK,iBAAiBd,CAAS,CAC1C,CACA,CACA,SAASgB,GAASd,EAAS,CACzB,OAAO,UAAW,CAChB,OAAOU,GAAMV,EAAQ,MAAM,KAAM,SAAS,CAAC,CAC/C,CACA,CACA,SAASe,GAAoBf,EAAS,CAChC,OAAOA,GAAY,WACrBA,EAAUc,GAASd,CAAO,EAE1BA,EAAUa,GAAYb,CAAO,EAC/B,QAASC,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,CAAA,EAAIa,EAAU,CAAA,EAAIZ,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC/F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQE,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GAC9DqC,EAAOF,EAAMnC,CAAC,KAChBiC,EAAU,KAAKH,EAAQ,KAAKO,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,CAAC,EAC1DW,EAAQ,KAAKT,CAAI,GAIvB,OAAO,IAAIE,GAAYN,EAAWa,CAAO,CAC3C,CACA,SAASC,GAAQnB,EAAW,CAC1B,OAAO,UAAW,CAChB,OAAO,KAAK,QAAQA,CAAS,CACjC,CACA,CACA,SAASoB,GAAapB,EAAW,CAC/B,OAAO,SAASS,EAAM,CACpB,OAAOA,EAAK,QAAQT,CAAS,CACjC,CACA,CACA,IAAIqB,GAAO,MAAM,UAAU,KAC3B,SAASC,GAAUC,EAAO,CACxB,OAAO,UAAW,CAChB,OAAOF,GAAK,KAAK,KAAK,SAAUE,CAAK,CACzC,CACA,CACA,SAASC,IAAa,CACpB,OAAO,KAAK,iBACd,CACA,SAASC,GAAsBF,EAAO,CACpC,OAAO,KAAK,OAAOA,GAAS,KAAOC,GAAaF,GAAU,OAAOC,GAAU,WAAaA,EAAQH,GAAaG,CAAK,CAAC,CAAC,CACtH,CACA,IAAIG,GAAS,MAAM,UAAU,OAC7B,SAASC,IAAW,CAClB,OAAO,MAAM,KAAK,KAAK,QAAQ,CACjC,CACA,SAASC,GAAeL,EAAO,CAC7B,OAAO,UAAW,CAChB,OAAOG,GAAO,KAAK,KAAK,SAAUH,CAAK,CAC3C,CACA,CACA,SAASM,GAAyBN,EAAO,CACvC,OAAO,KAAK,UAAUA,GAAS,KAAOI,GAAWC,GAAe,OAAOL,GAAU,WAAaA,EAAQH,GAAaG,CAAK,CAAC,CAAC,CAC5H,CACA,SAASO,GAAiBP,EAAO,CAC3B,OAAOA,GAAU,aACnBA,EAAQJ,GAAQI,CAAK,GACvB,QAASpB,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQC,EAAWH,EAAUC,CAAC,EAAI,CAAA,EAAIG,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GAC3FqC,EAAOF,EAAMnC,CAAC,IAAMmD,EAAM,KAAKd,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,GAC/DC,EAAS,KAAKC,CAAI,EAIxB,OAAO,IAAIE,GAAYN,EAAW,KAAK,QAAQ,CACjD,CACA,SAAS0B,GAAOC,EAAQ,CACtB,OAAO,IAAI,MAAMA,EAAO,MAAM,CAChC,CACA,SAASC,IAAkB,CACzB,OAAO,IAAItB,GAAY,KAAK,QAAU,KAAK,QAAQ,IAAIoB,EAAM,EAAG,KAAK,QAAQ,CAC/E,CACA,SAASG,GAAUC,EAAQC,EAAQ,CACjC,KAAK,cAAgBD,EAAO,cAC5B,KAAK,aAAeA,EAAO,aAC3B,KAAK,MAAQ,KACb,KAAK,QAAUA,EACf,KAAK,SAAWC,CAClB,CACAF,GAAU,UAAY,CACpB,YAAaA,GACb,YAAa,SAASG,EAAO,CAC3B,OAAO,KAAK,QAAQ,aAAaA,EAAO,KAAK,KAAK,CACtD,EACE,aAAc,SAASA,EAAOC,EAAM,CAClC,OAAO,KAAK,QAAQ,aAAaD,EAAOC,CAAI,CAChD,EACE,cAAe,SAAStC,EAAW,CACjC,OAAO,KAAK,QAAQ,cAAcA,CAAS,CAC/C,EACE,iBAAkB,SAASA,EAAW,CACpC,OAAO,KAAK,QAAQ,iBAAiBA,CAAS,CAClD,CACA,EACA,SAASuC,GAAW1B,EAAG,CACrB,OAAO,UAAW,CAChB,OAAOA,CACX,CACA,CACA,SAAS2B,GAAUL,EAAQ5B,EAAOkC,EAAOT,EAAQU,EAAMC,EAAM,CAE3D,QADIvE,EAAI,EAAGqC,EAAMmC,EAAcrC,EAAM,OAAQsC,EAAaF,EAAK,OACxDvE,EAAIyE,EAAY,EAAEzE,GACnBqC,EAAOF,EAAMnC,CAAC,IAChBqC,EAAK,SAAWkC,EAAKvE,CAAC,EACtB4D,EAAO5D,CAAC,EAAIqC,GAEZgC,EAAMrE,CAAC,EAAI,IAAI8D,GAAUC,EAAQQ,EAAKvE,CAAC,CAAC,EAG5C,KAAOA,EAAIwE,EAAa,EAAExE,GACpBqC,EAAOF,EAAMnC,CAAC,KAChBsE,EAAKtE,CAAC,EAAIqC,EAGhB,CACA,SAASqC,GAAQX,EAAQ5B,EAAOkC,EAAOT,EAAQU,EAAMC,EAAMrJ,EAAK,CAC9D,IAAI8E,EAAGqC,EAAMsC,EAAiC,IAAI,IAAOH,EAAcrC,EAAM,OAAQsC,EAAaF,EAAK,OAAQK,EAAY,IAAI,MAAMJ,CAAW,EAAGK,EACnJ,IAAK7E,EAAI,EAAGA,EAAIwE,EAAa,EAAExE,GACzBqC,EAAOF,EAAMnC,CAAC,KAChB4E,EAAU5E,CAAC,EAAI6E,EAAW3J,EAAI,KAAKmH,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,EAAI,GAChEwC,EAAe,IAAIE,CAAQ,EAC7BP,EAAKtE,CAAC,EAAIqC,EAEVsC,EAAe,IAAIE,EAAUxC,CAAI,GAIvC,IAAKrC,EAAI,EAAGA,EAAIyE,EAAY,EAAEzE,EAC5B6E,EAAW3J,EAAI,KAAK6I,EAAQQ,EAAKvE,CAAC,EAAGA,EAAGuE,CAAI,EAAI,IAC5ClC,EAAOsC,EAAe,IAAIE,CAAQ,IACpCjB,EAAO5D,CAAC,EAAIqC,EACZA,EAAK,SAAWkC,EAAKvE,CAAC,EACtB2E,EAAe,OAAOE,CAAQ,GAE9BR,EAAMrE,CAAC,EAAI,IAAI8D,GAAUC,EAAQQ,EAAKvE,CAAC,CAAC,EAG5C,IAAKA,EAAI,EAAGA,EAAIwE,EAAa,EAAExE,GACxBqC,EAAOF,EAAMnC,CAAC,IAAM2E,EAAe,IAAIC,EAAU5E,CAAC,CAAC,IAAMqC,IAC5DiC,EAAKtE,CAAC,EAAIqC,EAGhB,CACA,SAASyC,GAAMzC,EAAM,CACnB,OAAOA,EAAK,QACd,CACA,SAAS0C,GAAe7I,EAAOhB,EAAK,CAClC,GAAI,CAAC,UAAU,OACb,OAAO,MAAM,KAAK,KAAM4J,EAAK,EAC/B,IAAIE,EAAO9J,EAAMwJ,GAAUN,GAAWtB,EAAU,KAAK,SAAUf,EAAS,KAAK,QACzE,OAAO7F,GAAU,aACnBA,EAAQiI,GAAWjI,CAAK,GAC1B,QAAS8F,EAAID,EAAO,OAAQ6B,EAAS,IAAI,MAAM5B,CAAC,EAAGqC,EAAQ,IAAI,MAAMrC,CAAC,EAAGsC,EAAO,IAAI,MAAMtC,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAAG,CAC/G,IAAI6B,EAASjB,EAAQZ,CAAC,EAAGC,EAAQJ,EAAOG,CAAC,EAAGsC,EAAcrC,EAAM,OAAQoC,EAAOU,GAAU/I,EAAM,KAAK6H,EAAQA,GAAUA,EAAO,SAAU7B,EAAGY,CAAO,CAAC,EAAG2B,EAAaF,EAAK,OAAQW,EAAab,EAAMnC,CAAC,EAAI,IAAI,MAAMuC,CAAU,EAAGU,EAAcvB,EAAO1B,CAAC,EAAI,IAAI,MAAMuC,CAAU,EAAGW,EAAYd,EAAKpC,CAAC,EAAI,IAAI,MAAMsC,CAAW,EAC1TQ,EAAKjB,EAAQ5B,EAAO+C,EAAYC,EAAaC,EAAWb,EAAMrJ,CAAG,EACjE,QAASmK,EAAK,EAAGC,EAAK,EAAGC,EAAUrB,EAAMmB,EAAKZ,EAAY,EAAEY,EAC1D,GAAIE,EAAWL,EAAWG,CAAE,EAAG,CAG7B,IAFIA,GAAMC,IACRA,EAAKD,EAAK,GACL,EAAEnB,EAAOiB,EAAYG,CAAE,IAAM,EAAEA,EAAKb,GACzC,CACFc,EAAS,MAAQrB,GAAQ,IACjC,CAEA,CACE,OAAAN,EAAS,IAAIrB,GAAYqB,EAAQd,CAAO,EACxCc,EAAO,OAASS,EAChBT,EAAO,MAAQU,EACRV,CACT,CACA,SAASqB,GAAUV,EAAM,CACvB,OAAO,OAAOA,GAAS,UAAY,WAAYA,EAAOA,EAAO,MAAM,KAAKA,CAAI,CAC9E,CACA,SAASiB,IAAiB,CACxB,OAAO,IAAIjD,GAAY,KAAK,OAAS,KAAK,QAAQ,IAAIoB,EAAM,EAAG,KAAK,QAAQ,CAC9E,CACA,SAAS8B,GAAeC,EAASC,EAAUC,EAAQ,CACjD,IAAIvB,EAAQ,KAAK,MAAK,EAAIT,EAAS,KAAMU,EAAO,KAAK,KAAI,EACzD,OAAI,OAAOoB,GAAY,YACrBrB,EAAQqB,EAAQrB,CAAK,EACjBA,IACFA,EAAQA,EAAM,UAAS,IAEzBA,EAAQA,EAAM,OAAOqB,EAAU,EAAE,EAE/BC,GAAY,OACd/B,EAAS+B,EAAS/B,CAAM,EACpBA,IACFA,EAASA,EAAO,UAAS,IAEzBgC,GAAU,KACZtB,EAAK,OAAM,EAEXsB,EAAOtB,CAAI,EACND,GAAST,EAASS,EAAM,MAAMT,CAAM,EAAE,MAAK,EAAKA,CACzD,CACA,SAASiC,GAAgBC,EAAS,CAEhC,QADIC,EAAaD,EAAQ,UAAYA,EAAQ,UAAS,EAAKA,EAClDE,EAAU,KAAK,QAASC,EAAUF,EAAW,QAASG,EAAKF,EAAQ,OAAQG,EAAKF,EAAQ,OAAQjE,EAAI,KAAK,IAAIkE,EAAIC,CAAE,EAAGC,EAAS,IAAI,MAAMF,CAAE,EAAGhE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EACrK,QAASmE,EAASL,EAAQ9D,CAAC,EAAGoE,EAASL,EAAQ/D,CAAC,EAAGrF,EAAIwJ,EAAO,OAAQE,EAAQH,EAAOlE,CAAC,EAAI,IAAI,MAAMrF,CAAC,EAAGwF,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GACxHqC,EAAOgE,EAAOrG,CAAC,GAAKsG,EAAOtG,CAAC,KAC9BuG,EAAMvG,CAAC,EAAIqC,GAIjB,KAAOH,EAAIgE,EAAI,EAAEhE,EACfkE,EAAOlE,CAAC,EAAI8D,EAAQ9D,CAAC,EAEvB,OAAO,IAAIK,GAAY6D,EAAQ,KAAK,QAAQ,CAC9C,CACA,SAASI,IAAkB,CACzB,QAASzE,EAAS,KAAK,QAASG,EAAI,GAAIF,EAAID,EAAO,OAAQ,EAAEG,EAAIF,GAC/D,QAASG,EAAQJ,EAAOG,CAAC,EAAG,EAAIC,EAAM,OAAS,EAAG+B,EAAO/B,EAAM,CAAC,EAAGE,EAAM,EAAE,GAAK,IAC1EA,EAAOF,EAAM,CAAC,KACZ+B,GAAQ7B,EAAK,wBAAwB6B,CAAI,EAAI,GAC/CA,EAAK,WAAW,aAAa7B,EAAM6B,CAAI,EACzCA,EAAO7B,GAIb,OAAO,IACT,CACA,SAASoE,GAAeC,EAAS,CAC1BA,IACHA,EAAUC,IACZ,SAASC,EAAYC,EAAGC,EAAG,CACzB,OAAOD,GAAKC,EAAIJ,EAAQG,EAAE,SAAUC,EAAE,QAAQ,EAAI,CAACD,EAAI,CAACC,CAC5D,CACE,QAAS/E,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQgF,EAAa,IAAI,MAAM/E,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAAG,CAC/F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQ6E,EAAYD,EAAW7E,CAAC,EAAI,IAAI,MAAMrF,CAAC,EAAGwF,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GACxGqC,EAAOF,EAAMnC,CAAC,KAChBgH,EAAUhH,CAAC,EAAIqC,GAGnB2E,EAAU,KAAKJ,CAAW,CAC9B,CACE,OAAO,IAAIrE,GAAYwE,EAAY,KAAK,QAAQ,EAAE,MAAK,CACzD,CACA,SAASJ,GAAUE,EAAGC,EAAG,CACvB,OAAOD,EAAIC,EAAI,GAAKD,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAI,GAC/C,CACA,SAASG,IAAiB,CACxB,IAAIxG,EAAW,UAAU,CAAC,EAC1B,iBAAU,CAAC,EAAI,KACfA,EAAS,MAAM,KAAM,SAAS,EACvB,IACT,CACA,SAASyG,IAAkB,CACzB,OAAO,MAAM,KAAK,IAAI,CACxB,CACA,SAASC,IAAiB,CACxB,QAASpF,EAAS,KAAK,QAASG,EAAI,EAAGF,EAAID,EAAO,OAAQG,EAAIF,EAAG,EAAEE,EACjE,QAASC,EAAQJ,EAAOG,CAAC,EAAG,EAAI,EAAGrF,EAAIsF,EAAM,OAAQ,EAAItF,EAAG,EAAE,EAAG,CAC/D,IAAIwF,EAAOF,EAAM,CAAC,EAClB,GAAIE,EACF,OAAOA,CACf,CAEE,OAAO,IACT,CACA,SAAS+E,IAAiB,CACxB,IAAIC,EAAO,EACX,UAAWhF,KAAQ,KACjB,EAAEgF,EACJ,OAAOA,CACT,CACA,SAASC,IAAkB,CACzB,MAAO,CAAC,KAAK,KAAI,CACnB,CACA,SAASC,GAAe9G,EAAU,CAChC,QAASsB,EAAS,KAAK,QAASG,EAAI,EAAGF,EAAID,EAAO,OAAQG,EAAIF,EAAG,EAAEE,EACjE,QAASC,EAAQJ,EAAOG,CAAC,EAAGlC,EAAI,EAAGnD,EAAIsF,EAAM,OAAQE,EAAMrC,EAAInD,EAAG,EAAEmD,GAC9DqC,EAAOF,EAAMnC,CAAC,IAChBS,EAAS,KAAK4B,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,EAGjD,OAAO,IACT,CACA,SAASqF,GAAajH,EAAM,CAC1B,OAAO,UAAW,CAChB,KAAK,gBAAgBA,CAAI,CAC7B,CACA,CACA,SAASkH,GAAejG,EAAU,CAChC,OAAO,UAAW,CAChB,KAAK,kBAAkBA,EAAS,MAAOA,EAAS,KAAK,CACzD,CACA,CACA,SAASkG,GAAenH,EAAMrE,EAAO,CACnC,OAAO,UAAW,CAChB,KAAK,aAAaqE,EAAMrE,CAAK,CACjC,CACA,CACA,SAASyL,GAAiBnG,EAAUtF,EAAO,CACzC,OAAO,UAAW,CAChB,KAAK,eAAesF,EAAS,MAAOA,EAAS,MAAOtF,CAAK,CAC7D,CACA,CACA,SAAS0L,GAAerH,EAAMrE,EAAO,CACnC,OAAO,UAAW,CAChB,IAAId,EAAIc,EAAM,MAAM,KAAM,SAAS,EAC/Bd,GAAK,KACP,KAAK,gBAAgBmF,CAAI,EAEzB,KAAK,aAAaA,EAAMnF,CAAC,CAC/B,CACA,CACA,SAASyM,GAAiBrG,EAAUtF,EAAO,CACzC,OAAO,UAAW,CAChB,IAAId,EAAIc,EAAM,MAAM,KAAM,SAAS,EAC/Bd,GAAK,KACP,KAAK,kBAAkBoG,EAAS,MAAOA,EAAS,KAAK,EAErD,KAAK,eAAeA,EAAS,MAAOA,EAAS,MAAOpG,CAAC,CAC3D,CACA,CACA,SAAS0M,GAAevH,EAAMrE,EAAO,CACnC,IAAIsF,EAAWN,GAAUX,CAAI,EAC7B,GAAI,UAAU,OAAS,EAAG,CACxB,IAAI8B,EAAO,KAAK,KAAI,EACpB,OAAOb,EAAS,MAAQa,EAAK,eAAeb,EAAS,MAAOA,EAAS,KAAK,EAAIa,EAAK,aAAab,CAAQ,CAC5G,CACE,OAAO,KAAK,MAAMtF,GAAS,KAAOsF,EAAS,MAAQiG,GAAiBD,GAAe,OAAOtL,GAAU,WAAasF,EAAS,MAAQqG,GAAmBD,GAAiBpG,EAAS,MAAQmG,GAAmBD,IAAgBlG,EAAUtF,CAAK,CAAC,CAC5O,CACA,SAAS6L,GAAY1F,EAAM,CACzB,OAAOA,EAAK,eAAiBA,EAAK,cAAc,aAAeA,EAAK,UAAYA,GAAQA,EAAK,WAC/F,CACA,SAAS2F,GAAczH,EAAM,CAC3B,OAAO,UAAW,CAChB,KAAK,MAAM,eAAeA,CAAI,CAClC,CACA,CACA,SAAS0H,GAAgB1H,EAAMrE,EAAOgM,EAAU,CAC9C,OAAO,UAAW,CAChB,KAAK,MAAM,YAAY3H,EAAMrE,EAAOgM,CAAQ,CAChD,CACA,CACA,SAASC,GAAgB5H,EAAMrE,EAAOgM,EAAU,CAC9C,OAAO,UAAW,CAChB,IAAI9M,EAAIc,EAAM,MAAM,KAAM,SAAS,EAC/Bd,GAAK,KACP,KAAK,MAAM,eAAemF,CAAI,EAE9B,KAAK,MAAM,YAAYA,EAAMnF,EAAG8M,CAAQ,CAC9C,CACA,CACA,SAASE,GAAgB7H,EAAMrE,EAAOgM,EAAU,CAC9C,OAAO,UAAU,OAAS,EAAI,KAAK,MAAMhM,GAAS,KAAO8L,GAAgB,OAAO9L,GAAU,WAAaiM,GAAkBF,IAAiB1H,EAAMrE,EAAOgM,GAAmB,EAAa,CAAC,EAAIG,GAAW,KAAK,KAAI,EAAI9H,CAAI,CAC1N,CACA,SAAS8H,GAAWhG,EAAM9B,EAAM,CAC9B,OAAO8B,EAAK,MAAM,iBAAiB9B,CAAI,GAAKwH,GAAY1F,CAAI,EAAE,iBAAiBA,EAAM,IAAI,EAAE,iBAAiB9B,CAAI,CAClH,CACA,SAAS+H,GAAe/H,EAAM,CAC5B,OAAO,UAAW,CAChB,OAAO,KAAKA,CAAI,CACpB,CACA,CACA,SAASgI,GAAiBhI,EAAMrE,EAAO,CACrC,OAAO,UAAW,CAChB,KAAKqE,CAAI,EAAIrE,CACjB,CACA,CACA,SAASsM,GAAiBjI,EAAMrE,EAAO,CACrC,OAAO,UAAW,CAChB,IAAId,EAAIc,EAAM,MAAM,KAAM,SAAS,EAC/Bd,GAAK,KACP,OAAO,KAAKmF,CAAI,EAEhB,KAAKA,CAAI,EAAInF,CACnB,CACA,CACA,SAASqN,GAAmBlI,EAAMrE,EAAO,CACvC,OAAO,UAAU,OAAS,EAAI,KAAK,MAAMA,GAAS,KAAOoM,GAAiB,OAAOpM,GAAU,WAAasM,GAAmBD,IAAkBhI,EAAMrE,CAAK,CAAC,EAAI,KAAK,KAAI,EAAGqE,CAAI,CAC/K,CACA,SAASmI,GAAWC,EAAQ,CAC1B,OAAOA,EAAO,OAAO,MAAM,OAAO,CACpC,CACA,SAASC,GAAUvG,EAAM,CACvB,OAAOA,EAAK,WAAa,IAAIwG,GAAUxG,CAAI,CAC7C,CACA,SAASwG,GAAUxG,EAAM,CACvB,KAAK,MAAQA,EACb,KAAK,OAASqG,GAAWrG,EAAK,aAAa,OAAO,GAAK,EAAE,CAC3D,CACAwG,GAAU,UAAY,CACpB,IAAK,SAAStI,EAAM,CAClB,IAAIP,EAAI,KAAK,OAAO,QAAQO,CAAI,EAC5BP,EAAI,IACN,KAAK,OAAO,KAAKO,CAAI,EACrB,KAAK,MAAM,aAAa,QAAS,KAAK,OAAO,KAAK,GAAG,CAAC,EAE5D,EACE,OAAQ,SAASA,EAAM,CACrB,IAAIP,EAAI,KAAK,OAAO,QAAQO,CAAI,EAC5BP,GAAK,IACP,KAAK,OAAO,OAAOA,EAAG,CAAC,EACvB,KAAK,MAAM,aAAa,QAAS,KAAK,OAAO,KAAK,GAAG,CAAC,EAE5D,EACE,SAAU,SAASO,EAAM,CACvB,OAAO,KAAK,OAAO,QAAQA,CAAI,GAAK,CACxC,CACA,EACA,SAASuI,GAAWzG,EAAM0G,EAAO,CAE/B,QADIC,EAAOJ,GAAUvG,CAAI,EAAGrC,EAAI,GAAInD,EAAIkM,EAAM,OACvC,EAAE/I,EAAInD,GACXmM,EAAK,IAAID,EAAM/I,CAAC,CAAC,CACrB,CACA,SAASiJ,GAAc5G,EAAM0G,EAAO,CAElC,QADIC,EAAOJ,GAAUvG,CAAI,EAAGrC,EAAI,GAAInD,EAAIkM,EAAM,OACvC,EAAE/I,EAAInD,GACXmM,EAAK,OAAOD,EAAM/I,CAAC,CAAC,CACxB,CACA,SAASkJ,GAAYH,EAAO,CAC1B,OAAO,UAAW,CAChBD,GAAW,KAAMC,CAAK,CAC1B,CACA,CACA,SAASI,GAAaJ,EAAO,CAC3B,OAAO,UAAW,CAChBE,GAAc,KAAMF,CAAK,CAC7B,CACA,CACA,SAASK,GAAgBL,EAAO7M,EAAO,CACrC,OAAO,UAAW,EACfA,EAAM,MAAM,KAAM,SAAS,EAAI4M,GAAaG,IAAe,KAAMF,CAAK,CAC3E,CACA,CACA,SAASM,GAAkB9I,EAAMrE,EAAO,CACtC,IAAI6M,EAAQL,GAAWnI,EAAO,EAAE,EAChC,GAAI,UAAU,OAAS,EAAG,CAExB,QADIyI,EAAOJ,GAAU,KAAK,KAAI,CAAE,EAAG,EAAI,GAAI/L,EAAIkM,EAAM,OAC9C,EAAE,EAAIlM,GACX,GAAI,CAACmM,EAAK,SAASD,EAAM,CAAC,CAAC,EACzB,MAAO,GACX,MAAO,EACX,CACE,OAAO,KAAK,MAAM,OAAO7M,GAAU,WAAakN,GAAkBlN,EAAQgN,GAAcC,IAAcJ,EAAO7M,CAAK,CAAC,CACrH,CACA,SAASoN,IAAa,CACpB,KAAK,YAAc,EACrB,CACA,SAASC,GAAerN,EAAO,CAC7B,OAAO,UAAW,CAChB,KAAK,YAAcA,CACvB,CACA,CACA,SAASsN,GAAetN,EAAO,CAC7B,OAAO,UAAW,CAChB,IAAId,EAAIc,EAAM,MAAM,KAAM,SAAS,EACnC,KAAK,YAAcd,GAAY,EACnC,CACA,CACA,SAASqO,GAAevN,EAAO,CAC7B,OAAO,UAAU,OAAS,KAAK,KAAKA,GAAS,KAAOoN,IAAc,OAAOpN,GAAU,WAAasN,GAAiBD,IAAgBrN,CAAK,CAAC,EAAI,KAAK,KAAI,EAAG,WACzJ,CACA,SAASwN,IAAa,CACpB,KAAK,UAAY,EACnB,CACA,SAASC,GAAazN,EAAO,CAC3B,OAAO,UAAW,CAChB,KAAK,UAAYA,CACrB,CACA,CACA,SAAS0N,GAAa1N,EAAO,CAC3B,OAAO,UAAW,CAChB,IAAId,EAAIc,EAAM,MAAM,KAAM,SAAS,EACnC,KAAK,UAAYd,GAAY,EACjC,CACA,CACA,SAASyO,GAAe3N,EAAO,CAC7B,OAAO,UAAU,OAAS,KAAK,KAAKA,GAAS,KAAOwN,IAAc,OAAOxN,GAAU,WAAa0N,GAAeD,IAAczN,CAAK,CAAC,EAAI,KAAK,KAAI,EAAG,SACrJ,CACA,SAAS4N,IAAQ,CACX,KAAK,aACP,KAAK,WAAW,YAAY,IAAI,CACpC,CACA,SAASC,IAAkB,CACzB,OAAO,KAAK,KAAKD,EAAK,CACxB,CACA,SAASE,IAAQ,CACX,KAAK,iBACP,KAAK,WAAW,aAAa,KAAM,KAAK,WAAW,UAAU,CACjE,CACA,SAASC,IAAkB,CACzB,OAAO,KAAK,KAAKD,EAAK,CACxB,CACA,SAASE,GAAiB3J,EAAM,CAC9B,IAAI4J,EAAU,OAAO5J,GAAS,WAAaA,EAAOkB,GAAQlB,CAAI,EAC9D,OAAO,KAAK,OAAO,UAAW,CAC5B,OAAO,KAAK,YAAY4J,EAAQ,MAAM,KAAM,SAAS,CAAC,CAC1D,CAAG,CACH,CACA,SAASC,IAAe,CACtB,OAAO,IACT,CACA,SAASC,GAAiB9J,EAAM+J,EAAQ,CACtC,IAAIH,EAAU,OAAO5J,GAAS,WAAaA,EAAOkB,GAAQlB,CAAI,EAAGuB,EAAUwI,GAAU,KAAOF,GAAe,OAAOE,GAAW,WAAaA,EAAS3I,GAAS2I,CAAM,EAClK,OAAO,KAAK,OAAO,UAAW,CAC5B,OAAO,KAAK,aAAaH,EAAQ,MAAM,KAAM,SAAS,EAAGrI,EAAQ,MAAM,KAAM,SAAS,GAAK,IAAI,CACnG,CAAG,CACH,CACA,SAASyI,IAAS,CAChB,IAAIxG,EAAS,KAAK,WACdA,GACFA,EAAO,YAAY,IAAI,CAC3B,CACA,SAASyG,IAAmB,CAC1B,OAAO,KAAK,KAAKD,EAAM,CACzB,CACA,SAASE,IAAyB,CAChC,IAAIzL,EAAQ,KAAK,UAAU,EAAK,EAAG+E,EAAS,KAAK,WACjD,OAAOA,EAASA,EAAO,aAAa/E,EAAO,KAAK,WAAW,EAAIA,CACjE,CACA,SAAS0L,IAAsB,CAC7B,IAAI1L,EAAQ,KAAK,UAAU,EAAI,EAAG+E,EAAS,KAAK,WAChD,OAAOA,EAASA,EAAO,aAAa/E,EAAO,KAAK,WAAW,EAAIA,CACjE,CACA,SAAS2L,GAAgB9O,EAAM,CAC7B,OAAO,KAAK,OAAOA,EAAO6O,GAAsBD,EAAsB,CACxE,CACA,SAASG,GAAgB1O,EAAO,CAC9B,OAAO,UAAU,OAAS,KAAK,SAAS,WAAYA,CAAK,EAAI,KAAK,KAAI,EAAG,QAC3E,CACA,SAAS2O,GAAgBhN,EAAU,CACjC,OAAO,SAASD,EAAO,CACrBC,EAAS,KAAK,KAAMD,EAAO,KAAK,QAAQ,CAC5C,CACA,CACA,SAASkN,GAAezK,EAAW,CACjC,OAAOA,EAAU,OAAO,MAAM,OAAO,EAAE,IAAI,SAAS,EAAG,CACrD,IAAIE,EAAO,GAAIP,EAAI,EAAE,QAAQ,GAAG,EAChC,OAAIA,GAAK,IACPO,EAAO,EAAE,MAAMP,EAAI,CAAC,EAAG,EAAI,EAAE,MAAM,EAAGA,CAAC,GAClC,CAAE,KAAM,EAAG,KAAAO,CAAI,CAC1B,CAAG,CACH,CACA,SAASwK,GAASvK,EAAU,CAC1B,OAAO,UAAW,CAChB,IAAIwK,EAAK,KAAK,KACd,GAAKA,EAEL,SAAS9I,EAAI,EAAGlC,EAAI,GAAIgC,EAAIgJ,EAAG,OAAQC,EAAG/I,EAAIF,EAAG,EAAEE,EAC7C+I,EAAID,EAAG9I,CAAC,GAAI,CAAC1B,EAAS,MAAQyK,EAAE,OAASzK,EAAS,OAASyK,EAAE,OAASzK,EAAS,KACjF,KAAK,oBAAoByK,EAAE,KAAMA,EAAE,SAAUA,EAAE,OAAO,EAEtDD,EAAG,EAAEhL,CAAC,EAAIiL,EAGV,EAAEjL,EACJgL,EAAG,OAAShL,EAEZ,OAAO,KAAK,KAClB,CACA,CACA,SAASkL,GAAM1K,EAAUtE,EAAOzB,EAAS,CACvC,OAAO,UAAW,CAChB,IAAIuQ,EAAK,KAAK,KAAMC,EAAGpN,EAAWgN,GAAgB3O,CAAK,EACvD,GAAI8O,GACF,QAAS9I,EAAI,EAAGF,EAAIgJ,EAAG,OAAQ9I,EAAIF,EAAG,EAAEE,EACtC,IAAK+I,EAAID,EAAG9I,CAAC,GAAG,OAAS1B,EAAS,MAAQyK,EAAE,OAASzK,EAAS,KAAM,CAClE,KAAK,oBAAoByK,EAAE,KAAMA,EAAE,SAAUA,EAAE,OAAO,EACtD,KAAK,iBAAiBA,EAAE,KAAMA,EAAE,SAAWpN,EAAUoN,EAAE,QAAUxQ,CAAO,EACxEwQ,EAAE,MAAQ/O,EACV,MACV,EAEI,KAAK,iBAAiBsE,EAAS,KAAM3C,EAAUpD,CAAO,EACtDwQ,EAAI,CAAE,KAAMzK,EAAS,KAAM,KAAMA,EAAS,KAAM,MAAAtE,EAAO,SAAA2B,EAAU,QAAApD,CAAO,EACnEuQ,EAGHA,EAAG,KAAKC,CAAC,EAFT,KAAK,KAAO,CAACA,CAAC,CAGpB,CACA,CACA,SAASE,GAAa3K,EAAUtE,EAAOzB,EAAS,CAC9C,IAAI4F,EAAYyK,GAAetK,EAAW,EAAE,EAAG,EAAG3D,EAAIwD,EAAU,OAAQH,EACxE,GAAI,UAAU,OAAS,EAAG,CACxB,IAAI8K,EAAK,KAAK,KAAI,EAAG,KACrB,GAAIA,GACF,QAAS9I,EAAI,EAAGF,EAAIgJ,EAAG,OAAQC,EAAG/I,EAAIF,EAAG,EAAEE,EACzC,IAAK,EAAI,EAAG+I,EAAID,EAAG9I,CAAC,EAAG,EAAIrF,EAAG,EAAE,EAC9B,IAAKqD,EAAIG,EAAU,CAAC,GAAG,OAAS4K,EAAE,MAAQ/K,EAAE,OAAS+K,EAAE,KACrD,OAAOA,EAAE,MAIjB,MACJ,CAEE,IADAD,EAAK9O,EAAQgP,GAAQH,GAChB,EAAI,EAAG,EAAIlO,EAAG,EAAE,EACnB,KAAK,KAAKmO,EAAG3K,EAAU,CAAC,EAAGnE,EAAOzB,CAAO,CAAC,EAC5C,OAAO,IACT,CACA,SAAS2Q,GAAc/I,EAAMxB,EAAMwK,EAAQ,CACzC,IAAIC,EAAUvD,GAAY1F,CAAI,EAAGzE,EAAQ0N,EAAQ,YAC7C,OAAO1N,GAAU,WACnBA,EAAQ,IAAIA,EAAMiD,EAAMwK,CAAM,GAE9BzN,EAAQ0N,EAAQ,SAAS,YAAY,OAAO,EACxCD,GACFzN,EAAM,UAAUiD,EAAMwK,EAAO,QAASA,EAAO,UAAU,EAAGzN,EAAM,OAASyN,EAAO,QAEhFzN,EAAM,UAAUiD,EAAM,GAAO,EAAK,GAEtCwB,EAAK,cAAczE,CAAK,CAC1B,CACA,SAAS2N,GAAiB1K,EAAMwK,EAAQ,CACtC,OAAO,UAAW,CAChB,OAAOD,GAAc,KAAMvK,EAAMwK,CAAM,CAC3C,CACA,CACA,SAASG,GAAiB3K,EAAMwK,EAAQ,CACtC,OAAO,UAAW,CAChB,OAAOD,GAAc,KAAMvK,EAAMwK,EAAO,MAAM,KAAM,SAAS,CAAC,CAClE,CACA,CACA,SAASI,GAAmB5K,EAAMwK,EAAQ,CACxC,OAAO,KAAK,MAAM,OAAOA,GAAW,WAAaG,GAAmBD,IAAkB1K,EAAMwK,CAAM,CAAC,CACrG,CACA,SAAUK,IAAqB,CAC7B,QAAS3J,EAAS,KAAK,QAASG,EAAI,EAAGF,EAAID,EAAO,OAAQG,EAAIF,EAAG,EAAEE,EACjE,QAASC,EAAQJ,EAAOG,CAAC,EAAG,EAAI,EAAGrF,EAAIsF,EAAM,OAAQE,EAAM,EAAIxF,EAAG,EAAE,GAC9DwF,EAAOF,EAAM,CAAC,KAChB,MAAME,EAGd,CACA,IAAIsJ,GAAO,CAAC,IAAI,EAChB,SAASpJ,GAAYR,EAAQe,EAAS,CACpC,KAAK,QAAUf,EACf,KAAK,SAAWe,CAClB,CACA,SAAS8I,IAAY,CACnB,OAAO,IAAIrJ,GAAY,CAAC,CAAC,SAAS,eAAe,CAAC,EAAGoJ,EAAI,CAC3D,CACA,SAASE,IAAsB,CAC7B,OAAO,IACT,CACAtJ,GAAY,UAAYqJ,GAAU,UAAY,CAC5C,YAAarJ,GACb,OAAQV,GACR,UAAWgB,GACX,YAAaQ,GACb,eAAgBI,GAChB,OAAQC,GACR,KAAMqB,GACN,MAAOlB,GACP,KAAM2B,GACN,KAAMC,GACN,MAAOI,GACP,UAAWgG,GACX,MAAOrF,GACP,KAAMC,GACN,KAAMQ,GACN,MAAOC,GACP,KAAMC,GACN,KAAMC,GACN,MAAOE,GACP,KAAMC,GACN,KAAMO,GACN,MAAOM,GACP,SAAUK,GACV,QAASY,GACT,KAAMI,GACN,KAAMI,GACN,MAAOE,GACP,MAAOE,GACP,OAAQC,GACR,OAAQG,GACR,OAAQG,GACR,MAAOG,GACP,MAAOC,GACP,GAAIO,GACJ,SAAUM,GACV,CAAC,OAAO,QAAQ,EAAGC,EACrB,EACA,SAASI,GAAOlK,EAAW,CACzB,OAAO,OAAOA,GAAc,SAAW,IAAIW,GAAY,CAAC,CAAC,SAAS,cAAcX,CAAS,CAAC,CAAC,EAAG,CAAC,SAAS,eAAe,CAAC,EAAI,IAAIW,GAAY,CAAC,CAACX,CAAS,CAAC,EAAG+J,EAAI,CACjK,CACA,SAASI,GAAYnO,EAAO,CAC1B,IAAIoO,EACJ,KAAOA,EAAepO,EAAM,aAC1BA,EAAQoO,EACV,OAAOpO,CACT,CACA,SAASqO,GAAQrO,EAAOyE,EAAM,CAI5B,GAHAzE,EAAQmO,GAAYnO,CAAK,EACrByE,IAAS,SACXA,EAAOzE,EAAM,eACXyE,EAAM,CACR,IAAI6J,EAAM7J,EAAK,iBAAmBA,EAClC,GAAI6J,EAAI,eAAgB,CACtB,IAAIC,EAAQD,EAAI,eAAc,EAC9B,OAAAC,EAAM,EAAIvO,EAAM,QAASuO,EAAM,EAAIvO,EAAM,QACzCuO,EAAQA,EAAM,gBAAgB9J,EAAK,aAAY,EAAG,SAAS,EACpD,CAAC8J,EAAM,EAAGA,EAAM,CAAC,CAC9B,CACI,GAAI9J,EAAK,sBAAuB,CAC9B,IAAI+J,EAAO/J,EAAK,sBAAqB,EACrC,MAAO,CAACzE,EAAM,QAAUwO,EAAK,KAAO/J,EAAK,WAAYzE,EAAM,QAAUwO,EAAK,IAAM/J,EAAK,SAAS,CACpG,CACA,CACE,MAAO,CAACzE,EAAM,MAAOA,EAAM,KAAK,CAClC,CACA,MAAMyO,GAAa,CAAE,QAAS,EAAK,EAC7BC,GAAoB,CAAE,QAAS,GAAM,QAAS,EAAK,EACzD,SAASC,GAAgB3O,EAAO,CAC9BA,EAAM,yBAAwB,CAChC,CACA,SAAS4O,GAAU5O,EAAO,CACxBA,EAAM,eAAc,EACpBA,EAAM,yBAAwB,CAChC,CACA,SAAS6O,GAAYC,EAAM,CACzB,IAAIC,EAAQD,EAAK,SAAS,gBAAiB3G,EAAa+F,GAAOY,CAAI,EAAE,GAAG,iBAAkBF,GAAWF,EAAiB,EAClH,kBAAmBK,EACrB5G,EAAW,GAAG,mBAAoByG,GAAWF,EAAiB,GAE9DK,EAAM,WAAaA,EAAM,MAAM,cAC/BA,EAAM,MAAM,cAAgB,OAEhC,CACA,SAASC,GAAQF,EAAMG,EAAS,CAC9B,IAAIF,EAAQD,EAAK,SAAS,gBAAiB3G,EAAa+F,GAAOY,CAAI,EAAE,GAAG,iBAAkB,IAAI,EAC1FG,IACF9G,EAAW,GAAG,aAAcyG,GAAWF,EAAiB,EACxD,WAAW,UAAW,CACpBvG,EAAW,GAAG,aAAc,IAAI,CACtC,EAAO,CAAC,GAEF,kBAAmB4G,EACrB5G,EAAW,GAAG,mBAAoB,IAAI,GAEtC4G,EAAM,MAAM,cAAgBA,EAAM,WAClC,OAAOA,EAAM,WAEjB,CACA,MAAMG,GAAcrK,GAAM,IAAMA,EAChC,SAASsK,GAAUlM,EAAM,CACvB,YAAamL,EACb,QAAAgB,EACA,OAAA3P,EACA,WAAA4P,EACA,OAAAC,EACA,EAAAzK,EACA,EAAA0K,EACA,GAAAC,EACA,GAAAC,EACA,SAAUC,CACZ,EAAG,CACD,OAAO,iBAAiB,KAAM,CAC5B,KAAM,CAAE,MAAOzM,EAAM,WAAY,GAAM,aAAc,EAAI,EACzD,YAAa,CAAE,MAAOmL,EAAc,WAAY,GAAM,aAAc,EAAI,EACxE,QAAS,CAAE,MAAOgB,EAAS,WAAY,GAAM,aAAc,EAAI,EAC/D,OAAQ,CAAE,MAAO3P,EAAQ,WAAY,GAAM,aAAc,EAAI,EAC7D,WAAY,CAAE,MAAO4P,EAAY,WAAY,GAAM,aAAc,EAAI,EACrE,OAAQ,CAAE,MAAOC,EAAQ,WAAY,GAAM,aAAc,EAAI,EAC7D,EAAG,CAAE,MAAOzK,EAAG,WAAY,GAAM,aAAc,EAAI,EACnD,EAAG,CAAE,MAAO0K,EAAG,WAAY,GAAM,aAAc,EAAI,EACnD,GAAI,CAAE,MAAOC,EAAI,WAAY,GAAM,aAAc,EAAI,EACrD,GAAI,CAAE,MAAOC,EAAI,WAAY,GAAM,aAAc,EAAI,EACrD,EAAG,CAAE,MAAOC,CAAS,CACzB,CAAG,CACH,CACAP,GAAU,UAAU,GAAK,UAAW,CAClC,IAAI7Q,EAAQ,KAAK,EAAE,GAAG,MAAM,KAAK,EAAG,SAAS,EAC7C,OAAOA,IAAU,KAAK,EAAI,KAAOA,CACnC,EACA,SAASqR,GAAgB3P,EAAO,CAC9B,MAAO,CAACA,EAAM,SAAW,CAACA,EAAM,MAClC,CACA,SAAS4P,IAAmB,CAC1B,OAAO,KAAK,UACd,CACA,SAASC,GAAe7P,EAAO8P,EAAG,CAChC,OAAOA,GAAY,CAAE,EAAG9P,EAAM,EAAG,EAAGA,EAAM,CAAC,CAC7C,CACA,SAAS+P,IAAqB,CAC5B,OAAO,UAAU,gBAAkB,iBAAkB,IACvD,CACA,SAASC,IAAO,CACd,IAAIzU,EAAUoU,GAAiBM,EAAYL,GAAkBR,EAAUS,GAAgBK,EAAYH,GAAoBI,EAAW,CAAA,EAAIxQ,EAAYwC,GAAS,QAAS,OAAQ,KAAK,EAAGmN,EAAS,EAAGc,EAAYC,EAAYC,EAAaC,EAAaC,EAAiB,EACnQ,SAASC,EAAMtI,EAAY,CACzBA,EAAW,GAAG,iBAAkBuI,CAAW,EAAE,OAAOR,CAAS,EAAE,GAAG,kBAAmBS,CAAY,EAAE,GAAG,iBAAkBC,EAAYnC,EAAU,EAAE,GAAG,iCAAkCoC,CAAU,EAAE,MAAM,eAAgB,MAAM,EAAE,MAAM,8BAA+B,eAAe,CACvR,CACE,SAASH,EAAY1Q,EAAO8P,EAAG,CAC7B,GAAI,EAAAS,GAAe,CAAChV,EAAQ,KAAK,KAAMyE,EAAO8P,CAAC,GAE/C,KAAIgB,EAAUC,EAAY,KAAMd,EAAU,KAAK,KAAMjQ,EAAO8P,CAAC,EAAG9P,EAAO8P,EAAG,OAAO,EAC5EgB,IAEL5C,GAAOlO,EAAM,IAAI,EAAE,GAAG,iBAAkBgR,EAAYtC,EAAiB,EAAE,GAAG,eAAgBuC,EAAYvC,EAAiB,EACvHG,GAAY7O,EAAM,IAAI,EACtB2O,GAAgB3O,CAAK,EACrBsQ,EAAc,GACdF,EAAapQ,EAAM,QACnBqQ,EAAarQ,EAAM,QACnB8Q,EAAQ,QAAS9Q,CAAK,GAC1B,CACE,SAASgR,EAAWhR,EAAO,CAEzB,GADA4O,GAAU5O,CAAK,EACX,CAACsQ,EAAa,CAChB,IAAId,EAAKxP,EAAM,QAAUoQ,EAAYX,EAAKzP,EAAM,QAAUqQ,EAC1DC,EAAcd,EAAKA,EAAKC,EAAKA,EAAKe,CACxC,CACIL,EAAS,MAAM,OAAQnQ,CAAK,CAChC,CACE,SAASiR,EAAWjR,EAAO,CACzBkO,GAAOlO,EAAM,IAAI,EAAE,GAAG,8BAA+B,IAAI,EACzDgP,GAAQhP,EAAM,KAAMsQ,CAAW,EAC/B1B,GAAU5O,CAAK,EACfmQ,EAAS,MAAM,MAAOnQ,CAAK,CAC/B,CACE,SAAS2Q,EAAa3Q,EAAO8P,EAAG,CAC9B,GAAKvU,EAAQ,KAAK,KAAMyE,EAAO8P,CAAC,EAEhC,KAAIoB,EAAUlR,EAAM,eAAgBmD,EAAI8M,EAAU,KAAK,KAAMjQ,EAAO8P,CAAC,EAAG7Q,EAAIiS,EAAQ,OAAQ9O,EAAG0O,EAC/F,IAAK1O,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GACf0O,EAAUC,EAAY,KAAM5N,EAAGnD,EAAO8P,EAAGoB,EAAQ9O,CAAC,EAAE,WAAY8O,EAAQ9O,CAAC,CAAC,KAC5EuM,GAAgB3O,CAAK,EACrB8Q,EAAQ,QAAS9Q,EAAOkR,EAAQ9O,CAAC,CAAC,GAG1C,CACE,SAASwO,EAAW5Q,EAAO,CACzB,IAAIkR,EAAUlR,EAAM,eAAgBf,EAAIiS,EAAQ,OAAQ9O,EAAG0O,EAC3D,IAAK1O,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GACf0O,EAAUX,EAASe,EAAQ9O,CAAC,EAAE,UAAU,KAC1CwM,GAAU5O,CAAK,EACf8Q,EAAQ,OAAQ9Q,EAAOkR,EAAQ9O,CAAC,CAAC,EAGzC,CACE,SAASyO,EAAW7Q,EAAO,CACzB,IAAIkR,EAAUlR,EAAM,eAAgBf,EAAIiS,EAAQ,OAAQ9O,EAAG0O,EAM3D,IALIP,GACF,aAAaA,CAAW,EAC1BA,EAAc,WAAW,UAAW,CAClCA,EAAc,IACpB,EAAO,GAAG,EACDnO,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GACf0O,EAAUX,EAASe,EAAQ9O,CAAC,EAAE,UAAU,KAC1CuM,GAAgB3O,CAAK,EACrB8Q,EAAQ,MAAO9Q,EAAOkR,EAAQ9O,CAAC,CAAC,EAGxC,CACE,SAAS2O,EAAY7N,EAAMiO,EAAYnR,EAAO8P,EAAGT,EAAY+B,EAAO,CAClE,IAAI1B,EAAY/P,EAAU,KAAI,EAAI0R,EAAIhD,GAAQ+C,GAASpR,EAAOmR,CAAU,EAAG3B,EAAIC,EAAI6B,EACnF,IAAKA,EAAIlC,EAAQ,KAAKlM,EAAM,IAAIiM,GAAU,cAAe,CACvD,YAAanP,EACb,OAAQyQ,EACR,WAAApB,EACA,OAAAC,EACA,EAAG+B,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,GAAI,EACJ,GAAI,EACJ,SAAU3B,CAChB,CAAK,EAAGI,CAAC,IAAM,KAEX,OAAAN,EAAK8B,EAAE,EAAID,EAAE,CAAC,GAAK,EACnB5B,EAAK6B,EAAE,EAAID,EAAE,CAAC,GAAK,EACZ,SAASP,EAAQ7N,EAAMsO,EAAQC,EAAQ,CAC5C,IAAIC,EAAKJ,EAAGpS,EACZ,OAAQgE,EAAI,CACV,IAAK,QACHkN,EAASd,CAAU,EAAIyB,EAAS7R,EAAIqQ,IACpC,MACF,IAAK,MACH,OAAOa,EAASd,CAAU,EAAG,EAAEC,EACjC,IAAK,OACH+B,EAAIhD,GAAQmD,GAAUD,EAAQJ,CAAU,EAAGlS,EAAIqQ,EAC/C,KACV,CACMI,EAAU,KACRzM,EACAC,EACA,IAAIiM,GAAUlM,EAAM,CAClB,YAAasO,EACb,QAASD,EACT,OAAQb,EACR,WAAApB,EACA,OAAQpQ,EACR,EAAGoS,EAAE,CAAC,EAAI7B,EACV,EAAG6B,EAAE,CAAC,EAAI5B,EACV,GAAI4B,EAAE,CAAC,EAAII,EAAG,CAAC,EACf,GAAIJ,EAAE,CAAC,EAAII,EAAG,CAAC,EACf,SAAU/B,CACpB,CAAS,EACDI,CACR,CACA,CACA,CACE,OAAAW,EAAM,OAAS,SAASpO,EAAG,CACzB,OAAO,UAAU,QAAU9G,EAAU,OAAO8G,GAAM,WAAaA,EAAI6M,GAAW,CAAC,CAAC7M,CAAC,EAAGoO,GAASlV,CACjG,EACEkV,EAAM,UAAY,SAASpO,EAAG,CAC5B,OAAO,UAAU,QAAU4N,EAAY,OAAO5N,GAAM,WAAaA,EAAI6M,GAAW7M,CAAC,EAAGoO,GAASR,CACjG,EACEQ,EAAM,QAAU,SAASpO,EAAG,CAC1B,OAAO,UAAU,QAAU+M,EAAU,OAAO/M,GAAM,WAAaA,EAAI6M,GAAW7M,CAAC,EAAGoO,GAASrB,CAC/F,EACEqB,EAAM,UAAY,SAASpO,EAAG,CAC5B,OAAO,UAAU,QAAU6N,EAAY,OAAO7N,GAAM,WAAaA,EAAI6M,GAAW,CAAC,CAAC7M,CAAC,EAAGoO,GAASP,CACnG,EACEO,EAAM,GAAK,UAAW,CACpB,IAAInS,EAAQqB,EAAU,GAAG,MAAMA,EAAW,SAAS,EACnD,OAAOrB,IAAUqB,EAAY8Q,EAAQnS,CACzC,EACEmS,EAAM,cAAgB,SAASpO,EAAG,CAChC,OAAO,UAAU,QAAUmO,GAAkBnO,EAAI,CAACA,GAAKA,EAAGoO,GAAS,KAAK,KAAKD,CAAc,CAC/F,EACSC,CACT,CACA,SAASiB,GAAOC,EAAaC,EAASC,EAAW,CAC/CF,EAAY,UAAYC,EAAQ,UAAYC,EAC5CA,EAAU,YAAcF,CAC1B,CACA,SAASG,GAAO3L,EAAQ4L,EAAY,CAClC,IAAIF,EAAY,OAAO,OAAO1L,EAAO,SAAS,EAC9C,QAAS7I,KAAOyU,EACdF,EAAUvU,CAAG,EAAIyU,EAAWzU,CAAG,EACjC,OAAOuU,CACT,CACA,SAASG,IAAQ,CACjB,CACA,IAAIC,GAAS,GACTC,GAAW,EAAID,GACfE,GAAM,sBAAuBC,GAAM,oDAAqDC,GAAM,qDAAsDC,GAAQ,qBAAsBC,GAAe,IAAI,OAAO,UAAUJ,EAAG,IAAIA,EAAG,IAAIA,EAAG,MAAM,EAAGK,GAAe,IAAI,OAAO,UAAUH,EAAG,IAAIA,EAAG,IAAIA,EAAG,MAAM,EAAGI,GAAgB,IAAI,OAAO,WAAWN,EAAG,IAAIA,EAAG,IAAIA,EAAG,IAAIC,EAAG,MAAM,EAAGM,GAAgB,IAAI,OAAO,WAAWL,EAAG,IAAIA,EAAG,IAAIA,EAAG,IAAID,EAAG,MAAM,EAAGO,GAAe,IAAI,OAAO,UAAUP,EAAG,IAAIC,EAAG,IAAIA,EAAG,MAAM,EAAGO,GAAgB,IAAI,OAAO,WAAWR,EAAG,IAAIC,EAAG,IAAIA,EAAG,IAAID,EAAG,MAAM,EAC9jBS,GAAQ,CACV,UAAW,SACX,aAAc,SACd,KAAM,MACN,WAAY,QACZ,MAAO,SACP,MAAO,SACP,OAAQ,SACR,MAAO,EACP,eAAgB,SAChB,KAAM,IACN,WAAY,QACZ,MAAO,SACP,UAAW,SACX,UAAW,QACX,WAAY,QACZ,UAAW,SACX,MAAO,SACP,eAAgB,QAChB,SAAU,SACV,QAAS,SACT,KAAM,MACN,SAAU,IACV,SAAU,MACV,cAAe,SACf,SAAU,SACV,UAAW,MACX,SAAU,SACV,UAAW,SACX,YAAa,QACb,eAAgB,QAChB,WAAY,SACZ,WAAY,SACZ,QAAS,QACT,WAAY,SACZ,aAAc,QACd,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,MACf,WAAY,QACZ,SAAU,SACV,YAAa,MACb,QAAS,QACT,QAAS,QACT,WAAY,QACZ,UAAW,SACX,YAAa,SACb,YAAa,QACb,QAAS,SACT,UAAW,SACX,WAAY,SACZ,KAAM,SACN,UAAW,SACX,KAAM,QACN,MAAO,MACP,YAAa,SACb,KAAM,QACN,SAAU,SACV,QAAS,SACT,UAAW,SACX,OAAQ,QACR,MAAO,SACP,MAAO,SACP,SAAU,SACV,cAAe,SACf,UAAW,QACX,aAAc,SACd,UAAW,SACX,WAAY,SACZ,UAAW,SACX,qBAAsB,SACtB,UAAW,SACX,WAAY,QACZ,UAAW,SACX,UAAW,SACX,YAAa,SACb,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,eAAgB,QAChB,eAAgB,SAChB,YAAa,SACb,KAAM,MACN,UAAW,QACX,MAAO,SACP,QAAS,SACT,OAAQ,QACR,iBAAkB,QAClB,WAAY,IACZ,aAAc,SACd,aAAc,QACd,eAAgB,QAChB,gBAAiB,QACjB,kBAAmB,MACnB,gBAAiB,QACjB,gBAAiB,SACjB,aAAc,QACd,UAAW,SACX,UAAW,SACX,SAAU,SACV,YAAa,SACb,KAAM,IACN,QAAS,SACT,MAAO,QACP,UAAW,QACX,OAAQ,SACR,UAAW,SACX,OAAQ,SACR,cAAe,SACf,UAAW,SACX,cAAe,SACf,cAAe,SACf,WAAY,SACZ,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,WAAY,SACZ,OAAQ,QACR,cAAe,QACf,IAAK,SACL,UAAW,SACX,UAAW,QACX,YAAa,QACb,OAAQ,SACR,WAAY,SACZ,SAAU,QACV,SAAU,SACV,OAAQ,SACR,OAAQ,SACR,QAAS,QACT,UAAW,QACX,UAAW,QACX,UAAW,QACX,KAAM,SACN,YAAa,MACb,UAAW,QACX,IAAK,SACL,KAAM,MACN,QAAS,SACT,OAAQ,SACR,UAAW,QACX,OAAQ,SACR,MAAO,SACP,MAAO,SACP,WAAY,SACZ,OAAQ,SACR,YAAa,QACf,EACAnB,GAAOM,GAAOc,GAAO,CACnB,KAAKC,EAAU,CACb,OAAO,OAAO,OAAO,IAAI,KAAK,YAAe,KAAMA,CAAQ,CAC/D,EACE,aAAc,CACZ,OAAO,KAAK,IAAG,EAAG,YAAW,CACjC,EACE,IAAKC,GAEL,UAAWA,GACX,WAAYC,GACZ,UAAWC,GACX,UAAWC,GACX,SAAUA,EACZ,CAAC,EACD,SAASH,IAAkB,CACzB,OAAO,KAAK,IAAG,EAAG,UAAS,CAC7B,CACA,SAASC,IAAmB,CAC1B,OAAO,KAAK,IAAG,EAAG,WAAU,CAC9B,CACA,SAASC,IAAkB,CACzB,OAAOE,GAAW,IAAI,EAAE,UAAS,CACnC,CACA,SAASD,IAAkB,CACzB,OAAO,KAAK,IAAG,EAAG,UAAS,CAC7B,CACA,SAASL,GAAMO,EAAQ,CACrB,IAAIjP,EAAGkP,EACP,OAAAD,GAAUA,EAAS,IAAI,KAAI,EAAG,YAAW,GACjCjP,EAAIkO,GAAM,KAAKe,CAAM,IAAMC,EAAIlP,EAAE,CAAC,EAAE,OAAQA,EAAI,SAASA,EAAE,CAAC,EAAG,EAAE,EAAGkP,IAAM,EAAIC,GAAKnP,CAAC,EAAIkP,IAAM,EAAI,IAAIE,GAAIpP,GAAK,EAAI,GAAKA,GAAK,EAAI,IAAKA,GAAK,EAAI,GAAKA,EAAI,KAAMA,EAAI,KAAO,EAAIA,EAAI,GAAI,CAAC,EAAIkP,IAAM,EAAIG,GAAKrP,GAAK,GAAK,IAAKA,GAAK,GAAK,IAAKA,GAAK,EAAI,KAAMA,EAAI,KAAO,GAAG,EAAIkP,IAAM,EAAIG,GAAKrP,GAAK,GAAK,GAAKA,GAAK,EAAI,IAAKA,GAAK,EAAI,GAAKA,GAAK,EAAI,IAAKA,GAAK,EAAI,GAAKA,EAAI,MAAOA,EAAI,KAAO,EAAIA,EAAI,IAAM,GAAG,EAAI,OAASA,EAAImO,GAAa,KAAKc,CAAM,GAAK,IAAIG,GAAIpP,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAG,CAAC,GAAKA,EAAIoO,GAAa,KAAKa,CAAM,GAAK,IAAIG,GAAIpP,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAK,CAAC,GAAKA,EAAIqO,GAAc,KAAKY,CAAM,GAAKI,GAAKrP,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,GAAKA,EAAIsO,GAAc,KAAKW,CAAM,GAAKI,GAAKrP,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,CAAC,GAAKA,EAAIuO,GAAa,KAAKU,CAAM,GAAKK,GAAKtP,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,IAAKA,EAAE,CAAC,EAAI,IAAK,CAAC,GAAKA,EAAIwO,GAAc,KAAKS,CAAM,GAAKK,GAAKtP,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,IAAKA,EAAE,CAAC,EAAI,IAAKA,EAAE,CAAC,CAAC,EAAIyO,GAAM,eAAeQ,CAAM,EAAIE,GAAKV,GAAMQ,CAAM,CAAC,EAAIA,IAAW,cAAgB,IAAIG,GAAI,IAAK,IAAK,IAAK,CAAC,EAAI,IAC7+B,CACA,SAASD,GAAKtU,EAAG,CACf,OAAO,IAAIuU,GAAIvU,GAAK,GAAK,IAAKA,GAAK,EAAI,IAAKA,EAAI,IAAK,CAAC,CACxD,CACA,SAASwU,GAAK3Y,EAAG6Y,EAAGzK,EAAGD,EAAG,CACxB,OAAIA,GAAK,IACPnO,EAAI6Y,EAAIzK,EAAI,KACP,IAAIsK,GAAI1Y,EAAG6Y,EAAGzK,EAAGD,CAAC,CAC3B,CACA,SAAS2K,GAAWvG,EAAG,CAGrB,OAFMA,aAAa2E,KACjB3E,EAAIyF,GAAMzF,CAAC,GACRA,GAELA,EAAIA,EAAE,IAAG,EACF,IAAImG,GAAInG,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,GAF9B,IAAImG,EAGf,CACA,SAASK,GAAI/Y,EAAG6Y,EAAGzK,EAAG4K,EAAS,CAC7B,OAAO,UAAU,SAAW,EAAIF,GAAW9Y,CAAC,EAAI,IAAI0Y,GAAI1Y,EAAG6Y,EAAGzK,EAAG4K,GAAkB,CAAW,CAChG,CACA,SAASN,GAAI1Y,EAAG6Y,EAAGzK,EAAG4K,EAAS,CAC7B,KAAK,EAAI,CAAChZ,EACV,KAAK,EAAI,CAAC6Y,EACV,KAAK,EAAI,CAACzK,EACV,KAAK,QAAU,CAAC4K,CAClB,CACApC,GAAO8B,GAAKK,GAAK/B,GAAOE,GAAO,CAC7B,SAAS+B,EAAG,CACV,OAAAA,EAAIA,GAAK,KAAO7B,GAAW,KAAK,IAAIA,GAAU6B,CAAC,EACxC,IAAIP,GAAI,KAAK,EAAIO,EAAG,KAAK,EAAIA,EAAG,KAAK,EAAIA,EAAG,KAAK,OAAO,CACnE,EACE,OAAOA,EAAG,CACR,OAAAA,EAAIA,GAAK,KAAO9B,GAAS,KAAK,IAAIA,GAAQ8B,CAAC,EACpC,IAAIP,GAAI,KAAK,EAAIO,EAAG,KAAK,EAAIA,EAAG,KAAK,EAAIA,EAAG,KAAK,OAAO,CACnE,EACE,KAAM,CACJ,OAAO,IACX,EACE,OAAQ,CACN,OAAO,IAAIP,GAAIQ,GAAO,KAAK,CAAC,EAAGA,GAAO,KAAK,CAAC,EAAGA,GAAO,KAAK,CAAC,EAAGC,GAAO,KAAK,OAAO,CAAC,CACvF,EACE,aAAc,CACZ,MAAO,KAAQ,KAAK,GAAK,KAAK,EAAI,OAAU,KAAQ,KAAK,GAAK,KAAK,EAAI,OAAW,KAAQ,KAAK,GAAK,KAAK,EAAI,OAAW,GAAK,KAAK,SAAW,KAAK,SAAW,CACjK,EACE,IAAKC,GAEL,UAAWA,GACX,WAAYC,GACZ,UAAWC,GACX,SAAUA,EACZ,CAAC,CAAC,EACF,SAASF,IAAgB,CACvB,MAAO,IAAIG,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,EACpD,CACA,SAASF,IAAiB,CACxB,MAAO,IAAIE,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,GAAGA,IAAK,MAAM,KAAK,OAAO,EAAI,EAAI,KAAK,SAAW,GAAG,CAAC,EAC1G,CACA,SAASD,IAAgB,CACvB,MAAMnL,EAAIgL,GAAO,KAAK,OAAO,EAC7B,MAAO,GAAGhL,IAAM,EAAI,OAAS,OAAO,GAAG+K,GAAO,KAAK,CAAC,CAAC,KAAKA,GAAO,KAAK,CAAC,CAAC,KAAKA,GAAO,KAAK,CAAC,CAAC,GAAG/K,IAAM,EAAI,IAAM,KAAKA,CAAC,GAAG,EACzH,CACA,SAASgL,GAAOH,EAAS,CACvB,OAAO,MAAMA,CAAO,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAO,CAAC,CAC9D,CACA,SAASE,GAAO1V,EAAO,CACrB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,KAAK,MAAMA,CAAK,GAAK,CAAC,CAAC,CAC1D,CACA,SAAS+V,GAAI/V,EAAO,CAClB,OAAAA,EAAQ0V,GAAO1V,CAAK,GACZA,EAAQ,GAAK,IAAM,IAAMA,EAAM,SAAS,EAAE,CACpD,CACA,SAASoV,GAAKY,EAAIhD,EAAGgC,EAAGrK,EAAG,CACzB,OAAIA,GAAK,EACPqL,EAAKhD,EAAIgC,EAAI,IACNA,GAAK,GAAKA,GAAK,EACtBgB,EAAKhD,EAAI,IACFA,GAAK,IACZgD,EAAK,KACA,IAAIC,GAAID,EAAIhD,EAAGgC,EAAGrK,CAAC,CAC5B,CACA,SAASmK,GAAW/F,EAAG,CACrB,GAAIA,aAAakH,GACf,OAAO,IAAIA,GAAIlH,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,EAGzC,GAFMA,aAAa2E,KACjB3E,EAAIyF,GAAMzF,CAAC,GACT,CAACA,EACH,OAAO,IAAIkH,GACb,GAAIlH,aAAakH,GACf,OAAOlH,EACTA,EAAIA,EAAE,IAAG,EACT,IAAIvS,EAAIuS,EAAE,EAAI,IAAKsG,EAAItG,EAAE,EAAI,IAAKnE,EAAImE,EAAE,EAAI,IAAKmH,EAAM,KAAK,IAAI1Z,EAAG6Y,EAAGzK,CAAC,EAAGuL,EAAM,KAAK,IAAI3Z,EAAG6Y,EAAGzK,CAAC,EAAGoL,EAAK,IAAK,EAAIG,EAAMD,EAAKlB,GAAKmB,EAAMD,GAAO,EAC9I,OAAI,GACE1Z,IAAM2Z,EACRH,GAAMX,EAAIzK,GAAK,GAAKyK,EAAIzK,GAAK,EACtByK,IAAMc,EACbH,GAAMpL,EAAIpO,GAAK,EAAI,EAEnBwZ,GAAMxZ,EAAI6Y,GAAK,EAAI,EACrB,GAAKL,EAAI,GAAMmB,EAAMD,EAAM,EAAIC,EAAMD,EACrCF,GAAM,IAEN,EAAIhB,EAAI,GAAKA,EAAI,EAAI,EAAIgB,EAEpB,IAAIC,GAAID,EAAI,EAAGhB,EAAGjG,EAAE,OAAO,CACpC,CACA,SAASqH,GAAIJ,EAAIhD,EAAGgC,EAAGQ,EAAS,CAC9B,OAAO,UAAU,SAAW,EAAIV,GAAWkB,CAAE,EAAI,IAAIC,GAAID,EAAIhD,EAAGgC,EAAGQ,GAAkB,CAAW,CAClG,CACA,SAASS,GAAID,EAAIhD,EAAGgC,EAAGQ,EAAS,CAC9B,KAAK,EAAI,CAACQ,EACV,KAAK,EAAI,CAAChD,EACV,KAAK,EAAI,CAACgC,EACV,KAAK,QAAU,CAACQ,CAClB,CACApC,GAAO6C,GAAKG,GAAK5C,GAAOE,GAAO,CAC7B,SAAS+B,EAAG,CACV,OAAAA,EAAIA,GAAK,KAAO7B,GAAW,KAAK,IAAIA,GAAU6B,CAAC,EACxC,IAAIQ,GAAI,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIR,EAAG,KAAK,OAAO,CAC3D,EACE,OAAOA,EAAG,CACR,OAAAA,EAAIA,GAAK,KAAO9B,GAAS,KAAK,IAAIA,GAAQ8B,CAAC,EACpC,IAAIQ,GAAI,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIR,EAAG,KAAK,OAAO,CAC3D,EACE,KAAM,CACJ,IAAIO,EAAK,KAAK,EAAI,KAAO,KAAK,EAAI,GAAK,IAAKhD,EAAI,MAAMgD,CAAE,GAAK,MAAM,KAAK,CAAC,EAAI,EAAI,KAAK,EAAGhB,EAAI,KAAK,EAAGqB,EAAKrB,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKhC,EAAG/I,EAAK,EAAI+K,EAAIqB,EACtJ,OAAO,IAAInB,GACToB,GAAQN,GAAM,IAAMA,EAAK,IAAMA,EAAK,IAAK/L,EAAIoM,CAAE,EAC/CC,GAAQN,EAAI/L,EAAIoM,CAAE,EAClBC,GAAQN,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAK/L,EAAIoM,CAAE,EAC9C,KAAK,OACX,CACA,EACE,OAAQ,CACN,OAAO,IAAIJ,GAAIM,GAAO,KAAK,CAAC,EAAGC,GAAO,KAAK,CAAC,EAAGA,GAAO,KAAK,CAAC,EAAGb,GAAO,KAAK,OAAO,CAAC,CACvF,EACE,aAAc,CACZ,OAAQ,GAAK,KAAK,GAAK,KAAK,GAAK,GAAK,MAAM,KAAK,CAAC,IAAO,GAAK,KAAK,GAAK,KAAK,GAAK,GAAO,GAAK,KAAK,SAAW,KAAK,SAAW,CAClI,EACE,WAAY,CACV,MAAMhL,EAAIgL,GAAO,KAAK,OAAO,EAC7B,MAAO,GAAGhL,IAAM,EAAI,OAAS,OAAO,GAAG4L,GAAO,KAAK,CAAC,CAAC,KAAKC,GAAO,KAAK,CAAC,EAAI,GAAG,MAAMA,GAAO,KAAK,CAAC,EAAI,GAAG,IAAI7L,IAAM,EAAI,IAAM,KAAKA,CAAC,GAAG,EACzI,CACA,CAAC,CAAC,EACF,SAAS4L,GAAOvW,EAAO,CACrB,OAAAA,GAASA,GAAS,GAAK,IAChBA,EAAQ,EAAIA,EAAQ,IAAMA,CACnC,CACA,SAASwW,GAAOxW,EAAO,CACrB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,GAAS,CAAC,CAAC,CAC5C,CACA,SAASsW,GAAQN,EAAI/L,EAAIoM,EAAI,CAC3B,OAAQL,EAAK,GAAK/L,GAAMoM,EAAKpM,GAAM+L,EAAK,GAAKA,EAAK,IAAMK,EAAKL,EAAK,IAAM/L,GAAMoM,EAAKpM,IAAO,IAAM+L,GAAM,GAAK/L,GAAM,GACnH,CACA,MAAMwM,GAAclQ,GAAM,IAAMA,EAChC,SAASmQ,GAAO/L,EAAG6G,EAAG,CACpB,OAAO,SAASxN,EAAG,CACjB,OAAO2G,EAAI3G,EAAIwN,CACnB,CACA,CACA,SAASmF,GAAYhM,EAAGC,EAAGqG,EAAG,CAC5B,OAAOtG,EAAI,KAAK,IAAIA,EAAGsG,CAAC,EAAGrG,EAAI,KAAK,IAAIA,EAAGqG,CAAC,EAAItG,EAAGsG,EAAI,EAAIA,EAAG,SAASjN,EAAG,CACxE,OAAO,KAAK,IAAI2G,EAAI3G,EAAI4G,EAAGqG,CAAC,CAChC,CACA,CACA,SAAS2F,GAAM3F,EAAG,CAChB,OAAQA,EAAI,CAACA,IAAO,EAAI4F,GAAU,SAASlM,EAAGC,EAAG,CAC/C,OAAOA,EAAID,EAAIgM,GAAYhM,EAAGC,EAAGqG,CAAC,EAAIwF,GAAW,MAAM9L,CAAC,EAAIC,EAAID,CAAC,CACrE,CACA,CACA,SAASkM,GAAQlM,EAAGC,EAAG,CACrB,IAAI4G,EAAI5G,EAAID,EACZ,OAAO6G,EAAIkF,GAAO/L,EAAG6G,CAAC,EAAIiF,GAAW,MAAM9L,CAAC,EAAIC,EAAID,CAAC,CACvD,CACA,MAAMmM,GAAiB,SAASC,EAAS9F,EAAG,CAC1C,IAAI+F,EAASJ,GAAM3F,CAAC,EACpB,SAASgG,EAAMC,EAAQC,EAAK,CAC1B,IAAI3a,EAAIwa,GAAQE,EAAS3B,GAAI2B,CAAM,GAAG,GAAIC,EAAM5B,GAAI4B,CAAG,GAAG,CAAC,EAAG9B,EAAI2B,EAAOE,EAAO,EAAGC,EAAI,CAAC,EAAGvM,EAAIoM,EAAOE,EAAO,EAAGC,EAAI,CAAC,EAAG3B,EAAUqB,GAAQK,EAAO,QAASC,EAAI,OAAO,EACrK,OAAO,SAASnT,EAAG,CACjB,OAAAkT,EAAO,EAAI1a,EAAEwH,CAAC,EACdkT,EAAO,EAAI7B,EAAErR,CAAC,EACdkT,EAAO,EAAItM,EAAE5G,CAAC,EACdkT,EAAO,QAAU1B,EAAQxR,CAAC,EACnBkT,EAAS,EACtB,CACA,CACE,OAAAD,EAAM,MAAQF,EACPE,CACT,EAAE,CAAC,EACH,SAASG,GAAYzM,EAAGC,EAAG,CACpBA,IACHA,EAAI,CAAA,GACN,IAAI,EAAID,EAAI,KAAK,IAAIC,EAAE,OAAQD,EAAE,MAAM,EAAI,EAAG9F,EAAI+F,EAAE,MAAK,EAAI,EAC7D,OAAO,SAAS5G,EAAG,CACjB,IAAK,EAAI,EAAG,EAAI,EAAG,EAAE,EACnBa,EAAE,CAAC,EAAI8F,EAAE,CAAC,GAAK,EAAI3G,GAAK4G,EAAE,CAAC,EAAI5G,EACjC,OAAOa,CACX,CACA,CACA,SAASwS,GAAc9Q,EAAG,CACxB,OAAO,YAAY,OAAOA,CAAC,GAAK,EAAEA,aAAa,SACjD,CACA,SAAS+Q,GAAa3M,EAAGC,EAAG,CAC1B,IAAI2M,EAAK3M,EAAIA,EAAE,OAAS,EAAG4M,EAAK7M,EAAI,KAAK,IAAI4M,EAAI5M,EAAE,MAAM,EAAI,EAAGpE,EAAI,IAAI,MAAMiR,CAAE,EAAG3S,EAAI,IAAI,MAAM0S,CAAE,EAAGzT,EACtG,IAAKA,EAAI,EAAGA,EAAI0T,EAAI,EAAE1T,EACpByC,EAAEzC,CAAC,EAAI2T,GAAc9M,EAAE7G,CAAC,EAAG8G,EAAE9G,CAAC,CAAC,EACjC,KAAOA,EAAIyT,EAAI,EAAEzT,EACfe,EAAEf,CAAC,EAAI8G,EAAE9G,CAAC,EACZ,OAAO,SAASE,EAAG,CACjB,IAAKF,EAAI,EAAGA,EAAI0T,EAAI,EAAE1T,EACpBe,EAAEf,CAAC,EAAIyC,EAAEzC,CAAC,EAAEE,CAAC,EACf,OAAOa,CACX,CACA,CACA,SAAS6S,GAAK/M,EAAGC,EAAG,CAClB,IAAI4G,EAAoB,IAAI,KAC5B,OAAO7G,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAAS5G,EAAG,CACjC,OAAOwN,EAAE,QAAQ7G,GAAK,EAAI3G,GAAK4G,EAAI5G,CAAC,EAAGwN,CAC3C,CACA,CACA,SAASmG,GAAkBhN,EAAGC,EAAG,CAC/B,OAAOD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAAS5G,EAAG,CACjC,OAAO2G,GAAK,EAAI3G,GAAK4G,EAAI5G,CAC7B,CACA,CACA,SAAS4T,GAAOjN,EAAGC,EAAG,CACpB,IAAI9G,EAAI,CAAA,EAAIe,EAAI,CAAA,EAAI4Q,GAChB9K,IAAM,MAAQ,OAAOA,GAAM,YAC7BA,EAAI,CAAA,IACFC,IAAM,MAAQ,OAAOA,GAAM,YAC7BA,EAAI,CAAA,GACN,IAAK6K,KAAK7K,EACJ6K,KAAK9K,EACP7G,EAAE2R,CAAC,EAAIgC,GAAc9M,EAAE8K,CAAC,EAAG7K,EAAE6K,CAAC,CAAC,EAE/B5Q,EAAE4Q,CAAC,EAAI7K,EAAE6K,CAAC,EAGd,OAAO,SAASzR,EAAG,CACjB,IAAKyR,KAAK3R,EACRe,EAAE4Q,CAAC,EAAI3R,EAAE2R,CAAC,EAAEzR,CAAC,EACf,OAAOa,CACX,CACA,CACA,IAAIgT,GAAM,8CAA+CC,GAAM,IAAI,OAAOD,GAAI,OAAQ,GAAG,EACzF,SAASE,GAAKnN,EAAG,CACf,OAAO,UAAW,CAChB,OAAOA,CACX,CACA,CACA,SAASoN,GAAIpN,EAAG,CACd,OAAO,SAAS,EAAG,CACjB,OAAOA,EAAE,CAAC,EAAI,EAClB,CACA,CACA,SAASqN,GAAkBtN,EAAGC,EAAG,CAC/B,IAAIsN,EAAKL,GAAI,UAAYC,GAAI,UAAY,EAAGK,EAAIC,EAAIC,EAAIvU,EAAI,GAAI,EAAI,CAAA,EAAIwU,EAAI,CAAA,EAE5E,IADA3N,EAAIA,EAAI,GAAIC,EAAIA,EAAI,IACZuN,EAAKN,GAAI,KAAKlN,CAAC,KAAOyN,EAAKN,GAAI,KAAKlN,CAAC,KACtCyN,EAAKD,EAAG,OAASF,IACpBG,EAAKzN,EAAE,MAAMsN,EAAIG,CAAE,EACf,EAAEvU,CAAC,EACL,EAAEA,CAAC,GAAKuU,EAER,EAAE,EAAEvU,CAAC,EAAIuU,IAERF,EAAKA,EAAG,CAAC,MAAQC,EAAKA,EAAG,CAAC,GACzB,EAAEtU,CAAC,EACL,EAAEA,CAAC,GAAKsU,EAER,EAAE,EAAEtU,CAAC,EAAIsU,GAEX,EAAE,EAAEtU,CAAC,EAAI,KACTwU,EAAE,KAAK,CAAE,EAAAxU,EAAG,EAAG6T,GAAkBQ,EAAIC,CAAE,EAAG,GAE5CF,EAAKJ,GAAI,UAEX,OAAII,EAAKtN,EAAE,SACTyN,EAAKzN,EAAE,MAAMsN,CAAE,EACX,EAAEpU,CAAC,EACL,EAAEA,CAAC,GAAKuU,EAER,EAAE,EAAEvU,CAAC,EAAIuU,GAEN,EAAE,OAAS,EAAIC,EAAE,CAAC,EAAIN,GAAIM,EAAE,CAAC,EAAE,CAAC,EAAIP,GAAKnN,CAAC,GAAKA,EAAI0N,EAAE,OAAQ,SAAStU,EAAG,CAC9E,QAASuU,EAAK,EAAGxJ,EAAGwJ,EAAK3N,EAAG,EAAE2N,EAC5B,GAAGxJ,EAAIuJ,EAAEC,CAAE,GAAG,CAAC,EAAIxJ,EAAE,EAAE/K,CAAC,EAC1B,OAAO,EAAE,KAAK,EAAE,CACpB,EACA,CACA,SAASyT,GAAc9M,EAAGC,EAAG,CAC3B,IAAI5G,EAAI,OAAO4G,EAAG/F,EAClB,OAAO+F,GAAK,MAAQ5G,IAAM,UAAYyS,GAAW7L,CAAC,GAAK5G,IAAM,SAAW2T,GAAoB3T,IAAM,UAAYa,EAAI2P,GAAM5J,CAAC,IAAMA,EAAI/F,EAAGiS,IAAkBmB,GAAoBrN,aAAa4J,GAAQsC,GAAiBlM,aAAa,KAAO8M,GAAOL,GAAczM,CAAC,EAAIwM,GAAc,MAAM,QAAQxM,CAAC,EAAI0M,GAAe,OAAO1M,EAAE,SAAY,YAAc,OAAOA,EAAE,UAAa,YAAc,MAAMA,CAAC,EAAIgN,GAASD,IAAmBhN,EAAGC,CAAC,CACpa,CACA,IAAI4N,GAAU,IAAM,KAAK,GACrBC,GAAa,CACf,WAAY,EACZ,WAAY,EACZ,OAAQ,EACR,MAAO,EACP,OAAQ,EACR,OAAQ,CACV,EACA,SAASC,GAAU/N,EAAGC,EAAG/F,EAAG2M,EAAGjP,EAAGoW,EAAG,CACnC,IAAIC,EAAQC,EAAQC,EACpB,OAAIF,EAAS,KAAK,KAAKjO,EAAIA,EAAIC,EAAIA,CAAC,KAClCD,GAAKiO,EAAQhO,GAAKgO,IAChBE,EAAQnO,EAAI9F,EAAI+F,EAAI4G,KACtB3M,GAAK8F,EAAImO,EAAOtH,GAAK5G,EAAIkO,IACvBD,EAAS,KAAK,KAAKhU,EAAIA,EAAI2M,EAAIA,CAAC,KAClC3M,GAAKgU,EAAQrH,GAAKqH,EAAQC,GAASD,GACjClO,EAAI6G,EAAI5G,EAAI/F,IACd8F,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAGkO,EAAQ,CAACA,EAAOF,EAAS,CAACA,GACrC,CACL,WAAYrW,EACZ,WAAYoW,EACZ,OAAQ,KAAK,MAAM/N,EAAGD,CAAC,EAAI6N,GAC3B,MAAO,KAAK,KAAKM,CAAK,EAAIN,GAC1B,OAAAI,EACA,OAAAC,CACJ,CACA,CACA,IAAIE,GACJ,SAASC,GAAShZ,EAAO,CACvB,MAAM8F,EAAI,IAAK,OAAO,WAAc,WAAa,UAAY,iBAAiB9F,EAAQ,EAAE,EACxF,OAAO8F,EAAE,WAAa2S,GAAaC,GAAU5S,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAC3E,CACA,SAASmT,GAASjZ,EAAO,CAMvB,OALIA,GAAS,OAER+Y,KACHA,GAAU,SAAS,gBAAgB,6BAA8B,GAAG,GACtEA,GAAQ,aAAa,YAAa/Y,CAAK,EACnC,EAAEA,EAAQ+Y,GAAQ,UAAU,QAAQ,YAAW,IAC1CN,IACTzY,EAAQA,EAAM,OACP0Y,GAAU1Y,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,CAAC,EACvE,CACA,SAASkZ,GAAqBC,EAAOC,EAASC,EAASC,EAAU,CAC/D,SAASC,EAAIvG,EAAG,CACd,OAAOA,EAAE,OAASA,EAAE,IAAG,EAAK,IAAM,EACtC,CACE,SAASwG,EAAUC,EAAIC,EAAIC,EAAIC,EAAI5G,EAAGsF,EAAG,CACvC,GAAImB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAI9V,EAAIkP,EAAE,KAAK,aAAc,KAAMoG,EAAS,KAAMC,CAAO,EACzDf,EAAE,KAAK,CAAE,EAAGxU,EAAI,EAAG,EAAG6T,GAAkB8B,EAAIE,CAAE,CAAC,EAAI,CAAE,EAAG7V,EAAI,EAAG,EAAG6T,GAAkB+B,EAAIE,CAAE,EAAG,CACnG,MAAeD,GAAMC,IACf5G,EAAE,KAAK,aAAe2G,EAAKP,EAAUQ,EAAKP,CAAO,CAEvD,CACE,SAASQ,EAAOlP,EAAGC,EAAGoI,EAAGsF,EAAG,CACtB3N,IAAMC,GACJD,EAAIC,EAAI,IACVA,GAAK,IACEA,EAAID,EAAI,MACfA,GAAK,KACP2N,EAAE,KAAK,CAAE,EAAGtF,EAAE,KAAKuG,EAAIvG,CAAC,EAAI,UAAW,KAAMsG,CAAQ,EAAI,EAAG,EAAG3B,GAAkBhN,EAAGC,CAAC,EAAG,GAC/EA,GACToI,EAAE,KAAKuG,EAAIvG,CAAC,EAAI,UAAYpI,EAAI0O,CAAQ,CAE9C,CACE,SAASR,EAAMnO,EAAGC,EAAGoI,EAAGsF,EAAG,CACrB3N,IAAMC,EACR0N,EAAE,KAAK,CAAE,EAAGtF,EAAE,KAAKuG,EAAIvG,CAAC,EAAI,SAAU,KAAMsG,CAAQ,EAAI,EAAG,EAAG3B,GAAkBhN,EAAGC,CAAC,EAAG,EAC9EA,GACToI,EAAE,KAAKuG,EAAIvG,CAAC,EAAI,SAAWpI,EAAI0O,CAAQ,CAE7C,CACE,SAASQ,EAAML,EAAIC,EAAIC,EAAIC,EAAI5G,EAAGsF,EAAG,CACnC,GAAImB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAI9V,EAAIkP,EAAE,KAAKuG,EAAIvG,CAAC,EAAI,SAAU,KAAM,IAAK,KAAM,GAAG,EACtDsF,EAAE,KAAK,CAAE,EAAGxU,EAAI,EAAG,EAAG6T,GAAkB8B,EAAIE,CAAE,CAAC,EAAI,CAAE,EAAG7V,EAAI,EAAG,EAAG6T,GAAkB+B,EAAIE,CAAE,EAAG,CACnG,MAAeD,IAAO,GAAKC,IAAO,IAC5B5G,EAAE,KAAKuG,EAAIvG,CAAC,EAAI,SAAW2G,EAAK,IAAMC,EAAK,GAAG,CAEpD,CACE,OAAO,SAASjP,EAAGC,EAAG,CACpB,IAAIoI,EAAI,GAAIsF,EAAI,CAAA,EAChB,OAAA3N,EAAIwO,EAAMxO,CAAC,EAAGC,EAAIuO,EAAMvO,CAAC,EACzB4O,EAAU7O,EAAE,WAAYA,EAAE,WAAYC,EAAE,WAAYA,EAAE,WAAYoI,EAAGsF,CAAC,EACtEuB,EAAOlP,EAAE,OAAQC,EAAE,OAAQoI,EAAGsF,CAAC,EAC/BQ,EAAMnO,EAAE,MAAOC,EAAE,MAAOoI,EAAGsF,CAAC,EAC5BwB,EAAMnP,EAAE,OAAQA,EAAE,OAAQC,EAAE,OAAQA,EAAE,OAAQoI,EAAGsF,CAAC,EAClD3N,EAAIC,EAAI,KACD,SAAS5G,EAAG,CAEjB,QADIF,EAAI,GAAInD,EAAI2X,EAAE,OAAQvJ,EACnB,EAAEjL,EAAInD,GACXqS,GAAGjE,EAAIuJ,EAAExU,CAAC,GAAG,CAAC,EAAIiL,EAAE,EAAE/K,CAAC,EACzB,OAAOgP,EAAE,KAAK,EAAE,CACtB,CACA,CACA,CACA,IAAI+G,GAA0Bb,GAAqBF,GAAU,OAAQ,MAAO,MAAM,EAC9EgB,GAA0Bd,GAAqBD,GAAU,KAAM,IAAK,GAAG,EACvEgB,GAAW,MACf,SAASC,GAAK3T,EAAG,CACf,QAASA,EAAI,KAAK,IAAIA,CAAC,GAAK,EAAIA,GAAK,CACvC,CACA,SAAS4T,GAAK5T,EAAG,CACf,QAASA,EAAI,KAAK,IAAIA,CAAC,GAAK,EAAIA,GAAK,CACvC,CACA,SAAS6T,GAAK7T,EAAG,CACf,QAASA,EAAI,KAAK,IAAI,EAAIA,CAAC,GAAK,IAAMA,EAAI,EAC5C,CACA,MAAM8T,GAAkB,SAASC,EAAQC,EAAKC,EAAMC,EAAM,CACxD,SAASC,EAAMvH,EAAIwH,EAAI,CACrB,IAAIC,EAAMzH,EAAG,CAAC,EAAG0H,EAAM1H,EAAG,CAAC,EAAG2H,EAAK3H,EAAG,CAAC,EAAG4H,EAAMJ,EAAG,CAAC,EAAGK,EAAML,EAAG,CAAC,EAAGM,EAAKN,EAAG,CAAC,EAAGzJ,EAAK6J,EAAMH,EAAKzJ,EAAK6J,EAAMH,EAAKK,EAAKhK,EAAKA,EAAKC,EAAKA,EAAIrN,EAAGqX,EAC3I,GAAID,EAAKjB,GACPkB,EAAI,KAAK,IAAIF,EAAKH,CAAE,EAAIP,EACxBzW,EAAI,SAASE,EAAG,CACd,MAAO,CACL4W,EAAM5W,EAAIkN,EACV2J,EAAM7W,EAAImN,EACV2J,EAAK,KAAK,IAAIP,EAAMvW,EAAImX,CAAC,CACnC,CACA,MACW,CACL,IAAIC,EAAK,KAAK,KAAKF,CAAE,EAAGG,GAAMJ,EAAKA,EAAKH,EAAKA,EAAKL,EAAOS,IAAO,EAAIJ,EAAKN,EAAOY,GAAKE,GAAML,EAAKA,EAAKH,EAAKA,EAAKL,EAAOS,IAAO,EAAID,EAAKT,EAAOY,GAAKG,EAAK,KAAK,IAAI,KAAK,KAAKF,EAAKA,EAAK,CAAC,EAAIA,CAAE,EAAGG,EAAK,KAAK,IAAI,KAAK,KAAKF,EAAKA,EAAK,CAAC,EAAIA,CAAE,EACvOH,GAAKK,EAAKD,GAAMhB,EAChBzW,EAAI,SAASE,EAAG,CACd,IAAIgP,EAAIhP,EAAImX,EAAGM,EAASvB,GAAKqB,CAAE,EAAGG,EAAIZ,GAAMN,EAAOY,IAAOK,EAASrB,GAAKG,EAAMvH,EAAIuI,CAAE,EAAIpB,GAAKoB,CAAE,GAC/F,MAAO,CACLX,EAAMc,EAAIxK,EACV2J,EAAMa,EAAIvK,EACV2J,EAAKW,EAASvB,GAAKK,EAAMvH,EAAIuI,CAAE,CACzC,CACA,CACA,CACI,OAAAzX,EAAE,SAAWqX,EAAI,IAAMZ,EAAM,KAAK,MAC3BzW,CACX,CACE,OAAA4W,EAAM,IAAM,SAAS3W,EAAG,CACtB,IAAI4X,EAAK,KAAK,IAAI,KAAM,CAAC5X,CAAC,EAAG6X,EAAKD,EAAKA,EAAIE,EAAKD,EAAKA,EACrD,OAAOtB,EAAQqB,EAAIC,EAAIC,CAAE,CAC7B,EACSnB,CACT,EAAE,KAAK,MAAO,EAAG,CAAC,EAClB,IAAIoB,GAAQ,EAAGC,GAAY,EAAGC,GAAW,EAAGC,GAAY,IAAKC,GAAUC,GAAUC,GAAY,EAAGC,GAAW,EAAGC,GAAY,EAAGC,GAAQ,OAAO,aAAgB,UAAY,YAAY,IAAM,YAAc,KAAMC,GAAW,OAAO,QAAW,UAAY,OAAO,sBAAwB,OAAO,sBAAsB,KAAK,MAAM,EAAI,SAAS7D,EAAG,CAC5U,WAAWA,EAAG,EAAE,CAClB,EACA,SAAS8D,IAAM,CACb,OAAOJ,KAAaG,GAASE,EAAQ,EAAGL,GAAWE,GAAM,IAAG,EAAKD,GACnE,CACA,SAASI,IAAW,CAClBL,GAAW,CACb,CACA,SAASM,IAAQ,CACf,KAAK,MAAQ,KAAK,MAAQ,KAAK,MAAQ,IACzC,CACAA,GAAM,UAAYC,GAAM,UAAY,CAClC,YAAaD,GACb,QAAS,SAASpY,EAAUsY,EAAOC,EAAM,CACvC,GAAI,OAAOvY,GAAa,WACtB,MAAM,IAAI,UAAU,4BAA4B,EAClDuY,GAAQA,GAAQ,KAAOL,GAAG,EAAK,CAACK,IAASD,GAAS,KAAO,EAAI,CAACA,GAC1D,CAAC,KAAK,OAASV,KAAa,OAC1BA,GACFA,GAAS,MAAQ,KAEjBD,GAAW,KACbC,GAAW,MAEb,KAAK,MAAQ5X,EACb,KAAK,MAAQuY,EACbC,GAAK,CACT,EACE,KAAM,UAAW,CACX,KAAK,QACP,KAAK,MAAQ,KACb,KAAK,MAAQ,IACbA,GAAK,EAEX,CACA,EACA,SAASH,GAAMrY,EAAUsY,EAAOC,EAAM,CACpC,IAAI9Y,EAAI,IAAI2Y,GACZ,OAAA3Y,EAAE,QAAQO,EAAUsY,EAAOC,CAAI,EACxB9Y,CACT,CACA,SAASgZ,IAAa,CACpBP,GAAG,EACH,EAAEX,GAEF,QADI9X,EAAIkY,GAAU3Z,EACXyB,IACAzB,EAAI8Z,GAAWrY,EAAE,QAAU,GAC9BA,EAAE,MAAM,KAAK,OAAQzB,CAAC,EACxByB,EAAIA,EAAE,MAER,EAAE8X,EACJ,CACA,SAASmB,IAAO,CACdZ,IAAYD,GAAYG,GAAM,IAAG,GAAMD,GACvCR,GAAQC,GAAY,EACpB,GAAI,CACFiB,GAAU,CACd,QAAG,CACClB,GAAQ,EACRoB,GAAG,EACHb,GAAW,CACf,CACA,CACA,SAASc,IAAO,CACd,IAAIC,EAAOb,GAAM,IAAG,EAAIM,EAAQO,EAAOhB,GACnCS,EAAQZ,KACVK,IAAaO,EAAOT,GAAYgB,EACpC,CACA,SAASF,IAAM,CAEb,QADIG,EAAIC,EAAKpB,GAAUqB,EAAIT,EAAO,IAC3BQ,GACDA,EAAG,OACDR,EAAOQ,EAAG,QACZR,EAAOQ,EAAG,OACZD,EAAKC,EAAIA,EAAKA,EAAG,QAEjBC,EAAKD,EAAG,MAAOA,EAAG,MAAQ,KAC1BA,EAAKD,EAAKA,EAAG,MAAQE,EAAKrB,GAAWqB,GAGzCpB,GAAWkB,EACXN,GAAMD,CAAI,CACZ,CACA,SAASC,GAAMD,EAAM,CACnB,GAAI,CAAAhB,GAEJ,CAAIC,KACFA,GAAY,aAAaA,EAAS,GACpC,IAAIc,EAAQC,EAAOT,GACfQ,EAAQ,IACNC,EAAO,MACTf,GAAY,WAAWkB,GAAMH,EAAOP,GAAM,IAAG,EAAKD,EAAS,GACzDN,KACFA,GAAW,cAAcA,EAAQ,KAE9BA,KACHI,GAAYG,GAAM,IAAG,EAAIP,GAAW,YAAYmB,GAAMlB,EAAS,GACjEH,GAAQ,EAAGU,GAASS,EAAI,GAE5B,CACA,SAASO,GAAQjZ,EAAUsY,EAAOC,EAAM,CACtC,IAAI9Y,EAAI,IAAI2Y,GACZ,OAAAE,EAAQA,GAAS,KAAO,EAAI,CAACA,EAC7B7Y,EAAE,QAASyZ,GAAY,CACrBzZ,EAAE,KAAI,EACNO,EAASkZ,EAAUZ,CAAK,CAC5B,EAAKA,EAAOC,CAAI,EACP9Y,CACT,CACA,IAAI0Z,GAAU7Z,GAAS,QAAS,MAAO,SAAU,WAAW,EACxD8Z,GAAa,CAAA,EACbC,GAAU,EACVC,GAAY,EACZC,GAAW,EACXC,GAAU,EACVC,GAAU,EACVC,GAAS,EACTC,GAAQ,EACZ,SAASC,GAAShY,EAAM9B,EAAM+Z,EAAKC,EAAOpY,EAAOqY,EAAQ,CACvD,IAAIC,EAAYpY,EAAK,aACrB,GAAI,CAACoY,EACHpY,EAAK,aAAe,CAAA,UACbiY,KAAOG,EACd,OACFC,GAAOrY,EAAMiY,EAAK,CAChB,KAAA/Z,EACA,MAAAga,EAEA,MAAApY,EAEA,GAAIyX,GACJ,MAAOC,GACP,KAAMW,EAAO,KACb,MAAOA,EAAO,MACd,SAAUA,EAAO,SACjB,KAAMA,EAAO,KACb,MAAO,KACP,MAAOV,EACX,CAAG,CACH,CACA,SAASa,GAAKtY,EAAMiY,EAAK,CACvB,IAAIM,EAAYC,GAAIxY,EAAMiY,CAAG,EAC7B,GAAIM,EAAU,MAAQd,GACpB,MAAM,IAAI,MAAM,6BAA6B,EAC/C,OAAOc,CACT,CACA,SAASE,GAAIzY,EAAMiY,EAAK,CACtB,IAAIM,EAAYC,GAAIxY,EAAMiY,CAAG,EAC7B,GAAIM,EAAU,MAAQX,GACpB,MAAM,IAAI,MAAM,2BAA2B,EAC7C,OAAOW,CACT,CACA,SAASC,GAAIxY,EAAMiY,EAAK,CACtB,IAAIM,EAAYvY,EAAK,aACrB,GAAI,CAACuY,GAAa,EAAEA,EAAYA,EAAUN,CAAG,GAC3C,MAAM,IAAI,MAAM,sBAAsB,EACxC,OAAOM,CACT,CACA,SAASF,GAAOrY,EAAMiY,EAAKS,EAAM,CAC/B,IAAIN,EAAYpY,EAAK,aAAc2Y,EACnCP,EAAUH,CAAG,EAAIS,EACjBA,EAAK,MAAQjC,GAAM8B,EAAW,EAAGG,EAAK,IAAI,EAC1C,SAASH,EAAUjB,EAAS,CAC1BoB,EAAK,MAAQhB,GACbgB,EAAK,MAAM,QAAQ3H,EAAQ2H,EAAK,MAAOA,EAAK,IAAI,EAC5CA,EAAK,OAASpB,GAChBvG,EAAOuG,EAAUoB,EAAK,KAAK,CACjC,CACE,SAAS3H,EAAOuG,EAAS,CACvB,IAAI3Z,EAAGkC,EAAGrF,EAAGoO,EACb,GAAI8P,EAAK,QAAUhB,GACjB,OAAOhe,EAAI,EACb,IAAKiE,KAAKya,EAER,GADAxP,EAAIwP,EAAUza,CAAC,EACXiL,EAAE,OAAS8P,EAAK,KAEpB,IAAI9P,EAAE,QAAUgP,GACd,OAAOP,GAAQtG,CAAM,EACnBnI,EAAE,QAAUiP,IACdjP,EAAE,MAAQmP,GACVnP,EAAE,MAAM,KAAI,EACZA,EAAE,GAAG,KAAK,YAAa5I,EAAMA,EAAK,SAAU4I,EAAE,MAAOA,EAAE,KAAK,EAC5D,OAAOwP,EAAUza,CAAC,GACT,CAACA,EAAIsa,IACdrP,EAAE,MAAQmP,GACVnP,EAAE,MAAM,KAAI,EACZA,EAAE,GAAG,KAAK,SAAU5I,EAAMA,EAAK,SAAU4I,EAAE,MAAOA,EAAE,KAAK,EACzD,OAAOwP,EAAUza,CAAC,GAYtB,GATA0Z,GAAQ,UAAW,CACbqB,EAAK,QAAUd,KACjBc,EAAK,MAAQb,GACba,EAAK,MAAM,QAAQE,EAAMF,EAAK,MAAOA,EAAK,IAAI,EAC9CE,EAAKtB,CAAO,EAEpB,CAAK,EACDoB,EAAK,MAAQf,GACbe,EAAK,GAAG,KAAK,QAAS1Y,EAAMA,EAAK,SAAU0Y,EAAK,MAAOA,EAAK,KAAK,EAC7DA,EAAK,QAAUf,GAInB,KAFAe,EAAK,MAAQd,GACbe,EAAQ,IAAI,MAAMne,EAAIke,EAAK,MAAM,MAAM,EAClC/a,EAAI,EAAGkC,EAAI,GAAIlC,EAAInD,EAAG,EAAEmD,GACvBiL,EAAI8P,EAAK,MAAM/a,CAAC,EAAE,MAAM,KAAKqC,EAAMA,EAAK,SAAU0Y,EAAK,MAAOA,EAAK,KAAK,KAC1EC,EAAM,EAAE9Y,CAAC,EAAI+I,GAGjB+P,EAAM,OAAS9Y,EAAI,EACvB,CACE,SAAS+Y,EAAKtB,EAAS,CAErB,QADIzZ,EAAIyZ,EAAUoB,EAAK,SAAWA,EAAK,KAAK,KAAK,KAAMpB,EAAUoB,EAAK,QAAQ,GAAKA,EAAK,MAAM,QAAQhf,CAAI,EAAGgf,EAAK,MAAQZ,GAAQ,GAAIna,EAAI,GAAInD,EAAIme,EAAM,OACjJ,EAAEhb,EAAInD,GACXme,EAAMhb,CAAC,EAAE,KAAKqC,EAAMnC,CAAC,EAEnB6a,EAAK,QAAUZ,KACjBY,EAAK,GAAG,KAAK,MAAO1Y,EAAMA,EAAK,SAAU0Y,EAAK,MAAOA,EAAK,KAAK,EAC/Dhf,EAAI,EAEV,CACE,SAASA,GAAO,CACdgf,EAAK,MAAQX,GACbW,EAAK,MAAM,KAAI,EACf,OAAON,EAAUH,CAAG,EACpB,QAASta,KAAKya,EACZ,OACF,OAAOpY,EAAK,YAChB,CACA,CACA,SAAS6Y,GAAU7Y,EAAM9B,EAAM,CAC7B,IAAIka,EAAYpY,EAAK,aAAcuY,EAAW1N,EAAQiO,EAAS,GAAMnb,EACrE,GAAKya,EAEL,CAAAla,EAAOA,GAAQ,KAAO,KAAOA,EAAO,GACpC,IAAKP,KAAKya,EAAW,CACnB,IAAKG,EAAYH,EAAUza,CAAC,GAAG,OAASO,EAAM,CAC5C4a,EAAS,GACT,QACN,CACIjO,EAAS0N,EAAU,MAAQZ,IAAYY,EAAU,MAAQT,GACzDS,EAAU,MAAQR,GAClBQ,EAAU,MAAM,KAAI,EACpBA,EAAU,GAAG,KAAK1N,EAAS,YAAc,SAAU7K,EAAMA,EAAK,SAAUuY,EAAU,MAAOA,EAAU,KAAK,EACxG,OAAOH,EAAUza,CAAC,CACtB,CACMmb,GACF,OAAO9Y,EAAK,aAChB,CACA,SAAS+Y,GAAoB7a,EAAM,CACjC,OAAO,KAAK,KAAK,UAAW,CAC1B2a,GAAU,KAAM3a,CAAI,CACxB,CAAG,CACH,CACA,SAAS8a,GAAYf,EAAK/Z,EAAM,CAC9B,IAAI+a,EAAQC,EACZ,OAAO,UAAW,CAChB,IAAIX,EAAYE,GAAI,KAAMR,CAAG,EAAGU,EAAQJ,EAAU,MAClD,GAAII,IAAUM,EAAQ,CACpBC,EAASD,EAASN,EAClB,QAAShb,EAAI,EAAGnD,EAAI0e,EAAO,OAAQvb,EAAInD,EAAG,EAAEmD,EAC1C,GAAIub,EAAOvb,CAAC,EAAE,OAASO,EAAM,CAC3Bgb,EAASA,EAAO,MAAK,EACrBA,EAAO,OAAOvb,EAAG,CAAC,EAClB,KACV,CAEA,CACI4a,EAAU,MAAQW,CACtB,CACA,CACA,SAASC,GAAclB,EAAK/Z,EAAMrE,EAAO,CACvC,IAAIof,EAAQC,EACZ,GAAI,OAAOrf,GAAU,WACnB,MAAM,IAAI,MACZ,OAAO,UAAW,CAChB,IAAI0e,EAAYE,GAAI,KAAMR,CAAG,EAAGU,EAAQJ,EAAU,MAClD,GAAII,IAAUM,EAAQ,CACpBC,GAAUD,EAASN,GAAO,MAAK,EAC/B,QAAS9a,EAAI,CAAE,KAAAK,EAAM,MAAArE,CAAK,EAAI8D,EAAI,EAAGnD,EAAI0e,EAAO,OAAQvb,EAAInD,EAAG,EAAEmD,EAC/D,GAAIub,EAAOvb,CAAC,EAAE,OAASO,EAAM,CAC3Bgb,EAAOvb,CAAC,EAAIE,EACZ,KACV,CAEUF,IAAMnD,GACR0e,EAAO,KAAKrb,CAAC,CACrB,CACI0a,EAAU,MAAQW,CACtB,CACA,CACA,SAASE,GAAiBlb,EAAMrE,EAAO,CACrC,IAAIoe,EAAM,KAAK,IAEf,GADA/Z,GAAQ,GACJ,UAAU,OAAS,EAAG,CAExB,QADIya,EAAQH,GAAI,KAAK,KAAI,EAAIP,CAAG,EAAE,MACzB,EAAI,EAAGzd,EAAIme,EAAM,OAAQ9a,EAAG,EAAIrD,EAAG,EAAE,EAC5C,IAAKqD,EAAI8a,EAAM,CAAC,GAAG,OAASza,EAC1B,OAAOL,EAAE,MAGb,OAAO,IACX,CACE,OAAO,KAAK,MAAMhE,GAAS,KAAOmf,GAAcG,IAAelB,EAAK/Z,EAAMrE,CAAK,CAAC,CAClF,CACA,SAASwf,GAAWC,EAAYpb,EAAMrE,EAAO,CAC3C,IAAIoe,EAAMqB,EAAW,IACrB,OAAAA,EAAW,KAAK,UAAW,CACzB,IAAIf,EAAYE,GAAI,KAAMR,CAAG,GAC5BM,EAAU,QAAUA,EAAU,MAAQ,CAAA,IAAKra,CAAI,EAAIrE,EAAM,MAAM,KAAM,SAAS,CACnF,CAAG,EACM,SAASmG,EAAM,CACpB,OAAOwY,GAAIxY,EAAMiY,CAAG,EAAE,MAAM/Z,CAAI,CACpC,CACA,CACA,SAASqb,GAAY/U,EAAGC,EAAG,CACzB,IAAI/F,EACJ,OAAQ,OAAO+F,GAAM,SAAW+M,GAAoB/M,aAAa4J,GAAQsC,IAAkBjS,EAAI2P,GAAM5J,CAAC,IAAMA,EAAI/F,EAAGiS,IAAkBmB,IAAmBtN,EAAGC,CAAC,CAC9J,CACA,SAAS+U,GAAWtb,EAAM,CACxB,OAAO,UAAW,CAChB,KAAK,gBAAgBA,CAAI,CAC7B,CACA,CACA,SAASub,GAAata,EAAU,CAC9B,OAAO,UAAW,CAChB,KAAK,kBAAkBA,EAAS,MAAOA,EAAS,KAAK,CACzD,CACA,CACA,SAASua,GAAaxb,EAAMyb,EAAcC,EAAQ,CAChD,IAAIC,EAAUC,EAAUF,EAAS,GAAIG,EACrC,OAAO,UAAW,CAChB,IAAIC,EAAU,KAAK,aAAa9b,CAAI,EACpC,OAAO8b,IAAYF,EAAU,KAAOE,IAAYH,EAAWE,EAAeA,EAAeJ,EAAaE,EAAWG,EAASJ,CAAM,CACpI,CACA,CACA,SAASK,GAAe9a,EAAUwa,EAAcC,EAAQ,CACtD,IAAIC,EAAUC,EAAUF,EAAS,GAAIG,EACrC,OAAO,UAAW,CAChB,IAAIC,EAAU,KAAK,eAAe7a,EAAS,MAAOA,EAAS,KAAK,EAChE,OAAO6a,IAAYF,EAAU,KAAOE,IAAYH,EAAWE,EAAeA,EAAeJ,EAAaE,EAAWG,EAASJ,CAAM,CACpI,CACA,CACA,SAASM,GAAahc,EAAMyb,EAAc9f,EAAO,CAC/C,IAAIggB,EAAUM,EAAUJ,EACxB,OAAO,UAAW,CAChB,IAAIC,EAASJ,EAAS/f,EAAM,IAAI,EAAGigB,EACnC,OAAIF,GAAU,KACL,KAAK,KAAK,gBAAgB1b,CAAI,GACvC8b,EAAU,KAAK,aAAa9b,CAAI,EAChC4b,EAAUF,EAAS,GACZI,IAAYF,EAAU,KAAOE,IAAYH,GAAYC,IAAYK,EAAWJ,GAAgBI,EAAWL,EAASC,EAAeJ,EAAaE,EAAWG,EAASJ,CAAM,GACjL,CACA,CACA,SAASQ,GAAejb,EAAUwa,EAAc9f,EAAO,CACrD,IAAIggB,EAAUM,EAAUJ,EACxB,OAAO,UAAW,CAChB,IAAIC,EAASJ,EAAS/f,EAAM,IAAI,EAAGigB,EACnC,OAAIF,GAAU,KACL,KAAK,KAAK,kBAAkBza,EAAS,MAAOA,EAAS,KAAK,GACnE6a,EAAU,KAAK,eAAe7a,EAAS,MAAOA,EAAS,KAAK,EAC5D2a,EAAUF,EAAS,GACZI,IAAYF,EAAU,KAAOE,IAAYH,GAAYC,IAAYK,EAAWJ,GAAgBI,EAAWL,EAASC,EAAeJ,EAAaE,EAAWG,EAASJ,CAAM,GACjL,CACA,CACA,SAASS,GAAgBnc,EAAMrE,EAAO,CACpC,IAAIsF,EAAWN,GAAUX,CAAI,EAAGP,EAAIwB,IAAa,YAAc0U,GAA0B0F,GACzF,OAAO,KAAK,UAAUrb,EAAM,OAAOrE,GAAU,YAAcsF,EAAS,MAAQib,GAAiBF,IAAc/a,EAAUxB,EAAG0b,GAAW,KAAM,QAAUnb,EAAMrE,CAAK,CAAC,EAAIA,GAAS,MAAQsF,EAAS,MAAQsa,GAAeD,IAAYra,CAAQ,GAAKA,EAAS,MAAQ8a,GAAiBP,IAAcva,EAAUxB,EAAG9D,CAAK,CAAC,CAClT,CACA,SAASygB,GAAgBpc,EAAMP,EAAG,CAChC,OAAO,SAASE,EAAG,CACjB,KAAK,aAAaK,EAAMP,EAAE,KAAK,KAAME,CAAC,CAAC,CAC3C,CACA,CACA,SAAS0c,GAAkBpb,EAAUxB,EAAG,CACtC,OAAO,SAASE,EAAG,CACjB,KAAK,eAAesB,EAAS,MAAOA,EAAS,MAAOxB,EAAE,KAAK,KAAME,CAAC,CAAC,CACvE,CACA,CACA,SAAS2c,GAAYrb,EAAUtF,EAAO,CACpC,IAAIqd,EAAIlU,EACR,SAAS2V,GAAQ,CACf,IAAIhb,EAAI9D,EAAM,MAAM,KAAM,SAAS,EACnC,OAAI8D,IAAMqF,IACRkU,GAAMlU,EAAKrF,IAAM4c,GAAkBpb,EAAUxB,CAAC,GACzCuZ,CACX,CACE,OAAAyB,EAAM,OAAS9e,EACR8e,CACT,CACA,SAAS8B,GAAUvc,EAAMrE,EAAO,CAC9B,IAAIqd,EAAIlU,EACR,SAAS2V,GAAQ,CACf,IAAIhb,EAAI9D,EAAM,MAAM,KAAM,SAAS,EACnC,OAAI8D,IAAMqF,IACRkU,GAAMlU,EAAKrF,IAAM2c,GAAgBpc,EAAMP,CAAC,GACnCuZ,CACX,CACE,OAAAyB,EAAM,OAAS9e,EACR8e,CACT,CACA,SAAS+B,GAAqBxc,EAAMrE,EAAO,CACzC,IAAIhB,EAAM,QAAUqF,EACpB,GAAI,UAAU,OAAS,EACrB,OAAQrF,EAAM,KAAK,MAAMA,CAAG,IAAMA,EAAI,OACxC,GAAIgB,GAAS,KACX,OAAO,KAAK,MAAMhB,EAAK,IAAI,EAC7B,GAAI,OAAOgB,GAAU,WACnB,MAAM,IAAI,MACZ,IAAIsF,EAAWN,GAAUX,CAAI,EAC7B,OAAO,KAAK,MAAMrF,GAAMsG,EAAS,MAAQqb,GAAcC,IAAWtb,EAAUtF,CAAK,CAAC,CACpF,CACA,SAAS8gB,GAAc1C,EAAKpe,EAAO,CACjC,OAAO,UAAW,CAChBye,GAAK,KAAML,CAAG,EAAE,MAAQ,CAACpe,EAAM,MAAM,KAAM,SAAS,CACxD,CACA,CACA,SAAS+gB,GAAc3C,EAAKpe,EAAO,CACjC,OAAOA,EAAQ,CAACA,EAAO,UAAW,CAChCye,GAAK,KAAML,CAAG,EAAE,MAAQpe,CAC5B,CACA,CACA,SAASghB,GAAiBhhB,EAAO,CAC/B,IAAIoe,EAAM,KAAK,IACf,OAAO,UAAU,OAAS,KAAK,MAAM,OAAOpe,GAAU,WAAa8gB,GAAgBC,IAAe3C,EAAKpe,CAAK,CAAC,EAAI2e,GAAI,KAAK,KAAI,EAAIP,CAAG,EAAE,KACzI,CACA,SAAS6C,GAAiB7C,EAAKpe,EAAO,CACpC,OAAO,UAAW,CAChB4e,GAAI,KAAMR,CAAG,EAAE,SAAW,CAACpe,EAAM,MAAM,KAAM,SAAS,CAC1D,CACA,CACA,SAASkhB,GAAiB9C,EAAKpe,EAAO,CACpC,OAAOA,EAAQ,CAACA,EAAO,UAAW,CAChC4e,GAAI,KAAMR,CAAG,EAAE,SAAWpe,CAC9B,CACA,CACA,SAASmhB,GAAoBnhB,EAAO,CAClC,IAAIoe,EAAM,KAAK,IACf,OAAO,UAAU,OAAS,KAAK,MAAM,OAAOpe,GAAU,WAAaihB,GAAmBC,IAAkB9C,EAAKpe,CAAK,CAAC,EAAI2e,GAAI,KAAK,KAAI,EAAIP,CAAG,EAAE,QAC/I,CACA,SAASgD,GAAahD,EAAKpe,EAAO,CAChC,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,MACZ,OAAO,UAAW,CAChB4e,GAAI,KAAMR,CAAG,EAAE,KAAOpe,CAC1B,CACA,CACA,SAASqhB,GAAgBrhB,EAAO,CAC9B,IAAIoe,EAAM,KAAK,IACf,OAAO,UAAU,OAAS,KAAK,KAAKgD,GAAahD,EAAKpe,CAAK,CAAC,EAAI2e,GAAI,KAAK,KAAI,EAAIP,CAAG,EAAE,IACxF,CACA,SAASkD,GAAYlD,EAAKpe,EAAO,CAC/B,OAAO,UAAW,CAChB,IAAId,EAAIc,EAAM,MAAM,KAAM,SAAS,EACnC,GAAI,OAAOd,GAAM,WACf,MAAM,IAAI,MACZ0f,GAAI,KAAMR,CAAG,EAAE,KAAOlf,CAC1B,CACA,CACA,SAASqiB,GAAuBvhB,EAAO,CACrC,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,MACZ,OAAO,KAAK,KAAKshB,GAAY,KAAK,IAAKthB,CAAK,CAAC,CAC/C,CACA,SAASwhB,GAAkBva,EAAO,CAC5B,OAAOA,GAAU,aACnBA,EAAQJ,GAAQI,CAAK,GACvB,QAASpB,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQC,EAAWH,EAAUC,CAAC,EAAI,CAAA,EAAIG,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GAC3FqC,EAAOF,EAAMnC,CAAC,IAAMmD,EAAM,KAAKd,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,GAC/DC,EAAS,KAAKC,CAAI,EAIxB,OAAO,IAAIsb,GAAW1b,EAAW,KAAK,SAAU,KAAK,MAAO,KAAK,GAAG,CACtE,CACA,SAAS2b,GAAiBjC,EAAY,CACpC,GAAIA,EAAW,MAAQ,KAAK,IAC1B,MAAM,IAAI,MACZ,QAAS3V,EAAU,KAAK,QAASC,EAAU0V,EAAW,QAASzV,EAAKF,EAAQ,OAAQG,EAAKF,EAAQ,OAAQjE,EAAI,KAAK,IAAIkE,EAAIC,CAAE,EAAGC,EAAS,IAAI,MAAMF,CAAE,EAAGhE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EACrK,QAASmE,EAASL,EAAQ9D,CAAC,EAAGoE,EAASL,EAAQ/D,CAAC,EAAGrF,EAAIwJ,EAAO,OAAQE,EAAQH,EAAOlE,CAAC,EAAI,IAAI,MAAMrF,CAAC,EAAGwF,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GACxHqC,EAAOgE,EAAOrG,CAAC,GAAKsG,EAAOtG,CAAC,KAC9BuG,EAAMvG,CAAC,EAAIqC,GAIjB,KAAOH,EAAIgE,EAAI,EAAEhE,EACfkE,EAAOlE,CAAC,EAAI8D,EAAQ9D,CAAC,EAEvB,OAAO,IAAIyb,GAAWvX,EAAQ,KAAK,SAAU,KAAK,MAAO,KAAK,GAAG,CACnE,CACA,SAASyX,GAAMtd,EAAM,CACnB,OAAQA,EAAO,IAAI,KAAI,EAAG,MAAM,OAAO,EAAE,MAAM,SAAS,EAAG,CACzD,IAAIP,EAAI,EAAE,QAAQ,GAAG,EACrB,OAAIA,GAAK,IACP,EAAI,EAAE,MAAM,EAAGA,CAAC,GACX,CAAC,GAAK,IAAM,OACvB,CAAG,CACH,CACA,SAAS8d,GAAWxD,EAAK/Z,EAAM1C,EAAU,CACvC,IAAIkgB,EAAKC,EAAKC,EAAMJ,GAAMtd,CAAI,EAAIoa,GAAOG,GACzC,OAAO,UAAW,CAChB,IAAIF,EAAYqD,EAAI,KAAM3D,CAAG,EAAGtP,EAAK4P,EAAU,GAC3C5P,IAAO+S,IACRC,GAAOD,EAAM/S,GAAI,KAAI,GAAI,GAAGzK,EAAM1C,CAAQ,EAC7C+c,EAAU,GAAKoD,CACnB,CACA,CACA,SAASE,GAAc3d,EAAM1C,EAAU,CACrC,IAAIyc,EAAM,KAAK,IACf,OAAO,UAAU,OAAS,EAAIO,GAAI,KAAK,KAAI,EAAIP,CAAG,EAAE,GAAG,GAAG/Z,CAAI,EAAI,KAAK,KAAKud,GAAWxD,EAAK/Z,EAAM1C,CAAQ,CAAC,CAC7G,CACA,SAASsgB,GAAe7D,EAAK,CAC3B,OAAO,UAAW,CAChB,IAAIvW,EAAS,KAAK,WAClB,QAAS/D,KAAK,KAAK,aACjB,GAAI,CAACA,IAAMsa,EACT,OACAvW,GACFA,EAAO,YAAY,IAAI,CAC7B,CACA,CACA,SAASqa,IAAoB,CAC3B,OAAO,KAAK,GAAG,aAAcD,GAAe,KAAK,GAAG,CAAC,CACvD,CACA,SAASE,GAAkBvc,EAAS,CAClC,IAAIvB,EAAO,KAAK,MAAO+Z,EAAM,KAAK,IAC9B,OAAOxY,GAAY,aACrBA,EAAUH,GAASG,CAAO,GAC5B,QAASC,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQC,EAAWH,EAAUC,CAAC,EAAI,IAAI,MAAMrF,CAAC,EAAGwF,EAAMC,EAAStC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GAC9GqC,EAAOF,EAAMnC,CAAC,KAAOsC,EAAUR,EAAQ,KAAKO,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,KACxE,aAAcE,IAChBC,EAAQ,SAAWD,EAAK,UAC1BD,EAASpC,CAAC,EAAIsC,EACd+X,GAASjY,EAASpC,CAAC,EAAGO,EAAM+Z,EAAKta,EAAGoC,EAAUyY,GAAIxY,EAAMiY,CAAG,CAAC,GAIlE,OAAO,IAAIqD,GAAW1b,EAAW,KAAK,SAAU1B,EAAM+Z,CAAG,CAC3D,CACA,SAASgE,GAAqBxc,EAAS,CACrC,IAAIvB,EAAO,KAAK,MAAO+Z,EAAM,KAAK,IAC9B,OAAOxY,GAAY,aACrBA,EAAUa,GAAYb,CAAO,GAC/B,QAASC,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,CAAA,EAAIa,EAAU,CAAA,EAAIZ,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC/F,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQE,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,EAClE,GAAIqC,EAAOF,EAAMnC,CAAC,EAAG,CACnB,QAASue,EAAYzc,EAAQ,KAAKO,EAAMA,EAAK,SAAUrC,EAAGmC,CAAK,EAAG8B,EAAOua,EAAW3D,GAAIxY,EAAMiY,CAAG,EAAG3I,EAAI,EAAGT,EAAIqN,EAAU,OAAQ5M,EAAIT,EAAG,EAAES,GACpI1N,EAAQsa,EAAU5M,CAAC,IACrB0I,GAASpW,EAAO1D,EAAM+Z,EAAK3I,EAAG4M,EAAWC,CAAQ,EAGrDvc,EAAU,KAAKsc,CAAS,EACxBzb,EAAQ,KAAKT,CAAI,CACzB,CAGE,OAAO,IAAIsb,GAAW1b,EAAWa,EAASvC,EAAM+Z,CAAG,CACrD,CACA,IAAImE,GAAY7S,GAAU,UAAU,YACpC,SAAS8S,IAAuB,CAC9B,OAAO,IAAID,GAAU,KAAK,QAAS,KAAK,QAAQ,CAClD,CACA,SAASE,GAAUpe,EAAMyb,EAAc,CACrC,IAAIE,EAAUM,EAAUJ,EACxB,OAAO,UAAW,CAChB,IAAIC,EAAUhU,GAAW,KAAM9H,CAAI,EAAG4b,GAAW,KAAK,MAAM,eAAe5b,CAAI,EAAG8H,GAAW,KAAM9H,CAAI,GACvG,OAAO8b,IAAYF,EAAU,KAAOE,IAAYH,GAAYC,IAAYK,EAAWJ,EAAeA,EAAeJ,EAAaE,EAAWG,EAASG,EAAWL,CAAO,CACxK,CACA,CACA,SAASyC,GAAYre,EAAM,CACzB,OAAO,UAAW,CAChB,KAAK,MAAM,eAAeA,CAAI,CAClC,CACA,CACA,SAASse,GAActe,EAAMyb,EAAcC,EAAQ,CACjD,IAAIC,EAAUC,EAAUF,EAAS,GAAIG,EACrC,OAAO,UAAW,CAChB,IAAIC,EAAUhU,GAAW,KAAM9H,CAAI,EACnC,OAAO8b,IAAYF,EAAU,KAAOE,IAAYH,EAAWE,EAAeA,EAAeJ,EAAaE,EAAWG,EAASJ,CAAM,CACpI,CACA,CACA,SAAS6C,GAAcve,EAAMyb,EAAc9f,EAAO,CAChD,IAAIggB,EAAUM,EAAUJ,EACxB,OAAO,UAAW,CAChB,IAAIC,EAAUhU,GAAW,KAAM9H,CAAI,EAAG0b,EAAS/f,EAAM,IAAI,EAAGigB,EAAUF,EAAS,GAC/E,OAAIA,GAAU,OACZE,EAAUF,GAAU,KAAK,MAAM,eAAe1b,CAAI,EAAG8H,GAAW,KAAM9H,CAAI,IACrE8b,IAAYF,EAAU,KAAOE,IAAYH,GAAYC,IAAYK,EAAWJ,GAAgBI,EAAWL,EAASC,EAAeJ,EAAaE,EAAWG,EAASJ,CAAM,EACjL,CACA,CACA,SAAS8C,GAAiBzE,EAAK/Z,EAAM,CACnC,IAAIwd,EAAKC,EAAKgB,EAAW9jB,EAAM,SAAWqF,EAAM3C,EAAQ,OAAS1C,EAAK+jB,EACtE,OAAO,UAAW,CAChB,IAAIrE,EAAYE,GAAI,KAAMR,CAAG,EAAGtP,EAAK4P,EAAU,GAAI/c,EAAW+c,EAAU,MAAM1f,CAAG,GAAK,KAAO+jB,IAAYA,EAAUL,GAAYre,CAAI,GAAK,QACpIyK,IAAO+S,GAAOiB,IAAcnhB,KAC7BmgB,GAAOD,EAAM/S,GAAI,KAAI,GAAI,GAAGpN,EAAOohB,EAAYnhB,CAAQ,EAC1D+c,EAAU,GAAKoD,CACnB,CACA,CACA,SAASkB,GAAiB3e,EAAMrE,EAAOgM,EAAU,CAC/C,IAAIlI,GAAKO,GAAQ,KAAQ,YAAc0V,GAA0B2F,GACjE,OAAO1f,GAAS,KAAO,KAAK,WAAWqE,EAAMoe,GAAUpe,EAAMP,CAAC,CAAC,EAAE,GAAG,aAAeO,EAAMqe,GAAYre,CAAI,CAAC,EAAI,OAAOrE,GAAU,WAAa,KAAK,WAAWqE,EAAMue,GAAcve,EAAMP,EAAG0b,GAAW,KAAM,SAAWnb,EAAMrE,CAAK,CAAC,CAAC,EAAE,KAAK6iB,GAAiB,KAAK,IAAKxe,CAAI,CAAC,EAAI,KAAK,WAAWA,EAAMse,GAActe,EAAMP,EAAG9D,CAAK,EAAGgM,CAAQ,EAAE,GAAG,aAAe3H,EAAM,IAAI,CAC1W,CACA,SAAS4e,GAAiB5e,EAAMP,EAAGkI,EAAU,CAC3C,OAAO,SAAShI,EAAG,CACjB,KAAK,MAAM,YAAYK,EAAMP,EAAE,KAAK,KAAME,CAAC,EAAGgI,CAAQ,CAC1D,CACA,CACA,SAASkX,GAAW7e,EAAMrE,EAAOgM,EAAU,CACzC,IAAIhI,EAAGmF,EACP,SAAS2V,GAAQ,CACf,IAAIhb,EAAI9D,EAAM,MAAM,KAAM,SAAS,EACnC,OAAI8D,IAAMqF,IACRnF,GAAKmF,EAAKrF,IAAMmf,GAAiB5e,EAAMP,EAAGkI,CAAQ,GAC7ChI,CACX,CACE,OAAA8a,EAAM,OAAS9e,EACR8e,CACT,CACA,SAASqE,GAAsB9e,EAAMrE,EAAOgM,EAAU,CACpD,IAAIhN,EAAM,UAAYqF,GAAQ,IAC9B,GAAI,UAAU,OAAS,EACrB,OAAQrF,EAAM,KAAK,MAAMA,CAAG,IAAMA,EAAI,OACxC,GAAIgB,GAAS,KACX,OAAO,KAAK,MAAMhB,EAAK,IAAI,EAC7B,GAAI,OAAOgB,GAAU,WACnB,MAAM,IAAI,MACZ,OAAO,KAAK,MAAMhB,EAAKkkB,GAAW7e,EAAMrE,EAAOgM,GAAmB,EAAa,CAAC,CAClF,CACA,SAASoX,GAAapjB,EAAO,CAC3B,OAAO,UAAW,CAChB,KAAK,YAAcA,CACvB,CACA,CACA,SAASqjB,GAAarjB,EAAO,CAC3B,OAAO,UAAW,CAChB,IAAI+f,EAAS/f,EAAM,IAAI,EACvB,KAAK,YAAc+f,GAAiB,EACxC,CACA,CACA,SAASuD,GAAgBtjB,EAAO,CAC9B,OAAO,KAAK,MAAM,OAAQ,OAAOA,GAAU,WAAaqjB,GAAa7D,GAAW,KAAM,OAAQxf,CAAK,CAAC,EAAIojB,GAAapjB,GAAS,KAAO,GAAKA,EAAQ,EAAE,CAAC,CACvJ,CACA,SAASujB,GAAgBzf,EAAG,CAC1B,OAAO,SAAS,EAAG,CACjB,KAAK,YAAcA,EAAE,KAAK,KAAM,CAAC,CACrC,CACA,CACA,SAAS0f,GAAUxjB,EAAO,CACxB,IAAIqd,EAAIlU,EACR,SAAS2V,GAAQ,CACf,IAAI,EAAI9e,EAAM,MAAM,KAAM,SAAS,EACnC,OAAI,IAAMmJ,IACRkU,GAAMlU,EAAK,IAAMoa,GAAgB,CAAC,GAC7BlG,CACX,CACE,OAAAyB,EAAM,OAAS9e,EACR8e,CACT,CACA,SAAS2E,GAAqBzjB,EAAO,CACnC,IAAIhB,EAAM,OACV,GAAI,UAAU,OAAS,EACrB,OAAQA,EAAM,KAAK,MAAMA,CAAG,IAAMA,EAAI,OACxC,GAAIgB,GAAS,KACX,OAAO,KAAK,MAAMhB,EAAK,IAAI,EAC7B,GAAI,OAAOgB,GAAU,WACnB,MAAM,IAAI,MACZ,OAAO,KAAK,MAAMhB,EAAKwkB,GAAUxjB,CAAK,CAAC,CACzC,CACA,SAAS0jB,IAAwB,CAE/B,QADIrf,EAAO,KAAK,MAAOsf,EAAM,KAAK,IAAKC,EAAMC,GAAK,EACzChe,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQG,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EACjE,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQE,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,EAClE,GAAIqC,EAAOF,EAAMnC,CAAC,EAAG,CACnB,IAAIwe,EAAW3D,GAAIxY,EAAMwd,CAAG,EAC5BxF,GAAShY,EAAM9B,EAAMuf,EAAK9f,EAAGmC,EAAO,CAClC,KAAMqc,EAAS,KAAOA,EAAS,MAAQA,EAAS,SAChD,MAAO,EACP,SAAUA,EAAS,SACnB,KAAMA,EAAS,IACzB,CAAS,CACT,CAGE,OAAO,IAAIb,GAAW5b,EAAQ,KAAK,SAAUxB,EAAMuf,CAAG,CACxD,CACA,SAASE,IAAiB,CACxB,IAAIjC,EAAKC,EAAKld,EAAO,KAAMwZ,EAAMxZ,EAAK,IAAKuG,EAAOvG,EAAK,KAAI,EAC3D,OAAO,IAAI,QAAQ,SAASxH,EAASC,EAAQ,CAC3C,IAAI0mB,EAAS,CAAE,MAAO1mB,CAAM,EAAI8Z,EAAM,CAAE,MAAO,UAAW,CACpD,EAAEhM,IAAS,GACb/N,EAAO,CACf,CAAK,EACDwH,EAAK,KAAK,UAAW,CACnB,IAAI8Z,EAAYE,GAAI,KAAMR,CAAG,EAAGtP,EAAK4P,EAAU,GAC3C5P,IAAO+S,IACTC,GAAOD,EAAM/S,GAAI,KAAI,EACrBgT,EAAI,EAAE,OAAO,KAAKiC,CAAM,EACxBjC,EAAI,EAAE,UAAU,KAAKiC,CAAM,EAC3BjC,EAAI,EAAE,IAAI,KAAK3K,CAAG,GAEpBuH,EAAU,GAAKoD,CACrB,CAAK,EACG3W,IAAS,GACX/N,EAAO,CACb,CAAG,CACH,CACA,IAAI4mB,GAAK,EACT,SAASvC,GAAW5b,EAAQe,EAASvC,EAAM+Z,EAAK,CAC9C,KAAK,QAAUvY,EACf,KAAK,SAAWe,EAChB,KAAK,MAAQvC,EACb,KAAK,IAAM+Z,CACb,CACA,SAASyF,IAAQ,CACf,MAAO,EAAEG,EACX,CACA,IAAIC,GAAsBvU,GAAU,UACpC+R,GAAW,UAAY,CACrB,YAAaA,GACb,OAAQU,GACR,UAAWC,GACX,YAAa6B,GAAoB,YACjC,eAAgBA,GAAoB,eACpC,OAAQzC,GACR,MAAOE,GACP,UAAWc,GACX,WAAYkB,GACZ,KAAMO,GAAoB,KAC1B,MAAOA,GAAoB,MAC3B,KAAMA,GAAoB,KAC1B,KAAMA,GAAoB,KAC1B,MAAOA,GAAoB,MAC3B,KAAMA,GAAoB,KAC1B,GAAIjC,GACJ,KAAMxB,GACN,UAAWK,GACX,MAAOmC,GACP,WAAYG,GACZ,KAAMG,GACN,UAAWG,GACX,OAAQvB,GACR,MAAO3C,GACP,MAAOyB,GACP,SAAUG,GACV,KAAME,GACN,YAAaE,GACb,IAAKuC,GACL,CAAC,OAAO,QAAQ,EAAGG,GAAoB,OAAO,QAAQ,CACxD,EACA,SAASC,GAAWlgB,EAAG,CACrB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,CACA,IAAImgB,GAAgB,CAClB,KAAM,KAEN,MAAO,EACP,SAAU,IACV,KAAMD,EACR,EACA,SAASE,GAAQje,EAAMiY,EAAK,CAE1B,QADIE,EACG,EAAEA,EAASnY,EAAK,eAAiB,EAAEmY,EAASA,EAAOF,CAAG,IAC3D,GAAI,EAAEjY,EAAOA,EAAK,YAChB,MAAM,IAAI,MAAM,cAAciY,CAAG,YAAY,EAGjD,OAAOE,CACT,CACA,SAAS+F,GAAqBhgB,EAAM,CAClC,IAAI+Z,EAAKE,EACLja,aAAgBod,IAClBrD,EAAM/Z,EAAK,IAAKA,EAAOA,EAAK,QAE5B+Z,EAAMyF,GAAK,GAAKvF,EAAS6F,IAAe,KAAO1H,GAAG,EAAIpY,EAAOA,GAAQ,KAAO,KAAOA,EAAO,IAE5F,QAASwB,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQG,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EACjE,QAASC,EAAQJ,EAAOG,CAAC,EAAGrF,EAAIsF,EAAM,OAAQE,EAAMrC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,GAC9DqC,EAAOF,EAAMnC,CAAC,IAChBqa,GAAShY,EAAM9B,EAAM+Z,EAAKta,EAAGmC,EAAOqY,GAAU8F,GAAQje,EAAMiY,CAAG,CAAC,EAItE,OAAO,IAAIqD,GAAW5b,EAAQ,KAAK,SAAUxB,EAAM+Z,CAAG,CACxD,CACA1O,GAAU,UAAU,UAAYwP,GAChCxP,GAAU,UAAU,WAAa2U,GACjC,MAAMC,GAAY/d,GAAM,IAAMA,EAC9B,SAASge,GAAU5f,EAAM,CACvB,YAAamL,EACb,OAAA3O,EACA,UAAAqjB,EACA,SAAUpT,CACZ,EAAG,CACD,OAAO,iBAAiB,KAAM,CAC5B,KAAM,CAAE,MAAOzM,EAAM,WAAY,GAAM,aAAc,EAAI,EACzD,YAAa,CAAE,MAAOmL,EAAc,WAAY,GAAM,aAAc,EAAI,EACxE,OAAQ,CAAE,MAAO3O,EAAQ,WAAY,GAAM,aAAc,EAAI,EAC7D,UAAW,CAAE,MAAOqjB,EAAW,WAAY,GAAM,aAAc,EAAI,EACnE,EAAG,CAAE,MAAOpT,CAAS,CACzB,CAAG,CACH,CACA,SAASqT,GAAUhP,EAAGlP,EAAG0K,EAAG,CAC1B,KAAK,EAAIwE,EACT,KAAK,EAAIlP,EACT,KAAK,EAAI0K,CACX,CACAwT,GAAU,UAAY,CACpB,YAAaA,GACb,MAAO,SAAShP,EAAG,CACjB,OAAOA,IAAM,EAAI,KAAO,IAAIgP,GAAU,KAAK,EAAIhP,EAAG,KAAK,EAAG,KAAK,CAAC,CACpE,EACE,UAAW,SAASlP,EAAG0K,EAAG,CACxB,OAAO1K,IAAM,EAAI0K,IAAM,EAAI,KAAO,IAAIwT,GAAU,KAAK,EAAG,KAAK,EAAI,KAAK,EAAIle,EAAG,KAAK,EAAI,KAAK,EAAI0K,CAAC,CACpG,EACE,MAAO,SAAShB,EAAO,CACrB,MAAO,CAACA,EAAM,CAAC,EAAI,KAAK,EAAI,KAAK,EAAGA,EAAM,CAAC,EAAI,KAAK,EAAI,KAAK,CAAC,CAClE,EACE,OAAQ,SAAS1J,EAAG,CAClB,OAAOA,EAAI,KAAK,EAAI,KAAK,CAC7B,EACE,OAAQ,SAAS0K,EAAG,CAClB,OAAOA,EAAI,KAAK,EAAI,KAAK,CAC7B,EACE,OAAQ,SAASyT,EAAU,CACzB,MAAO,EAAEA,EAAS,CAAC,EAAI,KAAK,GAAK,KAAK,GAAIA,EAAS,CAAC,EAAI,KAAK,GAAK,KAAK,CAAC,CAC5E,EACE,QAAS,SAASne,EAAG,CACnB,OAAQA,EAAI,KAAK,GAAK,KAAK,CAC/B,EACE,QAAS,SAAS0K,EAAG,CACnB,OAAQA,EAAI,KAAK,GAAK,KAAK,CAC/B,EACE,SAAU,SAAS1K,EAAG,CACpB,OAAOA,EAAE,KAAI,EAAG,OAAOA,EAAE,MAAK,EAAG,IAAI,KAAK,QAAS,IAAI,EAAE,IAAIA,EAAE,OAAQA,CAAC,CAAC,CAC7E,EACE,SAAU,SAAS0K,EAAG,CACpB,OAAOA,EAAE,KAAI,EAAG,OAAOA,EAAE,MAAK,EAAG,IAAI,KAAK,QAAS,IAAI,EAAE,IAAIA,EAAE,OAAQA,CAAC,CAAC,CAC7E,EACE,SAAU,UAAW,CACnB,MAAO,aAAe,KAAK,EAAI,IAAM,KAAK,EAAI,WAAa,KAAK,EAAI,GACxE,CACA,EACA,IAAI0T,GAAW,IAAIF,GAAU,EAAG,EAAG,CAAC,EACpCA,GAAU,UACV,SAASG,GAAcljB,EAAO,CAC5BA,EAAM,yBAAwB,CAChC,CACA,SAASmjB,GAAQnjB,EAAO,CACtBA,EAAM,eAAc,EACpBA,EAAM,yBAAwB,CAChC,CACA,SAASojB,GAAcpjB,EAAO,CAC5B,OAAQ,CAACA,EAAM,SAAWA,EAAM,OAAS,UAAY,CAACA,EAAM,MAC9D,CACA,SAASqjB,IAAgB,CACvB,IAAI,EAAI,KACR,OAAI,aAAa,YACf,EAAI,EAAE,iBAAmB,EACrB,EAAE,aAAa,SAAS,GAC1B,EAAI,EAAE,QAAQ,QACP,CAAC,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,CAAC,EAAE,EAAI,EAAE,MAAO,EAAE,EAAI,EAAE,MAAM,CAAC,GAE9C,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAE,MAAM,QAAQ,MAAO,EAAE,OAAO,QAAQ,KAAK,CAAC,GAE1D,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAE,YAAa,EAAE,YAAY,CAAC,CACjD,CACA,SAASC,IAAmB,CAC1B,OAAO,KAAK,QAAUL,EACxB,CACA,SAASM,GAAkBvjB,EAAO,CAChC,MAAO,CAACA,EAAM,QAAUA,EAAM,YAAc,EAAI,IAAOA,EAAM,UAAY,EAAI,OAASA,EAAM,QAAU,GAAK,EAC7G,CACA,SAASwjB,IAAmB,CAC1B,OAAO,UAAU,gBAAkB,iBAAkB,IACvD,CACA,SAASC,GAAiBX,EAAWY,EAAQC,EAAiB,CAC5D,IAAIC,EAAMd,EAAU,QAAQY,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAAGE,EAAMf,EAAU,QAAQY,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAAGG,EAAMhB,EAAU,QAAQY,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAAGI,EAAMjB,EAAU,QAAQY,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAC7P,OAAOb,EAAU,UACfe,EAAMD,GAAOA,EAAMC,GAAO,EAAI,KAAK,IAAI,EAAGD,CAAG,GAAK,KAAK,IAAI,EAAGC,CAAG,EACjEE,EAAMD,GAAOA,EAAMC,GAAO,EAAI,KAAK,IAAI,EAAGD,CAAG,GAAK,KAAK,IAAI,EAAGC,CAAG,CACrE,CACA,CACA,SAASC,IAAO,CACd,IAAIzoB,EAAU6nB,GAAeM,EAASL,GAAeY,EAAYR,GAAkBS,EAAaX,GAAmBrT,EAAYsT,GAAkBW,EAAc,CAAC,EAAG,GAAQ,EAAGR,EAAkB,CAAC,CAAC,KAAW,IAAS,EAAG,CAAC,IAAU,GAAQ,CAAC,EAAGS,EAAW,IAAKhG,EAAezF,GAAiBhZ,EAAYwC,GAAS,QAAS,OAAQ,KAAK,EAAGkiB,EAAeC,EAAY/T,EAAagU,EAAa,IAAKC,EAAa,IAAKhU,EAAiB,EAAGiU,EAAc,GAC5b,SAASzL,EAAM7Q,EAAY,CACzBA,EAAW,SAAS,SAAUmb,EAAgB,EAAE,GAAG,aAAcoB,EAAS,CAAE,QAAS,EAAK,CAAE,EAAE,GAAG,iBAAkBhU,CAAW,EAAE,GAAG,gBAAiBiU,CAAU,EAAE,OAAOzU,CAAS,EAAE,GAAG,kBAAmBS,CAAY,EAAE,GAAG,iBAAkBC,CAAU,EAAE,GAAG,iCAAkCC,CAAU,EAAE,MAAM,8BAA+B,eAAe,CAChW,CACEmI,EAAM,UAAY,SAAS4L,EAAY9B,EAAWvU,EAAOvO,EAAO,CAC9D,IAAImI,EAAayc,EAAW,UAAYA,EAAW,UAAS,EAAKA,EACjEzc,EAAW,SAAS,SAAUmb,EAAgB,EAC1CsB,IAAezc,EACjB6U,EAAU4H,EAAY9B,EAAWvU,EAAOvO,CAAK,EAE7CmI,EAAW,YAAY,KAAK,UAAW,CACrC2I,EAAQ,KAAM,SAAS,EAAE,MAAM9Q,CAAK,EAAE,MAAK,EAAG,KAAK,KAAM,OAAO8iB,GAAc,WAAaA,EAAU,MAAM,KAAM,SAAS,EAAIA,CAAS,EAAE,IAAG,CACpJ,CAAO,CAEP,EACE9J,EAAM,QAAU,SAAS7Q,EAAY4L,EAAG1C,EAAGrR,EAAO,CAChDgZ,EAAM,QAAQ7Q,EAAY,UAAW,CACnC,IAAI0c,EAAK,KAAK,OAAO,EAAGC,EAAK,OAAO/Q,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EAClF,OAAO8Q,EAAKC,CAClB,EAAOzT,EAAGrR,CAAK,CACf,EACEgZ,EAAM,QAAU,SAAS7Q,EAAY4L,EAAG1C,EAAGrR,EAAO,CAChDgZ,EAAM,UAAU7Q,EAAY,UAAW,CACrC,IAAItH,EAAI6iB,EAAO,MAAM,KAAM,SAAS,EAAG/H,EAAK,KAAK,OAAQlK,EAAKJ,GAAK,KAAO0T,EAASlkB,CAAC,EAAI,OAAOwQ,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EAAG4H,EAAK0C,EAAG,OAAOlK,CAAE,EAAGqT,EAAK,OAAO/Q,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EAC9N,OAAOkQ,EAAUnM,EAAUM,EAAMuD,EAAImJ,CAAE,EAAGrT,EAAIwH,CAAE,EAAGpY,EAAG8iB,CAAe,CAC3E,EAAOtS,EAAGrR,CAAK,CACf,EACEgZ,EAAM,YAAc,SAAS7Q,EAAYtD,EAAG0K,EAAGvP,EAAO,CACpDgZ,EAAM,UAAU7Q,EAAY,UAAW,CACrC,OAAO8b,EAAU,KAAK,OAAO,UAC3B,OAAOpf,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EACrD,OAAO0K,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,CAC7D,EAASmU,EAAO,MAAM,KAAM,SAAS,EAAGC,CAAe,CACvD,EAAO,KAAM3jB,CAAK,CAClB,EACEgZ,EAAM,YAAc,SAAS7Q,EAAYtD,EAAG0K,EAAG8B,EAAGrR,EAAO,CACvDgZ,EAAM,UAAU7Q,EAAY,UAAW,CACrC,IAAItH,EAAI6iB,EAAO,MAAM,KAAM,SAAS,EAAGphB,EAAI,KAAK,OAAQmP,EAAKJ,GAAK,KAAO0T,EAASlkB,CAAC,EAAI,OAAOwQ,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EAC5I,OAAO4S,EAAUhB,GAAS,UAAUxR,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAMnP,EAAE,CAAC,EAAE,UAC3D,OAAOuC,GAAM,WAAa,CAACA,EAAE,MAAM,KAAM,SAAS,EAAI,CAACA,EACvD,OAAO0K,GAAM,WAAa,CAACA,EAAE,MAAM,KAAM,SAAS,EAAI,CAACA,CAC/D,EAAS1O,EAAG8iB,CAAe,CAC3B,EAAOtS,EAAGrR,CAAK,CACf,EACE,SAASoY,EAAM0K,EAAW/O,EAAG,CAC3B,OAAAA,EAAI,KAAK,IAAIoQ,EAAY,CAAC,EAAG,KAAK,IAAIA,EAAY,CAAC,EAAGpQ,CAAC,CAAC,EACjDA,IAAM+O,EAAU,EAAIA,EAAY,IAAIC,GAAUhP,EAAG+O,EAAU,EAAGA,EAAU,CAAC,CACpF,CACE,SAAShL,EAAUgL,EAAWrR,EAAIwH,EAAI,CACpC,IAAIpU,EAAI4M,EAAG,CAAC,EAAIwH,EAAG,CAAC,EAAI6J,EAAU,EAAGvT,EAAIkC,EAAG,CAAC,EAAIwH,EAAG,CAAC,EAAI6J,EAAU,EACnE,OAAOje,IAAMie,EAAU,GAAKvT,IAAMuT,EAAU,EAAIA,EAAY,IAAIC,GAAUD,EAAU,EAAGje,EAAG0K,CAAC,CAC/F,CACE,SAASwV,EAASC,EAAS,CACzB,MAAO,EAAE,CAACA,EAAQ,CAAC,EAAE,CAAC,GAAI,CAACA,EAAQ,CAAC,EAAE,CAAC,GAAK,GAAI,CAACA,EAAQ,CAAC,EAAE,CAAC,GAAI,CAACA,EAAQ,CAAC,EAAE,CAAC,GAAK,CAAC,CACxF,CACE,SAAShI,EAAUe,EAAY+E,EAAWvU,EAAOvO,EAAO,CACtD+d,EAAW,GAAG,aAAc,UAAW,CACrCjN,EAAQ,KAAM,SAAS,EAAE,MAAM9Q,CAAK,EAAE,MAAK,CACjD,CAAK,EAAE,GAAG,0BAA2B,UAAW,CAC1C8Q,EAAQ,KAAM,SAAS,EAAE,MAAM9Q,CAAK,EAAE,IAAG,CAC/C,CAAK,EAAE,MAAM,OAAQ,UAAW,CAC1B,IAAIkD,EAAO,KAAMzH,EAAO,UAAWkY,EAAI7C,EAAQ5N,EAAMzH,CAAI,EAAE,MAAMuE,CAAK,EAAGa,EAAI6iB,EAAO,MAAMxgB,EAAMzH,CAAI,EAAG4V,EAAI9C,GAAS,KAAOwW,EAASlkB,CAAC,EAAI,OAAO0N,GAAU,WAAaA,EAAM,MAAMrL,EAAMzH,CAAI,EAAI8S,EAAO0W,GAAI,KAAK,IAAIpkB,EAAE,CAAC,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAGoI,EAAI/F,EAAK,OAAQgG,EAAI,OAAO4Z,GAAc,WAAaA,EAAU,MAAM5f,EAAMzH,CAAI,EAAIqnB,EAAW1gB,EAAIgc,EAAanV,EAAE,OAAOoI,CAAC,EAAE,OAAO4T,GAAIhc,EAAE,CAAC,EAAGC,EAAE,OAAOmI,CAAC,EAAE,OAAO4T,GAAI/b,EAAE,CAAC,CAAC,EACra,OAAO,SAAS5G,GAAG,CACjB,GAAIA,KAAM,EACRA,GAAI4G,MACD,CACH,IAAIoK,GAAIlR,EAAEE,EAAC,EAAGyR,GAAIkR,GAAI3R,GAAE,CAAC,EACzBhR,GAAI,IAAIygB,GAAUhP,GAAG1C,EAAE,CAAC,EAAIiC,GAAE,CAAC,EAAIS,GAAG1C,EAAE,CAAC,EAAIiC,GAAE,CAAC,EAAIS,EAAC,CAC/D,CACQJ,EAAE,KAAK,KAAMrR,EAAC,CACtB,CACA,CAAK,CACL,CACE,SAASwO,EAAQ5N,EAAMzH,EAAMypB,EAAO,CAClC,MAAO,CAACA,GAAShiB,EAAK,WAAa,IAAIiiB,EAAQjiB,EAAMzH,CAAI,CAC7D,CACE,SAAS0pB,EAAQjiB,EAAMzH,EAAM,CAC3B,KAAK,KAAOyH,EACZ,KAAK,KAAOzH,EACZ,KAAK,OAAS,EACd,KAAK,YAAc,KACnB,KAAK,OAASioB,EAAO,MAAMxgB,EAAMzH,CAAI,EACrC,KAAK,KAAO,CAChB,CACE0pB,EAAQ,UAAY,CAClB,MAAO,SAASnlB,EAAO,CACrB,OAAIA,IACF,KAAK,YAAcA,GACd,IACb,EACI,MAAO,UAAW,CAChB,MAAI,EAAE,KAAK,SAAW,IACpB,KAAK,KAAK,UAAY,KACtB,KAAK,KAAK,OAAO,GAEZ,IACb,EACI,KAAM,SAAS1C,EAAKwlB,EAAW,CAC7B,OAAI,KAAK,OAASxlB,IAAQ,UACxB,KAAK,MAAM,CAAC,EAAIwlB,EAAU,OAAO,KAAK,MAAM,CAAC,CAAC,GAC5C,KAAK,QAAUxlB,IAAQ,UACzB,KAAK,OAAO,CAAC,EAAIwlB,EAAU,OAAO,KAAK,OAAO,CAAC,CAAC,GAC9C,KAAK,QAAUxlB,IAAQ,UACzB,KAAK,OAAO,CAAC,EAAIwlB,EAAU,OAAO,KAAK,OAAO,CAAC,CAAC,GAClD,KAAK,KAAK,OAASA,EACnB,KAAK,KAAK,MAAM,EACT,IACb,EACI,IAAK,UAAW,CACd,MAAI,EAAE,KAAK,SAAW,IACpB,OAAO,KAAK,KAAK,UACjB,KAAK,KAAK,KAAK,GAEV,IACb,EACI,KAAM,SAAS7f,EAAM,CACnB,IAAI6M,EAAI5B,GAAO,KAAK,IAAI,EAAE,MAAK,EAC/BvO,EAAU,KACRsD,EACA,KAAK,KACL,IAAI4f,GAAU5f,EAAM,CAClB,YAAa,KAAK,YAClB,OAAQ+V,EAER,UAAW,KAAK,KAAK,OACrB,SAAUrZ,CACpB,CAAS,EACDmQ,CACR,CACA,CACA,EACE,SAAS4U,EAAQ1kB,KAAUvE,EAAM,CAC/B,GAAI,CAACF,EAAQ,MAAM,KAAM,SAAS,EAChC,OACF,IAAIoY,EAAI7C,EAAQ,KAAMrV,CAAI,EAAE,MAAMuE,CAAK,EAAGsC,EAAI,KAAK,OAAQyR,EAAI,KAAK,IAAIoQ,EAAY,CAAC,EAAG,KAAK,IAAIA,EAAY,CAAC,EAAG7hB,EAAE,EAAI,KAAK,IAAI,EAAG4hB,EAAW,MAAM,KAAM,SAAS,CAAC,CAAC,CAAC,EAAG7S,EAAIhD,GAAQrO,CAAK,EAC1L,GAAI2T,EAAE,OACAA,EAAE,MAAM,CAAC,EAAE,CAAC,IAAMtC,EAAE,CAAC,GAAKsC,EAAE,MAAM,CAAC,EAAE,CAAC,IAAMtC,EAAE,CAAC,KACjDsC,EAAE,MAAM,CAAC,EAAIrR,EAAE,OAAOqR,EAAE,MAAM,CAAC,EAAItC,CAAC,GAEtC,aAAasC,EAAE,KAAK,MACf,IAAIrR,EAAE,IAAMyR,EACjB,OAEAJ,EAAE,MAAQ,CAACtC,EAAG/O,EAAE,OAAO+O,CAAC,CAAC,EACzBiM,GAAU,IAAI,EACd3J,EAAE,MAAK,EAETwP,GAAQnjB,CAAK,EACb2T,EAAE,MAAQ,WAAWyR,EAAYZ,CAAU,EAC3C7Q,EAAE,KAAK,QAASsQ,EAAUnM,EAAUM,EAAM9V,EAAGyR,CAAC,EAAGJ,EAAE,MAAM,CAAC,EAAGA,EAAE,MAAM,CAAC,CAAC,EAAGA,EAAE,OAAQgQ,CAAe,CAAC,EACpG,SAASyB,GAAa,CACpBzR,EAAE,MAAQ,KACVA,EAAE,IAAG,CACX,CACA,CACE,SAASjD,EAAY1Q,KAAUvE,EAAM,CACnC,GAAI8U,GAAe,CAAChV,EAAQ,MAAM,KAAM,SAAS,EAC/C,OACF,IAAI8pB,EAAgBrlB,EAAM,cAAe2T,EAAI7C,EAAQ,KAAMrV,EAAM,EAAI,EAAE,MAAMuE,CAAK,EAAGxC,EAAI0Q,GAAOlO,EAAM,IAAI,EAAE,GAAG,iBAAkBgR,EAAY,EAAI,EAAE,GAAG,eAAgBC,GAAY,EAAI,EAAGI,EAAIhD,GAAQrO,EAAOqlB,CAAa,EAAGC,EAAKtlB,EAAM,QAASulB,EAAKvlB,EAAM,QAC3P6O,GAAY7O,EAAM,IAAI,EACtBkjB,GAAcljB,CAAK,EACnB2T,EAAE,MAAQ,CAACtC,EAAG,KAAK,OAAO,OAAOA,CAAC,CAAC,EACnCiM,GAAU,IAAI,EACd3J,EAAE,MAAK,EACP,SAAS3C,EAAWO,EAAQ,CAE1B,GADA4R,GAAQ5R,CAAM,EACV,CAACoC,EAAE,MAAO,CACZ,IAAInE,EAAK+B,EAAO,QAAU+T,EAAI7V,EAAK8B,EAAO,QAAUgU,EACpD5R,EAAE,MAAQnE,EAAKA,EAAKC,EAAKA,EAAKe,CACtC,CACMmD,EAAE,MAAMpC,CAAM,EAAE,KAAK,QAAS0S,EAAUnM,EAAUnE,EAAE,KAAK,OAAQA,EAAE,MAAM,CAAC,EAAItF,GAAQkD,EAAQ8T,CAAa,EAAG1R,EAAE,MAAM,CAAC,CAAC,EAAGA,EAAE,OAAQgQ,CAAe,CAAC,CAC3J,CACI,SAAS1S,GAAWM,EAAQ,CAC1B/T,EAAE,GAAG,8BAA+B,IAAI,EACxCwR,GAAQuC,EAAO,KAAMoC,EAAE,KAAK,EAC5BwP,GAAQ5R,CAAM,EACdoC,EAAE,MAAMpC,CAAM,EAAE,IAAG,CACzB,CACA,CACE,SAASoT,EAAW3kB,KAAUvE,EAAM,CAClC,GAAKF,EAAQ,MAAM,KAAM,SAAS,EAElC,KAAIogB,EAAK,KAAK,OAAQlK,EAAKpD,GAAQrO,EAAM,eAAiBA,EAAM,eAAe,CAAC,EAAIA,EAAO,IAAI,EAAGiZ,EAAK0C,EAAG,OAAOlK,CAAE,EAAGqT,EAAKnJ,EAAG,GAAK3b,EAAM,SAAW,GAAM,GAAI4b,EAAKqI,EAAUnM,EAAUM,EAAMuD,EAAImJ,CAAE,EAAGrT,EAAIwH,CAAE,EAAGyK,EAAO,MAAM,KAAMjoB,CAAI,EAAGkoB,CAAe,EACxPR,GAAQnjB,CAAK,EACTokB,EAAW,EACblW,GAAO,IAAI,EAAE,WAAU,EAAG,SAASkW,CAAQ,EAAE,KAAKpH,EAAWpB,EAAInK,EAAIzR,CAAK,EAE1EkO,GAAO,IAAI,EAAE,KAAK8K,EAAM,UAAW4C,EAAInK,EAAIzR,CAAK,EACtD,CACE,SAAS2Q,EAAa3Q,KAAUvE,EAAM,CACpC,GAAKF,EAAQ,MAAM,KAAM,SAAS,EAElC,KAAI2V,EAAUlR,EAAM,QAASf,EAAIiS,EAAQ,OAAQyC,EAAI7C,EAAQ,KAAMrV,EAAMuE,EAAM,eAAe,SAAWf,CAAC,EAAE,MAAMe,CAAK,EAAGwlB,EAASpjB,EAAGE,EAAG+O,EAEzI,IADA6R,GAAcljB,CAAK,EACdoC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,EACnBE,EAAI4O,EAAQ9O,CAAC,EAAGiP,EAAIhD,GAAQ/L,EAAG,IAAI,EACnC+O,EAAI,CAACA,EAAG,KAAK,OAAO,OAAOA,CAAC,EAAG/O,EAAE,UAAU,EACtCqR,EAAE,OAEE,CAACA,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAMtC,EAAE,CAAC,IACvCsC,EAAE,OAAStC,EAAGsC,EAAE,KAAO,IAFvBA,EAAE,OAAStC,EAAGmU,EAAU,GAAM7R,EAAE,KAAO,EAAI,CAAC,CAAC0Q,GAI7CA,IACFA,EAAgB,aAAaA,CAAa,GACxCmB,IACE7R,EAAE,KAAO,IACX2Q,EAAajT,EAAE,CAAC,EAAGgT,EAAgB,WAAW,UAAW,CACvDA,EAAgB,IAC1B,EAAWE,CAAU,GACfjH,GAAU,IAAI,EACd3J,EAAE,MAAK,GAEb,CACE,SAAS/C,EAAW5Q,KAAUvE,EAAM,CAClC,GAAK,KAAK,UAEV,KAAIkY,EAAI7C,EAAQ,KAAMrV,CAAI,EAAE,MAAMuE,CAAK,EAAGkR,EAAUlR,EAAM,eAAgBf,EAAIiS,EAAQ,OAAQ9O,EAAGE,EAAG+O,EAAGiC,EAEvG,IADA6P,GAAQnjB,CAAK,EACRoC,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,EACnBE,EAAI4O,EAAQ9O,CAAC,EAAGiP,EAAIhD,GAAQ/L,EAAG,IAAI,EAC/BqR,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAMrR,EAAE,WAChCqR,EAAE,OAAO,CAAC,EAAItC,EACPsC,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAMrR,EAAE,aACrCqR,EAAE,OAAO,CAAC,EAAItC,GAGlB,GADA/O,EAAIqR,EAAE,KAAK,OACPA,EAAE,OAAQ,CACZ,IAAIlC,GAAKkC,EAAE,OAAO,CAAC,EAAG8R,EAAK9R,EAAE,OAAO,CAAC,EAAGsF,EAAKtF,EAAE,OAAO,CAAC,EAAG+R,EAAK/R,EAAE,OAAO,CAAC,EAAGgS,IAAMA,GAAK1M,EAAG,CAAC,EAAIxH,GAAG,CAAC,GAAKkU,IAAMA,GAAK1M,EAAG,CAAC,EAAIxH,GAAG,CAAC,GAAKkU,GAAIC,IAAMA,GAAKF,EAAG,CAAC,EAAID,EAAG,CAAC,GAAKG,IAAMA,GAAKF,EAAG,CAAC,EAAID,EAAG,CAAC,GAAKG,GAChMtjB,EAAI8V,EAAM9V,EAAG,KAAK,KAAKqjB,GAAKC,EAAE,CAAC,EAC/BvU,EAAI,EAAEI,GAAG,CAAC,EAAIwH,EAAG,CAAC,GAAK,GAAIxH,GAAG,CAAC,EAAIwH,EAAG,CAAC,GAAK,CAAC,EAC7C3F,EAAI,EAAEmS,EAAG,CAAC,EAAIC,EAAG,CAAC,GAAK,GAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,GAAK,CAAC,CACnD,SAAe/R,EAAE,OACXtC,EAAIsC,EAAE,OAAO,CAAC,EAAGL,EAAIK,EAAE,OAAO,CAAC,MAE/B,QACFA,EAAE,KAAK,QAASsQ,EAAUnM,EAAUxV,EAAG+O,EAAGiC,CAAC,EAAGK,EAAE,OAAQgQ,CAAe,CAAC,EAC5E,CACE,SAAS9S,EAAW7Q,KAAUvE,EAAM,CAClC,GAAK,KAAK,UAEV,KAAIkY,EAAI7C,EAAQ,KAAMrV,CAAI,EAAE,MAAMuE,CAAK,EAAGkR,EAAUlR,EAAM,eAAgBf,EAAIiS,EAAQ,OAAQ9O,EAAGE,EAOjG,IANA4gB,GAAcljB,CAAK,EACfuQ,GACF,aAAaA,CAAW,EAC1BA,EAAc,WAAW,UAAW,CAClCA,EAAc,IACpB,EAAOgU,CAAU,EACRniB,EAAI,EAAGA,EAAInD,EAAG,EAAEmD,EACnBE,EAAI4O,EAAQ9O,CAAC,EACTuR,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAMrR,EAAE,WAChC,OAAOqR,EAAE,OACFA,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAMrR,EAAE,YACrC,OAAOqR,EAAE,OAIb,GAFIA,EAAE,QAAU,CAACA,EAAE,SACjBA,EAAE,OAASA,EAAE,OAAQ,OAAOA,EAAE,QAC5BA,EAAE,OACJA,EAAE,OAAO,CAAC,EAAI,KAAK,OAAO,OAAOA,EAAE,OAAO,CAAC,CAAC,UAE5CA,EAAE,IAAG,EACDA,EAAE,OAAS,IACbrR,EAAI+L,GAAQ/L,EAAG,IAAI,EACf,KAAK,MAAMgiB,EAAW,CAAC,EAAIhiB,EAAE,CAAC,EAAGgiB,EAAW,CAAC,EAAIhiB,EAAE,CAAC,CAAC,EAAImiB,GAAa,CACxE,IAAIpT,EAAInD,GAAO,IAAI,EAAE,GAAG,eAAe,EACnCmD,GACFA,EAAE,MAAM,KAAM,SAAS,CACnC,EAGA,CACE,OAAA2H,EAAM,WAAa,SAAS3W,EAAG,CAC7B,OAAO,UAAU,QAAU6hB,EAAa,OAAO7hB,GAAM,WAAaA,EAAIugB,GAAS,CAACvgB,CAAC,EAAG2W,GAASkL,CACjG,EACElL,EAAM,OAAS,SAAS3W,EAAG,CACzB,OAAO,UAAU,QAAU9G,EAAU,OAAO8G,GAAM,WAAaA,EAAIugB,GAAS,CAAC,CAACvgB,CAAC,EAAG2W,GAASzd,CAC/F,EACEyd,EAAM,UAAY,SAAS3W,EAAG,CAC5B,OAAO,UAAU,QAAU6N,EAAY,OAAO7N,GAAM,WAAaA,EAAIugB,GAAS,CAAC,CAACvgB,CAAC,EAAG2W,GAAS9I,CACjG,EACE8I,EAAM,OAAS,SAAS3W,EAAG,CACzB,OAAO,UAAU,QAAUqhB,EAAS,OAAOrhB,GAAM,WAAaA,EAAIugB,GAAS,CAAC,CAAC,CAACvgB,EAAE,CAAC,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAG,CAAC,CAACA,EAAE,CAAC,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAG2W,GAAS0K,CACvI,EACE1K,EAAM,YAAc,SAAS3W,EAAG,CAC9B,OAAO,UAAU,QAAU8hB,EAAY,CAAC,EAAI,CAAC9hB,EAAE,CAAC,EAAG8hB,EAAY,CAAC,EAAI,CAAC9hB,EAAE,CAAC,EAAG2W,GAAS,CAACmL,EAAY,CAAC,EAAGA,EAAY,CAAC,CAAC,CACvH,EACEnL,EAAM,gBAAkB,SAAS3W,EAAG,CAClC,OAAO,UAAU,QAAUshB,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACthB,EAAE,CAAC,EAAE,CAAC,EAAGshB,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACthB,EAAE,CAAC,EAAE,CAAC,EAAGshB,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACthB,EAAE,CAAC,EAAE,CAAC,EAAGshB,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACthB,EAAE,CAAC,EAAE,CAAC,EAAG2W,GAAS,CAAC,CAAC2K,EAAgB,CAAC,EAAE,CAAC,EAAGA,EAAgB,CAAC,EAAE,CAAC,CAAC,EAAG,CAACA,EAAgB,CAAC,EAAE,CAAC,EAAGA,EAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAC/Q,EACE3K,EAAM,UAAY,SAAS3W,EAAG,CAC5B,OAAO,UAAU,QAAU4hB,EAAY5hB,EAAG2W,GAASiL,CACvD,EACEjL,EAAM,SAAW,SAAS3W,EAAG,CAC3B,OAAO,UAAU,QAAU+hB,EAAW,CAAC/hB,EAAG2W,GAASoL,CACvD,EACEpL,EAAM,YAAc,SAAS3W,EAAG,CAC9B,OAAO,UAAU,QAAU+b,EAAe/b,EAAG2W,GAASoF,CAC1D,EACEpF,EAAM,GAAK,UAAW,CACpB,IAAI1a,EAAQqB,EAAU,GAAG,MAAMA,EAAW,SAAS,EACnD,OAAOrB,IAAUqB,EAAYqZ,EAAQ1a,CACzC,EACE0a,EAAM,cAAgB,SAAS3W,EAAG,CAChC,OAAO,UAAU,QAAUmO,GAAkBnO,EAAI,CAACA,GAAKA,EAAG2W,GAAS,KAAK,KAAKxI,CAAc,CAC/F,EACEwI,EAAM,YAAc,SAAS3W,EAAG,CAC9B,OAAO,UAAU,QAAUoiB,EAAc,CAACpiB,EAAG2W,GAASyL,CAC1D,EACSzL,CACT,CACA,IAAI6M,GAA6BC,IAC/BA,EAAU,KAAU,OACpBA,EAAU,IAAS,MACnBA,EAAU,MAAW,QACrBA,EAAU,OAAY,SACfA,IACND,GAAY,CAAA,CAAE,EACbE,IAAkCC,IACpCA,EAAe,QAAa,UAC5BA,EAAe,KAAU,OAClBA,IACND,IAAiB,CAAA,CAAE,EAClBE,IAAuCC,IACzCA,EAAoB,OAAY,UAChCA,EAAoB,aAAkB,gBACtCA,EAAoB,SAAc,WAClCA,EAAoB,KAAU,OAC9BA,EAAoB,WAAgB,aAC7BA,IACND,IAAsB,CAAA,CAAE,EACvBE,IAAmCC,IACrCA,EAAgB,OAAY,SAC5BA,EAAgB,MAAW,QACpBA,IACND,IAAkB,CAAA,CAAE,EACnBE,IAA+BC,IACjCA,EAAY,MAAW,QACvBA,EAAY,YAAiB,cACtBA,IACND,IAAc,CAAA,CAAE,EACfE,IAAoCC,IACtCA,EAAiB,KAAU,OAC3BA,EAAiB,SAAc,WAC/BA,EAAiB,WAAgB,aAC1BA,IACND,IAAmB,CAAA,CAAE,EAUxB,MAAME,GAAY,CAAC,QAAS,SAAU,UAAU,EAC1CC,GAAa,OAAO,SAAa,IAAc,SAAW,KAChE,SAASC,GAAe3mB,EAAO,CAC7B,IAAIvC,EAAIyD,EACR,MAAMzB,IAAWyB,GAAMzD,EAAKuC,EAAM,eAAiB,KAAO,OAASvC,EAAG,KAAKuC,CAAK,IAAM,KAAO,OAASkB,EAAG,CAAC,IAAMlB,EAAM,OAChH4mB,EAAe,OAAkCnnB,GAAO,cAAkB,WAAaA,EAAO,aAAa,iBAAiB,EAAI,GAChIonB,EAAU,OAAkCpnB,GAAO,SAAa,WAAaA,EAAO,QAAQ,QAAQ,EAAI,KAC9G,OAAOgnB,GAAU,SAAmChnB,GAAO,QAAQ,GAAKmnB,GAAgB,CAAC,CAACC,CAC5F,CACA,SAASC,GAAmB9mB,EAAO,CACjC,OAAOA,EAAM,SAAWA,EAAM,SAAWA,EAAM,UAAYA,EAAM,MACnE,CACA,SAAS+mB,GAAWC,EAAYC,EAAYC,EAAaC,EAAS,CAChE,MAAMC,EAAiBH,EAAW,QAAQ,IAAK;AAAA,CAAI,EAAE,QAAQ;AAAA;AAAA,EAAQ;AAAA,EAAK,EAAE,MAAM;AAAA,CAAI,EAAE,IAAKlT,GAAMA,EAAE,KAAI,EAAG,aAAa,EACzH,GAAIqT,EAAe,SAAW,EAC5B,OAAOJ,EAAW,gBAAkBC,EAAW,YAAW,EAEvDE,GACHD,EAAY,IAAIF,EAAW,aAAa,EAE1C,MAAMK,EAAUD,EAAe,MAC7B,CAAC9pB,EAAKqf,IAAUuK,EAAY,IAAI5pB,CAAG,GAAK,MAAM,KAAK4pB,EAAY,OAAM,CAAE,EAAEvK,CAAK,IAAMyK,EAAezK,CAAK,CAC5G,EACE,OAAIwK,GACFD,EAAY,OAAOF,EAAW,aAAa,EAEtCK,CACT,CACA,SAASC,GAAmBhnB,EAAW4mB,EAAa,CAClD,OAAQlnB,GAAU,CAChB,GAAI,CAACA,EAAM,MAAQ,CAACA,EAAM,IACxB,MAAO,GAET,MAAMunB,EAAYC,GAAaxnB,EAAM,KAAMM,CAAS,EACpD,OAAI,MAAM,QAAQA,CAAS,EAClBA,EAAU,KAAMhD,GAAQypB,GAAW/mB,EAAMunB,CAAS,EAAGjqB,EAAK4pB,EAAalnB,EAAM,OAAS,OAAO,CAAC,EAEhG+mB,GAAW/mB,EAAMunB,CAAS,EAAGjnB,EAAW4mB,EAAalnB,EAAM,OAAS,OAAO,CACtF,CACA,CACA,SAASwnB,GAAaC,EAAMC,EAAa,CACvC,OAAOA,EAAY,SAASD,CAAI,EAAI,OAAS,KAC/C,CACA,SAASE,GAAYrnB,EAAWzD,EAAS,CACvC,MAAM4C,EAASwC,EAAAA,SAAS,IAAM2lB,EAAAA,QAAqC/qB,GAAQ,MAAM,GAAK6pB,EAAU,EAC1FmB,EAAYC,EAAAA,WAAWF,EAAAA,QAAUtnB,CAAS,IAAM,EAAI,EAC1D,IAAIynB,EAAkB,GACtB,MAAMb,EAA8B,IAAI,IACxC,IAAIc,EAAgBC,EAAkBL,EAAAA,QAAUtnB,CAAS,CAAC,EAC1DvD,EAAAA,MACE,IAAM6qB,EAAAA,QAAUtnB,CAAS,EACzB,CAAC4nB,EAAeC,IAAsB,CAChC,OAAOA,GAAsB,WAAa,OAAOD,GAAkB,WACrEE,EAAK,EAEPJ,EAAgBC,EAAkBC,CAAa,CACrD,EACI,CACE,UAAW,EACjB,CACA,EACE1oB,GAAiB,CAAC,OAAQ,aAAa,EAAG4oB,CAAK,EAC/C7nB,GACE,IAAI9E,IAASusB,EAAc,GAAGvsB,CAAI,EACjCoF,GAAM,CACL,IAAIpD,EAAIyD,EACR,MAAMmnB,EAA6BT,EAAAA,QAAqC/qB,GAAQ,0BAA0B,GAAK,GACzGyrB,EAAiBV,EAAAA,QAAqC/qB,GAAQ,cAAc,GAAK,GAGvF,GAFAkrB,EAAkBjB,GAAmBjmB,CAAC,GACf,CAACknB,GAAmBA,GAAmB,CAACM,IAA+B1B,GAAe9lB,CAAC,EAE5G,OAEF,MAAM0nB,IAAYrnB,GAAMzD,EAAKoD,EAAE,eAAiB,KAAO,OAASpD,EAAG,KAAKoD,CAAC,IAAM,KAAO,OAASK,EAAG,CAAC,IAAML,EAAE,OACrG2nB,EAAmDD,GAAQ,WAAc,UAAwCA,GAAQ,WAAc,IACzI,CAACD,IAAmBP,GAAmB,CAACS,IAC1C3nB,EAAE,eAAc,EAElBgnB,EAAU,MAAQ,EACxB,EACI,CAAE,UAAW,UAAW,OAAApoB,CAAM,CAClC,EACEc,GACE,IAAI9E,IAASusB,EAAc,GAAGvsB,CAAI,EACjCoF,GAAM,CACL,MAAMwnB,EAA6BT,EAAAA,QAAqC/qB,GAAQ,0BAA0B,GAAK,GAC/G,GAAIgrB,EAAU,MAAO,CAEnB,IADuB,CAACE,GAAmBA,GAAmB,CAACM,IAA+B1B,GAAe9lB,CAAC,EAE5G,OAEFknB,EAAkB,GAClBF,EAAU,MAAQ,EAC1B,CACA,EACI,CAAE,UAAW,QAAS,OAAApoB,CAAM,CAChC,EACE,SAAS2oB,GAAQ,CACfL,EAAkB,GAClBb,EAAY,MAAK,EACjBW,EAAU,MAAQD,UAAUtnB,CAAS,IAAM,EAC/C,CACE,SAAS2nB,EAAkBQ,EAAY,CACrC,OAAIA,IAAe,MACjBL,EAAK,EACE,IAAM,IAEX,OAAOK,GAAe,WACxBL,EAAK,EACLP,EAAU,MAAQY,EACX,IAAM,IAEX,MAAM,QAAQA,CAAU,GAAK,OAAOA,GAAe,SAC9CnB,GAAmBmB,EAAYvB,CAAW,EAE5CuB,CACX,CACE,OAAOZ,CACT,CACA,MAAMa,GAAqB,sBACrBC,GAAqB,sBACrBC,GAAoB,sBACpBC,GAAuB,CAAC,QAAS,IAAK,QAAQ,EAC9CC,GAAgB,CACpB,QAAS,CAAE,EAAG,EAAG,EAAG,EAAE,EACtB,UAAW,CAAE,EAAG,EAAG,EAAG,CAAC,EACvB,UAAW,CAAE,EAAG,GAAI,EAAG,CAAC,EACxB,WAAY,CAAE,EAAG,EAAG,EAAG,CAAC,CAC1B,EACA,SAASC,GAAWtkB,EAAM,CACxB,MAAO,CACL,GAAGA,EAAK,kBAAoB,CAAE,EAAG,EAAG,EAAG,CAAC,EACxC,MAAOA,EAAK,WAAW,OAAS,EAChC,OAAQA,EAAK,WAAW,QAAU,CACtC,CACA,CACA,SAASukB,GAAmBC,EAAOC,EAAO,CACxC,MAAMC,EAAW,KAAK,IAAI,EAAG,KAAK,IAAIF,EAAM,EAAIA,EAAM,MAAOC,EAAM,EAAIA,EAAM,KAAK,EAAI,KAAK,IAAID,EAAM,EAAGC,EAAM,CAAC,CAAC,EAC1GE,EAAW,KAAK,IAAI,EAAG,KAAK,IAAIH,EAAM,EAAIA,EAAM,OAAQC,EAAM,EAAIA,EAAM,MAAM,EAAI,KAAK,IAAID,EAAM,EAAGC,EAAM,CAAC,CAAC,EAClH,OAAO,KAAK,KAAKC,EAAWC,CAAQ,CACtC,CACA,SAASC,GAAc5kB,EAAM,CAC3B,MAAO,CACL,MAAOA,EAAK,YACZ,OAAQA,EAAK,YACjB,CACA,CACA,SAAS6kB,GAAMpuB,EAAKsZ,EAAM,EAAGC,EAAM,EAAG,CACpC,OAAO,KAAK,IAAI,KAAK,IAAIvZ,EAAKsZ,CAAG,EAAGC,CAAG,CACzC,CACA,SAAS8U,GAAcC,EAAU9F,EAAQ,CACvC,MAAO,CACL,EAAG4F,GAAME,EAAS,EAAG9F,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,EAC/C,EAAG4F,GAAME,EAAS,EAAG9F,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CACnD,CACA,CACA,SAAS+F,GAAkBC,EAAS,CAClC,MAAMC,EAAMD,EAAQ,YAAW,EAC/B,MAAI,qBAAsBC,EACjBA,EAEF,OAAO,QAChB,CACA,SAASC,GAAOF,EAAS,CACvB,OAAOA,GAAW,OAAOA,GAAY,UAAY,OAAQA,GAAW,WAAYA,GAAW,WAAYA,CACzG,CAIA,SAASG,GAAOH,EAAS,CACvB,OAAOA,GAAW,OAAOA,GAAY,UAAY,OAAQA,GAAW,aAAcA,GAAW,CAACE,GAAOF,CAAO,CAC9G,CACA,SAASI,GAAYJ,EAAS,CAC5B,OAAOG,GAAOH,CAAO,GAAK,qBAAsBA,CAClD,CACA,SAASK,GAAU9qB,EAAG,CACpB,MAAO,CAAC,OAAO,MAAMA,CAAC,GAAK,OAAO,SAASA,CAAC,CAC9C,CACA,SAAS+qB,GAAOC,EAAK,CACnB,OAAOF,GAAUE,EAAI,KAAK,GAAKF,GAAUE,EAAI,MAAM,GAAKF,GAAUE,EAAI,CAAC,GAAKF,GAAUE,EAAI,CAAC,CAC7F,CACA,SAASC,GAAUzlB,EAAM0lB,EAAcC,EAAY,CACjD,MAAMC,EAAe,CACnB,GAAI5lB,EAAK,GAAG,SAAQ,EACpB,KAAMA,EAAK,MAAQ,UACnB,WAAY6lB,EAAAA,QAAQ,CAClB,MAAO,EACP,OAAQ,CACd,CAAK,EACD,iBAAkBA,EAAAA,QAAQ,CACxB,EAAG,EACH,GAAG7lB,EAAK,QACd,CAAK,EAED,aAAc,CACZ,OAAQ,CAAA,EACR,OAAQ,CAAA,CACd,EACI,UAAW,OACX,WAAY,OACZ,YAAa,OACb,UAAW,OACX,SAAU,GACV,SAAU,GACV,SAAU,GACV,YAAa,GACb,SAAU,GACV,SAAU,CACR,EAAG,EACH,EAAG,CACT,EACI,KAAM8lB,GAAM9lB,EAAK,IAAI,EAAIA,EAAK,KAAO,CAAA,EACrC,OAAQ6lB,EAAAA,QAAQC,GAAM9lB,EAAK,MAAM,EAAIA,EAAK,OAAS,CAAA,CAAE,CACzD,EACE,OAAO,OAAO,OAAO0lB,GAAgBE,EAAc5lB,EAAM,CAAE,GAAIA,EAAK,GAAG,SAAQ,EAAI,WAAA2lB,CAAU,CAAE,CACjG,CACA,SAASI,GAAUC,EAAMC,EAAcC,EAAoB,CACzD,IAAIltB,EAAIyD,EACR,MAAMmpB,EAAe,CACnB,GAAII,EAAK,GAAG,SAAQ,EACpB,KAAMA,EAAK,MAAyCC,GAAa,MAAS,UAC1E,OAAQD,EAAK,OAAO,SAAQ,EAC5B,OAAQA,EAAK,OAAO,SAAQ,EAC5B,cAAehtB,EAAKgtB,EAAK,eAAiB,KAAO,OAAShtB,EAAG,SAAQ,EACrE,cAAeyD,EAAKupB,EAAK,eAAiB,KAAO,OAASvpB,EAAG,SAAQ,EACrE,UAAWupB,EAAK,WAAoDE,GAAmB,UACvF,WAAYF,EAAK,YAAqDE,GAAmB,WACzF,UAAWF,EAAK,WAAoDE,GAAmB,UACvF,KAAMJ,GAAME,EAAK,IAAI,EAAIA,EAAK,KAAO,CAAA,EACrC,OAAQH,EAAAA,QAAQC,GAAME,EAAK,MAAM,EAAIA,EAAK,OAAS,EAAE,EACrD,MAAOA,EAAK,OAAS,GACrB,iBAAkBA,EAAK,kBAA2DE,GAAmB,iBACrG,GAAGA,GAAsB,CAAA,CAC7B,EACE,OAAO,OAAO,OAAOD,GAAgBL,EAAcI,EAAM,CAAE,GAAIA,EAAK,GAAG,SAAQ,CAAE,CAAE,CACrF,CACA,SAASG,GAAqBC,EAAUC,EAAOC,EAAOC,EAAK,CACzD,MAAMtO,EAAM,OAAOmO,GAAa,SAAWA,EAAWA,EAAS,GACzDI,EAA+B,IAAI,IACnCC,EAASF,IAAQ,SAAW,SAAW,SAC7C,UAAWP,KAAQM,EACbN,EAAKS,CAAM,IAAMxO,GACnBuO,EAAa,IAAIR,EAAKO,CAAG,CAAC,EAG9B,OAAOF,EAAM,OAAQ7rB,GAAMgsB,EAAa,IAAIhsB,EAAE,EAAE,CAAC,CACnD,CACA,SAASksB,MAAe1vB,EAAM,CAC5B,GAAIA,EAAK,SAAW,EAAG,CACrB,KAAM,CAAC2vB,EAAWN,EAAOC,CAAK,EAAItvB,EAClC,OAAOmvB,GAAqBQ,EAAWN,EAAOC,EAAO,QAAQ,CACjE,CACE,KAAM,CAACF,EAAUQ,CAAQ,EAAI5vB,EACvB6vB,EAAS,OAAOT,GAAa,SAAWA,EAAWA,EAAS,GAElE,OADiBQ,EAAS,OAAQtrB,GAAO6pB,GAAO7pB,CAAE,GAAKA,EAAG,SAAWurB,CAAM,EAC3D,IAAKb,GAASY,EAAS,KAAMtrB,GAAO8pB,GAAO9pB,CAAE,GAAKA,EAAG,KAAO0qB,EAAK,MAAM,CAAC,CAC1F,CACA,SAASc,MAAe9vB,EAAM,CAC5B,GAAIA,EAAK,SAAW,EAAG,CACrB,KAAM,CAAC2vB,EAAWN,EAAOC,CAAK,EAAItvB,EAClC,OAAOmvB,GAAqBQ,EAAWN,EAAOC,EAAO,QAAQ,CACjE,CACE,KAAM,CAACF,EAAUQ,CAAQ,EAAI5vB,EACvB6vB,EAAS,OAAOT,GAAa,SAAWA,EAAWA,EAAS,GAElE,OADiBQ,EAAS,OAAQtrB,GAAO6pB,GAAO7pB,CAAE,GAAKA,EAAG,SAAWurB,CAAM,EAC3D,IAAKb,GAASY,EAAS,KAAMtrB,GAAO8pB,GAAO9pB,CAAE,GAAKA,EAAG,KAAO0qB,EAAK,MAAM,CAAC,CAC1F,CACA,SAASe,GAAU,CAAE,OAAA7uB,EAAQ,aAAA8uB,EAAc,OAAAhsB,EAAQ,aAAAisB,CAAY,EAAI,CACjE,MAAO,iBAAiB/uB,CAAM,GAAG8uB,GAAgB,EAAE,IAAIhsB,CAAM,GAAGisB,GAAgB,EAAE,EACpF,CACA,SAASC,GAAiBlB,EAAMY,EAAU,CACxC,OAAOA,EAAS,KACbtrB,GAAO6pB,GAAO7pB,CAAE,GAAKA,EAAG,SAAW0qB,EAAK,QAAU1qB,EAAG,SAAW0qB,EAAK,SAAW1qB,EAAG,eAAiB0qB,EAAK,cAAgB,CAAC1qB,EAAG,cAAgB,CAAC0qB,EAAK,gBAAkB1qB,EAAG,eAAiB0qB,EAAK,cAAgB,CAAC1qB,EAAG,cAAgB,CAAC0qB,EAAK,aAC7O,CACA,CA2CA,SAASmB,GAAqB,CAAE,EAAA/mB,EAAG,EAAA0K,CAAC,EAAI,CAAE,EAAGsc,EAAI,EAAGC,EAAI,KAAMC,CAAM,EAAI,CACtE,MAAO,CACL,EAAGlnB,EAAIknB,EAASF,EAChB,EAAGtc,EAAIwc,EAASD,CACpB,CACA,CACA,SAASE,GAAqB,CAAE,EAAAnnB,EAAG,EAAA0K,CAAC,EAAI,CAAE,EAAGsc,EAAI,EAAGC,EAAI,KAAMC,CAAM,EAAIE,EAAa,GAAOC,EAAW,CAAC,EAAG,CAAC,EAAG,CAC7G,MAAM1C,EAAW,CACf,GAAI3kB,EAAIgnB,GAAME,EACd,GAAIxc,EAAIuc,GAAMC,CAClB,EACE,OAAOE,EAAaE,GAAa3C,EAAU0C,CAAQ,EAAI1C,CACzD,CACA,SAAS4C,GAAiBC,EAAMC,EAAM,CACpC,MAAO,CACL,EAAG,KAAK,IAAID,EAAK,EAAGC,EAAK,CAAC,EAC1B,EAAG,KAAK,IAAID,EAAK,EAAGC,EAAK,CAAC,EAC1B,GAAI,KAAK,IAAID,EAAK,GAAIC,EAAK,EAAE,EAC7B,GAAI,KAAK,IAAID,EAAK,GAAIC,EAAK,EAAE,CACjC,CACA,CACA,SAASC,GAAU,CAAE,EAAA1nB,EAAG,EAAA0K,EAAG,MAAAid,EAAO,OAAAC,CAAM,EAAI,CAC1C,MAAO,CACL,EAAA5nB,EACA,EAAA0K,EACA,GAAI1K,EAAI2nB,EACR,GAAIjd,EAAIkd,CACZ,CACA,CACA,SAASC,GAAU,CAAE,EAAA7nB,EAAG,EAAA0K,EAAG,GAAAod,EAAI,GAAAC,CAAE,EAAI,CACnC,MAAO,CACL,EAAA/nB,EACA,EAAA0K,EACA,MAAOod,EAAK9nB,EACZ,OAAQ+nB,EAAKrd,CACjB,CACA,CAIA,SAASsd,GAAe/B,EAAO,CAC7B,IAAIgC,EAAM,CACR,EAAG,OAAO,kBACV,EAAG,OAAO,kBACV,GAAI,OAAO,kBACX,GAAI,OAAO,iBACf,EACE,QAAS1qB,EAAI,EAAGA,EAAI0oB,EAAM,OAAQ1oB,IAAK,CACrC,MAAMqC,EAAOqmB,EAAM1oB,CAAC,EACpB0qB,EAAMV,GACJU,EACAP,GAAU,CACR,GAAG9nB,EAAK,iBACR,GAAGA,EAAK,UAChB,CAAO,CACP,CACA,CACE,OAAOioB,GAAUI,CAAG,CACtB,CACA,SAASC,GAAejC,EAAOtc,EAAMwe,EAAW,CAAE,EAAG,EAAG,EAAG,EAAG,KAAM,CAAC,EAAIC,EAAY,GAAOC,EAA4B,GAAO,CAC7H,MAAMC,EAAW,CACf,GAAGnB,GAAqBxd,EAAMwe,CAAQ,EACtC,MAAOxe,EAAK,MAAQwe,EAAS,KAC7B,OAAQxe,EAAK,OAASwe,EAAS,IACnC,EACQI,EAAe,CAAA,EACrB,UAAW3oB,KAAQqmB,EAAO,CACxB,KAAM,CAAE,WAAAuC,EAAY,WAAAC,EAAa,GAAM,OAAAC,EAAS,EAAK,EAAK9oB,EACpD+nB,EAAQa,EAAW,OAAS5oB,EAAK,OAAS,KAC1CgoB,EAASY,EAAW,QAAU5oB,EAAK,QAAU,KACnD,GAAIyoB,GAA6B,CAACI,GAAcC,EAC9C,SAEF,MAAMC,EAAkBxE,GAAmBmE,EAAUpE,GAAWtkB,CAAI,CAAC,EAC/DgpB,EAAiBjB,IAAU,MAAQC,IAAW,KAC9CiB,EAAmBT,GAAaO,EAAkB,EAClDG,GAAQnB,GAAS,IAAMC,GAAU,IACrBgB,GAAkBC,GAAoBF,GAAmBG,GAC1DlpB,EAAK,WACpB2oB,EAAa,KAAK3oB,CAAI,CAE5B,CACE,OAAO2oB,CACT,CACA,SAASQ,GAAkBC,EAAW9C,EAAO,CAC3C,MAAM+C,EAA0B,IAAI,IACpC,GAAI,OAAOD,GAAc,SACvBC,EAAQ,IAAID,CAAS,UACZA,EAAU,QAAU,EAC7B,UAAW5uB,KAAK4uB,EACdC,EAAQ,IAAI7uB,EAAE,EAAE,EAGpB,OAAO8rB,EAAM,OAAQN,GAASqD,EAAQ,IAAIrD,EAAK,MAAM,GAAKqD,EAAQ,IAAIrD,EAAK,MAAM,CAAC,CACpF,CACA,SAASsD,GAAsBC,EAAQxB,EAAOC,EAAQwB,EAASC,EAASC,EAAU,GAAKC,EAAS,CAAE,EAAG,EAAG,EAAG,CAAC,EAAI,CAC9G,MAAMC,EAAQ7B,GAASwB,EAAO,OAAS,EAAIG,IACrCG,EAAQ7B,GAAUuB,EAAO,QAAU,EAAIG,IACvCnV,EAAQ,KAAK,IAAIqV,EAAOC,CAAK,EAC7BC,EAAcjF,GAAMtQ,EAAOiV,EAASC,CAAO,EAC3CM,EAAgBR,EAAO,EAAIA,EAAO,MAAQ,EAC1CS,EAAgBT,EAAO,EAAIA,EAAO,OAAS,EAC3CnpB,EAAI2nB,EAAQ,EAAIgC,EAAgBD,GAAeH,EAAO,GAAK,GAC3D7e,EAAIkd,EAAS,EAAIgC,EAAgBF,GAAeH,EAAO,GAAK,GAClE,MAAO,CAAE,EAAAvpB,EAAG,EAAA0K,EAAG,KAAMgf,CAAW,CAClC,CACA,SAASG,GAAUC,EAAWC,EAAkB,CAC9C,MAAO,CACL,EAAGA,EAAiB,EAAID,EAAU,EAClC,EAAGC,EAAiB,EAAID,EAAU,EAClC,GAAIA,EAAU,EAAIC,EAAiB,EAAID,EAAU,EAAIC,EAAiB,GAAK,CAC/E,CACA,CACA,SAASC,GAAiBpqB,EAAMqqB,EAAU,CACxC,GAAI,CAACrqB,EAAK,WACR,MAAO,GAET,MAAM0B,EAAS2oB,EAASrqB,EAAK,UAAU,EACvC,OAAK0B,EAGDA,EAAO,SACF,GAEF0oB,GAAiB1oB,EAAQ2oB,CAAQ,EAL/B,EAMX,CACA,SAASC,GAAYC,EAAQC,EAAW,CACtC,OAAI,OAAOD,EAAW,IACb,GAEL,OAAOA,GAAW,SACbA,EAGF,GADUC,EAAY,GAAGA,CAAS,KAAO,EAC9B,GAAG,OAAO,KAAKD,CAAM,EAAE,OAAO,IAAK1xB,GAAQ,GAAGA,CAAG,IAAI0xB,EAAO1xB,CAAG,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,EACjG,CACA,SAAS4xB,GAAoB5wB,EAAOkW,EAAKC,EAAK,CAC5C,OAAInW,EAAQkW,EACH8U,GAAM,KAAK,IAAIhrB,EAAQkW,CAAG,EAAG,EAAGA,CAAG,EAAIA,EAE5ClW,EAAQmW,EACH,CAAC6U,GAAM,KAAK,IAAIhrB,EAAQmW,CAAG,EAAG,EAAGD,CAAG,EAAIA,EAE1C,CACT,CACA,SAAS2a,GAAYC,EAAKpB,EAAQqB,EAAQ,GAAIC,EAAY,GAAI,CAC5D,MAAMC,EAAYL,GAAoBE,EAAI,EAAGE,EAAWtB,EAAO,MAAQsB,CAAS,EAAID,EAC9EG,EAAYN,GAAoBE,EAAI,EAAGE,EAAWtB,EAAO,OAASsB,CAAS,EAAID,EACrF,MAAO,CAACE,EAAWC,CAAS,CAC9B,CACA,SAASC,GAAmBC,EAAYvpB,EAAQ,CAC9C,GAAIA,EAAQ,CACV,MAAMwpB,EAAcD,EAAW,SAAS,EAAIA,EAAW,WAAW,MAAQvpB,EAAO,WAAW,MACtFypB,EAAeF,EAAW,SAAS,EAAIA,EAAW,WAAW,OAASvpB,EAAO,WAAW,OAC9F,GAAIwpB,EAAc,GAAKC,EAAe,GAAKF,EAAW,SAAS,EAAI,GAAKA,EAAW,SAAS,EAAI,EAAG,CACjG,IAAIG,EAAe,CAAA,EAQnB,GAPI,OAAO1pB,EAAO,OAAU,WAC1B0pB,EAAe,CAAE,GAAG1pB,EAAO,MAAMA,CAAM,CAAC,EAC/BA,EAAO,QAChB0pB,EAAe,CAAE,GAAG1pB,EAAO,KAAK,GAElC0pB,EAAa,MAAQA,EAAa,OAAS,GAAG1pB,EAAO,WAAW,KAAK,KACrE0pB,EAAa,OAASA,EAAa,QAAU,GAAG1pB,EAAO,WAAW,MAAM,KACpEwpB,EAAc,EAChB,GAAI,OAAOE,EAAa,OAAU,SAAU,CAC1C,MAAMC,EAAY,OAAOD,EAAa,MAAM,QAAQ,KAAM,EAAE,CAAC,EAC7DA,EAAa,MAAQ,GAAGC,EAAYH,CAAW,IACzD,MACUE,EAAa,OAASF,EAG1B,GAAIC,EAAe,EACjB,GAAI,OAAOC,EAAa,QAAW,SAAU,CAC3C,MAAMC,EAAY,OAAOD,EAAa,OAAO,QAAQ,KAAM,EAAE,CAAC,EAC9DA,EAAa,OAAS,GAAGC,EAAYF,CAAY,IAC3D,MACUC,EAAa,QAAUD,EAG3B,GAAIF,EAAW,SAAS,EAAI,EAAG,CAC7B,MAAMK,EAAQ,KAAK,IAAIL,EAAW,SAAS,CAAC,EAE5C,GADAvpB,EAAO,SAAS,EAAIA,EAAO,SAAS,EAAI4pB,EACpC,OAAOF,EAAa,OAAU,SAAU,CAC1C,MAAMC,EAAY,OAAOD,EAAa,MAAM,QAAQ,KAAM,EAAE,CAAC,EAC7DA,EAAa,MAAQ,GAAGC,EAAYC,CAAK,IACnD,MACUF,EAAa,OAASE,EAExBL,EAAW,SAAS,EAAI,CAChC,CACM,GAAIA,EAAW,SAAS,EAAI,EAAG,CAC7B,MAAMM,EAAQ,KAAK,IAAIN,EAAW,SAAS,CAAC,EAE5C,GADAvpB,EAAO,SAAS,EAAIA,EAAO,SAAS,EAAI6pB,EACpC,OAAOH,EAAa,QAAW,SAAU,CAC3C,MAAMC,EAAY,OAAOD,EAAa,OAAO,QAAQ,KAAM,EAAE,CAAC,EAC9DA,EAAa,OAAS,GAAGC,EAAYE,CAAK,IACpD,MACUH,EAAa,QAAUG,EAEzBN,EAAW,SAAS,EAAI,CAChC,CACMvpB,EAAO,WAAW,MAAQ,OAAO0pB,EAAa,MAAM,WAAW,QAAQ,KAAM,EAAE,CAAC,EAChF1pB,EAAO,WAAW,OAAS,OAAO0pB,EAAa,OAAO,WAAW,QAAQ,KAAM,EAAE,CAAC,EAC9E,OAAO1pB,EAAO,OAAU,WAC1BA,EAAO,MAASkL,GAAM,CACpB,MAAM4e,EAAY9pB,EAAO,MACzB,MAAO,CACL,GAAG8pB,EAAU5e,CAAC,EACd,GAAGwe,CACf,CACA,EAEQ1pB,EAAO,MAAQ,CACb,GAAGA,EAAO,MACV,GAAG0pB,CACb,CAEA,CACA,CACA,CACA,SAASK,GAAaC,EAAS9E,EAAU,CACvC,IAAI5tB,EAAIyD,EACR,MAAMkvB,EAAmBD,EAAQ,OAAQhtB,GAAMA,EAAE,OAAS,OAASA,EAAE,OAAS,QAAQ,EACtF,UAAWktB,KAAUD,EACnB,GAAIC,EAAO,OAAS,MACJhF,EAAS,UAAWtrB,GAAOA,EAAG,KAAOswB,EAAO,KAAK,EAAE,IACnD,IACZhF,EAAS,KAAKgF,EAAO,IAAI,UAElBA,EAAO,OAAS,SAAU,CACnC,MAAM1T,EAAQ0O,EAAS,UAAWtrB,GAAOA,EAAG,KAAOswB,EAAO,EAAE,EACxD1T,IAAU,IACZ0O,EAAS,OAAO1O,EAAO,CAAC,CAEhC,CAEE,MAAM2T,EAAajF,EAAS,IAAKtrB,GAAOA,EAAG,EAAE,EAC7C,UAAW2pB,KAAW2B,EACpB,UAAWkF,KAAiBJ,EAC1B,GAAII,EAAc,KAAO7G,EAAQ,GAGjC,OAAQ6G,EAAc,KAAI,CACxB,IAAK,SACH7G,EAAQ,SAAW6G,EAAc,SACjC,MACF,IAAK,WACH,GAAIzG,GAAYJ,CAAO,IACjB,OAAO6G,EAAc,SAAa,MACpC7G,EAAQ,SAAW6G,EAAc,UAE/B,OAAOA,EAAc,SAAa,MACpC7G,EAAQ,SAAW6G,EAAc,UAE/B7G,EAAQ,cAAgBA,EAAQ,YAAY,CAC9C,MAAMvjB,EAASklB,EAASiF,EAAW,QAAQ5G,EAAQ,UAAU,CAAC,EAC1DvjB,GAAU2jB,GAAY3jB,CAAM,GAC9BspB,GAAmB/F,EAASvjB,CAAM,CAElD,CAEU,MACF,IAAK,aACH,GAAI2jB,GAAYJ,CAAO,IACjB,OAAO6G,EAAc,WAAe,MACtC7G,EAAQ,WAAa6G,EAAc,YAEjC,OAAOA,EAAc,YAAgB,KAAeA,EAAc,cACpE7G,EAAQ,MAAQ,CACd,GAAGA,EAAQ,OAAS,CAAA,EACpB,MAAO,IAAIjsB,EAAK8yB,EAAc,aAAe,KAAO,OAAS9yB,EAAG,KAAK,KACrE,OAAQ,IAAIyD,EAAKqvB,EAAc,aAAe,KAAO,OAASrvB,EAAG,MAAM,IACvF,GAEgB,OAAOqvB,EAAc,SAAa,MACpC7G,EAAQ,SAAW6G,EAAc,UAE/B7G,EAAQ,cAAgBA,EAAQ,YAAY,CAC9C,MAAMvjB,EAASklB,EAASiF,EAAW,QAAQ5G,EAAQ,UAAU,CAAC,EAC1DvjB,GAAU2jB,GAAY3jB,CAAM,IACX,CAAC,CAACA,EAAO,WAAW,OAAS,CAAC,CAACA,EAAO,WAAW,OAMlEspB,GAAmB/F,EAASvjB,CAAM,EAJlCnE,EAAAA,SAAS,IAAM,CACbytB,GAAmB/F,EAASvjB,CAAM,CACtD,CAAmB,EAKnB,CAEU,KACV,CAGE,OAAOklB,CACT,CAOA,SAASmF,GAAsB9T,EAAK+T,EAAU,CAC5C,MAAO,CACL,GAAI/T,EACJ,KAAM,SACN,SAAA+T,CACJ,CACA,CACA,SAASC,GAAqBC,EAAM,CAClC,MAAO,CACL,KAAAA,EACA,KAAM,KACV,CACA,CACA,SAASC,GAAuBlU,EAAK,CACnC,MAAO,CACL,GAAIA,EACJ,KAAM,QACV,CACA,CACA,SAASmU,GAAuBnU,EAAK/f,EAAQ8C,EAAQgsB,EAAcC,EAAc,CAC/E,MAAO,CACL,GAAIhP,EACJ,OAAA/f,EACA,OAAA8C,EACA,aAAcgsB,GAAgB,KAC9B,aAAcC,GAAgB,KAC9B,KAAM,QACV,CACA,CACA,SAASoF,GAAoBC,EAAOC,EAA8B,IAAI,IAAOC,EAAa,GAAO,CAC/F,MAAMd,EAAU,CAAA,EAChB,SAAW,CAACzT,EAAKiU,CAAI,IAAKI,EAAO,CAC/B,MAAMG,EAAiBF,EAAY,IAAItU,CAAG,EACtC,EAAEiU,EAAK,WAAa,QAAU,CAACO,IAAmBP,EAAK,WAAaO,IAClED,IACFN,EAAK,SAAWO,GAElBf,EAAQ,KAAKK,GAAsBG,EAAK,GAAIO,CAAc,CAAC,EAEjE,CACE,OAAOf,CACT,CACA,SAASgB,EAAwBC,EAAgB,CAC/C,MAAMC,EAAsB,IAAI,IAChC,IAAIC,EAAoB,GACxB,MAAMC,EAAe,IAAMF,EAAI,KAAO,EAClCD,IACFE,EAAoB,GACpBD,EAAI,IAAID,CAAc,GAExB,MAAMI,EAAO92B,GAAO,CAClB22B,EAAI,OAAO32B,CAAE,CACjB,EAoBE,MAAO,CACL,GApBUA,GAAO,CACb02B,GAAkBE,GACpBD,EAAI,OAAOD,CAAc,EAE3BC,EAAI,IAAI32B,CAAE,EACV,MAAM+2B,EAAQ,IAAM,CAClBD,EAAI92B,CAAE,EACF02B,GAAkBE,GACpBD,EAAI,IAAID,CAAc,CAE9B,EACI,OAAA32B,GAAkBg3B,CAAK,EAChB,CACL,IAAKA,CACX,CACA,EAMI,IAAAD,EACA,QANeE,GACR,QAAQ,IAAI,MAAM,KAAKL,CAAG,EAAE,IAAK32B,GAAOA,EAAGg3B,CAAK,CAAC,CAAC,EAMzD,aAAAH,EACA,IAAAF,CACJ,CACA,CACA,SAASM,GAAYlyB,EAAQuE,EAAWS,EAAM,CAC5C,IAAImtB,EAAUnyB,EACd,EAAG,CACD,GAAImyB,GAAWA,EAAQ,QAAQ5tB,CAAS,EACtC,MAAO,GACF,GAAI4tB,IAAYntB,EACrB,MAAO,GAETmtB,EAAUA,EAAQ,aACtB,OAAWA,GACT,MAAO,EACT,CACA,SAASC,GAAa/G,EAAOgH,EAAgBC,EAAUjD,EAAUxD,EAAQ,CACvE,IAAI7tB,EAAIyD,EACR,MAAM8wB,EAAY,CAAA,EAClB,UAAWvtB,KAAQqmB,GACZrmB,EAAK,UAAYA,EAAK,KAAO6mB,KAAY,CAAC7mB,EAAK,YAAc,CAACoqB,GAAiBpqB,EAAMqqB,CAAQ,KAAOrqB,EAAK,WAAaqtB,GAAkB,OAAOrtB,EAAK,UAAc,MACrKutB,EAAU,KACR1H,UAAQ,CACN,GAAI7lB,EAAK,GACT,SAAUA,EAAK,UAAY,CAAE,EAAG,EAAG,EAAG,CAAC,EACvC,SAAU,CACR,EAAGstB,EAAS,IAAMt0B,EAAKgH,EAAK,mBAAqB,KAAO,OAAShH,EAAG,IAAM,EAC1E,EAAGs0B,EAAS,IAAM7wB,EAAKuD,EAAK,mBAAqB,KAAO,OAASvD,EAAG,IAAM,CACtF,EACU,KAAMuD,EAAK,iBACX,OAAQA,EAAK,OACb,WAAYA,EAAK,WACjB,WAAYA,EAAK,WACjB,aAAcA,EAAK,YAC7B,CAAS,CACT,EAGE,OAAOutB,CACT,CACA,SAASC,GAAsB,CAC7B,GAAIvV,EACJ,UAAAsV,EACA,SAAAlD,CACF,EAAG,CACD,MAAMoD,EAAoB,CAAA,EAC1B,UAAWC,KAAYH,EAAW,CAChC,MAAMvtB,EAAOqqB,EAASqD,EAAS,EAAE,EAC7B1tB,GACFytB,EAAkB,KAAKztB,CAAI,CAEjC,CACE,MAAO,CAACiY,EAAMwV,EAAkB,KAAMjzB,GAAMA,EAAE,KAAOyd,CAAG,EAAIwV,EAAkB,CAAC,EAAGA,CAAiB,CACrG,CACA,SAASE,GAAiBjE,EAAS,CACjC,GAAI,MAAM,QAAQA,CAAO,EACvB,OAAQA,EAAQ,OAAM,CACpB,IAAK,GACH,MAAO,CAACA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,EACxD,IAAK,GACH,MAAO,CAACA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,EACxD,IAAK,GACH,MAAO,CAACA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,EACxD,IAAK,GACH,OAAOA,EACT,QACE,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,CAC1B,CAEE,MAAO,CAACA,EAASA,EAASA,EAASA,CAAO,CAC5C,CACA,SAASkE,GAAgBC,EAAe7tB,EAAM0B,EAAQ,CACpD,KAAM,CAACosB,EAAKC,EAAOC,EAAQC,CAAI,EAAI,OAAOJ,GAAkB,SAAWF,GAAiBE,EAAc,OAAO,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAC5H,OAAInsB,GAAU,OAAOA,EAAO,iBAAiB,EAAM,KAAe,OAAOA,EAAO,iBAAiB,EAAM,KAAe,OAAOA,EAAO,WAAW,MAAU,KAAe,OAAOA,EAAO,WAAW,OAAW,IACnM,CACL,CAACA,EAAO,iBAAiB,EAAIusB,EAAMvsB,EAAO,iBAAiB,EAAIosB,CAAG,EAClE,CACEpsB,EAAO,iBAAiB,EAAIA,EAAO,WAAW,MAAQqsB,EACtDrsB,EAAO,iBAAiB,EAAIA,EAAO,WAAW,OAASssB,CAC/D,CACA,EAES,EACT,CACA,SAASE,GAAUhC,EAAMiC,EAAclP,EAAQvd,EAAQ,CACrD,IAAImsB,EAAgB3B,EAAK,QAAUjN,EACnC,IAAK4O,IAAkB,UAAY,CAAC,MAAM,QAAQA,CAAa,GAAuCA,GAAc,QAAW,WAAa,CAAC3B,EAAK,aAChJ,GAAIA,EAAK,YAAcxqB,GAAUwqB,EAAK,WAAW,OAASA,EAAK,WAAW,OAAQ,CAChF,MAAMkC,EAAeR,GAAgBC,EAAe3B,EAAMxqB,CAAM,EAC5D0sB,IACFP,EAAgBO,EAExB,MACMD,EAAa,IAAIE,GAAaC,GAAU,oBAAqBpC,EAAK,EAAE,CAAC,EACrE2B,EAAgB5O,UAET,MAAM,QAAQ4O,CAAa,EAAG,CACvC,MAAMU,EAAqC7sB,GAAO,iBAAiB,GAAM,EACnE8sB,EAAqC9sB,GAAO,iBAAiB,GAAM,EACzEmsB,EAAgB,CACd,CAACA,EAAc,CAAC,EAAE,CAAC,EAAIU,EAASV,EAAc,CAAC,EAAE,CAAC,EAAIW,CAAO,EAC7D,CAACX,EAAc,CAAC,EAAE,CAAC,EAAIU,EAASV,EAAc,CAAC,EAAE,CAAC,EAAIW,CAAO,CACnE,CACA,SAAaX,IAAkB,UAA8CA,GAAc,OAAU,MAAM,QAAQA,EAAc,KAAK,EAAG,CACrI,KAAM,CAACC,EAAKC,EAAOC,EAAQC,CAAI,EAAIN,GAAiBE,EAAc,OAAO,EACnEU,EAAqC7sB,GAAO,iBAAiB,GAAM,EACnE8sB,EAAqC9sB,GAAO,iBAAiB,GAAM,EACzEmsB,EAAgB,CACd,CAACA,EAAc,MAAM,CAAC,EAAE,CAAC,EAAIU,EAAUN,EAAMJ,EAAc,MAAM,CAAC,EAAE,CAAC,EAAIW,EAAUV,CAAG,EACtF,CAACD,EAAc,MAAM,CAAC,EAAE,CAAC,EAAIU,EAAUR,EAAOF,EAAc,MAAM,CAAC,EAAE,CAAC,EAAIW,EAAUR,CAAM,CAChG,CACA,CACE,OAAOH,IAAkB,SAAW,CAClC,CAAC,OAAO,kBAAmB,OAAO,iBAAiB,EACnD,CAAC,OAAO,kBAAmB,OAAO,iBAAiB,CACvD,EAAMA,CACN,CACA,SAASY,GAAgB,CAAE,MAAA1G,EAAO,OAAAC,CAAM,EAAI/I,EAAQ,CAClD,MAAO,CAACA,EAAO,CAAC,EAAG,CAACA,EAAO,CAAC,EAAE,CAAC,GAAK8I,GAAS,GAAI9I,EAAO,CAAC,EAAE,CAAC,GAAK+I,GAAU,EAAE,CAAC,CAChF,CACA,SAAS0G,GAAiB1uB,EAAM2uB,EAAcR,EAAcS,EAAYjJ,EAAY,CAClF,MAAM1G,EAASwP,GAAgBzuB,EAAK,WAAYkuB,GAAUluB,EAAMmuB,EAAcS,EAAYjJ,CAAU,CAAC,EAC/FkJ,EAAa/J,GAAc6J,EAAc1P,CAAM,EACrD,MAAO,CACL,SAAU,CACR,EAAG4P,EAAW,GAAoClJ,GAAW,iBAAiB,GAAM,GACpF,EAAGkJ,EAAW,GAAoClJ,GAAW,iBAAiB,GAAM,EAC1F,EACI,iBAAkBkJ,CACtB,CACA,CACA,SAASC,GAAkB9uB,EAAM+uB,EAAQC,EAAmB5N,EAAS,KAAM6N,EAAS,GAAO,CACzF,MAAM7uB,GAAgC2uB,GAAO,GAAM,GAAK/uB,EAAK,iBAAiB,EACxE8K,GAAgCikB,GAAO,GAAM,GAAK/uB,EAAK,iBAAiB,EACxE,CAAE,MAAA+nB,EAAO,OAAAC,CAAM,EAAK+G,GAAUG,GAAkBlvB,CAAI,EAC1D,GAAIivB,EACF,MAAO,CAAE,EAAG7uB,EAAI2nB,EAAQ,EAAG,EAAGjd,EAAIkd,EAAS,CAAC,EAG9C,OAD4C+G,GAAO,UAAaC,EAChD,CACd,KAAK5N,EAAS,IACZ,MAAO,CAAE,EAAGhhB,EAAI2nB,EAAQ,EAAG,EAAAjd,CAAC,EAC9B,KAAKsW,EAAS,MACZ,MAAO,CAAE,EAAGhhB,EAAI2nB,EAAO,EAAGjd,EAAIkd,EAAS,CAAC,EAC1C,KAAK5G,EAAS,OACZ,MAAO,CAAE,EAAGhhB,EAAI2nB,EAAQ,EAAG,EAAGjd,EAAIkd,CAAM,EAC1C,KAAK5G,EAAS,KACZ,MAAO,CAAE,EAAAhhB,EAAG,EAAG0K,EAAIkd,EAAS,CAAC,CACnC,CACA,CACA,SAASmH,GAAc5F,EAAQ6F,EAAU,CACvC,OAAK7F,IAGI6F,EAAuB7F,EAAO,KAAMle,GAAMA,EAAE,KAAO+jB,CAAQ,EAAhD7F,EAAO,CAAC,IAA8C,IAC5E,CACA,SAAS8F,GAAc,CACrB,UAAAC,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,YAAAC,EACA,aAAAC,EACA,MAAA5H,EACA,OAAAC,EACA,SAAAO,CACF,EAAG,CACD,MAAMqH,EAAU,CACd,EAAG,KAAK,IAAIN,EAAU,EAAGC,EAAU,CAAC,EACpC,EAAG,KAAK,IAAID,EAAU,EAAGC,EAAU,CAAC,EACpC,GAAI,KAAK,IAAID,EAAU,EAAIE,EAAaD,EAAU,EAAIG,CAAW,EACjE,GAAI,KAAK,IAAIJ,EAAU,EAAIG,EAAcF,EAAU,EAAII,CAAY,CACvE,EACMC,EAAQ,IAAMA,EAAQ,KACxBA,EAAQ,IAAM,GAEZA,EAAQ,IAAMA,EAAQ,KACxBA,EAAQ,IAAM,GAEhB,MAAMC,EAAU/H,GAAU,CACxB,GAAI,EAAIS,EAAS,GAAKA,EAAS,KAC/B,GAAI,EAAIA,EAAS,GAAKA,EAAS,KAC/B,MAAOR,EAAQQ,EAAS,KACxB,OAAQP,EAASO,EAAS,IAC9B,CAAG,EACK7D,EAAW,KAAK,IAAI,EAAG,KAAK,IAAImL,EAAQ,GAAID,EAAQ,EAAE,EAAI,KAAK,IAAIC,EAAQ,EAAGD,EAAQ,CAAC,CAAC,EACxFjL,EAAW,KAAK,IAAI,EAAG,KAAK,IAAIkL,EAAQ,GAAID,EAAQ,EAAE,EAAI,KAAK,IAAIC,EAAQ,EAAGD,EAAQ,CAAC,CAAC,EAE9F,OADwB,KAAK,KAAKlL,EAAWC,CAAQ,EAC5B,CAC3B,CACA,SAASmL,GAAc9J,EAAMqE,EAAU0F,EAAuB,GAAO,CACnE,MAAMC,EAAY,OAAOhK,EAAK,QAAW,SACzC,IAAIiK,EAAID,EAAYhK,EAAK,OAAS,EAClC,MAAM9tB,EAASmyB,EAASrE,EAAK,MAAM,EAC7BhrB,EAASqvB,EAASrE,EAAK,MAAM,EACnC,MAAI,CAAC9tB,GAAU,CAAC8C,EACP,GAEL+0B,IACFE,EAAID,EAAYhK,EAAK,OAAS,KAAK,IAAI9tB,EAAO,iBAAiB,GAAK,EAAG8C,EAAO,iBAAiB,GAAK,CAAC,GAEhGi1B,EACT,CACA,IAAI3B,IAA8B4B,IAChCA,EAAW,eAAoB,iBAC/BA,EAAW,4BAAiC,8BAC5CA,EAAW,aAAkB,eAC7BA,EAAW,eAAoB,iBAC/BA,EAAW,oBAAyB,sBACpCA,EAAW,kBAAuB,oBAClCA,EAAW,oBAAyB,sBACpCA,EAAW,aAAkB,eAC7BA,EAAW,eAAoB,iBAC/BA,EAAW,oBAAyB,sBACpCA,EAAW,oBAAyB,sBACpCA,EAAW,kBAAuB,oBAClCA,EAAW,wBAA6B,0BACxCA,EAAW,2BAAgC,6BAC3CA,EAAW,cAAmB,gBAC9BA,EAAW,mBAAwB,qBAC5BA,IACN5B,IAAa,CAAA,CAAE,EAClB,MAAM6B,GAAW,CAEb,eAEC,IAAM,sJAEP,4BAEC,IAAM,+EAEP,aAEElY,GAAQ;AAAA,QACNA,CAAG,GAEP,eAEEA,GAAQ;AAAA,QACNA,CAAG,GAEP,oBAEC,CAACA,EAAKmY,IAAa;AAAA,QAChBnY,CAAG;AAAA,UACDmY,CAAQ,GAEd,kBAEE5xB,GAAS;AAAA,QACPA,CAAI,GAER,oBAEEyZ,GAAQ;AAAA,QACNA,CAAG,GAEP,aAEEA,GAAQ;AAAA,QACNA,CAAG,GAEP,oBAEC,CAACA,EAAK/f,IAAW;AAAA,QACd+f,CAAG;AAAA,UACD/f,CAAM,GAEZ,oBAEC,CAAC+f,EAAKjd,IAAW;AAAA,QACdid,CAAG;AAAA,UACDjd,CAAM,GAEZ,kBAEEwD,GAAS;AAAA,QACPA,CAAI,GAER,wBAEC,CAACyZ,EAAK/f,EAAQ8C,IAAW;AAAA,QACtBid,CAAG;AAAA,UACD/f,CAAM;AAAA,UACN8C,CAAM,GAEZ,2BAEC,CAACid,EAAK/f,EAAQ8C,IAAW;AAAA,QACtBid,CAAG;AAAA,UACD/f,CAAM;AAAA,UACN8C,CAAM,GAEZ,cAEEid,GAAQ;AAAA,QACNA,CAAG,GAEP,eAEEA,GAAQ;AAAA,QACNA,CAAG,GAGP,mBAEC,IAAM,wHACX,EACA,MAAMoW,WAAqB,KAAM,CAC/B,YAAYrL,KAAShsB,EAAM,CACzB,IAAIgC,EACJ,OAAOA,EAAKm3B,GAASnN,CAAI,IAAM,KAAO,OAAShqB,EAAG,KAAKm3B,GAAU,GAAGn5B,CAAI,CAAC,EACzE,KAAK,KAAO,eACZ,KAAK,KAAOgsB,EACZ,KAAK,KAAOhsB,CAChB,CACA,CAIA,SAASq5B,GAAa90B,EAAO,CAC3B,MAAO,YAAaA,CACtB,CACA,SAAS+0B,GAAe/0B,EAAO,CAC7B,MAAO,gBAAiBA,CAC1B,CACA,SAASg1B,GAAiBh1B,EAAOguB,EAAQ,CACvC,MAAMiH,EAAUH,GAAa90B,CAAK,EAClC,IAAIk1B,EACAC,EACJ,OAAIF,GACFC,EAAOl1B,EAAM,QACbm1B,EAAOn1B,EAAM,SACJ,YAAaA,GAASA,EAAM,QAAQ,OAAS,GACtDk1B,EAAOl1B,EAAM,QAAQ,CAAC,EAAE,QACxBm1B,EAAOn1B,EAAM,QAAQ,CAAC,EAAE,SACf,mBAAoBA,GAASA,EAAM,eAAe,OAAS,GACpEk1B,EAAOl1B,EAAM,eAAe,CAAC,EAAE,QAC/Bm1B,EAAOn1B,EAAM,eAAe,CAAC,EAAE,UAE/Bk1B,EAAO,EACPC,EAAO,GAEF,CACL,EAAGD,GAAmClH,GAAO,MAAS,GACtD,EAAGmH,GAAmCnH,GAAO,KAAQ,EACzD,CACA,CACA,MAAMoH,GAAU,IAAM,CACpB,IAAI33B,EACJ,OAAO,OAAO,UAAc,OAAiBA,EAAkC,WAAU,YAAc,KAAO,OAASA,EAAG,QAAQ,KAAK,IAAM,CAC/I,EACA,SAASk2B,GAAkBlvB,EAAM,CAC/B,IAAIhH,EAAIyD,EACR,MAAO,CACL,QAASzD,EAAKgH,EAAK,aAAe,KAAO,OAAShH,EAAG,QAAUgH,EAAK,OAAS,EAC7E,SAAUvD,EAAKuD,EAAK,aAAe,KAAO,OAASvD,EAAG,SAAWuD,EAAK,QAAU,CACpF,CACA,CACA,SAAS0nB,GAAa3C,EAAU0C,EAAW,CAAC,EAAG,CAAC,EAAG,CACjD,MAAO,CACL,EAAGA,EAAS,CAAC,EAAI,KAAK,MAAM1C,EAAS,EAAI0C,EAAS,CAAC,CAAC,EACpD,EAAGA,EAAS,CAAC,EAAI,KAAK,MAAM1C,EAAS,EAAI0C,EAAS,CAAC,CAAC,CACxD,CACA,CACA,MAAMmJ,GAAgB,IAAM,GAC5B,SAASC,GAAkBC,EAAe,CACPA,GAAc,UAAU,OAAO,QAAS,aAAc,yBAA0B,6BAA6B,CAChJ,CACA,SAASC,GAAuBhM,EAAUiM,EAAYnG,EAAW,CAC/D,MAAMxE,EAAQ,CAAA,EACRtc,EAAO,CACX,EAAGgb,EAAS,EAAI8F,EAChB,EAAG9F,EAAS,EAAI8F,EAChB,MAAOA,EAAY,EACnB,OAAQA,EAAY,CACxB,EACE,UAAW7qB,KAAQgxB,EAAW,SACxBzM,GAAmBxa,EAAMua,GAAWtkB,CAAI,CAAC,EAAI,GAC/CqmB,EAAM,KAAKrmB,CAAI,EAGnB,OAAOqmB,CACT,CACA,MAAM4K,GAAsB,IAC5B,SAASC,GAAiBnM,EAAUoM,EAAkBH,EAAYI,EAAY,CAC5E,IAAIp4B,EAAIyD,EACR,IAAI40B,EAAiB,CAAA,EACjBC,EAAc,OAAO,kBACzB,MAAMC,EAAaR,GAAuBhM,EAAUiM,EAAYG,EAAmBF,EAAmB,EACtG,UAAWjxB,KAAQuxB,EAAY,CAC7B,MAAMC,EAAa,CAAC,KAAKx4B,EAAKgH,EAAK,eAAiB,KAAO,OAAShH,EAAG,SAAW,CAAA,EAAI,KAAKyD,EAAKuD,EAAK,eAAiB,KAAO,OAASvD,EAAG,SAAW,EAAE,EACtJ,UAAWsyB,KAAUyC,EAAY,CAC/B,GAAIJ,EAAW,SAAWrC,EAAO,QAAUqC,EAAW,OAASrC,EAAO,MAAQqC,EAAW,KAAOrC,EAAO,GACrG,SAEF,KAAM,CAAE,EAAA3uB,EAAG,EAAA0K,CAAC,EAAKgkB,GAAkB9uB,EAAM+uB,EAAQA,EAAO,SAAU,EAAI,EAChElE,EAAY,KAAK,MAAMzqB,EAAI2kB,EAAS,IAAM,GAAKja,EAAIia,EAAS,IAAM,CAAC,EACrE8F,EAAYsG,IAGZtG,EAAYyG,GACdD,EAAiB,CAAC,CAAE,GAAGtC,EAAQ,EAAA3uB,EAAG,EAAA0K,CAAC,CAAE,EACrCwmB,EAAczG,GACLA,IAAcyG,GACvBD,EAAe,KAAK,CAAE,GAAGtC,EAAQ,EAAA3uB,EAAG,EAAA0K,CAAC,CAAE,EAE/C,CACA,CACE,GAAI,CAACumB,EAAe,OAClB,OAAO,KAET,GAAIA,EAAe,OAAS,EAAG,CAC7B,MAAMI,EAAqBL,EAAW,OAAS,SAAW,SAAW,SACrE,OAAOC,EAAe,KAAMtC,GAAWA,EAAO,OAAS0C,CAAkB,GAAKJ,EAAe,CAAC,CAClG,CACE,OAAOA,EAAe,CAAC,CACzB,CACA,SAASK,GAAcn2B,EAAO,CAC5B,OAAAwzB,EACA,eAAA4C,EACA,WAAAC,EACA,aAAAC,EACA,SAAAC,EACA,IAAA5M,EACA,IAAA6M,EACA,OAAAC,EACA,kBAAAC,EAAoBrB,EACtB,EAAGtK,EAAOD,EAAOgE,EAAU,CACzB,MAAM6H,EAAWJ,IAAa,SACxBhB,EAAgB/B,EAAS7J,EAAI,cAAc,IAAI6M,CAAG,0BAA0BC,CAAM,IAA8BjD,GAAO,MAAM,IAA8BA,GAAO,EAAE,IAA8BA,GAAO,IAAI,IAAI,EAAI,KACrN,CAAE,EAAG,EAAAjkB,GAAMylB,GAAiBh1B,CAAK,EACjC42B,EAAcjN,EAAI,iBAAiB,EAAGpa,CAAC,EACvCsnB,EAAgDD,GAAY,UAAU,SAAS,GAAGJ,CAAG,eAAe,EAAKI,EAAcrB,EACvHl4B,EAAS,CACb,cAAew5B,EACf,QAAS,GACT,WAAY,KACZ,SAAU,IACd,EACE,GAAIA,EAAe,CACjB,MAAMC,EAAaC,GAAc,OAAQF,CAAa,EAChDG,EAAeH,EAAc,aAAa,aAAa,EACvDhD,EAAWgD,EAAc,aAAa,eAAe,EACrDI,EAAcJ,EAAc,UAAU,SAAS,aAAa,EAC5DK,EAAiBL,EAAc,UAAU,SAAS,gBAAgB,EACxE,GAAI,CAACG,GAAgB,CAACF,EACpB,OAAOz5B,EAET,MAAM85B,EAAa,CACjB,OAAQR,EAAWK,EAAeX,EAClC,aAAcM,EAAW9C,EAAWyC,EACpC,OAAQK,EAAWN,EAAaW,EAChC,aAAcL,EAAWL,EAAezC,CAC9C,EACIx2B,EAAO,WAAa85B,EAEpB,MAAMC,EADgBH,GAAeC,IACHd,IAAmBjQ,GAAe,OAASwQ,GAAYG,IAAe,UAAY,CAACH,GAAYG,IAAe,SAAWE,IAAiBX,GAAcxC,IAAayC,GACvMj5B,EAAO,QAAU+5B,GAAWV,EAAkBS,EAAY,CACxD,MAAArM,EACA,MAAAC,EACA,WAAY+D,EAASuH,CAAU,EAC/B,WAAYvH,EAASkI,CAAY,CACvC,CAAK,EACD35B,EAAO,SAAWm2B,CACtB,CACE,OAAOn2B,CACT,CACA,SAAS05B,GAAcM,EAAiB9B,EAAe,CACrD,OAAI8B,IAEwC9B,GAAc,UAAU,SAAS,QAAQ,EAC5E,SACmCA,GAAc,UAAU,SAAS,QAAQ,EAC5E,SAEF,KACT,CACA,SAAS+B,GAAoBC,EAA0BC,EAAe,CACpE,IAAIC,EAAmB,KACvB,OAAID,EACFC,EAAmB,QACVF,GAA4B,CAACC,IACtCC,EAAmB,WAEdA,CACT,CACA,SAASC,GAAkBH,EAA0BC,EAAe,CAClE,IAAIJ,EAAU,KACd,OAAII,EACFJ,EAAU,GACDG,GAA4B,CAACC,IACtCJ,EAAU,IAELA,CACT,CACA,SAASO,GAAUrM,EAAQwL,EAAYjD,EAAU4B,EAAYW,EAAgBwB,EAAuB,GAAO,CACzG,IAAIn6B,EAAIyD,EAAIC,EACZ,MAAMsD,EAAOgxB,EAAW,IAAInK,CAAM,EAClC,GAAI,CAAC7mB,EACH,OAAO,KAET,MAAMozB,EAAUzB,IAAmBjQ,GAAe,QAAU1oB,EAAKgH,EAAK,eAAiB,KAAO,OAAShH,EAAGq5B,CAAU,EAAI,CAAC,KAAK51B,EAAKuD,EAAK,eAAiB,KAAO,OAASvD,EAAG,SAAW,CAAA,EAAI,KAAKC,EAAKsD,EAAK,eAAiB,KAAO,OAAStD,EAAG,SAAW,EAAE,EACrPqyB,GAAUK,EAAsCgE,GAAQ,KAAMvjB,GAAOA,EAAG,KAAOuf,CAAQ,EAA+BgE,IAAQ,CAAC,IAAM,KAC3I,OAAOrE,GAAUoE,EAAuB,CAAE,GAAGpE,EAAQ,GAAGD,GAAkB9uB,EAAM+uB,EAAQA,EAAO,SAAU,EAAI,CAAC,EAAKA,CACrH,CACA,MAAMsE,GAAmB,CACvB,CAACjS,EAAS,IAAI,EAAGA,EAAS,MAC1B,CAACA,EAAS,KAAK,EAAGA,EAAS,KAC3B,CAACA,EAAS,GAAG,EAAGA,EAAS,OACzB,CAACA,EAAS,MAAM,EAAGA,EAAS,GAC9B,EACMkS,GAAiB,CAAC,aAAc,MAAM,EAC5C,SAASC,GAAKC,KAAYx8B,EAAM,CAC1By8B,GAAK,GACP,QAAQ,KAAK,eAAeD,CAAO,GAAI,GAAGx8B,CAAI,CAElD,CACA,SAASy8B,IAAQ,CACf,MAAO,CAACH,GAAe,SAAS,QAAQ,IAAI,UAAY,EAAE,CAC5D,CACA,SAASI,GAAgBl1B,EAAMm1B,EAAaC,EAAYrf,EAAOsS,EAAQ,CACrE,MAAMuM,EAAUO,EAAY,iBAAiB,qBAAqBn1B,CAAI,EAAE,EACxE,OAAiC40B,GAAQ,OAGlC,MAAM,KAAKA,CAAO,EAAE,IAAKrE,GAAW,CACzC,MAAM8E,EAAe9E,EAAO,sBAAqB,EACjD,MAAO,CACL,GAAIA,EAAO,aAAa,eAAe,EACvC,KAAAvwB,EACA,OAAAqoB,EACA,SAAUkI,EAAO,aAAa,gBAAgB,EAC9C,GAAI8E,EAAa,KAAOD,EAAW,MAAQrf,EAC3C,GAAIsf,EAAa,IAAMD,EAAW,KAAOrf,EACzC,GAAGqQ,GAAcmK,CAAM,CAC7B,CACA,CAAG,EAbQ,IAcX,CACA,SAAS+E,GAAgB9zB,EAAM+zB,EAAsBC,EAAkBC,EAAqBC,EAAsBC,EAAW,GAAOC,EAAQ,CAC1IF,EAAqB,MAAQ,GACxBl0B,EAAK,UAECm0B,GAAYn0B,EAAK,UAAY+zB,KACtCE,EAAoB,CAACj0B,CAAI,CAAC,EAC1BzC,EAAAA,SAAS,IAAM,CACb62B,EAAO,KAAI,CACjB,CAAK,GALDJ,EAAiB,CAACh0B,CAAI,CAAC,CAO3B,CACA,SAAS8lB,GAAMrvB,EAAK,CAElB,OAAO,OADUH,EAAAA,MAAMG,CAAG,EACC,GAC7B,CACA,SAAS49B,GAAeC,EAAYhO,EAAO6H,EAAcjI,EAAoB,CAC3E,GAAI,CAACoO,GAAc,CAACA,EAAW,QAAU,CAACA,EAAW,OACnD,OAAAnG,EAAa,IAAIE,GAAaC,GAAU,aAA6CgG,GAAW,IAAO,cAAc,CAAC,EAC/G,GAET,IAAItO,EAUJ,OATIb,GAAOmP,CAAU,EACnBtO,EAAOsO,EAEPtO,EAAO,CACL,GAAGsO,EACH,GAAIvN,GAAUuN,CAAU,CAC9B,EAEEtO,EAAOD,GAAUC,EAAM,OAAQE,CAAkB,EAC7CgB,GAAiBlB,EAAMM,CAAK,EACvB,GAEFN,CACT,CACA,SAASuO,GAAiBvO,EAAMwO,EAAeC,EAAUC,EAAiBvG,EAAc,CACtF,GAAI,CAACqG,EAAc,QAAU,CAACA,EAAc,OAC1C,OAAArG,EAAa,IAAIE,GAAaC,GAAU,aAActI,EAAK,EAAE,CAAC,EACvD,GAET,GAAI,CAACyO,EACH,OAAAtG,EAAa,IAAIE,GAAaC,GAAU,eAAgBtI,EAAK,EAAE,CAAC,EACzD,GAET,KAAM,CAAE,GAAI/N,EAAK,GAAG0c,CAAI,EAAK3O,EAC7B,MAAO,CACL,GAAG2O,EACH,GAAID,EAAkB3N,GAAUyN,CAAa,EAAIvc,EACjD,OAAQuc,EAAc,OACtB,OAAQA,EAAc,OACtB,aAAcA,EAAc,aAC5B,aAAcA,EAAc,YAChC,CACA,CACA,SAASI,GAAiBvO,EAAOgE,EAAU8D,EAAc,CACvD,MAAM0G,EAAc,CAAA,EACdC,EAAY,CAAA,EAClB,QAASn3B,EAAI,EAAGA,EAAI0oB,EAAM,OAAQ,EAAE1oB,EAAG,CACrC,MAAMqC,EAAOqmB,EAAM1oB,CAAC,EACpB,GAAI,CAACynB,GAAOplB,CAAI,EAAG,CACjBmuB,EACE,IAAIE,GAAaC,GAAU,aAAsCtuB,GAAK,EAAE,GAAK,qBAAqBrC,CAAC,GAC3G,EACM,QACN,CACI,MAAMo3B,EAAStP,GAAUzlB,EAAMqqB,EAASrqB,EAAK,EAAE,EAAGA,EAAK,UAAU,EAC7DA,EAAK,aACP60B,EAAY70B,EAAK,UAAU,EAAI,IAEjC80B,EAAUn3B,CAAC,EAAIo3B,CACnB,CACE,UAAW/0B,KAAQ80B,EAAW,CAC5B,MAAMnP,EAAa0E,EAASrqB,EAAK,UAAU,GAAK80B,EAAU,KAAMt6B,GAAMA,EAAE,KAAOwF,EAAK,UAAU,EAC1FA,EAAK,YAAc,CAAC2lB,GACtBwI,EAAa,IAAIE,GAAaC,GAAU,oBAAqBtuB,EAAK,GAAIA,EAAK,UAAU,CAAC,GAEpFA,EAAK,YAAc60B,EAAY70B,EAAK,EAAE,KACpC60B,EAAY70B,EAAK,EAAE,IACrBA,EAAK,SAAW,IAEd2lB,IACFA,EAAW,SAAW,IAG9B,CACE,OAAOmP,CACT,CACA,SAASE,GAAsBx2B,EAAMk0B,EAAYuC,EAAeC,EAAkBrO,EAAQuI,EAAU,CAClG,IAAIv2B,EAAMguB,EACV,MAAMsO,EAAUD,EAAiB,IAAIr8B,CAAG,GAAqB,IAAI,IACjEq8B,EAAiB,IAAIr8B,EAAKs8B,EAAQ,IAAIF,EAAevC,CAAU,CAAC,EAChE75B,EAAM,GAAGguB,CAAM,IAAIroB,CAAI,GACvB,MAAM42B,EAAUF,EAAiB,IAAIr8B,CAAG,GAAqB,IAAI,IAEjE,GADAq8B,EAAiB,IAAIr8B,EAAKu8B,EAAQ,IAAIH,EAAevC,CAAU,CAAC,EAC5DtD,EAAU,CACZv2B,EAAM,GAAGguB,CAAM,IAAIroB,CAAI,IAAI4wB,CAAQ,GACnC,MAAMiG,EAAYH,EAAiB,IAAIr8B,CAAG,GAAqB,IAAI,IACnEq8B,EAAiB,IAAIr8B,EAAKw8B,EAAU,IAAIJ,EAAevC,CAAU,CAAC,CACtE,CACA,CACA,SAAS4C,GAAuBJ,EAAkBK,EAAYjP,EAAO,CACnE4O,EAAiB,MAAK,EACtB,UAAWlP,KAAQM,EAAO,CACxB,KAAM,CAAE,OAAQkP,EAAY,OAAQC,EAAY,aAAAzO,EAAe,KAAM,aAAAC,EAAe,IAAI,EAAKjB,EACvF0M,EAAa,CAAE,OAAQ1M,EAAK,GAAI,OAAQwP,EAAY,OAAQC,EAAY,aAAAzO,EAAc,aAAAC,CAAY,EAClGyO,EAAY,GAAGF,CAAU,IAAIxO,CAAY,KAAKyO,CAAU,IAAIxO,CAAY,GACxE0O,EAAY,GAAGF,CAAU,IAAIxO,CAAY,KAAKuO,CAAU,IAAIxO,CAAY,GAC9EgO,GAAsB,SAAUtC,EAAYiD,EAAWT,EAAkBM,EAAYxO,CAAY,EACjGgO,GAAsB,SAAUtC,EAAYgD,EAAWR,EAAkBO,EAAYxO,CAAY,CACrG,CACA,CAgCA,SAAS2O,GAAapxB,EAAGC,EAAG,CAC1B,GAAID,EAAE,OAASC,EAAE,KACf,MAAO,GAET,UAAWynB,KAAQ1nB,EACjB,GAAI,CAACC,EAAE,IAAIynB,CAAI,EACb,MAAO,GAGX,MAAO,EACT,CACA,SAAS2J,GAAiBC,EAAW7D,EAAmB5H,EAAU0L,EAAUC,EAAS9P,EAAoBG,EAAOC,EAAO,CACrH,MAAM2P,EAAa,CAAA,EACnB,UAAWC,KAAoBJ,EAAW,CACxC,MAAM9P,EAAOb,GAAO+Q,CAAgB,EAAIA,EAAmB7B,GAAe6B,EAAkB5P,EAAO0P,EAAS9P,CAAkB,EAC9H,GAAI,CAACF,EACH,SAEF,MAAMwP,EAAanL,EAASrE,EAAK,MAAM,EACjCyP,EAAapL,EAASrE,EAAK,MAAM,EACvC,GAAI,CAACwP,GAAc,CAACC,EAAY,CAC9BO,EAAQ,IAAI3H,GAAaC,GAAU,2BAA4BtI,EAAK,GAAIA,EAAK,OAAQA,EAAK,MAAM,CAAC,EACjG,QACN,CACI,GAAI,CAACwP,EAAY,CACfQ,EAAQ,IAAI3H,GAAaC,GAAU,oBAAqBtI,EAAK,GAAIA,EAAK,MAAM,CAAC,EAC7E,QACN,CACI,GAAI,CAACyP,EAAY,CACfO,EAAQ,IAAI3H,GAAaC,GAAU,oBAAqBtI,EAAK,GAAIA,EAAK,MAAM,CAAC,EAC7E,QACN,CACI,GAAIiM,GAOE,CANYA,EAAkBjM,EAAM,CACtC,MAAAM,EACA,MAAAD,EACA,WAAAmP,EACA,WAAAC,CACR,CAAO,EACa,CACZO,EAAQ,IAAI3H,GAAaC,GAAU,aAActI,EAAK,EAAE,CAAC,EACzD,QACR,CAEI,MAAMC,EAAe8P,EAAS/P,EAAK,EAAE,EACrCiQ,EAAW,KAAK,CACd,GAAGlQ,GAAUC,EAAMC,EAAcC,CAAkB,EACnD,WAAAsP,EACA,WAAAC,CACN,CAAK,CACL,CACE,OAAOQ,CACT,CACA,MAAME,GAAU,OAAO,SAAS,EAC1BC,GAAS,OAAO,QAAQ,EACxBC,GAAU,OAAO,SAAS,EAC1BC,GAAS,OAAO,QAAQ,EACxBC,GAAU,OAAO,SAAS,EAC1BC,GAAQ,OAAO,OAAO,EAC5B,SAASC,GAAQztB,EAAQ,CACvB,KAAM,CACJ,WAAA0tB,EACA,WAAAlP,EACA,SAAAC,EACA,gBAAAkP,EACA,MAAAtQ,EACA,WAAAuI,EACA,kBAAAgI,EACA,SAAArO,EACA,kBAAAsO,EACA,aAAAC,EACA,eAAAzJ,EACA,MAAA0J,EACA,SAAA1M,EACA,qBAAA0J,EACA,qBAAAG,EACA,kBAAA8C,EACA,uBAAAC,EACA,iBAAAjD,EACA,oBAAAkD,EACA,MAAAC,CACJ,EAAMC,GAAU,EACR,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,QAAAC,EAAS,GAAAl8B,EAAI,SAAAm8B,EAAU,GAAIxf,EAAK,WAAA4Q,EAAY,WAAA6O,CAAU,EAAK1uB,EACtF2uB,EAAWtU,EAAAA,WAAW,EAAK,EACjC,IAAIkK,EAAY,CAAA,EACZqK,EACAC,EAAkB,KAClBC,EAAU,CAAE,EAAG,OAAQ,EAAG,MAAM,EAChCC,EAAgB,CAAE,EAAG,EAAG,EAAG,CAAC,EAC5BC,EAAY,KACZC,EAAc,GACdC,EAAY,EACZC,GAAiB,GACrB,MAAMC,EAAqBC,GAAqB,EAC1CC,EAAc,CAAC,CAAE,EAAAl4B,EAAG,EAAA0K,EAAC,IAAO,CAChCgtB,EAAU,CAAE,EAAA13B,EAAG,EAAA0K,EAAC,EAChB,IAAIytB,GAAY,GAchB,GAbAhL,EAAYA,EAAU,IAAK/yB,GAAM,CAC/B,MAAMm0B,EAAe,CAAE,EAAGvuB,EAAI5F,EAAE,SAAS,EAAG,EAAGsQ,GAAItQ,EAAE,SAAS,CAAC,EACzD,CAAE,iBAAA2vB,CAAgB,EAAKuE,GAC3Bl0B,EACAgtB,EAAW,MAAQE,GAAaiH,EAAclH,EAAS,KAAK,EAAIkH,EAChEwI,EAAM,MACNvI,EAAW,MACXp0B,EAAE,WAAa6vB,EAAS7vB,EAAE,UAAU,EAAI,MAChD,EACM,OAAA+9B,GAAYA,IAAa/9B,EAAE,SAAS,IAAM2vB,EAAiB,GAAK3vB,EAAE,SAAS,IAAM2vB,EAAiB,EAClG3vB,EAAE,SAAW2vB,EACN3vB,CACb,CAAK,EACG,EAAC+9B,KAGLrB,EAAoB3J,EAAW,GAAM,EAAI,EACzCoK,EAAS,MAAQ,GACbK,GAAW,CACb,KAAM,CAACQ,EAAaC,CAAM,EAAIjL,GAAsB,CAClD,GAAIvV,EACJ,UAAAsV,EACA,SAAAlD,CACR,CAAO,EACDiN,EAAO,CAAE,MAAOU,EAAW,KAAMQ,EAAa,MAAOC,EAAQ,CACnE,CACA,EACQC,EAAU,IAAM,CACpB,GAAI,CAACb,EACH,OAEF,KAAM,CAAC/M,EAAWC,EAAS,EAAIL,GAAYqN,EAAeF,EAAiBf,EAAa,KAAK,EAC7F,GAAIhM,IAAc,GAAKC,KAAc,EAAG,CACtC,MAAM4N,GAAU,CACd,GAAIb,EAAQ,GAAK,GAAKhN,EAAYvC,EAAS,MAAM,KACjD,GAAIuP,EAAQ,GAAK,GAAK/M,GAAYxC,EAAS,MAAM,IACzD,EACUwO,EAAM,CAAE,EAAGjM,EAAW,EAAGC,EAAS,CAAE,GACtCuN,EAAYK,EAAO,CAE3B,CACIT,EAAY,sBAAsBQ,CAAO,CAC7C,EACQE,GAAY,CAACr9B,EAAO64B,KAAW,CACnC6D,EAAc,GACd,MAAMj4B,GAAOqqB,EAASpS,CAAG,EACrB,CAAC+e,EAAkB,OAAS,CAACjD,EAAqB,OAAS/zB,KACxDA,GAAK,UACRi3B,EAAsB,GAGtBj3B,IAAQmjB,EAAAA,QAAU0F,CAAU,GAAKmO,EAAkB,OACrDlD,GACE9zB,GACA+zB,EAAqB,MACrBC,EACAiD,EACA/C,EACA,GACAE,EACR,EAEI,MAAMyE,EAAaT,EAAmB78B,EAAM,WAAW,EAGvD,GAFAu8B,EAAUe,EACVtL,EAAYH,GAAa/G,EAAM,MAAOgH,EAAe,MAAOwL,EAAYxO,EAAUpS,CAAG,EACjFsV,EAAU,OAAQ,CACpB,KAAM,CAACiL,EAAaC,CAAM,EAAIjL,GAAsB,CAClD,GAAIvV,EACJ,UAAAsV,EACA,SAAAlD,CACR,CAAO,EACDgN,EAAQ,CAAE,MAAO97B,EAAM,YAAa,KAAMi9B,EAAa,MAAOC,EAAQ,CAC5E,CACA,EACQK,GAAa,CAACv9B,EAAO64B,KAAW,CACpC,IAAIp7B,GACAuC,EAAM,YAAY,OAAS,aAAeA,EAAM,YAAY,QAAQ,OAAS,IAG7Eq7B,EAAkB,QAAU,GAC9BgC,GAAUr9B,EAAO64B,EAAM,EAEzB0D,EAAUM,EAAmB78B,EAAM,WAAW,EAC9Cs8B,IAAoB7+B,GAAK09B,EAAW,QAAU,KAAO,OAAS19B,GAAG,sBAAqB,IAAO,KAC7F++B,EAAgBxH,GAAiBh1B,EAAM,YAAas8B,CAAe,EACvE,EACQkB,GAAY,CAACx9B,EAAO64B,KAAW,CACnC,MAAMyE,GAAaT,EAAmB78B,EAAM,WAAW,EAKvD,GAJI,CAAC48B,IAAkBF,GAAepB,EAAkB,QACtDsB,GAAiB,GACjBO,EAAO,GAEL,CAACT,EAAa,CAChB,MAAM73B,EAAIy4B,GAAW,UAAYf,EAAQ,GAAK,GACxChtB,EAAI+tB,GAAW,UAAYf,EAAQ,GAAK,GAC5B,KAAK,KAAK13B,EAAIA,EAAI0K,EAAIA,CAAC,EACzB8rB,EAAkB,OAChCgC,GAAUr9B,EAAO64B,EAAM,CAE/B,EACS0D,EAAQ,IAAMe,GAAW,UAAYf,EAAQ,IAAMe,GAAW,WAAatL,EAAU,QAAU0K,IAClGD,EAAYz8B,EAAM,YAClBw8B,EAAgBxH,GAAiBh1B,EAAM,YAAas8B,CAAe,EACnES,EAAYO,EAAU,EAE5B,EACQG,GAAYz9B,GAAU,CAC1B,IAAI09B,GAAU,GACd,GAAI,CAAChB,GAAe,CAACN,EAAS,OAAS,CAAC5D,EAAqB,MAAO,CAClE,MAAMmF,GAAM39B,EAAM,YACZs9B,EAAaT,EAAmBc,EAAG,EACnC94B,EAAIy4B,EAAW,UAAYf,EAAQ,GAAK,GACxChtB,EAAI+tB,EAAW,UAAYf,EAAQ,GAAK,GACxCjN,EAAY,KAAK,KAAKzqB,EAAIA,EAAI0K,EAAIA,CAAC,EACrC+f,IAAc,GAAKA,GAAa+L,EAAkB,QACzBY,IAAQ0B,EAAG,EACtCD,GAAU,GAElB,CACI,GAAI1L,EAAU,QAAU,CAAC0L,GAAS,CAChC/B,EAAoB3J,EAAW,GAAO,EAAK,EAC3C,KAAM,CAACiL,GAAaC,CAAM,EAAIjL,GAAsB,CAClD,GAAIvV,EACJ,UAAAsV,EACA,SAAAlD,CACR,CAAO,EACDkN,EAAO,CAAE,MAAOh8B,EAAM,YAAa,KAAMi9B,GAAa,MAAOC,EAAQ,CAC3E,CACIlL,EAAY,CAAA,EACZoK,EAAS,MAAQ,GACjBQ,GAAiB,GACjBF,EAAc,GACdH,EAAU,CAAE,EAAG,OAAQ,EAAG,MAAM,EAChC,qBAAqBI,CAAS,CAClC,EACE5/B,OAAAA,EAAAA,MAAM,CAAC,IAAM6qB,UAAUsU,CAAQ,EAAGn8B,CAAE,EAAG,CAAC,CAAC69B,EAAY/E,EAAM,EAAGx2B,GAAGw7B,IAAc,CAC7E,GAAIhF,GAAQ,CACV,MAAM1wB,EAAa+F,GAAO2qB,EAAM,EAC3B+E,IACHvB,EAAcrsB,GAAI,EAAG,GAAG,QAAUhQ,GAAUu9B,GAAWv9B,EAAO64B,EAAM,CAAC,EAAE,GAAG,OAAS74B,GAAUw9B,GAAUx9B,EAAO64B,EAAM,CAAC,EAAE,GAAG,MAAQ74B,GAAUy9B,GAASz9B,CAAK,CAAC,EAAE,OAAQA,GAAU,CAC7K,MAAMP,EAASO,EAAM,OACf89B,EAAkBlW,EAAAA,QAAUuU,CAAU,EAC5C,MAAO,CAACn8B,EAAM,SAAW,CAACo7B,EAAgB,OAAS,CAACzJ,GAAYlyB,EAAQ,IAAI27B,EAAgB,KAAK,GAAIvC,EAAM,IAAM,CAACiF,GAAmBnM,GAAYlyB,EAAQq+B,EAAiBjF,EAAM,GAC1L,CAAS,EACD1wB,EAAW,KAAKk0B,CAAW,GAE7BwB,EAAU,IAAM,CACd11B,EAAW,GAAG,QAAS,IAAI,EACvBk0B,IACFA,EAAY,GAAG,QAAS,IAAI,EAC5BA,EAAY,GAAG,OAAQ,IAAI,EAC3BA,EAAY,GAAG,MAAO,IAAI,EAEpC,CAAO,CACP,CACA,CAAG,EACMD,CACT,CAeA,SAAS2B,IAAkB,CACzB,MAAO,CACL,YAAa5M,EAAuB,EACpC,MAAOA,EAAuB,EAC9B,WAAYA,EAAuB,EACnC,UAAWA,EAAuB,EAClC,WAAYA,EAAuB,EACnC,YAAaA,EAAuB,EACpC,YAAaA,EAAuB,EACpC,OAAQA,EAAuB,EAC/B,UAAWA,EAAuB,CACtC,CACA,CACA,SAAS6M,GAAavT,EAAMmR,EAAO,CACjC,MAAMqC,EAAYF,GAAe,EACjC,OAAAE,EAAU,YAAY,GAAIj+B,GAAU,CAClC,IAAIvC,EAAIyD,EACR06B,EAAM,gBAAgB57B,CAAK,GAC1BkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,cAAgB,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACpG,CAAG,EACDi+B,EAAU,MAAM,GAAIj+B,GAAU,CAC5B,IAAIvC,EAAIyD,EACR06B,EAAM,UAAU57B,CAAK,GACpBkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,QAAU,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAC9F,CAAG,EACDi+B,EAAU,WAAW,GAAIj+B,GAAU,CACjC,IAAIvC,EAAIyD,EACR06B,EAAM,eAAe57B,CAAK,GACzBkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,aAAe,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACnG,CAAG,EACDi+B,EAAU,UAAU,GAAIj+B,GAAU,CAChC,IAAIvC,EAAIyD,EACR06B,EAAM,cAAc57B,CAAK,GACxBkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,YAAc,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAClG,CAAG,EACDi+B,EAAU,WAAW,GAAIj+B,GAAU,CACjC,IAAIvC,EAAIyD,EACR06B,EAAM,eAAe57B,CAAK,GACzBkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,aAAe,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACnG,CAAG,EACDi+B,EAAU,YAAY,GAAIj+B,GAAU,CAClC,IAAIvC,EAAIyD,EACR06B,EAAM,gBAAgB57B,CAAK,GAC1BkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,cAAgB,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACpG,CAAG,EACDi+B,EAAU,YAAY,GAAIj+B,GAAU,CAClC,IAAIvC,EAAIyD,EACR06B,EAAM,gBAAgB57B,CAAK,GAC1BkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,cAAgB,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACpG,CAAG,EACDi+B,EAAU,OAAO,GAAIj+B,GAAU,CAC7B,IAAIvC,EAAIyD,EACR06B,EAAM,WAAW57B,CAAK,GACrBkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,SAAW,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAC/F,CAAG,EACDi+B,EAAU,UAAU,GAAIj+B,GAAU,CAChC,IAAIvC,EAAIyD,EACR06B,EAAM,cAAc57B,CAAK,GACxBkB,GAAMzD,EAAKgtB,EAAK,SAAW,KAAO,OAAShtB,EAAG,YAAc,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAClG,CAAG,EACM,OAAO,QAAQi+B,CAAS,EAAE,OAC/B,CAACC,EAAO,CAAC5gC,EAAKgB,CAAK,KACjB4/B,EAAM,KAAK5gC,CAAG,EAAIgB,EAAM,QACxB4/B,EAAM,GAAG5gC,CAAG,EAAIgB,EAAM,GACf4/B,GAET,CAAE,KAAM,GAAI,GAAI,CAAA,CAAE,CACtB,CACA,CACA,SAASpB,IAAwB,CAC/B,KAAM,CAAE,SAAA9P,EAAU,SAAAd,EAAU,WAAAD,EAAY,WAAAkP,CAAU,EAAKU,GAAU,EACjE,OAAQ77B,GAAU,CAChB,IAAIvC,EACJ,MAAM6+B,IAAoB7+B,EAAK09B,EAAW,QAAU,KAAO,OAAS19B,EAAG,sBAAqB,IAAO,CAAE,KAAM,EAAG,IAAK,CAAC,EAC9GkgC,EAAM5I,GAAe/0B,CAAK,EAAIA,EAAM,YAAcA,EAClD,CAAE,EAAA6E,EAAG,EAAA0K,CAAC,EAAKylB,GAAiB2I,EAAKrB,CAAe,EAChDgB,EAAatR,GAAqB,CAAE,EAAAnnB,EAAG,EAAA0K,CAAC,EAAIyd,EAAS,KAAK,EAC1D,CAAE,EAAGmR,EAAU,EAAGC,CAAQ,EAAKnS,EAAW,MAAQE,GAAamR,EAAYpR,EAAS,KAAK,EAAIoR,EACnG,MAAO,CACL,SAAAa,EACA,SAAAC,EACA,GAAGd,CACT,CACA,CACA,CACA,SAASe,IAAc,CACrB,MAAO,EACT,CACA,SAASC,GAAU,CACjB,SAAAzK,EACA,OAAAvI,EACA,KAAAroB,EACA,kBAAAyzB,EACA,gBAAAW,EACA,aAAAkH,EACA,gBAAAC,CACF,EAAG,CACD,KAAM,CACJ,GAAI/H,EACJ,WAAA0E,EACA,eAAA/E,EACA,iBAAAR,EACA,eAAA6I,EACA,2BAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,aAAArD,EACA,SAAAzM,EACA,MAAA0M,EACA,gBAAAqD,EACA,iBAAAC,EACA,cAAAC,EACA,MAAAnD,EACA,SAAA5O,EACA,MAAAjC,EACA,MAAAD,EACA,kBAAmBkU,EACnB,WAAAvJ,CACJ,EAAMoG,GAAU,EACd,IAAI1E,EAAa,KACbC,EAAU,GACV7B,EAAgB,KACpB,SAAS0J,EAAkBj/B,EAAO,CAChC,IAAIvC,EACJ,MAAMk5B,EAAW/O,EAAAA,QAAU3kB,CAAI,IAAM,SAC/Bi8B,EAAmBpK,GAAa90B,CAAK,EACrC2pB,EAAMF,GAAkBzpB,EAAM,MAAM,EAC1C,GAAIk/B,GAAoBl/B,EAAM,SAAW,GAAK,CAACk/B,EAAkB,CAC/D,IAAIC,EAAgB,SAAS5tB,GAAQ,CACnC6tB,EAAqBpK,GAAiBzjB,GAAQ+qB,CAAe,EAC7D+C,EAAgB1J,GACd3J,GAAqBoT,EAAoBpS,EAAS,MAAO,GAAO,CAAC,EAAG,CAAC,CAAC,EACtE4I,EAAiB,MACjBH,EAAW,MACXI,CACV,EACa+G,IACHO,EAAO,EACPP,EAAiB,IAEnB,MAAMv/B,GAAS84B,GACb5kB,GACA,CACE,OAAQ8tB,EACR,eAAgBjJ,EAAe,MAC/B,WAAYxO,EAAAA,QAAU0D,CAAM,EAC5B,aAAc1D,EAAAA,QAAUiM,CAAQ,EAChC,SAAU8C,EAAW,SAAW,SAChC,kBAAmB2I,EACnB,IAAA3V,EACA,IAAK,MACL,OAAA8M,EACA,WAAYhB,EAAW,KACnC,EACU1K,EAAM,MACND,EAAM,MACNgE,CACV,EACQyG,EAAgBl4B,GAAO,cACvB85B,EAAa95B,GAAO,WACpB+5B,EAAUM,GAAkB,CAAC,CAAC2H,EAAehiC,GAAO,OAAO,EAC3D,MAAMkiC,GAAiB,CAErB,GAAGC,EACH,QAAApI,EACA,GAAI/5B,GAAO,UAAY+5B,EAAUxL,GAAqB,CAAE,EAAGvuB,GAAO,SAAS,EAAG,EAAGA,GAAO,SAAS,CAAC,EAAI2vB,EAAS,KAAK,EAAIoS,EACxH,SAAU/hC,GAAO,SACjB,WAAY+5B,GAAW/5B,GAAO,SAAWA,GAAO,SAAS,SAAWy6B,GAAiBjC,EAAW,QAAQ,EACxG,OAAQx4B,GAAO,SAAWo4B,EAAW,MAAM,IAAIp4B,GAAO,SAAS,MAAM,EAAI,IACnF,EACQ,GAAI,EAAA+5B,GAAWiI,GAAwDG,GAAmB,UAAaD,GAAe,UAAYC,EAAmB,SAAS,OAASD,GAAe,SAAS,MAAQC,EAAmB,SAAS,SAAWD,GAAe,SAAS,QAAUC,EAAmB,SAAS,KAAOD,GAAe,SAAS,IAAMC,EAAmB,GAAG,IAAMD,GAAe,GAAG,GAAKC,EAAmB,GAAG,IAAMD,GAAe,GAAG,GAelb,IAZAT,EACEO,GAAiBjI,EAAUxL,GACzB,CACE,EAAGyT,EAAc,EACjB,EAAGA,EAAc,CAC/B,EACYrS,EAAS,KACrB,EAAcoS,EACJ/hC,GAAO,SACPi6B,GAAoB,CAAC,CAAC+H,EAAejI,CAAO,CACtD,EACQoI,EAAqBD,GACjB,CAACF,GAAiB,CAACjI,GAAW,CAAC7B,EACjC,OAAOD,GAAkBmK,EAAgB,EAEvCtI,GAAcA,EAAW,SAAWA,EAAW,QAAU5B,IAC3DD,GAAkBmK,EAAgB,EAClCA,GAAmBlK,EACnBA,EAAc,UAAU,IAAI,aAAc,6BAA6B,EACvEA,EAAc,UAAU,OAAO,QAAS,CAAC,CAAC6B,CAAO,EACjD7B,EAAc,UAAU,OAAO,yBAA0B,CAAC,CAAC6B,CAAO,GAE5E,EAASsI,EAAc,SAASnuB,GAAQ,EAC3B8tB,GAAiB9J,IAAkB4B,GAAcC,IAC/CmH,EAGHA,EAAahtB,GAAQ4lB,CAAU,EAF/ByE,EAAM,QAAQzE,CAAU,GAK5ByE,EAAM,WAAWrqB,EAAM,EACnB8lB,GACiCmH,IAAgBjtB,EAAM,EAE3D+jB,GAAkBmK,EAAgB,EAClC,qBAAqB9C,CAAS,EAC9BoC,EAAcxtB,EAAM,EACpBqrB,EAAiB,GACjBxF,EAAU,GACVD,EAAa,KACb5B,EAAgB,KAChB5L,EAAI,oBAAoB,YAAawV,CAAa,EAClDxV,EAAI,oBAAoB,UAAW+V,CAAW,EAC9C/V,EAAI,oBAAoB,YAAawV,CAAa,EAClDxV,EAAI,oBAAoB,WAAY+V,CAAW,CACvD,EACM,MAAMj7B,GAAOqqB,EAASlH,EAAAA,QAAU0D,CAAM,CAAC,EACvC,IAAIgU,EAA2B1X,EAAAA,QAAU8O,CAAiB,GAAKsI,EAAsB,OAASX,GAC1F,CAACiB,GAA4B76B,KAC/B66B,GAA6B3I,EAAmClyB,GAAK,iBAA7BA,GAAK,mBAA6C45B,IAE5F,IAAIgB,EACA1C,EAAY,EAChB,KAAM,CAAE,EAAA93B,GAAG,EAAA0K,IAAMylB,GAAiBh1B,CAAK,EACjC2/B,GAAuChW,GAAI,iBAAiB9kB,GAAG0K,EAAC,EAChEunB,GAAaC,GAAcnP,EAAAA,QAAUyP,CAAe,EAAGsI,EAAa,EACpErD,GAAmB7+B,EAAK09B,EAAW,QAAU,KAAO,OAAS19B,EAAG,sBAAqB,EAC3F,GAAI,CAAC6+B,GAAmB,CAACxF,GACvB,OAEF,MAAM8I,GAAqBjI,GAAU/P,UAAU0D,CAAM,EAAGwL,GAAYlP,UAAUiM,CAAQ,EAAG4B,EAAW,MAAOW,EAAe,KAAK,EAC/H,GAAI,CAACwJ,GACH,OAEF,IAAIH,GACAL,EAAqBpK,GAAiBh1B,EAAOs8B,CAAe,EAC5DM,EAAiB,GACrB,MAAMO,EAAU,IAAM,CACpB,GAAI,CAACyB,EAAiB,MACpB,OAEF,KAAM,CAACrP,GAAWC,EAAS,EAAIL,GAAYiQ,EAAoB9C,EAAiBf,EAAa,KAAK,EAClGC,EAAM,CAAE,EAAGjM,GAAW,EAAGC,EAAS,CAAE,EACpCmN,EAAY,sBAAsBQ,CAAO,CACjD,EACYtH,EAAa,CACjB,GAAG+J,GACH,OAAQhY,EAAAA,QAAU0D,CAAM,EACxB,KAAMwL,GACN,SAAU8I,GAAmB,QACrC,EACYC,EAAmBpK,EAAW,MAAM,IAAI7N,EAAAA,QAAU0D,CAAM,CAAC,EAEzD2N,EAAgB,CACpB,WAAY,GACZ,QAAS,KACT,KAJW1F,GAAkBsM,EAAkBhK,EAAYhQ,EAAS,KAAM,EAAI,EAK9E,WAAAgQ,EACA,aAAcA,EAAW,SACzB,SAAUgK,EACV,GAAIT,EACJ,SAAU,KACV,WAAYtH,GAAiBjC,EAAW,QAAQ,EAChD,OAAQ,IAChB,EACMgJ,EACE,CACE,OAAQjX,EAAAA,QAAU0D,CAAM,EACxB,GAAI1D,EAAAA,QAAUiM,CAAQ,EACtB,KAAMiD,GACN,SAA4C6I,IAAc,aAAa,gBAAgB,GAAM9Z,EAAS,IACtG,GAAGuZ,CACb,EACQ,CACE,EAAGv6B,GAAIy3B,EAAgB,KACvB,EAAG/sB,GAAI+sB,EAAgB,GACjC,CACA,EACMV,EAAM,aAAa,CAAE,MAAA57B,EAAO,OAAQ4nB,EAAAA,QAAU0D,CAAM,EAAG,SAAU1D,EAAAA,QAAUiM,CAAQ,EAAG,WAAAiD,EAAU,CAAE,EAClG,IAAI0I,EAAqBvG,EACzBtP,EAAI,iBAAiB,YAAawV,CAAa,EAC/CxV,EAAI,iBAAiB,UAAW+V,CAAW,EAC3C/V,EAAI,iBAAiB,YAAawV,CAAa,EAC/CxV,EAAI,iBAAiB,WAAY+V,CAAW,CAClD,CACA,CACE,SAASI,EAAY9/B,EAAO,CAC1B,IAAIvC,EAAIyD,EACR,GAAI,CAACu9B,EAAe,MAClB,OAEF,MAAM9H,EAAW/O,EAAAA,QAAU3kB,CAAI,IAAM,SACrC,GAAI,CAACy7B,EAA2B,MAAO,CACrC9C,EAAM,kBAAkB,CAAE,MAAA57B,EAAO,OAAQ4nB,EAAAA,QAAU0D,CAAM,EAAG,SAAU1D,UAAUiM,CAAQ,CAAC,CAAE,EAC3FgL,EACE,CACE,OAAQjX,EAAAA,QAAU0D,CAAM,EACxB,KAAM1D,EAAAA,QAAU3kB,CAAI,EACpB,GAAI2kB,EAAAA,QAAUiM,CAAQ,EACtB,SAAUhO,EAAS,IACnB,GAAGmP,GAAiBh1B,CAAK,CACnC,EACQ,OACA,EACR,EACM,MACN,CACI,IAAIs/B,EAA2B1X,EAAAA,QAAU8O,CAAiB,GAAKsI,EAAsB,OAASX,GAC9F,MAAM55B,EAAOqqB,EAASlH,EAAAA,QAAU0D,CAAM,CAAC,EAIvC,GAHI,CAACgU,GAA4B76B,IAC/B66B,GAA6B3I,EAAmClyB,EAAK,iBAA7BA,EAAK,mBAA6C45B,IAExF55B,IAAS,OAAOA,EAAK,YAAgB,IAAck6B,EAAiB,MAAQl6B,EAAK,eAAiB,GACpG,OAEF,MAAMklB,EAAMF,GAAkBzpB,EAAM,MAAM,EACpC3C,GAAS84B,GACbn2B,EACA,CACE,OAAQ,CACN,OAAQ4nB,EAAAA,QAAU0D,CAAM,EACxB,GAAI1D,EAAAA,QAAUiM,CAAQ,EACtB,KAAMjM,EAAAA,QAAU3kB,CAAI,EACpB,SAAU4iB,EAAS,IACnB,GAAGmP,GAAiBh1B,CAAK,CACnC,EACQ,eAAgBo2B,EAAe,MAC/B,WAAYsI,EAA2B,MAAM,OAC7C,aAAcA,EAA2B,MAAM,IAAM,KACrD,SAAUA,EAA2B,MAAM,KAC3C,kBAAmBY,EACnB,IAAA3V,EACA,IAAK,MACL,OAAA8M,EACA,WAAYhB,EAAW,KAC/B,EACM1K,EAAM,MACND,EAAM,MACNgE,CACN,EACUiR,IAAgBtiC,EAAKJ,GAAO,aAAe,KAAO,OAASI,EAAG,YAAcyD,EAAK7D,GAAO,aAAe,KAAO,OAAS6D,EAAG,QAC5H7D,GAAO,SAAWA,GAAO,YAAc,CAAC0iC,GAC1CnE,EAAM,QAAQv+B,GAAO,UAAU,EAEjCu+B,EAAM,gBAAgB57B,CAAK,EAC3B++B,EAAc/+B,EAAO,EAAI,CAC7B,CACE,MAAO,CACL,kBAAAi/B,EACA,YAAAa,CACJ,CACA,CACA,SAASE,IAAY,CACnB,OAAOC,EAAAA,OAAOpF,GAAQ,EAAE,CAC1B,CACA,SAASqF,GAAQxjB,EAAK,CACpB,MAAM4O,EAAS5O,GAAOsjB,GAAS,GAAM,GAC/BnH,EAASoH,EAAAA,OAAOnF,GAAS7+B,EAAAA,IAAI,IAAI,CAAC,EAClC,CAAE,SAAA6yB,EAAU,MAAA/D,EAAO,MAAA6Q,CAAK,EAAKC,GAAU,EACvCp3B,EAAOqqB,EAASxD,CAAM,EAC5B,OAAK7mB,GACHm3B,EAAM,MAAM,IAAI9I,GAAaC,GAAU,eAAgBzH,CAAM,CAAC,EAEzD,CACL,GAAIA,EACJ,OAAAuN,EACA,KAAAp0B,EACA,WAAYxC,EAAAA,SAAS,IAAM6sB,EAASrqB,EAAK,UAAU,CAAC,EACpD,eAAgBxC,EAAAA,SAAS,IAAM2rB,GAAkB,CAACnpB,CAAI,EAAGsmB,EAAM,KAAK,CAAC,CACzE,CACA,CACA,SAASoV,IAAkB,CACzB,MAAO,CACL,YAAahP,EAAuB,EACpC,MAAOA,EAAuB,EAC9B,WAAYA,EAAuB,EACnC,UAAWA,EAAuB,EAClC,WAAYA,EAAuB,EACnC,YAAaA,EAAuB,EACpC,UAAWA,EAAuB,EAClC,KAAMA,EAAuB,EAC7B,SAAUA,EAAuB,CACrC,CACA,CACA,SAASiP,GAAa37B,EAAMm3B,EAAO,CACjC,MAAMyE,EAAYF,GAAe,EACjC,OAAAE,EAAU,YAAY,GAAIrgC,GAAU,CAClC,IAAIvC,EAAIyD,EACR06B,EAAM,gBAAgB57B,CAAK,GAC1BkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,cAAgB,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACpG,CAAG,EACDqgC,EAAU,MAAM,GAAIrgC,GAAU,CAC5B,IAAIvC,EAAIyD,EACR06B,EAAM,UAAU57B,CAAK,GACpBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,QAAU,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAC9F,CAAG,EACDqgC,EAAU,WAAW,GAAIrgC,GAAU,CACjC,IAAIvC,EAAIyD,EACR06B,EAAM,eAAe57B,CAAK,GACzBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,aAAe,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACnG,CAAG,EACDqgC,EAAU,UAAU,GAAIrgC,GAAU,CAChC,IAAIvC,EAAIyD,EACR06B,EAAM,cAAc57B,CAAK,GACxBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,YAAc,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAClG,CAAG,EACDqgC,EAAU,WAAW,GAAIrgC,GAAU,CACjC,IAAIvC,EAAIyD,EACR06B,EAAM,eAAe57B,CAAK,GACzBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,aAAe,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACnG,CAAG,EACDqgC,EAAU,YAAY,GAAIrgC,GAAU,CAClC,IAAIvC,EAAIyD,EACR06B,EAAM,gBAAgB57B,CAAK,GAC1BkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,cAAgB,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACpG,CAAG,EACDqgC,EAAU,UAAU,GAAIrgC,GAAU,CAChC,IAAIvC,EAAIyD,EACR06B,EAAM,cAAc57B,CAAK,GACxBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,YAAc,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAClG,CAAG,EACDqgC,EAAU,KAAK,GAAIrgC,GAAU,CAC3B,IAAIvC,EAAIyD,EACR06B,EAAM,SAAS57B,CAAK,GACnBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,OAAS,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CAC7F,CAAG,EACDqgC,EAAU,SAAS,GAAIrgC,GAAU,CAC/B,IAAIvC,EAAIyD,EACR06B,EAAM,aAAa57B,CAAK,GACvBkB,GAAMzD,EAAKgH,EAAK,SAAW,KAAO,OAAShH,EAAG,WAAa,MAAgByD,EAAG,KAAKzD,EAAIuC,CAAK,CACjG,CAAG,EACM,OAAO,QAAQqgC,CAAS,EAAE,OAC/B,CAACnC,EAAO,CAAC5gC,EAAKgB,CAAK,KACjB4/B,EAAM,KAAK5gC,CAAG,EAAIgB,EAAM,QACxB4/B,EAAM,GAAG5gC,CAAG,EAAIgB,EAAM,GACf4/B,GAET,CAAE,KAAM,GAAI,GAAI,CAAA,CAAE,CACtB,CACA,CACA,SAASoC,IAAyB,CAChC,KAAM,CAAE,iBAAAC,EAAkB,WAAAlN,EAAY,oBAAAsI,EAAqB,SAAA7M,EAAU,SAAA5C,EAAU,WAAAD,EAAY,eAAA6F,EAAgB,MAAA8J,CAAK,EAAKC,GAAU,EAC/H,MAAO,CAAC2E,EAAcC,EAAiB,KAAU,CAC/C,MAAMC,EAAQzU,EAAW,MAAQC,EAAS,MAAM,CAAC,EAAI,EAC/CyU,EAAQ1U,EAAW,MAAQC,EAAS,MAAM,CAAC,EAAI,EAC/C0U,EAASH,EAAiB,EAAI,EAC9BI,EAAgBL,EAAa,EAAIE,EAAQE,EACzCE,EAAgBN,EAAa,EAAIG,EAAQC,EACzCG,EAAc,CAAA,EACpB,UAAWt8B,KAAQ87B,EAAiB,MAClC,GAAI97B,EAAK,WAAaqtB,GAAkB,OAAOrtB,EAAK,UAAc,IAAa,CAC7E,MAAM2uB,EAAe,CAAE,EAAG3uB,EAAK,iBAAiB,EAAIo8B,EAAe,EAAGp8B,EAAK,iBAAiB,EAAIq8B,CAAa,EACvG,CAAE,iBAAAlS,CAAgB,EAAKuE,GAC3B1uB,EACA2uB,EACAwI,EAAM,MACNvI,EAAW,MACX5uB,EAAK,WAAaqqB,EAASrqB,EAAK,UAAU,EAAI,MACxD,EACQs8B,EAAY,KAAK,CACf,GAAIt8B,EAAK,GACT,SAAUmqB,EACV,KAAMnqB,EAAK,SACX,SAAU,CAAE,EAAG+7B,EAAa,EAAG,EAAGA,EAAa,CAAC,EAChD,WAAY/7B,EAAK,UAC3B,CAAS,CACT,CAEIk3B,EAAoBoF,EAAa,GAAM,EAAK,CAChD,CACA,CACA,MAAMC,GAAkB,GAClBC,GAAe3+B,KAAQA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,EAChF,SAAS4+B,IAAO,CACd,OAAAlJ,GAAK,+BAA+B,EAC7B,QAAQ,QAAQ,EAAK,CAC9B,CACA,MAAMmJ,GAAwB,CAC5B,OAAQD,GACR,QAASA,GACT,OAAQA,GACR,QAASA,GACT,UAAWA,GACX,UAAWA,GACX,QAAU1X,GAAaA,EACvB,uBAAyBA,GAAaA,EACtC,uBAAyBA,GAAaA,EACtC,YAAa0X,GACb,aAAcA,GACd,YAAa,KAAO,CAAE,EAAG,EAAG,EAAG,EAAG,KAAM,IACxC,aAAc,KAAO,CAAE,EAAG,EAAG,EAAG,EAAG,KAAM,IACzC,oBAAqB,EACvB,EACA,SAASE,GAAkBC,EAAO,CAChC,SAASroB,EAAMZ,EAAOkpB,EAAmB,CACvC,OAAO,IAAI,QAAS5lC,GAAY,CAC1B2lC,EAAM,aAAeA,EAAM,OAC7BA,EAAM,OAAO,YAAkDC,GAAkB,cAAiB,SAAWvrB,GAAgB4C,EAAe,EAAE,QAC5I4oB,GAAgBF,EAAM,YAAkDC,GAAkB,SAA+CA,GAAkB,KAAM,IAAM,CACrK5lC,EAAQ,EAAI,CACxB,CAAW,EACD0c,CACV,EAEQ1c,EAAQ,EAAK,CAErB,CAAK,CACL,CACE,SAAS8lC,EAAkB38B,EAAG0K,EAAGkyB,EAAQH,EAAmB,CAC1D,OAAO,IAAI,QAAS5lC,GAAY,CAC9B,IAAI+B,EACJ,KAAM,CAAE,EAAGikC,EAAU,EAAGC,CAAQ,EAAKpY,GAAc,CAAE,EAAG,CAAC1kB,EAAG,EAAG,CAAC0K,CAAC,EAAI8xB,EAAM,eAAe,EACpFO,EAAgB3e,GAAS,UAAU,CAACye,EAAU,CAACC,CAAQ,EAAE,MAAMF,CAAM,EACvEJ,EAAM,aAAeA,EAAM,QAC5B5jC,EAAK4jC,EAAM,SAAW,MAAgB5jC,EAAG,YAAkD6jC,GAAkB,cAAiB,SAAWvrB,GAAgB4C,EAAe,EAAE,UACzK4oB,GAAgBF,EAAM,YAAkDC,GAAkB,SAA+CA,GAAkB,KAAM,IAAM,CACrK5lC,EAAQ,EAAI,CACxB,CAAW,EACDkmC,CACV,EAEQlmC,EAAQ,EAAK,CAErB,CAAK,CACL,CACE,OAAOuG,EAAAA,SAAS,IACQo/B,EAAM,QAAUA,EAAM,aAAeA,EAAM,WAAW,OAASA,EAAM,WAAW,OAI/F,CACL,oBAAqB,GAErB,OAASxkC,GACAmc,EAAM,IAAKnc,CAAO,EAE3B,QAAUA,GACDmc,EAAM,EAAI,IAAKnc,CAAO,EAE/B,OAAQ,CAACglC,EAAWhlC,IACX,IAAI,QAASnB,GAAY,CAC1B2lC,EAAM,aAAeA,EAAM,OAC7BA,EAAM,OAAO,YAAwCxkC,GAAQ,cAAiB,SAAWkZ,GAAgB4C,EAAe,EAAE,QACxH4oB,GAAgBF,EAAM,YAAwCxkC,GAAQ,SAAqCA,GAAQ,KAAM,IAAM,CAC7HnB,EAAQ,EAAI,CAC5B,CAAe,EACDmmC,CACd,EAEYnmC,EAAQ,EAAK,CAEzB,CAAS,EAEH,YAAa,CAAConB,EAAWjmB,IAChB2kC,EAAkB1e,EAAU,EAAGA,EAAU,EAAGA,EAAU,KAAMjmB,CAAO,EAE5E,aAAc,CAACimB,EAAWjmB,IACjB2kC,EAAkB1e,EAAU,EAAGA,EAAU,EAAGA,EAAU,KAAMjmB,CAAO,EAE5E,YAAa,KAAO,CAClB,EAAGwkC,EAAM,SAAS,EAClB,EAAGA,EAAM,SAAS,EAClB,KAAMA,EAAM,SAAS,IAC7B,GACM,aAAc,KACL,CACL,EAAGA,EAAM,SAAS,EAClB,EAAGA,EAAM,SAAS,EAClB,KAAMA,EAAM,SAAS,IAC/B,GAEM,QAAS,CAACxkC,EAAU,CAClB,QAASmkC,GACT,mBAAoB,GACpB,SAAU,CAClB,IAAY,CACJ,IAAIvjC,EAAIyD,EACR,MAAM4gC,EAAa,CAAA,EACnB,UAAWr9B,KAAQ48B,EAAM,MACL58B,EAAK,WAAW,OAASA,EAAK,WAAW,SAAuC5H,GAAQ,oBAAuB,CAAC4H,EAAK,UAEjI,GAAGhH,EAAKZ,EAAQ,QAAU,MAAgBY,EAAG,UAAayD,EAAKrE,EAAQ,QAAU,MAAgBqE,EAAG,QAAWrE,EAAQ,MAAM,SAAS4H,EAAK,EAAE,IAC/Iq9B,EAAW,KAAKr9B,CAAI,EAI1B,GAAI,CAACq9B,EAAW,OACd,OAAO,QAAQ,QAAQ,EAAK,EAE9B,MAAM9T,EAASnB,GAAeiV,CAAU,EAClC,CAAE,EAAAj9B,EAAG,EAAA0K,EAAG,KAAMkyB,CAAM,EAAK1T,GAC7BC,EACAqT,EAAM,WAAW,MACjBA,EAAM,WAAW,OACjBxkC,EAAQ,SAAWwkC,EAAM,QACzBxkC,EAAQ,SAAWwkC,EAAM,QACzBxkC,EAAQ,SAAWmkC,GACnBnkC,EAAQ,MAClB,EACQ,OAAO2kC,EAAkB38B,EAAG0K,EAAGkyB,EAAQ5kC,CAAO,CACtD,EACM,UAAW,CAACgI,EAAG0K,EAAG1S,IAAY,CAC5B,MAAMklC,EAAW,OAAmCllC,GAAQ,KAAU,IAAcA,EAAQ,KAAOwkC,EAAM,QACnGW,EAAUX,EAAM,WAAW,MAAQ,EAAIx8B,EAAIk9B,EAC3CE,EAAUZ,EAAM,WAAW,OAAS,EAAI9xB,EAAIwyB,EAClD,OAAOP,EAAkBQ,EAASC,EAASF,EAAUllC,CAAO,CACpE,EACM,UAAW,CAACmxB,EAAQnxB,EAAU,CAAE,QAASmkC,EAAe,IAAO,CAC7D,KAAM,CAAE,EAAAn8B,EAAG,EAAA0K,EAAG,KAAMkyB,CAAM,EAAK1T,GAC7BC,EACAqT,EAAM,WAAW,MACjBA,EAAM,WAAW,OACjBA,EAAM,QACNA,EAAM,QACNxkC,EAAQ,OAClB,EACQ,OAAO2kC,EAAkB38B,EAAG0K,EAAGkyB,EAAQ5kC,CAAO,CACtD,EACM,QAAU2sB,GAAawC,GAAqBxC,EAAU6X,EAAM,SAAUA,EAAM,WAAYA,EAAM,QAAQ,EACtG,uBAAyB7X,GAAa,CACpC,GAAI6X,EAAM,WAAY,CACpB,KAAM,CAAE,EAAGa,EAAM,EAAGC,CAAI,EAAKd,EAAM,WAAW,sBAAqB,EAC7De,EAAoB,CACxB,EAAG5Y,EAAS,EAAI0Y,EAChB,EAAG1Y,EAAS,EAAI2Y,CAC5B,EACU,OAAOnW,GAAqBoW,EAAmBf,EAAM,SAAUA,EAAM,WAAYA,EAAM,QAAQ,CACzG,CACQ,MAAO,CAAE,EAAG,EAAG,EAAG,CAAC,CAC3B,EACM,uBAAyB7X,GAAa,CACpC,GAAI6X,EAAM,WAAY,CACpB,KAAM,CAAE,EAAGa,EAAM,EAAGC,CAAI,EAAKd,EAAM,WAAW,sBAAqB,EAC7De,EAAoB,CACxB,EAAG5Y,EAAS,EAAI0Y,EAChB,EAAG1Y,EAAS,EAAI2Y,CAC5B,EACU,OAAOvW,GAAqBwW,EAAmBf,EAAM,QAAQ,CACvE,CACQ,MAAO,CAAE,EAAG,EAAG,EAAG,CAAC,CAC3B,CACA,EAjHaF,EAkHV,CACH,CACA,SAASI,GAAgBp5B,EAAYic,EAAW,EAAGie,EAAOpB,GAAaqB,EAAQ,IAAM,CACrF,EAAG,CACD,MAAMC,EAAc,OAAOne,GAAa,UAAYA,EAAW,EAC/D,OAAKme,GACHD,EAAK,EAEAC,EAAcp6B,EAAW,WAAU,EAAG,SAASic,CAAQ,EAAE,KAAKie,CAAI,EAAE,GAAG,MAAOC,CAAK,EAAIn6B,CAChG,CACA,SAASq6B,GAAcC,EAAQzhC,EAAO0hC,EAAO,CAC3C,MAAMC,EAAQC,EAAAA,YAAY,EAAI,EAC9B,OAAAD,EAAM,IAAI,IAAM,CACd,MAAME,EAAkB,IAAM,CAC5BF,EAAM,IAAI,IAAM,CACd,IAAIG,EACAC,EACAC,EAAiB,CAAC,EAAEN,EAAM,MAAM,MAAM,QAAUA,EAAM,MAAM,MAAM,QACtEI,EAAa9lC,GAAc,CAACylC,EAAO,WAAY,IAAM,CACnD,IAAIhlC,EAAIyD,EACR,OAAQA,GAAMzD,EAAKglC,EAAO,aAAe,KAAO,OAAShlC,EAAG,QAAU,KAAO,OAASyD,EAAG,MACnG,CAAS,EAAG,CAAC,CAACmqB,CAAQ,IAAM,CACdA,GAAY,MAAM,QAAQA,CAAQ,IACN0X,GAAW,MAAK,EAC9CL,EAAM,YAAYrX,CAAQ,EACtB,CAAC0X,GAAc,CAACC,GAAkB3X,EAAS,OAC7C2X,EAAiB,GAEaD,GAAW,OAAM,EAG7D,CAAS,EACDA,EAAa/lC,GACX,CAAC0lC,EAAM,MAAOA,EAAM,MAAO,IAAMA,EAAM,MAAM,MAAM,OAAQ,IAAMA,EAAM,MAAM,MAAM,MAAM,EACzF,CAAC,CAAC5X,EAAOC,CAAK,IAAM,CAClB,IAAIttB,GACEA,EAAKglC,EAAO,aAAe,MAAgBhlC,EAAG,OAAU,MAAM,QAAQglC,EAAO,WAAW,KAAK,IACnEK,GAAW,MAAK,EAC9CL,EAAO,WAAW,MAAQ,CAAC,GAAG3X,EAAO,GAAGC,CAAK,EAC7C/oB,EAAAA,SAAS,IAAM,CACiB8gC,GAAW,OAAM,CAC/D,CAAe,EAEf,EACU,CAAE,UAAWE,CAAc,CACrC,EACQpoC,EAAAA,eAAe,IAAM,CACWkoC,GAAW,KAAI,EACfC,GAAW,KAAI,CACvD,CAAS,CACT,CAAO,CACP,EACUE,EAAkB,IAAM,CAC5BN,EAAM,IAAI,IAAM,CACd,IAAIG,EACAC,EACAC,EAAiB,CAAC,CAACN,EAAM,MAAM,MAAM,OACzCI,EAAa9lC,GAAc,CAACylC,EAAO,MAAO,IAAM,CAC9C,IAAIhlC,EAAIyD,EACR,OAAQA,GAAMzD,EAAKglC,EAAO,QAAU,KAAO,OAAShlC,EAAG,QAAU,KAAO,OAASyD,EAAG,MAC9F,CAAS,EAAG,CAAC,CAAC4pB,CAAK,IAAM,CACXA,GAAS,MAAM,QAAQA,CAAK,IACAiY,GAAW,MAAK,EAC9CL,EAAM,SAAS5X,CAAK,EAChB,CAACiY,GAAc,CAACC,GAAkBlY,EAAM,OAC1CkY,EAAiB,GAEaD,GAAW,OAAM,EAG7D,CAAS,EACDA,EAAa/lC,GACX,CAAC0lC,EAAM,MAAO,IAAMA,EAAM,MAAM,MAAM,MAAM,EAC5C,CAAC,CAAC5X,CAAK,IAAM,CACX,IAAIrtB,GACEA,EAAKglC,EAAO,QAAU,MAAgBhlC,EAAG,OAAU,MAAM,QAAQglC,EAAO,MAAM,KAAK,IACzDK,GAAW,MAAK,EAC9CL,EAAO,MAAM,MAAQ,CAAC,GAAG3X,CAAK,EAC9B9oB,EAAAA,SAAS,IAAM,CACiB8gC,GAAW,OAAM,CAC/D,CAAe,EAEf,EACU,CAAE,UAAWE,CAAc,CACrC,EACQpoC,EAAAA,eAAe,IAAM,CACWkoC,GAAW,KAAI,EACfC,GAAW,KAAI,CACvD,CAAS,CACT,CAAO,CACP,EACUG,EAAkB,IAAM,CAC5BP,EAAM,IAAI,IAAM,CACd,IAAIG,EACAC,EACAC,EAAiB,CAAC,CAACN,EAAM,MAAM,MAAM,OACzCI,EAAa9lC,GAAc,CAACylC,EAAO,MAAO,IAAM,CAC9C,IAAIhlC,EAAIyD,EACR,OAAQA,GAAMzD,EAAKglC,EAAO,QAAU,KAAO,OAAShlC,EAAG,QAAU,KAAO,OAASyD,EAAG,MAC9F,CAAS,EAAG,CAAC,CAAC6pB,CAAK,IAAM,CACXA,GAAS,MAAM,QAAQA,CAAK,IACAgY,GAAW,MAAK,EAC9CL,EAAM,SAAS3X,CAAK,EAChB,CAACgY,GAAc,CAACC,GAAkBjY,EAAM,OAC1CiY,EAAiB,GAEaD,GAAW,OAAM,EAG7D,CAAS,EACDA,EAAa/lC,GACX,CAAC0lC,EAAM,MAAO,IAAMA,EAAM,MAAM,MAAM,MAAM,EAC5C,CAAC,CAAC3X,CAAK,IAAM,CACX,IAAIttB,GACEA,EAAKglC,EAAO,QAAU,MAAgBhlC,EAAG,OAAU,MAAM,QAAQglC,EAAO,MAAM,KAAK,IACzDK,GAAW,MAAK,EAC9CL,EAAO,MAAM,MAAQ,CAAC,GAAG1X,CAAK,EAC9B/oB,EAAAA,SAAS,IAAM,CACiB8gC,GAAW,OAAM,CAC/D,CAAe,EAEf,EACU,CAAE,UAAWE,CAAc,CACrC,EACQpoC,EAAAA,eAAe,IAAM,CACWkoC,GAAW,KAAI,EACfC,GAAW,KAAI,CACvD,CAAS,CACT,CAAO,CACP,EACUI,EAAe,IAAM,CACzBR,EAAM,IAAI,IAAM,CACd5lC,EAAAA,MACE,IAAMiE,EAAM,QACZ,IAAM,CACAA,EAAM,SAAWupB,GAAMvpB,EAAM,OAAO,GACtC0hC,EAAM,WAAW1hC,EAAM,OAAO,CAE5C,EACU,CACE,UAAW,EACvB,CACA,CACA,CAAO,CACP,EACUoiC,EAAe,IAAM,CACzBT,EAAM,IAAI,IAAM,CACd5lC,EAAAA,MACE,IAAMiE,EAAM,QACZ,IAAM,CACAA,EAAM,SAAWupB,GAAMvpB,EAAM,OAAO,GACtC0hC,EAAM,WAAW1hC,EAAM,OAAO,CAE5C,EACU,CAAE,UAAW,EAAI,CAC3B,CACA,CAAO,CACP,EACUqiC,EAAuB,IAAM,CACjCV,EAAM,IAAI,IAAM,CACd5lC,EAAAA,MACE,IAAMiE,EAAM,gBACZ,IAAM,CACAA,EAAM,iBAAmBupB,GAAMvpB,EAAM,eAAe,GACtD0hC,EAAM,mBAAmB1hC,EAAM,eAAe,CAE5D,EACU,CACE,UAAW,EACvB,CACA,CACA,CAAO,CACP,EACUsiC,EAAkB,IAAM,CAC5BX,EAAM,IAAI,IAAM,CACd5lC,EAAAA,MACE,IAAMiE,EAAM,WACZ,IAAM,CACAA,EAAM,YAAcupB,GAAMvpB,EAAM,UAAU,GAC5C0hC,EAAM,cAAc1hC,EAAM,UAAU,CAElD,EACU,CACE,UAAW,EACvB,CACA,CACA,CAAO,CACP,EACUuiC,EAAoB,IAAM,CAC9BZ,EAAM,IAAI,IAAM,CACd5lC,EAAAA,MACE,IAAMiE,EAAM,aACZ,IAAM,CACAupB,GAAMvpB,EAAM,YAAY,IAC1B0hC,EAAM,aAAa,MAAQ1hC,EAAM,aAE/C,EACU,CACE,UAAW,EACvB,CACA,CACA,CAAO,CACP,EACUwiC,EAAmB,IAAM,CAC7Bb,EAAM,IAAI,IAAM,CACd,MAAMc,EAAgB,MAAOh2B,GAAW,CACtC,IAAI0pB,EAAa1pB,EACb,OAAOzM,EAAM,aAAgB,aAC/Bm2B,EAAa,MAAMn2B,EAAM,YAAYyM,CAAM,GAEzC0pB,IAAe,IACjBuL,EAAM,SAAS,CAACvL,CAAU,CAAC,CAEvC,EACQp6B,EAAAA,MACE,IAAMiE,EAAM,YACZ,IAAM,CACAupB,GAAMvpB,EAAM,WAAW,IACzB0hC,EAAM,YAAY,MAAQ1hC,EAAM,YAE9C,EACU,CAAE,UAAW,EAAI,CAC3B,EACQjE,EAAAA,MACE2lC,EAAM,YACN,CAACgB,EAAoBrhC,EAAGw7B,IAAc,CAChC6F,EACFhB,EAAM,UAAUe,CAAa,EAE7Bf,EAAM,MAAM,MAAM,QAAQ,IAAIe,CAAa,EAE7C5F,EAAU,IAAM,CACd6E,EAAM,MAAM,MAAM,QAAQ,IAAIe,CAAa,CACzD,CAAa,CACb,EACU,CAAE,UAAW,EAAI,CAC3B,CACA,CAAO,CACP,EACUE,EAAY,IAAM,CACtB,MAAMC,EAAO,CACX,KACA,aACA,kBACA,aACA,QACA,QACA,UACA,UACA,eACA,aACR,EACM,UAAWtmC,KAAO,OAAO,KAAK0D,CAAK,EAAG,CACpC,MAAM6iC,EAAUvmC,EAChB,GAAI,CAACsmC,EAAK,SAASC,CAAO,EAAG,CAC3B,MAAMC,EAAYC,EAAAA,MAAM,IAAM/iC,EAAM6iC,CAAO,CAAC,EACtCG,EAAWtB,EAAMmB,CAAO,EAC1B1mC,EAAAA,MAAM6mC,CAAQ,GAChBrB,EAAM,IAAI,IAAM,CACd5lC,EAAAA,MACE+mC,EACCG,GAAc,CACT1Z,GAAM0Z,CAAS,IACjBD,EAAS,MAAQC,EAErC,EACgB,CAAE,UAAW,EAAI,CACjC,CACA,CAAa,CAEb,CACA,CACA,GACmB,IAAM,CACnBpB,EAAe,EACfI,EAAe,EACfC,EAAe,EACfE,EAAY,EACZD,EAAY,EACZE,EAAoB,EACpBC,EAAe,EACfC,EAAiB,EACjBC,EAAgB,EAChBG,EAAS,CACf,GACU,CACV,CAAG,EACM,IAAMhB,EAAM,KAAI,CACzB,CAkBA,SAASuB,IAAc,CACrB,MAAO,CACL,YAAa/S,EAAuB,EACpC,YAAaA,EAAuB,EACpC,gBAAiBA,EAAuB,EACxC,UAAWA,EAAuB,EAClC,eAAgBA,EAAuB,EACvC,cAAeA,EAAuB,EACtC,eAAgBA,EAAuB,EACvC,gBAAiBA,EAAuB,EACxC,cAAeA,EAAuB,EACtC,SAAUA,EAAuB,EACjC,aAAcA,EAAuB,EACrC,iBAAkBA,EAAuB,EACzC,iBAAkBA,EAAuB,EACzC,uBAAwBA,EAAuB,EAC/C,sBAAuBA,EAAuB,EAC9C,qBAAsBA,EAAuB,EAC7C,sBAAuBA,EAAuB,EAC9C,QAASA,EAAuB,EAChC,aAAcA,EAAuB,EACrC,WAAYA,EAAuB,EACnC,kBAAmBA,EAAuB,EAC1C,gBAAiBA,EAAuB,EACxC,UAAWA,EAAuB,EAClC,KAAMA,EAAuB,EAC7B,KAAMA,EAAuB,EAC7B,UAAWA,EAAuB,EAClC,QAASA,EAAuB,EAChC,mBAAoBA,EAAuB,EAC3C,cAAeA,EAAuB,EACtC,kBAAmBA,EAAuB,EAC1C,qBAAsBA,EAAuB,EAC7C,eAAgBA,EAAuB,EACvC,aAAcA,EAAuB,EACrC,oBAAqBA,EAAuB,EAC5C,eAAgBA,EAAuB,EACvC,kBAAmBA,EAAuB,EAC1C,WAAYA,EAAuB,EACnC,UAAWA,EAAuB,EAClC,gBAAiBA,EAAuB,EACxC,eAAgBA,EAAuB,EACvC,cAAeA,EAAuB,EACtC,eAAgBA,EAAuB,EACvC,gBAAiBA,EAAuB,EACxC,eAAgBA,EAAuB,EACvC,cAAeA,EAAuB,EACtC,eAAgBA,EAAuB,EACvC,gBAAiBA,EAAuB,EACxC,UAAWA,EAAuB,EAClC,gBAAiBA,EAAuB,EACxC,WAAYA,EAAuB,EACnC,cAAeA,EAAuB,EACtC,oBAAqBA,EAAuB,EAC5C,MAAOA,EAAyBgT,GAAQnM,GAAKmM,EAAI,OAAO,CAAC,CAC7D,CACA,CACA,SAASC,GAASnjC,EAAMi9B,EAAO,CAC7BmG,EAAAA,cAAc,IAAM,CAClB,SAAW,CAAC/mC,EAAKgB,CAAK,IAAK,OAAO,QAAQ4/B,EAAM,KAAK,EAAG,CACtD,MAAMj+B,EAAY0G,GAAS,CACzB1F,EAAK3D,EAAKqJ,CAAI,CACtB,EACMrI,EAAM,IAAI,IAAI2B,CAAQ,EACtBxF,GAAkB,IAAM,CACtB6D,EAAM,IAAI2B,CAAQ,CAC1B,CAAO,CACP,CACA,CAAG,CACH,CACA,SAASqkC,IAAW,CAClB,MAAO,CACL,WAAY,KACZ,YAAa,KACb,MAAO,CAAA,EACP,MAAO,CAAA,EACP,iBAAkC,IAAI,IACtC,UAAW,CAAA,EACX,UAAW,CAAA,EACX,YAAa,GACb,WAAY,CACV,MAAO,EACP,OAAQ,CACd,EACI,SAAU,CAAE,EAAG,EAAG,EAAG,EAAG,KAAM,CAAC,EAC/B,OAAQ,KACR,YAAa,KACb,cAAe,KACf,QAAS,GACT,QAAS,EACT,gBAAiB,CACf,CAAC,OAAO,kBAAmB,OAAO,iBAAiB,EACnD,CAAC,OAAO,kBAAmB,OAAO,iBAAiB,CACzD,EACI,WAAY,CACV,CAAC,OAAO,kBAAmB,OAAO,iBAAiB,EACnD,CAAC,OAAO,kBAAmB,OAAO,iBAAiB,CACzD,EACI,cAAeve,GAAc,KAC7B,aAAc,GACd,iBAAkB,GAClB,aAAc,GACd,YAAa,GACb,kBAAmB,GACnB,YAAa,GACb,iBAAkB,GAClB,gBAAiBQ,GAAgB,KACjC,kBAAmB,EACnB,UAAW,GACX,kBAAmB,GACnB,0BAA2B,GAC3B,gBAAiB,CAAE,EAAG,EAAG,EAAG,EAAG,KAAM,CAAC,EACtC,qBAAsB,GACtB,oBAAqB,GACrB,kBAAmB,KACnB,mBAAoB,UACpB,oBAAqB,CAAA,EACrB,mBAAoB,KACpB,sBAAuB,CACrB,KAAMN,GAAmB,OACzB,MAAO,CAAA,CACb,EACI,eAAgBE,GAAe,MAC/B,sBAAuB,KACvB,oBAAqB,KACrB,2BAA4B,KAC5B,mBAAoB,CAAE,EAAG,OAAO,IAAK,EAAG,OAAO,GAAG,EAClD,iBAAkB,GAClB,eAAgB,GAChB,iBAAkB,KAClB,kBAAmB,KACnB,SAAU,CAAC,GAAI,EAAE,EACjB,WAAY,GACZ,eAAgB,GAChB,eAAgB,GAChB,eAAgB,GAChB,iBAAkB,GAClB,eAAgB,GAChB,kBAAmB,EACnB,mBAAoB,GACpB,kBAAmB,GACnB,qBAAsB,GACtB,iBAAkB,QAClB,sBAAuBiP,KAAY,OAAS,UAC5C,sBAAuBA,KAAY,OAAS,UAC5C,cAAe,YACf,qBAAsB,QACtB,MAAO8O,GAAW,EAClB,aAAc,GACd,YAAa,GACb,cAAe,GACf,kBAAmB,GACnB,gBAAiB,SACjB,iBAAkB,UAClB,eAAgB,QAChB,mBAAoB,OACpB,qBAAsB,GACtB,qBAAsB,GACtB,kBAAmB,GACnB,iBAAkB,GAClB,aAAc,GACd,oBAAqB,GACrB,gBAAiB,EACrB,CACA,CACA,MAAMK,GAAqB,CACzB,KACA,aACA,cACA,cACA,aACA,QACA,QACA,UACA,UACA,kBACA,QACA,oBACF,EACA,SAASC,GAAWnD,EAAO5L,EAAYuE,EAAY,CACjD,MAAMyK,EAAiBrD,GAAkBC,CAAK,EACxCqD,EAAuBC,GAAQ,CACnC,MAAMC,EAAYD,GAAO,CAAA,EACzBtD,EAAM,MAAM,oBAAoB,QAAQuD,CAAS,CACrD,EACQC,EAAiBha,GACdU,GAAYV,EAAUwW,EAAM,MAAOA,EAAM,KAAK,EAEjDyD,EAAiBja,GACdM,GAAYN,EAAUwW,EAAM,MAAOA,EAAM,KAAK,EAEjD0D,EAAuBlX,GACpBD,GAAkBC,EAAWwT,EAAM,KAAK,EAE3C2D,EAAuB,CAAC,CAAE,GAAItoB,EAAK,KAAAzZ,EAAM,OAAAqoB,KAAa,CAC1D,IAAI7tB,EACJ,OAAO,MAAM,OAAOA,EAAK4jC,EAAM,iBAAiB,IAAI,GAAG/V,CAAM,IAAIroB,CAAI,IAAIyZ,GAAO,IAAI,EAAE,IAAM,KAAO,OAASjf,EAAG,OAAM,IAAO,EAAE,CAClI,EACQqxB,EAAYpS,GAAQ,CACxB,GAAKA,EAGL,OAAO+Y,EAAW,MAAM,IAAI/Y,CAAG,CACnC,EACQ8d,EAAY9d,GAAQ,CACxB,GAAKA,EAGL,OAAOsd,EAAW,MAAM,IAAItd,CAAG,CACnC,EACQif,EAAsB,CAAC3J,EAAWjzB,EAASq9B,IAAa,CAC5D,IAAI3+B,EAAIyD,EACR,MAAMivB,EAAU,CAAA,EAChB,UAAW1rB,KAAQutB,EAAW,CAC5B,MAAM3B,EAAS,CACb,GAAI5rB,EAAK,GACT,KAAM,WACN,SAAA23B,EACA,KAAM33B,EAAK,IACnB,EACM,GAAI1F,IACFsxB,EAAO,SAAW5rB,EAAK,SACnBA,EAAK,YAAY,CACnB,MAAM2lB,GAAa0E,EAASrqB,EAAK,UAAU,EAC3C4rB,EAAO,SAAW,CAChB,EAAGA,EAAO,SAAS,KAAO5yB,EAAmC2sB,IAAW,mBAAqB,KAAO,OAAS3sB,EAAG,IAAM,GACtH,EAAG4yB,EAAO,SAAS,KAAOnvB,EAAmCkpB,IAAW,mBAAqB,KAAO,OAASlpB,EAAG,IAAM,EAClI,CACA,CAEMivB,EAAQ,KAAKE,CAAM,CACzB,CACmCF,GAAQ,QACrCkR,EAAM,MAAM,YAAY,QAAQlR,CAAO,CAE7C,EACQ8U,EAAwBC,GAAY,CACxC,GAAI,CAAC7D,EAAM,WACT,OAEF,MAAM8D,EAAe9D,EAAM,WAAW,cAAc,+BAA+B,EACnF,GAAI,CAAC8D,EACH,OAEF,MAAMC,EAAQ,OAAO,iBAAiBD,CAAY,EAC5C,CAAE,IAAKnsB,CAAK,EAAK,IAAI,OAAO,kBAAkBosB,EAAM,SAAS,EAC7DjV,EAAU,CAAA,EAChB,UAAWzG,KAAWwb,EAAS,CAC7B,MAAMl/B,EAAS0jB,EACTjlB,EAAOqqB,EAAS9oB,EAAO,EAAE,EAC/B,GAAIvB,EAAM,CACR,MAAM4oB,GAAahE,GAAcrjB,EAAO,WAAW,EAEnD,GADiB,CAAC,EAAEqnB,GAAW,OAASA,GAAW,SAAW5oB,EAAK,WAAW,QAAU4oB,GAAW,OAAS5oB,EAAK,WAAW,SAAW4oB,GAAW,QAAUrnB,EAAO,cACrJ,CACZ,MAAMqyB,GAAaryB,EAAO,YAAY,sBAAqB,EAC3DvB,EAAK,WAAa4oB,GAClB5oB,EAAK,aAAa,OAAS0zB,GAAgB,SAAUnyB,EAAO,YAAaqyB,GAAYrf,EAAOvU,EAAK,EAAE,EACnGA,EAAK,aAAa,OAAS0zB,GAAgB,SAAUnyB,EAAO,YAAaqyB,GAAYrf,EAAOvU,EAAK,EAAE,EACnG0rB,EAAQ,KAAK,CACX,GAAI1rB,EAAK,GACT,KAAM,aACN,WAAA4oB,EACZ,CAAW,CACX,CACA,CACA,CACQ,CAACgU,EAAM,mBAAqBA,EAAM,eACpCoD,EAAe,MAAM,QAAO,EAAG,KAAK,IAAM,CACxCpD,EAAM,kBAAoB,EAClC,CAAO,EAEClR,EAAQ,QACVkR,EAAM,MAAM,YAAY,QAAQlR,CAAO,CAE7C,EACQkV,EAA0B,CAACha,EAAUoF,IAAa,CACtD,MAAM3C,EAA0B,IAAI,IAC9BwX,EAA0B,IAAI,IACpC,UAAW5b,KAAW2B,EAChBxB,GAAOH,CAAO,EAChBoE,EAAQ,IAAIpE,EAAQ,EAAE,EACbE,GAAOF,CAAO,GACvB4b,EAAQ,IAAI5b,EAAQ,EAAE,EAG1B,MAAM6b,EAAezU,GAAoB2E,EAAW,MAAO3H,EAAS,EAAI,EAClE0X,EAAe1U,GAAoBkJ,EAAW,MAAOsL,CAAO,EAClE,GAAIjE,EAAM,qBAAsB,CAC9B,UAAW/V,KAAUwC,EACnByX,EAAa,KAAK/U,GAAsBlF,EAAQmF,CAAQ,CAAC,EAE3D,UAAWgV,KAAUH,EACnBE,EAAa,KAAKhV,GAAsBiV,EAAQhV,CAAQ,CAAC,CAEjE,CACQ8U,EAAa,QACflE,EAAM,MAAM,YAAY,QAAQkE,CAAY,EAE1CC,EAAa,QACfnE,EAAM,MAAM,YAAY,QAAQmE,CAAY,CAElD,EACQ/M,EAAoB3N,GAAU,CAClC,GAAIuW,EAAM,qBAAsB,CAC9B,MAAMqE,EAAc5a,EAAM,IAAKrmB,GAAS+rB,GAAsB/rB,EAAK,GAAI,EAAI,CAAC,EAC5E48B,EAAM,MAAM,YAAY,QAAQqE,CAAW,EAC3C,MACN,CACIrE,EAAM,MAAM,YAAY,QAAQvQ,GAAoB2E,EAAW,MAAO,IAAI,IAAI3K,EAAM,IAAK7rB,GAAMA,EAAE,EAAE,CAAC,EAAG,EAAI,CAAC,EAC5GoiC,EAAM,MAAM,YAAY,QAAQvQ,GAAoBkJ,EAAW,KAAK,CAAC,CACzE,EACQ2L,EAAoB5a,GAAU,CAClC,GAAIsW,EAAM,qBAAsB,CAC9B,MAAMmE,EAAeza,EAAM,IAAKN,GAAS+F,GAAsB/F,EAAK,GAAI,EAAI,CAAC,EAC7E4W,EAAM,MAAM,YAAY,QAAQmE,CAAY,EAC5C,MACN,CACInE,EAAM,MAAM,YAAY,QAAQvQ,GAAoBkJ,EAAW,MAAO,IAAI,IAAIjP,EAAM,IAAKlqB,GAAMA,EAAE,EAAE,CAAC,CAAC,CAAC,EACtGwgC,EAAM,MAAM,YAAY,QAAQvQ,GAAoB2E,EAAW,MAAuB,IAAI,IAAO,EAAI,CAAC,CAC1G,EACQmQ,EAAuBva,GAAa,CACxCga,EAAwBha,EAAU,EAAI,CAC1C,EACQqN,EAAuB5N,GAAU,CAErC,MAAM4a,GADkB5a,GAASuW,EAAM,OACH,IAAKpiC,IACvCA,EAAE,SAAW,GACNuxB,GAAsBvxB,EAAE,GAAI,EAAK,EACzC,EACDoiC,EAAM,MAAM,YAAY,QAAQqE,CAAW,CAC/C,EACQG,EAAuB9a,GAAU,CAErC,MAAM+a,GADkB/a,GAASsW,EAAM,OACH,IAAKxgC,IACvCA,EAAE,SAAW,GACN2vB,GAAsB3vB,EAAE,GAAI,EAAK,EACzC,EACDwgC,EAAM,MAAM,YAAY,QAAQyE,CAAW,CAC/C,EACQpK,EAA0BrQ,GAAa,CAC3C,GAAI,CAACA,GAAY,CAACA,EAAS,OACzB,OAAOga,EAAwB,CAAA,EAAI,EAAK,EAE1C,MAAMlV,EAAU9E,EAAS,OACvB,CAAC0a,EAAUC,IAAS,CAClB,MAAMC,EAAkBzV,GAAsBwV,EAAK,GAAI,EAAK,EAC5D,OAAInc,GAAOmc,CAAI,EACbD,EAAS,MAAM,KAAKE,CAAe,EAEnCF,EAAS,MAAM,KAAKE,CAAe,EAE9BF,CACf,EACM,CAAE,MAAO,GAAI,MAAO,CAAA,CAAE,CAC5B,EACQ5V,EAAQ,MAAM,QAChBkR,EAAM,MAAM,YAAY,QAAQlR,EAAQ,KAAK,EAE3CA,EAAQ,MAAM,QAChBkR,EAAM,MAAM,YAAY,QAAQlR,EAAQ,KAAK,CAEnD,EACQ+V,EAAcjY,GAAY,CAC9B,IAAIxwB,GACHA,EAAK4jC,EAAM,SAAW,MAAgB5jC,EAAG,YAAY,CAACwwB,EAASoT,EAAM,OAAO,CAAC,EAC9EA,EAAM,QAAUpT,CACpB,EACQkY,EAAcjY,GAAY,CAC9B,IAAIzwB,GACHA,EAAK4jC,EAAM,SAAW,MAAgB5jC,EAAG,YAAY,CAAC4jC,EAAM,QAASnT,CAAO,CAAC,EAC9EmT,EAAM,QAAUnT,CACpB,EACQkY,EAAsBziB,GAAoB,CAC9C,IAAIlmB,GACHA,EAAK4jC,EAAM,SAAW,MAAgB5jC,EAAG,gBAAgBkmB,CAAe,EACzE0d,EAAM,gBAAkB1d,CAC5B,EACQ0iB,EAAiBhT,GAAe,CACpCgO,EAAM,WAAahO,EACnBqR,EAAmB,CACvB,EACQ4B,EAAwBC,GAAkB,CAC9C,IAAI9oC,GACHA,EAAK4jC,EAAM,SAAW,MAAgB5jC,EAAG,cAAc8oC,CAAa,CACzE,EACQC,EAAkBC,GAAkB,CACxCpF,EAAM,eAAiBoF,EACvBpF,EAAM,iBAAmBoF,EACzBpF,EAAM,mBAAqBoF,CAC/B,EACQC,EAAY5b,GAAU,CAC1B,MAAMyO,EAAYzO,aAAiB,SAAWA,EAAMuW,EAAM,KAAK,EAAIvW,EAC/D,CAACuW,EAAM,aAAe,CAAC9H,EAAU,SAGrC8H,EAAM,MAAQhI,GAAiBE,EAAWzK,EAAUuS,EAAM,MAAM,MAAM,OAAO,EACjF,EACQsF,EAAY5b,GAAU,CAC1B,MAAMwP,EAAYxP,aAAiB,SAAWA,EAAMsW,EAAM,KAAK,EAAItW,EACnE,GAAI,CAACsW,EAAM,aAAe,CAAC9G,EAAU,OACnC,OAEF,MAAMG,EAAaJ,GACjBC,EACA8G,EAAM,kBACNvS,EACA0L,EACA6G,EAAM,MAAM,MAAM,QAClBA,EAAM,mBACNA,EAAM,MACNA,EAAM,KACZ,EACItH,GAAuBsH,EAAM,iBAAkBrH,EAAW,MAAOU,CAAU,EAC3E2G,EAAM,MAAQ3G,CAClB,EACQkM,EAAevb,GAAa,CAChC,MAAMwb,EAAexb,aAAoB,SAAWA,EAAS,CAAC,GAAGgW,EAAM,MAAO,GAAGA,EAAM,KAAK,CAAC,EAAIhW,EAC7F,CAACgW,EAAM,aAAe,CAACwF,EAAa,SAGxCH,EAASG,EAAa,OAAOhd,EAAM,CAAC,EACpC8c,EAASE,EAAa,OAAOjd,EAAM,CAAC,EACxC,EACQkd,EAAYhc,GAAU,CAC1B,IAAIyO,EAAYzO,aAAiB,SAAWA,EAAMuW,EAAM,KAAK,EAAIvW,EACjEyO,EAAY,MAAM,QAAQA,CAAS,EAAIA,EAAY,CAACA,CAAS,EAC7D,MAAMwN,EAAa1N,GAAiBE,EAAWzK,EAAUuS,EAAM,MAAM,MAAM,OAAO,EAC5ElR,EAAU,CAAA,EAChB,UAAW1rB,KAAQsiC,EACjB5W,EAAQ,KAAKO,GAAqBjsB,CAAI,CAAC,EAErC0rB,EAAQ,QACVkR,EAAM,MAAM,YAAY,QAAQlR,CAAO,CAE7C,EACQ6W,EAAYv5B,GAAW,CAC3B,IAAI8sB,EAAY9sB,aAAkB,SAAWA,EAAO4zB,EAAM,KAAK,EAAI5zB,EACnE8sB,EAAY,MAAM,QAAQA,CAAS,EAAIA,EAAY,CAACA,CAAS,EAC7D,MAAMG,EAAaJ,GACjBC,EACA8G,EAAM,kBACNvS,EACA0L,EACA6G,EAAM,MAAM,MAAM,QAClBA,EAAM,mBACNA,EAAM,MACNA,EAAM,KACZ,EACUlR,EAAU,CAAA,EAChB,UAAW1F,KAAQiQ,EACjBvK,EAAQ,KAAKO,GAAqBjG,CAAI,CAAC,EAErC0F,EAAQ,QACVkR,EAAM,MAAM,YAAY,QAAQlR,CAAO,CAE7C,EACQ8W,EAAc,CAACnc,EAAOoc,EAAuB,GAAMC,EAAiB,KAAU,CAClF,MAAM5N,EAAYzO,aAAiB,SAAWA,EAAMuW,EAAM,KAAK,EAAIvW,EAC7Dsc,EAAgB,MAAM,QAAQ7N,CAAS,EAAIA,EAAY,CAACA,CAAS,EACjEmM,EAAc,CAAA,EACdI,EAAc,CAAA,EACpB,SAASuB,EAAyBnK,GAAQ,CACxC,MAAMoK,GAAiBvC,EAAoB7H,EAAM,EACjD,UAAWzS,MAAQ6c,IACb,CAAA/c,GAAME,GAAK,SAAS,GAAIA,GAAK,YAC/Bqb,EAAY,KAAKjV,GAAuBpG,GAAK,GAAIA,GAAK,OAAQA,GAAK,OAAQA,GAAK,aAAcA,GAAK,YAAY,CAAC,CAG1H,CACI,SAAS8c,GAA6B7qB,GAAK,CACzC,MAAMiE,GAAY,CAAA,EAClB,UAAWlc,MAAQ48B,EAAM,MACnB58B,GAAK,aAAeiY,IACtBiE,GAAU,KAAKlc,EAAI,EAGvB,GAAIkc,GAAU,OAAQ,CACpB,UAAWta,MAASsa,GAClB+kB,EAAY,KAAK9U,GAAuBvqB,GAAM,EAAE,CAAC,EAE/C6gC,GACFG,EAAyB1mB,EAAS,EAEpC,UAAWta,MAASsa,GAClB4mB,GAA6BlhC,GAAM,EAAE,CAE/C,CACA,CACI,UAAWsqB,MAAQyW,EAAe,CAChC,MAAMI,GAAW,OAAO7W,IAAS,SAAW7B,EAAS6B,EAAI,EAAIA,GACxD6W,KAGDjd,GAAMid,GAAS,SAAS,GAAK,CAACA,GAAS,YAG3C9B,EAAY,KAAK9U,GAAuB4W,GAAS,EAAE,CAAC,EAChDN,GACFG,EAAyB,CAACG,EAAQ,CAAC,EAEjCL,GACFI,GAA6BC,GAAS,EAAE,GAEhD,CACQ1B,EAAY,QACdzE,EAAM,MAAM,YAAY,QAAQyE,CAAW,EAEzCJ,EAAY,QACdrE,EAAM,MAAM,YAAY,QAAQqE,CAAW,CAEjD,EACQ+B,EAAe1c,GAAU,CAC7B,MAAMwP,EAAYxP,aAAiB,SAAWA,EAAMsW,EAAM,KAAK,EAAItW,EAC7D2c,EAAgB,MAAM,QAAQnN,CAAS,EAAIA,EAAY,CAACA,CAAS,EACjEpK,EAAU,CAAA,EAChB,UAAWQ,KAAQ+W,EAAe,CAChC,MAAMC,EAAW,OAAOhX,GAAS,SAAW6J,EAAS7J,CAAI,EAAIA,EACxDgX,IAGDpd,GAAMod,EAAS,SAAS,GAAK,CAACA,EAAS,WAG3CxX,EAAQ,KACNU,GACE,OAAOF,GAAS,SAAWA,EAAOA,EAAK,GACvCgX,EAAS,OACTA,EAAS,OACTA,EAAS,aACTA,EAAS,YACnB,CACA,EACA,CACItG,EAAM,MAAM,YAAY,QAAQlR,CAAO,CAC3C,EACQyX,EAAc,CAACC,EAAS5O,EAAeE,EAAkB,KAAS,CACtE,MAAMD,EAAWsB,EAASqN,EAAQ,EAAE,EACpC,GAAI,CAAC3O,EACH,MAAO,GAET,MAAM4O,EAAgBzG,EAAM,MAAM,QAAQnI,CAAQ,EAC5C6O,EAAU/O,GAAiB6O,EAAS5O,EAAeC,EAAUC,EAAiBkI,EAAM,MAAM,MAAM,OAAO,EAC7G,GAAI0G,EAAS,CACX,KAAM,CAACC,CAAS,EAAI1N,GAClB,CAACyN,CAAO,EACR1G,EAAM,kBACNvS,EACA0L,EACA6G,EAAM,MAAM,MAAM,QAClBA,EAAM,mBACNA,EAAM,MACNA,EAAM,KACd,EACM,OAAAA,EAAM,MAAQA,EAAM,MAAM,IAAI,CAAC5W,EAAM9N,KAAUA,KAAUmrB,EAAgBE,EAAYvd,CAAI,EACzFsP,GAAuBsH,EAAM,iBAAkBrH,EAAW,MAAO,CAACgO,CAAS,CAAC,EACrEA,CACb,CACI,MAAO,EACX,EACQC,EAAiB,CAACvrB,EAAKwrB,EAAYrrC,EAAU,CAAE,QAAS,MAAY,CACxE,MAAM4tB,EAAO+P,EAAS9d,CAAG,EACzB,GAAI,CAAC+N,EACH,OAEF,MAAM0d,EAAW,OAAOD,GAAe,WAAaA,EAAWzd,CAAI,EAAIyd,EACvEzd,EAAK,KAAO5tB,EAAQ,QAAUsrC,EAAW,CAAE,GAAG1d,EAAK,KAAM,GAAG0d,CAAQ,CACxE,EACQC,EAAqBjY,GAClBD,GAAaC,EAASkR,EAAM,KAAK,EAEpCgH,EAAqBlY,GAAY,CACrC,MAAMqV,EAAetV,GAAaC,EAASkR,EAAM,KAAK,EACtD,OAAAtH,GAAuBsH,EAAM,iBAAkBrH,EAAW,MAAOwL,CAAY,EACtEA,CACX,EACQ8C,EAAa,CAAC5rB,EAAK6rB,EAAY1rC,EAAU,CAAE,QAAS,MAAY,CACpE,MAAM4H,EAAOqqB,EAASpS,CAAG,EACzB,GAAI,CAACjY,EACH,OAEF,MAAM+jC,EAAW,OAAOD,GAAe,WAAaA,EAAW9jC,CAAI,EAAI8jC,EACnE1rC,EAAQ,QACVwkC,EAAM,MAAM,OAAOA,EAAM,MAAM,QAAQ58B,CAAI,EAAG,EAAG+jC,CAAQ,EAEzD,OAAO,OAAO/jC,EAAM+jC,CAAQ,CAElC,EACQC,EAAiB,CAAC/rB,EAAKwrB,EAAYrrC,EAAU,CAAE,QAAS,MAAY,CACxE,MAAM4H,EAAOqqB,EAASpS,CAAG,EACzB,GAAI,CAACjY,EACH,OAEF,MAAM0jC,EAAW,OAAOD,GAAe,WAAaA,EAAWzjC,CAAI,EAAIyjC,EACvEzjC,EAAK,KAAO5H,EAAQ,QAAUsrC,EAAW,CAAE,GAAG1jC,EAAK,KAAM,GAAG0jC,CAAQ,CACxE,EACQtJ,GAAkB,CAAC6J,EAAalf,EAAUkU,EAAU,KAAU,CAC9DA,EACF2D,EAAM,2BAA6BqH,EAEnCrH,EAAM,sBAAwBqH,EAEhCrH,EAAM,oBAAsB,KAC5BA,EAAM,iBAAmB,KACrB7X,IACF6X,EAAM,mBAAqB7X,EAEjC,EACQsV,EAAmB,CAACtV,EAAUnsB,EAAS,KAAMsrC,EAAS,OAAS,CAC/DtH,EAAM,wBACRA,EAAM,mBAAqB7X,EAC3B6X,EAAM,oBAAsBhkC,EAC5BgkC,EAAM,iBAAmBsH,EAE/B,EACQ5J,EAAgB,CAAC/+B,EAAO09B,IAAY,CACxC2D,EAAM,mBAAqB,CAAE,EAAG,OAAO,IAAK,EAAG,OAAO,GAAG,EACzDA,EAAM,oBAAsB,KAC5BA,EAAM,iBAAmB,KACrB3D,EACF2D,EAAM,2BAA6B,KAEnCA,EAAM,sBAAwB,IAEpC,EACQuH,EAAeC,GAAe,CAClC,MAAMC,EAAY9e,GAAO6e,CAAU,EAC7BpkC,EAAOqkC,EAAY,KAAOhf,GAAY+e,CAAU,EAAIA,EAAa/Z,EAAS+Z,EAAW,EAAE,EAC7F,MAAI,CAACC,GAAa,CAACrkC,EACV,CAAC,KAAM,KAAMqkC,CAAS,EAGxB,CADUA,EAAYD,EAAa9f,GAAWtkB,CAAI,EACvCA,EAAMqkC,CAAS,CACrC,EACQC,GAAuB,CAACF,EAAY5b,EAAY,GAAMnC,EAAQuW,EAAM,QAAU,CAClF,KAAM,CAAC2H,EAAUvkC,EAAMwkC,CAAO,EAAIL,EAAYC,CAAU,EACxD,GAAI,CAACG,EACH,MAAO,CAAA,EAET,MAAME,EAAgB,CAAA,EACtB,UAAWjqC,KAAK6rB,GAASuW,EAAM,MAAO,CACpC,GAAI,CAAC4H,IAAYhqC,EAAE,KAAOwF,EAAK,IAAM,CAACxF,EAAE,kBACtC,SAEF,MAAMkqC,GAAepgB,GAAW9pB,CAAC,EAC3BuuB,GAAkBxE,GAAmBmgB,GAAcH,CAAQ,GACxC/b,GAAaO,GAAkB,GAChCA,IAAmB,OAAOwb,EAAS,KAAK,EAAI,OAAOA,EAAS,MAAM,IACxFE,EAAc,KAAKjqC,CAAC,CAE5B,CACI,OAAOiqC,CACX,EACQE,GAAqB,CAACP,EAAYlb,EAAMV,EAAY,KAAS,CACjE,KAAM,CAAC+b,CAAQ,EAAIJ,EAAYC,CAAU,EACzC,GAAI,CAACG,EACH,MAAO,GAET,MAAMxb,EAAkBxE,GAAmBggB,EAAUrb,CAAI,EAEzD,OADyBV,GAAaO,EAAkB,GAC7BA,GAAmB,OAAOwb,EAAS,KAAK,EAAI,OAAOA,EAAS,MAAM,CACjG,EACQxN,GAAS6N,GAAU,CACvB,KAAM,CAAE,SAAArc,EAAU,WAAAK,EAAY,OAAAic,EAAQ,YAAAC,EAAa,gBAAA5lB,CAAe,EAAK0d,EACvE,GAAI,CAACiI,GAAU,CAACC,GAAe,CAACF,EAAM,GAAK,CAACA,EAAM,EAChD,MAAO,GAET,MAAMzH,EAAgB3e,GAAS,UAAU+J,EAAS,EAAIqc,EAAM,EAAGrc,EAAS,EAAIqc,EAAM,CAAC,EAAE,MAAMrc,EAAS,IAAI,EAClGtJ,EAAS,CACb,CAAC,EAAG,CAAC,EACL,CAAC2J,EAAW,MAAOA,EAAW,MAAM,CAC1C,EACUmc,GAAuBF,EAAO,UAAS,EAAG1H,EAAele,EAAQC,CAAe,EAChF8lB,GAAmBpI,EAAM,SAAS,IAAMmI,GAAqB,GAAKnI,EAAM,SAAS,IAAMmI,GAAqB,GAAKnI,EAAM,SAAS,OAASmI,GAAqB,EACpK,OAAAF,EAAO,UAAUC,EAAaC,EAAoB,EAC3CC,EACX,EACQC,GAAY7sC,GAAY,CAC5B,MAAM8sC,EAAO9sC,aAAmB,SAAWA,EAAQwkC,CAAK,EAAIxkC,EACtD+sC,EAAU,CACd,SACA,cACA,gBACA,cACA,aACA,aACA,OACN,EACQrf,GAAMof,EAAK,kBAAkB,IAC/BtI,EAAM,mBAAqBsI,EAAK,oBAElC,MAAMte,EAAWse,EAAK,YAAcA,EAAK,OAASA,EAAK,MAAQ,CAAA,EAAK,OAChEte,IACEse,EAAK,YACPte,EAAS,KAAK,GAAGse,EAAK,UAAU,EAE9BA,EAAK,OACPte,EAAS,KAAK,GAAGse,EAAK,KAAK,EAEzBA,EAAK,OACPte,EAAS,KAAK,GAAGse,EAAK,KAAK,EAE7B/C,EAAYvb,CAAQ,GAEtB,MAAMwe,EAAoB,IAAM,CAC1Btf,GAAMof,EAAK,OAAO,GACpBxD,EAAWwD,EAAK,OAAO,EAErBpf,GAAMof,EAAK,OAAO,GACpBzD,EAAWyD,EAAK,OAAO,EAErBpf,GAAMof,EAAK,eAAe,GAC5BvD,EAAmBuD,EAAK,eAAe,CAE/C,EACI,UAAWt8B,KAAK,OAAO,KAAKs8B,CAAI,EAAG,CACjC,MAAMrsC,EAAM+P,EACNy8B,EAASH,EAAKrsC,CAAG,EACnB,CAAC,CAAC,GAAGinC,GAAoB,GAAGqF,CAAO,EAAE,SAAStsC,CAAG,GAAKitB,GAAMuf,CAAM,IACpEzI,EAAM/jC,CAAG,EAAIwsC,EAErB,CACI3qC,GAAM,IAAMkiC,EAAM,MAAM,EAAE,IAAI,SAAQ,EAAG,KAAKwI,CAAiB,EAC1DxI,EAAM,cACTA,EAAM,YAAc,GAE1B,EA2EE,MAAO,CACL,oBAAA1F,EACA,qBAAAsJ,EACA,YAAA2B,EACA,SAAAF,EACA,SAAAC,EACA,SAAAG,EACA,SAAAE,EACA,YAAAC,EACA,YAAAQ,EACA,SAAA3Y,EACA,SAAA0L,EACA,WAAYoN,EACZ,eAAAK,EACA,WAAAK,EACA,eAAAG,EACA,iBAAkBJ,EAClB,iBAAkBD,EAClB,oBAAAxC,EACA,iBAAAnN,EACA,iBAAAkN,EACA,WAAAO,EACA,WAAAC,EACA,mBAAAC,EACA,cAAAC,EACA,qBAAAC,EACA,uBAAA5K,EACA,oBAAAhD,EACA,oBAAAmN,EACA,gBAAAhH,GACA,iBAAAC,EACA,cAAAC,EACA,eAAAyH,EACA,SAAAkD,GACA,qBAAAX,GACA,YAAalE,EACb,YAAaC,EACb,kBAAmBC,EACnB,qBAAAC,EACA,mBAAAoE,GACA,MAAA5N,GACA,QAAU/tB,GAAWg3B,EAAe,MAAM,QAAQh3B,CAAM,EACxD,OAASs8B,GAAmBtF,EAAe,MAAM,OAAOsF,CAAc,EACtE,QAAUA,GAAmBtF,EAAe,MAAM,QAAQsF,CAAc,EACxE,OAAQ,CAAClI,EAAWkI,IAAmBtF,EAAe,MAAM,OAAO5C,EAAWkI,CAAc,EAC5F,YAAa,CAACt8B,EAAQs8B,IAAmBtF,EAAe,MAAM,YAAYh3B,EAAQs8B,CAAc,EAChG,aAAc,CAACt8B,EAAQs8B,IAAmBtF,EAAe,MAAM,aAAah3B,EAAQs8B,CAAc,EAClG,YAAa,IAAMtF,EAAe,MAAM,YAAW,EACnD,aAAc,IAAMA,EAAe,MAAM,aAAY,EACrD,UAAW,CAAC5/B,EAAG0K,EAAGo6B,IAASlF,EAAe,MAAM,UAAU5/B,EAAG0K,EAAGo6B,CAAI,EACpE,UAAW,CAACl8B,EAAQk8B,IAASlF,EAAe,MAAM,UAAUh3B,EAAQk8B,CAAI,EACxE,QAAUl8B,GAAWg3B,EAAe,MAAM,QAAQh3B,CAAM,EACxD,uBAAyBA,GAAWg3B,EAAe,MAAM,uBAAuBh3B,CAAM,EACtF,uBAAyBA,GAAWg3B,EAAe,MAAM,uBAAuBh3B,CAAM,EACtF,SAhIe,IAAM,CACrB,MAAMqd,EAAQ,CAAA,EACRC,EAAQ,CAAA,EACd,UAAWtmB,KAAQ48B,EAAM,MAAO,CAC9B,KAAM,CACJ,iBAAkBh/B,EAClB,aAAc2nC,EACd,SAAUC,EACV,WAAYC,EACZ,SAAUC,EACV,SAAUC,GACV,SAAUC,GACV,OAAQC,GACR,GAAGlR,EACX,EAAU30B,EACJqmB,EAAM,KAAKsO,EAAI,CACrB,CACI,UAAW3O,KAAQ4W,EAAM,MAAO,CAC9B,KAAM,CAAE,SAAUh/B,EAAG,WAAY2nC,EAAI,WAAYC,EAAK,OAAQC,EAAM,GAAG9Q,CAAI,EAAK3O,EAChFM,EAAM,KAAKqO,CAAI,CACrB,CACI,OAAO,KAAK,MACV,KAAK,UAAU,CACb,MAAAtO,EACA,MAAAC,EACA,SAAU,CAACsW,EAAM,SAAS,EAAGA,EAAM,SAAS,CAAC,EAC7C,KAAMA,EAAM,SAAS,KACrB,SAAUA,EAAM,QACxB,CAAO,CACP,CACA,EAmGI,WAlGkBpX,GACX,IAAI,QAASvuB,GAAY,CAC9B,KAAM,CAAE,MAAAovB,EAAO,MAAAC,EAAO,SAAAvB,EAAU,KAAMxQ,EAAO,SAAAgU,CAAQ,EAAK/C,EAO1D,GANIa,GACF4b,EAAS5b,CAAK,EAEZC,GACF4b,EAAS5b,CAAK,EAEiBiC,GAAS,GAAmCA,GAAS,GAAMxD,EAAU,CACpG,MAAM3kB,EAAiCmoB,GAAS,GAAMxD,EAAS,CAAC,EAC1Dja,GAAiCyd,GAAS,GAAMxD,EAAS,CAAC,EAC1DuY,GAAwC/U,GAAS,MAAShU,GAASqoB,EAAM,SAAS,KACxF,OAAOliC,GAAM,IAAMslC,EAAe,MAAM,mBAAmB,EAAE,KAAK,EAAI,EAAE,KAAK,IAAM,CACjFA,EAAe,MAAM,YAAY,CAC/B,EAAA5/B,EACA,EAAA0K,GACA,KAAMwyB,EAClB,CAAW,EAAE,KAAK,IAAM,CACZrmC,EAAQ,EAAI,CACxB,CAAW,CACX,CAAS,CACT,MACQA,EAAQ,EAAI,CAEpB,CAAK,EA0ED,oBAAAgpC,EACA,eAAAD,EACA,OA1Ea,IAAM,CACnB,MAAM8F,EAAajG,GAAQ,EAG3B,GAFAjD,EAAM,MAAQ,CAAA,EACdA,EAAM,MAAQ,CAAA,EACVA,EAAM,QAAUA,EAAM,YAAa,CACrC,MAAMmJ,EAAmBvnB,GAAS,UAAUsnB,EAAW,gBAAgB,GAAK,EAAGA,EAAW,gBAAgB,GAAK,CAAC,EAAE,MAAMjhB,GAAMihB,EAAW,gBAAgB,MAAQ,EAAGA,EAAW,QAASA,EAAW,OAAO,CAAC,EACrME,EAAOpJ,EAAM,YAAY,sBAAqB,EAC9C3d,EAAS,CACb,CAAC,EAAG,CAAC,EACL,CAAC+mB,EAAK,MAAOA,EAAK,MAAM,CAChC,EACYjB,EAAuBnI,EAAM,OAAO,UAAS,EAAGmJ,EAAkB9mB,EAAQ6mB,EAAW,eAAe,EAC1GlJ,EAAM,OAAO,UAAUA,EAAM,YAAamI,CAAoB,CACpE,CACIE,GAASa,CAAU,CACvB,EA4DI,SAAU,IAAM,CACpB,CACA,CACA,CACA,MAAMG,GAAe,CAAC,UAAW,gBAAiB,cAAe,gBAAgB,EAC3EC,GAAgB,CACpB,KAAM,SACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8BC,EAAAA,gBAAgB,CAClD,GAAGF,GACH,MAAO,CACL,GAAI,CAAE,QAAS,IAAI,EACnB,KAAM,CAAA,EACN,SAAU,CAAE,QAAS,IAAM9kB,EAAS,GAAG,EACvC,kBAAmB,CAAE,KAAM,QAAQ,EACnC,YAAa,CAAE,KAAM,CAAC,QAAS,OAAQ,OAAQ,QAAQ,EAAG,QAAS,MAAM,EACzE,iBAAkB,CAAE,KAAM,QAAS,QAAS,EAAI,EAChD,eAAgB,CAAE,KAAM,QAAS,QAAS,EAAI,CAClD,EACE,MAAMilB,EAAS,CAAE,OAAQC,CAAQ,EAAI,CACnC,MAAM/pC,EAAQgqC,uBAAqBF,EAAS,CAAC,WAAY,cAAe,mBAAoB,iBAAkB,IAAI,CAAC,EAC7G7nC,EAAO8gC,EAAAA,MAAM,IAAM/iC,EAAM,MAAQ,QAAQ,EACzC01B,EAAoBqN,EAAAA,MAAM,IAAM/iC,EAAM,mBAAqB,IAAI,EAC/D,CACJ,GAAIy1B,EACJ,sBAAAwU,EACA,2BAAAvM,EACA,oBAAAwM,EACA,WAAA/P,EACA,iBAAAwD,EACA,gBAAAvD,EACA,eAAA+P,CACN,EAAQtP,GAAU,EACR,CAAE,GAAIvQ,EAAQ,KAAA7mB,EAAM,OAAAo0B,EAAQ,eAAAyO,CAAc,EAAKpH,GAAO,EACtD1M,EAASv3B,EAAAA,IAAG,EACZmvC,EAAqBrH,QAAM,IAAM,OAAO+G,EAAQ,iBAAqB,IAAcA,EAAQ,iBAAmB,EAAI,EAClHO,EAAmBtH,QAAM,IAAM,OAAO+G,EAAQ,eAAmB,IAAcA,EAAQ,eAAiB,EAAI,EAC5GQ,EAAevH,EAAAA,MACnB,IAAM,CACJ,IAAItmC,EAAIyD,EAAIC,EAAIoqC,EAAIC,EAAIC,EACxB,QAAShuC,EAAKwtC,EAAsB,QAAU,KAAO,OAASxtC,EAAG,UAAY6tB,KAAYpqB,EAAK+pC,EAAsB,QAAU,KAAO,OAAS/pC,EAAG,MAAQ4pC,EAAQ,MAAQ3pC,EAAK8pC,EAAsB,QAAU,KAAO,OAAS9pC,EAAG,QAAU8B,EAAK,SAAWsoC,EAAKL,EAAoB,QAAU,KAAO,OAASK,EAAG,UAAYjgB,KAAYkgB,EAAKN,EAAoB,QAAU,KAAO,OAASM,EAAG,MAAQV,EAAQ,MAAQW,EAAKP,EAAoB,QAAU,KAAO,OAASO,EAAG,QAAUxoC,EAAK,KACpe,CACA,EACUyoC,EAAoB3H,EAAAA,MACxB,IAAM,CACJ,IAAItmC,EAAIyD,EAAIC,EACZ,QAAS1D,EAAKihC,EAA2B,QAAU,KAAO,OAASjhC,EAAG,UAAY6tB,KAAYpqB,EAAKw9B,EAA2B,QAAU,KAAO,OAASx9B,EAAG,MAAQ4pC,EAAQ,MAAQ3pC,EAAKu9B,EAA2B,QAAU,KAAO,OAASv9B,EAAG,QAAU8B,EAAK,KACvQ,CACA,EACU,CAAE,kBAAAg8B,EAAmB,YAAAa,CAAW,EAAKxB,GAAU,CACnD,OAAAhT,EACA,SAAUwf,EAAQ,GAClB,kBAAApU,EACA,KAAAzzB,CACN,CAAK,EACK0oC,EAAgB1pC,EAAAA,SAAS,IACzB,OAAO6oC,EAAQ,aAAgB,UAAYA,EAAQ,cAAgB,SAC9D,CAACxD,EAAe,MAAM,KAAM7c,GAAS,CAC1C,MAAM/N,EAAM+N,EAAK,GAAGxnB,EAAK,KAAK,QAAQ,EACtC,OAAIwnB,EAAKxnB,EAAK,KAAK,IAAMqoB,EAChB,GAEF5O,EAAMA,IAAQouB,EAAQ,GAAK,EAC5C,CAAS,EAEC,OAAOA,EAAQ,aAAgB,SAC1BxD,EAAe,MAAM,OAAQ7c,GAAS,CAC3C,MAAM/N,EAAM+N,EAAK,GAAGxnB,EAAK,KAAK,QAAQ,EACtC,OAAIwnB,EAAKxnB,EAAK,KAAK,IAAMqoB,EAChB,GAEF5O,EAAMA,IAAQouB,EAAQ,GAAK,EAC5C,CAAS,EAAE,OAASA,EAAQ,YAElB,OAAOA,EAAQ,aAAgB,WAC1BA,EAAQ,YAAYrmC,EAAM6iC,EAAe,KAAK,EAEhD/c,GAAMugB,EAAQ,WAAW,EAAIA,EAAQ,YAAcnM,EAAiB,KAC5E,EACDiN,EAAAA,UAAU,IAAM,CACd,IAAInuC,EACJ,GAAI,CAACgH,EAAK,WAAW,OAAS,CAACA,EAAK,WAAW,OAC7C,OAEF,MAAMonC,GAAkBpuC,EAAKgH,EAAK,aAAaxB,EAAK,KAAK,IAAM,KAAO,OAASxF,EAAG,KAAMyL,GAAMA,EAAE,KAAO4hC,EAAQ,EAAE,EACjH,GAAI,CAAC3P,EAAW,OAAS0Q,EACvB,OAEF,MAAM1G,EAAehK,EAAW,MAAM,cAAc,+BAA+B,EACnF,GAAI,CAACtC,EAAO,OAAS,CAACrF,EAAO,OAAS,CAAC2R,GAAgB,CAAC2F,EAAQ,GAC9D,OAEF,MAAMzS,EAAaQ,EAAO,MAAM,sBAAqB,EAC/CP,EAAe9E,EAAO,MAAM,sBAAqB,EACjD4R,EAAQ,OAAO,iBAAiBD,CAAY,EAC5C,CAAE,IAAKnsB,CAAK,EAAK,IAAI,OAAO,kBAAkBosB,EAAM,SAAS,EAC7D0G,EAAa,CACjB,GAAIhB,EAAQ,GACZ,SAAUA,EAAQ,SAClB,GAAIxS,EAAa,KAAOD,EAAW,MAAQrf,EAC3C,GAAIsf,EAAa,IAAMD,EAAW,KAAOrf,EACzC,KAAM/V,EAAK,MACX,OAAAqoB,EACA,GAAGjC,GAAcmK,EAAO,KAAK,CACrC,EACM/uB,EAAK,aAAaxB,EAAK,KAAK,EAAI,CAAC,GAAGwB,EAAK,aAAaxB,EAAK,KAAK,GAAK,CAAA,EAAI6oC,CAAU,CACzF,CAAK,EACD,SAASC,EAAc/rC,EAAO,CAC5B,MAAMk/B,EAAmBpK,GAAa90B,CAAK,EACvC2rC,EAAc,OAASP,EAAmB,QAAUlM,GAAoBl/B,EAAM,SAAW,GAAK,CAACk/B,IACjGD,EAAkBj/B,CAAK,CAE/B,CACI,SAASi8B,EAAQj8B,EAAO,CAClB,CAACsrB,GAAU,CAACoT,EAA2B,OAAS,CAAC0M,EAAmB,OAGpEO,EAAc,OAChB7L,EAAY9/B,CAAK,CAEzB,CACI,OAAA+qC,EAAS,CACP,YAAAjL,EACA,kBAAAb,EACA,QAAAhD,EACA,cAAA8P,CACN,CAAK,EACM,CAACC,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,QAAS,SACT,IAAK3Y,EACL,UAAW,GAAGz4B,EAAAA,MAAM07B,CAAM,CAAC,IAAI17B,EAAAA,MAAMuwB,CAAM,CAAC,IAAIwf,EAAQ,EAAE,IAAI7nC,EAAK,KAAK,GACxE,gBAAiB6nC,EAAQ,GACzB,cAAe/vC,EAAAA,MAAMuwB,CAAM,EAC3B,iBAAkB0gB,EAAK,SACvB,MAAOI,EAAAA,eAAe,CAAC,mBAAoB,CACzC,oBAAoBJ,EAAK,QAAQ,GACjC,oBAAoBlB,EAAQ,EAAE,GAC9B/vC,EAAAA,MAAMqgC,CAAe,EACrBrgC,EAAAA,MAAMowC,CAAc,EACpBloC,EAAK,MACL,CACE,YAAa0oC,EAAc,MAC3B,WAAYD,EAAkB,MAC9B,iBAAkBN,EAAmB,MACrC,eAAgBC,EAAiB,MACjC,oBAAqBM,EAAc,QAAUP,EAAmB,OAAS,CAACE,EAAa,OAASD,EAAiB,OAASC,EAAa,MACnJ,CACA,CAAS,CAAC,EACF,YAAaS,EACb,oBAAqBA,EACrB,QAAA9P,CACR,EAAS,CACDoQ,EAAAA,WAAWL,EAAK,OAAQ,UAAW,CAAE,GAAIA,EAAK,EAAE,CAAE,CAC1D,EAAS,GAAItB,EAAY,EAEzB,CACA,CAAC,EACK4B,GAAc,SAAS,CAC3B,eAAAC,EAAiB1mB,EAAS,OAC1B,eAAA2mB,EAAiB3mB,EAAS,IAC1B,MAAO4mB,EACP,YAAAxV,EAAc,GACd,iBAAAyV,EACA,iBAAAC,EACA,KAAAhmC,CACF,EAAG,CACD,MAAMimC,EAAQjmC,EAAK,OAAS8lC,EAC5B,MAAO,CACLI,IAAEjC,GAAa,CAAE,KAAM,SAAU,SAAU4B,EAAgB,YAAAvV,EAAa,kBAAmByV,EAAkB,EAC7G,OAAOE,GAAU,UAAYA,EAAQC,EAAAA,EAAED,CAAK,EAAIC,IAAEC,EAAAA,SAAU,CAACF,CAAK,CAAC,EACnEC,IAAEjC,GAAa,CAAE,KAAM,SAAU,SAAU2B,EAAgB,YAAAtV,EAAa,kBAAmB0V,CAAgB,CAAE,CACjH,CACA,EACAL,GAAY,MAAQ,CAAC,iBAAkB,iBAAkB,QAAS,mBAAoB,mBAAoB,cAAe,MAAM,EAC/HA,GAAY,aAAe,GAC3BA,GAAY,aAAe,CAAE,KAAM,CAAC,EACpC,MAAMS,GAAgBT,GAChBU,GAAa,SAAS,CAC1B,eAAAR,EAAiB3mB,EAAS,IAC1B,MAAO4mB,EACP,YAAAxV,EAAc,GACd,iBAAAyV,EACA,KAAA/lC,CACF,EAAG,CACD,MAAMimC,EAAQjmC,EAAK,OAAS8lC,EAC5B,MAAO,CACLI,IAAEjC,GAAa,CAAE,KAAM,SAAU,SAAU4B,EAAgB,YAAAvV,EAAa,kBAAmByV,EAAkB,EAC7G,OAAOE,GAAU,UAAYA,EAAQC,EAAAA,EAAED,CAAK,EAAIC,EAAAA,EAAEC,WAAU,CAACF,CAAK,CAAC,CACvE,CACA,EACAI,GAAW,MAAQ,CAAC,iBAAkB,QAAS,mBAAoB,cAAe,MAAM,EACxFA,GAAW,aAAe,GAC1BA,GAAW,aAAe,CAAE,KAAM,CAAC,EACnC,MAAMC,GAAeD,GACfE,GAAY,SAAS,CACzB,eAAAX,EAAiB1mB,EAAS,OAC1B,MAAO4mB,EACP,YAAAxV,EAAc,GACd,iBAAA0V,EACA,KAAAhmC,CACF,EAAG,CACD,MAAMimC,EAAQjmC,EAAK,OAAS8lC,EAC5B,MAAO,CACL,OAAOG,GAAU,UAAYA,EAAQC,EAAAA,EAAED,CAAK,EAAIC,IAAEC,EAAAA,SAAU,CAACF,CAAK,CAAC,EACnEC,IAAEjC,GAAa,CAAE,KAAM,SAAU,SAAU2B,EAAgB,YAAAtV,EAAa,kBAAmB0V,CAAgB,CAAE,CACjH,CACA,EACAO,GAAU,MAAQ,CAAC,iBAAkB,QAAS,mBAAoB,cAAe,MAAM,EACvFA,GAAU,aAAe,GACzBA,GAAU,aAAe,CAAE,KAAM,CAAC,EAClC,MAAMC,GAAcD,GACdE,GAAe,CAAC,WAAW,EAC3BC,GAAe,CAAC,QAAS,SAAU,IAAK,IAAK,KAAM,IAAI,EACvDC,GAAe,CAAC,GAAG,EACnBC,GAAgB,CACpB,KAAM,WACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B3C,EAAAA,gBAAgB,CAClD,GAAG0C,GACH,MAAO,CACL,EAAG,CAAA,EACH,EAAG,CAAA,EACH,MAAO,CAAA,EACP,WAAY,CAAE,QAAS,KAAO,CAAA,EAAG,EACjC,YAAa,CAAE,KAAM,QAAS,QAAS,EAAI,EAC3C,aAAc,CAAE,QAAS,KAAO,CAAA,EAAG,EACnC,eAAgB,CAAE,QAAS,IAAM,CAAC,EAAG,CAAC,CAAC,EACvC,oBAAqB,CAAE,QAAS,CAAC,CACrC,EACE,MAAMzC,EAAS,CACb,MAAMhe,EAAM7wB,EAAAA,IAAI,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,EAAG,OAAQ,CAAC,CAAE,EAC7C8D,EAAK9D,EAAAA,IAAI,IAAI,EACb6mB,EAAY7gB,EAAAA,SAAS,IAAM,aAAa6oC,EAAQ,EAAIhe,EAAI,MAAM,MAAQ,CAAC,IAAIge,EAAQ,EAAIhe,EAAI,MAAM,OAAS,CAAC,GAAG,EACpH8e,EAAAA,UAAU6B,CAAM,EAChB1wC,EAAAA,MAAM,CAAC,IAAM+tC,EAAQ,EAAG,IAAMA,EAAQ,EAAG/qC,EAAI,IAAM+qC,EAAQ,KAAK,EAAG2C,CAAM,EACzE,SAASA,GAAS,CAChB,GAAI,CAAC1tC,EAAG,MACN,OAEF,MAAM2tC,EAAU3tC,EAAG,MAAM,QAAO,GAC5B2tC,EAAQ,QAAU5gB,EAAI,MAAM,OAAS4gB,EAAQ,SAAW5gB,EAAI,MAAM,UACpEA,EAAI,MAAQ4gB,EAEpB,CACI,MAAO,CAAC1B,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,IAAK,CAC1C,UAAWrpB,EAAU,MACrB,MAAO,4BACf,EAAS,CACDkpB,EAAK,aAAeE,EAAAA,YAAaC,EAAAA,mBAAmB,OAAQ,CAC1D,IAAK,EACL,MAAO,wBACP,MAAO,GAAGrf,EAAI,MAAM,MAAQ,EAAIkf,EAAK,eAAe,CAAC,CAAC,KACtD,OAAQ,GAAGlf,EAAI,MAAM,OAAS,EAAIkf,EAAK,eAAe,CAAC,CAAC,KACxD,EAAG,CAACA,EAAK,eAAe,CAAC,EACzB,EAAG,CAACA,EAAK,eAAe,CAAC,EACzB,MAAO2B,EAAAA,eAAe3B,EAAK,YAAY,EACvC,GAAIA,EAAK,oBACT,GAAIA,EAAK,mBACnB,EAAW,KAAM,GAAIqB,EAAY,GAAKO,EAAAA,mBAAmB,GAAI,EAAI,EACzDC,EAAAA,mBAAmB,OAAQC,aAAW9B,EAAK,OAAQ,CACjD,QAAS,KACT,IAAKjsC,EACL,MAAO,sBACP,EAAG+sB,EAAI,MAAM,OAAS,EACtB,GAAI,QACJ,MAAOkf,EAAK,UACtB,CAAS,EAAG,CACFK,EAAAA,WAAWL,EAAK,OAAQ,UAAW,CAAA,EAAI,IAAM,CAC3C,OAAOA,EAAK,OAAU,UAAYE,EAAAA,UAAS,EAAI6B,cAAYC,EAAAA,wBAAwBhC,EAAK,KAAK,EAAG,CAAE,IAAK,CAAC,CAAE,IAAME,YAAS,EAAIC,EAAAA,mBAAmBW,WAAU,CAAE,IAAK,GAAK,CACpKmB,EAAAA,gBAAgBC,EAAAA,gBAAgBlC,EAAK,KAAK,EAAG,CAAC,CAC5D,EAAe,EAAE,EACjB,CAAW,CACX,EAAW,GAAIsB,EAAY,CAC3B,EAAS,EAAGF,EAAY,EAExB,CACA,CAAC,EACKe,GAAe,CAAC,KAAM,IAAK,aAAc,cAAc,EACvDC,GAAe,CAAC,IAAK,cAAc,EACnCC,GAAgB,CACpB,KAAM,WACN,aAAc,GACd,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8BzD,EAAAA,gBAAgB,CAClD,GAAGwD,GACH,MAAO,CACL,GAAI,CAAA,EACJ,OAAQ,CAAA,EACR,OAAQ,CAAA,EACR,KAAM,CAAA,EACN,MAAO,CAAA,EACP,YAAa,CAAA,EACb,UAAW,CAAA,EACX,iBAAkB,CAAE,QAAS,EAAE,EAC/B,WAAY,CAAA,EACZ,YAAa,CAAE,KAAM,OAAO,EAC5B,aAAc,CAAA,EACd,eAAgB,CAAA,EAChB,oBAAqB,CAAA,CACzB,EACE,MAAMvD,EAAS,CAAE,OAAQC,CAAQ,EAAI,CACnC,MAAMwD,EAAStyC,EAAAA,IAAI,IAAI,EACjBuyC,EAAgBvyC,EAAAA,IAAI,IAAI,EACxBwyC,EAAUxyC,EAAAA,IAAI,IAAI,EAClByyC,EAAQC,EAAAA,SAAQ,EACtB,OAAA5D,EAAS,CACP,OAAAwD,EACA,cAAAC,EACA,QAAAC,CACN,CAAK,EACM,CAACzC,EAAMC,KACLC,YAAS,EAAIC,qBAAmBW,EAAAA,SAAU,KAAM,CACrDe,EAAAA,mBAAmB,OAAQC,EAAAA,WAAW/yC,EAAAA,MAAM2zC,CAAK,EAAG,CAClD,GAAI1C,EAAK,GACT,QAAS,SACT,IAAKuC,EACL,EAAGvC,EAAK,KACR,MAAO,sBACP,aAAcA,EAAK,UACnB,eAAgBA,EAAK,WAC/B,CAAS,EAAG,KAAM,GAAImC,EAAY,EAC1BnC,EAAK,kBAAoBE,EAAAA,YAAaC,EAAAA,mBAAmB,OAAQ,CAC/D,IAAK,EACL,QAAS,gBACT,IAAKqC,EACL,KAAM,OACN,EAAGxC,EAAK,KACR,eAAgBA,EAAK,iBACrB,iBAAkB,EAClB,MAAO,4BACjB,EAAW,KAAM,EAAGoC,EAAY,GAAKR,EAAAA,mBAAmB,GAAI,EAAI,EACxD5B,EAAK,OAASA,EAAK,QAAUA,EAAK,QAAUE,EAAAA,UAAS,EAAI6B,EAAAA,YAAYP,GAAa,CAChF,IAAK,EACL,QAAS,UACT,IAAKiB,EACL,EAAGzC,EAAK,OACR,EAAGA,EAAK,OACR,MAAOA,EAAK,MACZ,gBAAiBA,EAAK,YACtB,iBAAkBA,EAAK,aACvB,mBAAoBA,EAAK,eACzB,yBAA0BA,EAAK,oBAC/B,cAAeA,EAAK,UAC9B,EAAW,KAAM,EAAG,CAAC,IAAK,IAAK,QAAS,gBAAiB,iBAAkB,mBAAoB,yBAA0B,aAAa,CAAC,GAAK4B,EAAAA,mBAAmB,GAAI,EAAI,CACvK,EAAS,EAAE,EAEX,CACA,CAAC,EACD,SAASgB,GAAoB,CAC3B,QAAAC,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,CACF,EAAG,CACD,MAAMC,EAAU,KAAK,IAAIF,EAAUF,CAAO,EAAI,EACxC7M,EAAU+M,EAAUF,EAAUE,EAAUE,EAAUF,EAAUE,EAC5DC,EAAU,KAAK,IAAIF,EAAUF,CAAO,EAAI,EACxC7M,EAAU+M,EAAUF,EAAUE,EAAUE,EAAUF,EAAUE,EAClE,MAAO,CAAClN,EAASC,EAASgN,EAASC,CAAO,CAC5C,CACA,SAASC,GAAoB,CAC3B,QAAAN,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,EACA,eAAAI,EACA,eAAAC,EACA,eAAAC,EACA,eAAAC,CACF,EAAG,CACD,MAAMvN,EAAU6M,EAAU,KAAQO,EAAiB,KAAQE,EAAiB,KAAQP,EAAU,KACxF9M,EAAU6M,EAAU,KAAQO,EAAiB,KAAQE,EAAiB,KAAQP,EAAU,KACxFQ,EAAU,KAAK,IAAIxN,EAAU6M,CAAO,EACpCY,EAAU,KAAK,IAAIxN,EAAU6M,CAAO,EAC1C,MAAO,CAAC9M,EAASC,EAASuN,EAASC,CAAO,CAC5C,CACA,SAASC,GAAuBpgB,EAAWqgB,EAAW,CACpD,OAAIrgB,GAAa,EACR,GAAMA,EAENqgB,EAAY,GAAK,KAAK,KAAK,CAACrgB,CAAS,CAEhD,CACA,SAASsgB,GAAwB,CAAE,IAAAxgB,EAAK,GAAAygB,EAAI,GAAAC,EAAI,GAAAnjB,EAAI,GAAAC,EAAI,EAAAzpB,GAAK,CAC3D,IAAI4sC,EAAKC,EACT,OAAQ5gB,EAAG,CACT,KAAKvJ,EAAS,KACZkqB,EAAMF,EAAKH,GAAuBG,EAAKljB,EAAIxpB,CAAC,EAC5C6sC,EAAMF,EACN,MACF,KAAKjqB,EAAS,MACZkqB,EAAMF,EAAKH,GAAuB/iB,EAAKkjB,EAAI1sC,CAAC,EAC5C6sC,EAAMF,EACN,MACF,KAAKjqB,EAAS,IACZkqB,EAAMF,EACNG,EAAMF,EAAKJ,GAAuBI,EAAKljB,EAAIzpB,CAAC,EAC5C,MACF,KAAK0iB,EAAS,OACZkqB,EAAMF,EACNG,EAAMF,EAAKJ,GAAuB9iB,EAAKkjB,EAAI3sC,CAAC,EAC5C,KACN,CACE,MAAO,CAAC4sC,EAAKC,CAAG,CAClB,CACA,SAASC,GAAcC,EAAkB,CACvC,KAAM,CACJ,QAAArB,EACA,QAAAC,EACA,eAAAvC,EAAiB1mB,EAAS,OAC1B,QAAAkpB,EACA,QAAAC,EACA,eAAAxC,EAAiB3mB,EAAS,IAC1B,UAAA8pB,EAAY,GAChB,EAAMO,EACE,CAACd,EAAgBC,CAAc,EAAIO,GAAwB,CAC/D,IAAKrD,EACL,GAAIsC,EACJ,GAAIC,EACJ,GAAIC,EACJ,GAAIC,EACJ,EAAGW,CACP,CAAG,EACK,CAACL,EAAgBC,CAAc,EAAIK,GAAwB,CAC/D,IAAKpD,EACL,GAAIuC,EACJ,GAAIC,EACJ,GAAIH,EACJ,GAAIC,EACJ,EAAGa,CACP,CAAG,EACK,CAACQ,EAAQC,EAAQZ,EAASC,CAAO,EAAIN,GAAoB,CAC7D,QAAAN,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,EACA,eAAAI,EACA,eAAAC,EACA,eAAAC,EACA,eAAAC,CACJ,CAAG,EACD,MAAO,CACL,IAAIV,CAAO,IAAIC,CAAO,KAAKM,CAAc,IAAIC,CAAc,IAAIC,CAAc,IAAIC,CAAc,IAAIR,CAAO,IAAIC,CAAO,GACrHmB,EACAC,EACAZ,EACAC,CACJ,CACA,CACA,SAASY,GAAW,CAAE,IAAAjhB,EAAK,GAAAygB,EAAI,GAAAC,EAAI,GAAAnjB,EAAI,GAAAC,GAAM,CAC3C,IAAImjB,EAAKC,EACT,OAAQ5gB,EAAG,CACT,KAAKvJ,EAAS,KACd,KAAKA,EAAS,MACZkqB,EAAM,IAAOF,EAAKljB,GAClBqjB,EAAMF,EACN,MACF,KAAKjqB,EAAS,IACd,KAAKA,EAAS,OACZkqB,EAAMF,EACNG,EAAM,IAAOF,EAAKljB,GAClB,KACN,CACE,MAAO,CAACmjB,EAAKC,CAAG,CAClB,CACA,SAASM,GAAoBC,EAAwB,CACnD,KAAM,CACJ,QAAA1B,EACA,QAAAC,EACA,eAAAvC,EAAiB1mB,EAAS,OAC1B,QAAAkpB,EACA,QAAAC,EACA,eAAAxC,EAAiB3mB,EAAS,GAC9B,EAAM0qB,EACE,CAACnB,EAAgBC,CAAc,EAAIgB,GAAW,CAClD,IAAK9D,EACL,GAAIsC,EACJ,GAAIC,EACJ,GAAIC,EACJ,GAAIC,CACR,CAAG,EACK,CAACM,EAAgBC,CAAc,EAAIc,GAAW,CAClD,IAAK7D,EACL,GAAIuC,EACJ,GAAIC,EACJ,GAAIH,EACJ,GAAIC,CACR,CAAG,EACK,CAAC9M,EAASC,EAASuN,EAASC,CAAO,EAAIN,GAAoB,CAC/D,QAAAN,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,EACA,eAAAI,EACA,eAAAC,EACA,eAAAC,EACA,eAAAC,CACJ,CAAG,EACD,MAAO,CACL,IAAIV,CAAO,IAAIC,CAAO,KAAKM,CAAc,IAAIC,CAAc,IAAIC,CAAc,IAAIC,CAAc,IAAIR,CAAO,IAAIC,CAAO,GACrHhN,EACAC,EACAuN,EACAC,CACJ,CACA,CACA,MAAMe,GAAmB,CACvB,CAAC3qB,EAAS,IAAI,EAAG,CAAE,EAAG,GAAI,EAAG,CAAC,EAC9B,CAACA,EAAS,KAAK,EAAG,CAAE,EAAG,EAAG,EAAG,CAAC,EAC9B,CAACA,EAAS,GAAG,EAAG,CAAE,EAAG,EAAG,EAAG,EAAE,EAC7B,CAACA,EAAS,MAAM,EAAG,CAAE,EAAG,EAAG,EAAG,CAAC,CACjC,EACA,SAAS4qB,GAAa,CACpB,OAAA9zC,EACA,eAAA4vC,EAAiB1mB,EAAS,OAC1B,OAAApmB,CACF,EAAG,CACD,OAAI8sC,IAAmB1mB,EAAS,MAAQ0mB,IAAmB1mB,EAAS,MAC3DlpB,EAAO,EAAI8C,EAAO,EAAI,CAAE,EAAG,EAAG,EAAG,CAAC,EAAK,CAAE,EAAG,GAAI,EAAG,CAAC,EAEtD9C,EAAO,EAAI8C,EAAO,EAAI,CAAE,EAAG,EAAG,EAAG,CAAC,EAAK,CAAE,EAAG,EAAG,EAAG,EAAE,CAC7D,CACA,SAASixC,GAASznC,EAAGC,EAAG,CACtB,OAAO,KAAK,MAAMA,EAAE,EAAID,EAAE,IAAM,GAAKC,EAAE,EAAID,EAAE,IAAM,CAAC,CACtD,CACA,SAAS0nC,GAAU,CACjB,OAAAh0C,EACA,eAAA4vC,EAAiB1mB,EAAS,OAC1B,OAAApmB,EACA,eAAA+sC,EAAiB3mB,EAAS,IAC1B,OAAA6N,EACA,OAAAtF,CACF,EAAG,CACD,MAAMwiB,EAAYJ,GAAiBjE,CAAc,EAC3CsE,EAAYL,GAAiBhE,CAAc,EAC3CsE,EAAe,CAAE,EAAGn0C,EAAO,EAAIi0C,EAAU,EAAIxiB,EAAQ,EAAGzxB,EAAO,EAAIi0C,EAAU,EAAIxiB,CAAM,EACvF2iB,EAAe,CAAE,EAAGtxC,EAAO,EAAIoxC,EAAU,EAAIziB,EAAQ,EAAG3uB,EAAO,EAAIoxC,EAAU,EAAIziB,CAAM,EACvFpD,EAAMylB,GAAa,CACvB,OAAQK,EACR,eAAAvE,EACA,OAAQwE,CACZ,CAAG,EACKC,EAAchmB,EAAI,IAAM,EAAI,IAAM,IAClCimB,EAAUjmB,EAAIgmB,CAAW,EAC/B,IAAIE,EACAlP,EAASC,EACb,MAAMkP,EAAkB,CAAE,EAAG,EAAG,EAAG,CAAC,EAC9BC,EAAkB,CAAE,EAAG,EAAG,EAAG,CAAC,EAC9B,CAACC,EAAgBC,EAAgBC,EAAgBC,CAAc,EAAI5C,GAAoB,CAC3F,QAASjyC,EAAO,EAChB,QAASA,EAAO,EAChB,QAAS8C,EAAO,EAChB,QAASA,EAAO,CACpB,CAAG,EACD,GAAImxC,EAAUI,CAAW,EAAIH,EAAUG,CAAW,IAAM,GAAI,CAC1DhP,EAAUtO,EAAO,GAAK2d,EACtBpP,EAAUvO,EAAO,GAAK4d,EACtB,MAAMG,EAAgB,CACpB,CAAE,EAAGzP,EAAS,EAAG8O,EAAa,CAAC,EAC/B,CAAE,EAAG9O,EAAS,EAAG+O,EAAa,CAAC,CACrC,EACUW,EAAkB,CACtB,CAAE,EAAGZ,EAAa,EAAG,EAAG7O,CAAO,EAC/B,CAAE,EAAG8O,EAAa,EAAG,EAAG9O,CAAO,CACrC,EACQ2O,EAAUI,CAAW,IAAMC,EAC7BC,EAASF,IAAgB,IAAMS,EAAgBC,EAE/CR,EAASF,IAAgB,IAAMU,EAAkBD,CAEvD,KAAS,CACL,MAAME,EAAe,CAAC,CAAE,EAAGb,EAAa,EAAG,EAAGC,EAAa,EAAG,EACxDa,EAAe,CAAC,CAAE,EAAGb,EAAa,EAAG,EAAGD,EAAa,EAAG,EAM9D,GALIE,IAAgB,IAClBE,EAASN,EAAU,IAAMK,EAAUW,EAAeD,EAElDT,EAASN,EAAU,IAAMK,EAAUU,EAAeC,EAEhDrF,IAAmBC,EAAgB,CACrC,MAAMqF,EAAO,KAAK,IAAIl1C,EAAOq0C,CAAW,EAAIvxC,EAAOuxC,CAAW,CAAC,EAC/D,GAAIa,GAAQzjB,EAAQ,CAClB,MAAM0jB,EAAY,KAAK,IAAI1jB,EAAS,EAAGA,EAASyjB,CAAI,EAChDjB,EAAUI,CAAW,IAAMC,EAC7BE,EAAgBH,CAAW,GAAKF,EAAaE,CAAW,EAAIr0C,EAAOq0C,CAAW,EAAI,GAAK,GAAKc,EAE5FV,EAAgBJ,CAAW,GAAKD,EAAaC,CAAW,EAAIvxC,EAAOuxC,CAAW,EAAI,GAAK,GAAKc,CAEtG,CACA,CACI,GAAIvF,IAAmBC,EAAgB,CACrC,MAAMuF,EAAsBf,IAAgB,IAAM,IAAM,IAClDgB,EAAYpB,EAAUI,CAAW,IAAMH,EAAUkB,CAAmB,EACpEE,EAAqBnB,EAAaiB,CAAmB,EAAIhB,EAAagB,CAAmB,EACzFG,EAAqBpB,EAAaiB,CAAmB,EAAIhB,EAAagB,CAAmB,GACtEnB,EAAUI,CAAW,IAAM,IAAM,CAACgB,GAAaC,GAAsBD,GAAaE,IAAuBtB,EAAUI,CAAW,IAAM,IAAM,CAACgB,GAAaE,GAAsBF,GAAaC,MAElNf,EAASF,IAAgB,IAAMW,EAAeC,EAEtD,CACI,MAAMO,EAAiB,CAAE,EAAGrB,EAAa,EAAIK,EAAgB,EAAG,EAAGL,EAAa,EAAIK,EAAgB,CAAC,EAC/FiB,EAAiB,CAAE,EAAGrB,EAAa,EAAIK,EAAgB,EAAG,EAAGL,EAAa,EAAIK,EAAgB,CAAC,EAC/FiB,EAAe,KAAK,IAAI,KAAK,IAAIF,EAAe,EAAIjB,EAAO,CAAC,EAAE,CAAC,EAAG,KAAK,IAAIkB,EAAe,EAAIlB,EAAO,CAAC,EAAE,CAAC,CAAC,EAC1GoB,EAAe,KAAK,IAAI,KAAK,IAAIH,EAAe,EAAIjB,EAAO,CAAC,EAAE,CAAC,EAAG,KAAK,IAAIkB,EAAe,EAAIlB,EAAO,CAAC,EAAE,CAAC,CAAC,EAC5GmB,GAAgBC,GAClBtQ,GAAWmQ,EAAe,EAAIC,EAAe,GAAK,EAClDnQ,EAAUiP,EAAO,CAAC,EAAE,IAEpBlP,EAAUkP,EAAO,CAAC,EAAE,EACpBjP,GAAWkQ,EAAe,EAAIC,EAAe,GAAK,EAExD,CAQE,MAAO,CAPY,CACjBz1C,EACA,CAAE,EAAGm0C,EAAa,EAAIK,EAAgB,EAAG,EAAGL,EAAa,EAAIK,EAAgB,CAAC,EAC9E,GAAGD,EACH,CAAE,EAAGH,EAAa,EAAIK,EAAgB,EAAG,EAAGL,EAAa,EAAIK,EAAgB,CAAC,EAC9E3xC,CACJ,EACsBuiC,EAASC,EAASsP,EAAgBC,CAAc,CACtE,CACA,SAASe,GAAQtpC,EAAGC,EAAG/F,EAAGsG,EAAM,CAC9B,MAAM+oC,EAAW,KAAK,IAAI9B,GAASznC,EAAGC,CAAC,EAAI,EAAGwnC,GAASxnC,EAAG/F,CAAC,EAAI,EAAGsG,CAAI,EAChE,CAAE,EAAA5E,EAAG,EAAA0K,CAAC,EAAKrG,EACjB,GAAID,EAAE,IAAMpE,GAAKA,IAAM1B,EAAE,GAAK8F,EAAE,IAAMsG,GAAKA,IAAMpM,EAAE,EACjD,MAAO,IAAI0B,CAAC,IAAI0K,CAAC,GAEnB,GAAItG,EAAE,IAAMsG,EAAG,CACb,MAAMkjC,EAAQxpC,EAAE,EAAI9F,EAAE,EAAI,GAAK,EACzBuvC,EAAQzpC,EAAE,EAAI9F,EAAE,EAAI,EAAI,GAC9B,MAAO,KAAK0B,EAAI2tC,EAAWC,CAAK,IAAIljC,CAAC,KAAK1K,CAAC,IAAI0K,CAAC,IAAI1K,CAAC,IAAI0K,EAAIijC,EAAWE,CAAK,EACjF,CACE,MAAMC,EAAO1pC,EAAE,EAAI9F,EAAE,EAAI,EAAI,GACvByvC,EAAO3pC,EAAE,EAAI9F,EAAE,EAAI,GAAK,EAC9B,MAAO,KAAK0B,CAAC,IAAI0K,EAAIijC,EAAWI,CAAI,KAAK/tC,CAAC,IAAI0K,CAAC,IAAI1K,EAAI2tC,EAAWG,CAAI,IAAIpjC,CAAC,EAC7E,CACA,SAASsjC,GAAkBC,EAAsB,CAC/C,KAAM,CACJ,QAAAjE,EACA,QAAAC,EACA,eAAAvC,EAAiB1mB,EAAS,OAC1B,QAAAkpB,EACA,QAAAC,EACA,eAAAxC,EAAiB3mB,EAAS,IAC1B,aAAAktB,EAAe,EACf,QAAA/Q,EACA,QAAAC,EACA,OAAA7T,EAAS,EACb,EAAM0kB,EACE,CAAC5B,EAAQf,EAAQC,EAAQZ,EAASC,CAAO,EAAIkB,GAAU,CAC3D,OAAQ,CAAE,EAAG9B,EAAS,EAAGC,CAAO,EAChC,eAAAvC,EACA,OAAQ,CAAE,EAAGwC,EAAS,EAAGC,CAAO,EAChC,eAAAxC,EACA,OAAQ,CAAE,EAAGxK,EAAS,EAAGC,CAAO,EAChC,OAAA7T,CACJ,CAAG,EAWD,MAAO,CAVM8iB,EAAO,OAAO,CAAC8B,EAAK3hC,EAAGjP,IAAM,CACxC,IAAI6wC,EACJ,OAAI7wC,EAAI,GAAKA,EAAI8uC,EAAO,OAAS,EAC/B+B,EAAUV,GAAQrB,EAAO9uC,EAAI,CAAC,EAAGiP,EAAG6/B,EAAO9uC,EAAI,CAAC,EAAG2wC,CAAY,EAE/DE,EAAU,GAAG7wC,IAAM,EAAI,IAAM,GAAG,GAAGiP,EAAE,CAAC,IAAIA,EAAE,CAAC,GAE/C2hC,GAAOC,EACAD,CACX,EAAK,EAAE,EACS7C,EAAQC,EAAQZ,EAASC,CAAO,CAChD,CACA,SAASyD,GAAgBC,EAAoB,CAC3C,KAAM,CAAE,QAAAtE,EAAS,QAAAC,EAAS,QAAAC,EAAS,QAAAC,CAAO,EAAKmE,EACzC,CAACnR,EAASC,EAASuN,EAASC,CAAO,EAAIb,GAAoB,CAC/D,QAAAC,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,CACJ,CAAG,EACD,MAAO,CAAC,KAAKH,CAAO,IAAIC,CAAO,KAAKC,CAAO,IAAIC,CAAO,GAAIhN,EAASC,EAASuN,EAASC,CAAO,CAC9F,CAgCA,MAAM2D,GA/BevI,EAAAA,gBAAgB,CACnC,KAAM,eACN,MAAO,CACL,QACA,aACA,cACA,eACA,iBACA,sBACA,UACA,UACA,UACA,UACA,YACA,cACA,kBACJ,EACE,aAAc,CAAE,KAAM,CAAC,EACvB,MAAM7pC,EAAO,CAAE,MAAA0tC,GAAS,CACtB,MAAO,IAAM,CACX,KAAM,CAAC2E,EAAMlD,EAAQC,CAAM,EAAI8C,GAAgBlyC,CAAK,EACpD,OAAO6rC,EAAAA,EAAEyB,GAAa,CACpB,KAAA+E,EACA,OAAAlD,EACA,OAAAC,EACA,GAAG1B,EACH,GAAG1tC,CACX,CAAO,CACP,CACA,CACA,CAAC,EAyCKsyC,GAvCiBzI,EAAAA,gBAAgB,CACrC,KAAM,iBACN,MAAO,CACL,iBACA,iBACA,QACA,aACA,cACA,eACA,iBACA,sBACA,UACA,UACA,UACA,UACA,eACA,YACA,cACA,mBACA,QACJ,EACE,aAAc,CAAE,KAAM,CAAC,EACvB,MAAM7pC,EAAO,CAAE,MAAA0tC,GAAS,CACtB,MAAO,IAAM,CACX,KAAM,CAAC2E,EAAMlD,EAAQC,CAAM,EAAIyC,GAAkB,CAC/C,GAAG7xC,EACH,eAAgBA,EAAM,gBAAkB6kB,EAAS,OACjD,eAAgB7kB,EAAM,gBAAkB6kB,EAAS,GACzD,CAAO,EACD,OAAOgnB,EAAAA,EAAEyB,GAAa,CACpB,KAAA+E,EACA,OAAAlD,EACA,OAAAC,EACA,GAAG1B,EACH,GAAG1tC,CACX,CAAO,CACP,CACA,CACA,CAAC,EAyBKuyC,GAvBW1I,EAAAA,gBAAgB,CAC/B,KAAM,WACN,MAAO,CACL,iBACA,iBACA,QACA,aACA,cACA,eACA,iBACA,sBACA,UACA,UACA,UACA,UACA,YACA,cACA,kBACJ,EACE,MAAM7pC,EAAO,CAAE,MAAA0tC,GAAS,CACtB,MAAO,IAAM7B,EAAAA,EAAEyG,GAAkB,CAAE,GAAGtyC,EAAO,GAAG0tC,EAAO,aAAc,EAAG,CAC5E,CACA,CAAC,EAwCK8E,GAtCa3I,EAAAA,gBAAgB,CACjC,KAAM,aACN,MAAO,CACL,iBACA,iBACA,QACA,aACA,cACA,eACA,iBACA,sBACA,UACA,UACA,UACA,UACA,YACA,YACA,cACA,kBACJ,EACE,aAAc,CAAE,KAAM,CAAC,EACvB,MAAM7pC,EAAO,CAAE,MAAA0tC,GAAS,CACtB,MAAO,IAAM,CACX,KAAM,CAAC2E,EAAMlD,EAAQC,CAAM,EAAIH,GAAc,CAC3C,GAAGjvC,EACH,eAAgBA,EAAM,gBAAkB6kB,EAAS,OACjD,eAAgB7kB,EAAM,gBAAkB6kB,EAAS,GACzD,CAAO,EACD,OAAOgnB,EAAAA,EAAEyB,GAAa,CACpB,KAAA+E,EACA,OAAAlD,EACA,OAAAC,EACA,GAAG1B,EACH,GAAG1tC,CACX,CAAO,CACP,CACA,CACA,CAAC,EAuCKyyC,GArCmB5I,EAAAA,gBAAgB,CACvC,KAAM,mBACN,MAAO,CACL,iBACA,iBACA,QACA,aACA,cACA,eACA,iBACA,sBACA,UACA,UACA,UACA,UACA,YACA,cACA,kBACJ,EACE,aAAc,CAAE,KAAM,CAAC,EACvB,MAAM7pC,EAAO,CAAE,MAAA0tC,GAAS,CACtB,MAAO,IAAM,CACX,KAAM,CAAC2E,EAAMlD,EAAQC,CAAM,EAAIE,GAAoB,CACjD,GAAGtvC,EACH,eAAgBA,EAAM,gBAAkB6kB,EAAS,OACjD,eAAgB7kB,EAAM,gBAAkB6kB,EAAS,GACzD,CAAO,EACD,OAAOgnB,EAAAA,EAAEyB,GAAa,CACpB,KAAA+E,EACA,OAAAlD,EACA,OAAAC,EACA,GAAG1B,EACH,GAAG1tC,CACX,CAAO,CACP,CACA,CACA,CAAC,EAEK0yC,GAAmB,CACvB,MAAOvG,GACP,QAASJ,GACT,OAAQE,EACV,EACM0G,GAAmB,CACvB,QAASH,GACT,SAAUJ,GACV,KAAMG,GACN,WAAYD,GACZ,aAAcG,EAChB,EACA,SAASG,GAAWvS,EAAO5L,EAAYuE,EAAY,CACjD,MAAM6Z,EAAU5xC,EAAAA,SAAS,IAAOya,GAAQ+Y,EAAW,MAAM,IAAI/Y,CAAG,CAAC,EAC3Do3B,EAAU7xC,EAAAA,SAAS,IAAOya,GAAQsd,EAAW,MAAM,IAAItd,CAAG,CAAC,EAC3Dq3B,EAAe9xC,EAAAA,SAAS,IAAM,CAClC,MAAM+xC,EAAY,CAChB,GAAGL,GACH,GAAGtS,EAAM,SACf,EACU4S,EAAO,OAAO,KAAKD,CAAS,EAClC,UAAWnzC,KAAKwgC,EAAM,MACpBxgC,EAAE,MAAQ,CAACozC,EAAK,SAASpzC,EAAE,IAAI,IAAMmzC,EAAUnzC,EAAE,IAAI,EAAIA,EAAE,MAE7D,OAAOmzC,CACX,CAAG,EACKE,EAAejyC,EAAAA,SAAS,IAAM,CAClC,MAAMkyC,EAAY,CAChB,GAAGT,GACH,GAAGrS,EAAM,SACf,EACU4S,EAAO,OAAO,KAAKE,CAAS,EAClC,UAAWl1C,KAAKoiC,EAAM,MACpBpiC,EAAE,MAAQ,CAACg1C,EAAK,SAASh1C,EAAE,IAAI,IAAMk1C,EAAUl1C,EAAE,IAAI,EAAIA,EAAE,MAE7D,OAAOk1C,CACX,CAAG,EACKC,EAAWnyC,EAAAA,SAAS,IACpBo/B,EAAM,0BACDtU,GACLsU,EAAM,MACN,CACE,EAAG,EACH,EAAG,EACH,MAAOA,EAAM,WAAW,MACxB,OAAQA,EAAM,WAAW,MACnC,EACQA,EAAM,SACN,EACR,EAEWA,EAAM,KACd,EACKgT,EAAWpyC,EAAAA,SAAS,IAAM,CAC9B,GAAIo/B,EAAM,0BAA2B,CACnC,MAAMiT,EAAe,CAAA,EACrB,UAAW7pB,KAAQ4W,EAAM,MAAO,CAC9B,MAAM1kC,EAAS84B,EAAW,MAAM,IAAIhL,EAAK,MAAM,EACzChrB,EAASg2B,EAAW,MAAM,IAAIhL,EAAK,MAAM,EAC3CqJ,GAAc,CAChB,UAAWn3B,EAAO,kBAAoB,CAAE,EAAG,EAAG,EAAG,CAAC,EAClD,UAAW8C,EAAO,kBAAoB,CAAE,EAAG,EAAG,EAAG,CAAC,EAClD,YAAa9C,EAAO,WAAW,MAC/B,aAAcA,EAAO,WAAW,OAChC,YAAa8C,EAAO,WAAW,MAC/B,aAAcA,EAAO,WAAW,OAChC,MAAO4hC,EAAM,WAAW,MACxB,OAAQA,EAAM,WAAW,OACzB,SAAUA,EAAM,QAC1B,CAAS,GACCiT,EAAa,KAAK7pB,CAAI,CAEhC,CACM,OAAO6pB,CACb,CACI,OAAOjT,EAAM,KACjB,CAAG,EACKkT,EAActyC,EAAAA,SAAS,IAAM,CAAC,GAAGmyC,EAAS,MAAO,GAAGC,EAAS,KAAK,CAAC,EACnE9T,EAAmBt+B,EAAAA,SAAS,IAAM,CACtC,MAAMuyC,EAAgB,CAAA,EACtB,UAAW/vC,KAAQ48B,EAAM,MACnB58B,EAAK,UACP+vC,EAAc,KAAK/vC,CAAI,EAG3B,OAAO+vC,CACX,CAAG,EACKC,EAAmBxyC,EAAAA,SAAS,IAAM,CACtC,MAAMyyC,EAAgB,CAAA,EACtB,UAAWjqB,KAAQ4W,EAAM,MACnB5W,EAAK,UACPiqB,EAAc,KAAKjqB,CAAI,EAG3B,OAAOiqB,CACX,CAAG,EACKC,EAAsB1yC,EAAAA,SAAS,IAAM,CACzC,GAAGs+B,EAAiB,MACpB,GAAGkU,EAAiB,KACxB,CAAG,EACKG,EAAsB3yC,EAAAA,SAAS,IAAM,CACzC,MAAM4yC,EAAmB,CAAA,EACzB,UAAWpwC,KAAQ48B,EAAM,MACjB58B,EAAK,WAAW,OAAWA,EAAK,WAAW,QAAUA,EAAK,eAAiB,QAC/EowC,EAAiB,KAAKpwC,CAAI,EAG9B,OAAOowC,CACX,CAAG,EACKC,EAAsB7yC,EAAAA,SAC1B,IAAMmyC,EAAS,MAAM,OAAS,GAAKQ,EAAoB,MAAM,SAAWR,EAAS,MAAM,MAC3F,EACE,MAAO,CACL,QAAAP,EACA,QAAAC,EACA,YAAAS,EACA,aAAAR,EACA,aAAAG,EACA,SAAAG,EACA,SAAAD,EACA,oBAAAO,EACA,iBAAApU,EACA,iBAAAkU,EACA,oBAAAG,EACA,oBAAAE,CACJ,CACA,CACA,MAAMC,EAAQ,CACZ,aAAc,CACZ,KAAK,UAAY,EACjB,KAAK,MAAwB,IAAI,GACrC,CACE,OAAO,aAAc,CACnB,IAAIt3C,EACJ,MAAMu3C,GAAUv3C,EAAK+D,EAAAA,mBAAkB,IAAO,KAAO,OAAS/D,EAAG,WAAW,IACtEw3C,EAA8CD,GAAO,OAAO,iBAAiB,iBAAoBD,GAAQ,SAC/G,OAAAA,GAAQ,SAAWE,GAAoB,IAAIF,GACvCC,IACFA,EAAO,OAAO,iBAAiB,gBAAkBD,GAAQ,UAEpDA,GAAQ,QACnB,CACE,IAAIr4B,EAAKw4B,EAAM,CACb,OAAO,KAAK,MAAM,IAAIx4B,EAAKw4B,CAAI,CACnC,CACE,IAAIx4B,EAAK,CACP,OAAO,KAAK,MAAM,IAAIA,CAAG,CAC7B,CACE,OAAOA,EAAK,CACV,OAAO,KAAK,MAAM,OAAOA,CAAG,CAChC,CACE,OAAOA,EAAKy4B,EAAgB,CAC1B,MAAM9T,EAAQiD,GAAQ,EAChB8Q,EAAgBC,EAAAA,SAAShU,CAAK,EAC9BiU,EAAU,CAAA,EAChB,SAAW,CAACr2C,EAAGqV,CAAE,IAAK,OAAO,QAAQ8gC,EAAc,KAAK,EAAG,CACzD,MAAMzyC,EAAO,KAAK1D,EAAE,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAE,MAAM,CAAC,CAAC,GACxDq2C,EAAQ3yC,CAAI,EAAI2R,EAAG,EACzB,CACI,MAAMsnB,EAAQ,CAAA,EACd,SAAW,CAAC38B,EAAGqV,CAAE,IAAK,OAAO,QAAQ8gC,EAAc,KAAK,EACtDxZ,EAAM38B,CAAC,EAAIqV,EAAG,QAEhB,MAAMmhB,EAAaxzB,EAAAA,SAAS,IAAM,CAChC,MAAMszC,EAA2B,IAAI,IACrC,UAAW9wC,KAAQ2wC,EAAc,MAC/BG,EAAS,IAAI9wC,EAAK,GAAIA,CAAI,EAE5B,OAAO8wC,CACb,CAAK,EACKvb,EAAa/3B,EAAAA,SAAS,IAAM,CAChC,MAAMuzC,EAA2B,IAAI,IACrC,UAAW/qB,KAAQ2qB,EAAc,MAC/BI,EAAS,IAAI/qB,EAAK,GAAIA,CAAI,EAE5B,OAAO+qB,CACb,CAAK,EACKC,EAAU7B,GAAWwB,EAAe3f,EAAYuE,CAAU,EAC1D0b,EAAUlR,GAAW4Q,EAAe3f,EAAYuE,CAAU,EAChE0b,EAAQ,SAAS,CAAE,GAAGN,EAAe,GAAGD,CAAc,CAAE,EACxD,MAAMD,EAAO,CACX,GAAGI,EACH,GAAGG,EACH,GAAGC,EACH,GAAGz4C,GAAOm4C,CAAa,EACvB,WAAA3f,EACA,WAAAuE,EACA,MAAA4B,EACA,GAAIlf,EACJ,eAAgB,SAChB,SAAU,IAAM,CACd,KAAK,OAAOA,CAAG,CACvB,CACA,EACI,YAAK,IAAIA,EAAKw4B,CAAI,EACXA,CACX,CACE,OAAQ,CACN,MAAO,YAAY,KAAK,WAAW,EACvC,CACA,CACA,SAASrZ,GAAW8Z,EAAU,CAC5B,MAAMC,EAAUb,GAAQ,YAAW,EAC7BpS,EAAQhoC,EAAAA,gBAAe,EACvBk7C,EAAY,OAAOF,GAAa,SAChC94C,EAAUg5C,EAAYF,EAAW,CAAE,GAAIA,CAAQ,EAC/Cj5B,EAAM7f,EAAQ,GACdoyB,EAAYvS,GAAiCimB,GAAM,UACzD,IAAImT,EACJ,GAAInT,EAAO,CACT,MAAMoT,EAAgB9V,EAAAA,OAAOrF,GAAS,IAAI,EACtC,OAAOmb,EAAkB,KAAeA,IAAkB,OAAS,CAAC9mB,GAAa8mB,EAAc,KAAO9mB,KACxG6mB,EAAUC,EAEhB,CAME,GALKD,GACC7mB,IACF6mB,EAAUF,EAAQ,IAAI3mB,CAAS,GAG/B,CAAC6mB,GAAW7mB,GAAa6mB,EAAQ,KAAO7mB,EAAW,CACrD,MAAMtsB,EAAO+Z,GAAOk5B,EAAQ,MAAK,EAC3BvU,EAAQuU,EAAQ,OAAOjzC,EAAM9F,CAAO,EAC1Ci5C,EAAUzU,GACMsB,GAASC,EAAAA,YAAY,EAAI,GACjC,IAAI,IAAM,CAChB7lC,EAAAA,MACEskC,EAAM,aACN,CAAC2U,EAAoBhM,EAAInM,IAAc,CACrC,MAAMoY,EAAsB9lB,GAAY,CACtCkR,EAAM,iBAAiBlR,CAAO,CAC1C,EACgB+lB,EAAsB/lB,GAAY,CACtCkR,EAAM,iBAAiBlR,CAAO,CAC1C,EACc6lB,GACF3U,EAAM,cAAc4U,CAAkB,EACtC5U,EAAM,cAAc6U,CAAkB,IAEtC7U,EAAM,MAAM,MAAM,YAAY,IAAI4U,CAAkB,EACpD5U,EAAM,MAAM,MAAM,YAAY,IAAI6U,CAAkB,GAEtDrY,EAAU,IAAM,CACdwD,EAAM,MAAM,MAAM,YAAY,IAAI4U,CAAkB,EACpD5U,EAAM,MAAM,MAAM,YAAY,IAAI6U,CAAkB,CAChE,CAAW,CACX,EACQ,CAAE,UAAW,EAAI,CACzB,EACMz7C,GAAkB,IAAM,CACtB,GAAIq7C,EAAS,CACX,MAAMK,EAAiBP,EAAQ,IAAIE,EAAQ,EAAE,EACzCK,EACFA,EAAe,SAAQ,EAEvBne,GAAK,kCAAkC8d,EAAQ,EAAE,cAAc,CAE3E,CACA,CAAO,CACP,CAAK,CACL,MACQD,GACFC,EAAQ,SAASj5C,CAAO,EAO5B,GAJI8lC,IACFyT,EAAAA,QAAQxb,GAASkb,CAAO,EACxBnT,EAAM,UAAYmT,EAAQ,IAExBD,EAAW,CACb,MAAMQ,EAAW70C,EAAAA,mBAAkB,EACF60C,GAAS,KAAK,OAAU,WACvDP,EAAQ,MAAM,MAAM,IAAIhjB,GAAaC,GAAU,kBAAkB,CAAC,CAExE,CACE,OAAO+iB,CACT,CACA,SAASQ,GAAiBC,EAAY,CACpC,KAAM,CAAE,MAAA3a,EAAO,WAAAvO,CAAU,EAAKwO,GAAU,EACxC,IAAI2a,EACJ5K,EAAAA,UAAU,IAAM,CACd,MAAM6K,EAAeF,EAAW,MAC1BG,EAAmB,IAAM,CAC7B,GAAI,CAACD,EACH,OAEF,MAAMhtC,EAAO4f,GAAcotB,CAAY,GACnChtC,EAAK,QAAU,GAAKA,EAAK,SAAW,IACtCmyB,EAAM,MAAM,IAAI9I,GAAaC,GAAU,2BAA2B,CAAC,EAErE1F,EAAW,MAAQ,CAAE,MAAO5jB,EAAK,OAAS,IAAK,OAAQA,EAAK,QAAU,GAAG,CAC/E,EACIitC,EAAgB,EAChB,OAAO,iBAAiB,SAAUA,CAAgB,EAC9CD,IACFD,EAAiB,IAAI,eAAe,IAAME,GAAkB,EAC5DF,EAAe,QAAQC,CAAY,GAErCE,EAAAA,gBAAgB,IAAM,CACpB,OAAO,oBAAoB,SAAUD,CAAgB,EACjDF,GAAkBC,GACpBD,EAAe,UAAUC,CAAY,CAE7C,CAAK,CACL,CAAG,CACH,CACA,MAAMG,GAAgB,CACpB,KAAM,gBACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8BhM,EAAAA,gBAAgB,CAClD,GAAG+L,GACH,MAAO,CACL,kBAAmB,CAAA,CACvB,EACE,MAAM9L,EAAS,CACb,MAAO,CAACkB,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,MAAO,0CACP,MAAOwB,EAAAA,eAAe,CACpB,MAAO,GAAG3B,EAAK,kBAAkB,KAAK,KACtC,OAAQ,GAAGA,EAAK,kBAAkB,MAAM,KACxC,UAAW,aAAaA,EAAK,kBAAkB,CAAC,OAAOA,EAAK,kBAAkB,CAAC,KACzF,CAAS,CACT,EAAS,KAAM,CAAC,EAEhB,CACA,CAAC,EACK8K,GAAe,CAAC,UAAU,EAC1BC,GAAgB,CACpB,KAAM,iBACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8BnM,EAAAA,gBAAgB,CAClD,GAAGkM,GACH,MAAMjM,EAAS,CACb,KAAM,CAAE,MAAAlP,EAAO,SAAA5O,EAAU,iBAAAuT,EAAkB,eAAA4K,EAAgB,oBAAA8L,EAAqB,oBAAAC,CAAmB,EAAKrb,GAAU,EAC5Gsb,EAAkB7W,GAAsB,EACxCvgC,EAAK9D,EAAAA,IAAI,IAAI,EACbmgC,EAAWlB,GAAQ,CACvB,GAAAn7B,EACA,QAAQtE,EAAM,CACZmgC,EAAM,mBAAmBngC,CAAI,CACrC,EACM,OAAOA,EAAM,CACXmgC,EAAM,cAAcngC,CAAI,CAChC,EACM,OAAOA,EAAM,CACXmgC,EAAM,kBAAkBngC,CAAI,CACpC,CACA,CAAK,EACDmwC,EAAAA,UAAU,IAAM,CACd,IAAInuC,EACCw5C,EAAoB,QACtBx5C,EAAKsC,EAAG,QAAU,MAAgBtC,EAAG,MAAM,CAAE,cAAe,GAAM,CAE3E,CAAK,EACD,MAAM25C,EAAoBn1C,EAAAA,SAAS,IAAM4qB,GAAe0T,EAAiB,KAAK,CAAC,EACzE8W,EAAap1C,EAAAA,SAAS,KAAO,CACjC,MAAO,GAAGm1C,EAAkB,MAAM,KAAK,KACvC,OAAQ,GAAGA,EAAkB,MAAM,MAAM,KACzC,IAAK,GAAGA,EAAkB,MAAM,CAAC,KACjC,KAAM,GAAGA,EAAkB,MAAM,CAAC,IACxC,EAAM,EACF,SAASE,EAAct3C,EAAO,CAC5B47B,EAAM,qBAAqB,CAAE,MAAA57B,EAAO,MAAOugC,EAAiB,MAAO,CACzE,CACI,SAASgX,EAAUv3C,EAAO,CACpBi3C,GAGAnuB,GAAc9oB,EAAM,GAAG,IACzBA,EAAM,eAAc,EACpBm3C,EACE,CACE,EAAGruB,GAAc9oB,EAAM,GAAG,EAAE,EAC5B,EAAG8oB,GAAc9oB,EAAM,GAAG,EAAE,CACxC,EACUA,EAAM,QAChB,EAEA,CACI,MAAO,CAACgsC,EAAMC,IACL,CAAClxC,EAAAA,MAAMm8C,CAAmB,GAAKE,EAAkB,MAAM,OAASA,EAAkB,MAAM,QAAUlL,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC9I,IAAK,EACL,MAAOC,EAAAA,eAAe,CAAC,+CAAgDrxC,EAAAA,MAAMowC,CAAc,CAAC,CAAC,EAC7F,MAAOwC,EAAAA,eAAe,CAAE,UAAW,aAAa5yC,QAAMiyB,CAAQ,EAAE,CAAC,MAAMjyB,EAAAA,MAAMiyB,CAAQ,EAAE,CAAC,aAAajyB,EAAAA,MAAMiyB,CAAQ,EAAE,IAAI,GAAG,CAAE,CACtI,EAAS,CACD6gB,EAAAA,mBAAmB,MAAO,CACxB,QAAS,KACT,IAAK9tC,EACL,MAAOqsC,EAAAA,eAAe,CAAC,CAAE,SAAUrxC,EAAAA,MAAMqhC,CAAQ,CAAC,EAAI,+BAA+B,CAAC,EACtF,MAAOuR,EAAAA,eAAe0J,EAAW,KAAK,EACtC,SAAUt8C,EAAAA,MAAMk8C,CAAmB,EAAI,OAAS,GAChD,cAAeK,EACf,UAAWC,CACrB,EAAW,KAAM,GAAIT,EAAY,CACjC,EAAS,CAAC,GAAKlJ,qBAAmB,GAAI,EAAI,CAE1C,CACA,CAAC,EACD,SAAS4J,GAAiBx3C,EAAOs8B,EAAiB,CAChD,MAAO,CACL,EAAGt8B,EAAM,QAAUs8B,EAAgB,KACnC,EAAGt8B,EAAM,QAAUs8B,EAAgB,GACvC,CACA,CACA,MAAMmb,GAAgB,CACpB,KAAM,OACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B7M,EAAAA,gBAAgB,CAClD,GAAG4M,GACH,MAAO,CACL,YAAa,CAAE,KAAM,OAAO,EAC5B,oBAAqB,CAAE,KAAM,OAAO,CACxC,EACE,MAAM3M,EAAS,CACb,KAAM,CACJ,WAAA3P,EACA,MAAArQ,EACA,SAAAkC,EACA,MAAA4O,EACA,oBAAAsb,EACA,uBAAAxb,EACA,kBAAAic,EACA,mBAAAC,EACA,qBAAAjf,EACA,iBAAA8b,EACA,iBAAAlU,EACA,YAAA0G,EACA,YAAAQ,EACA,cAAAoQ,EACA,cAAAC,EACA,sBAAAC,EACA,qBAAAvf,EACA,WAAAwB,EACA,WAAAvE,EACA,iBAAAkE,EACA,mBAAAhP,EACA,sBAAAsgB,CACN,EAAQpP,GAAU,EACR5rB,EAAYhU,EAAAA,IAAI,IAAI,EACpB+7C,EAAkB/7C,EAAAA,IAAoB,IAAI,GAAK,EAC/Cg8C,EAAkBh8C,EAAAA,IAAoB,IAAI,GAAK,EAC/CqgC,EAAkBrgC,EAAAA,IAAG,EACrBi8C,EAAqBnU,QAAM,IAAM6T,EAAmB,QAAU9M,EAAQ,aAAeoM,EAAoB,MAAM,EAC/GiB,EAAuBpU,EAAAA,MAAM,IAAMkH,EAAsB,QAAU,IAAI,EAC7E,IAAImN,EAAsB,GACtBC,EAAmB,GACvB,MAAMC,EAAmB3wB,GAAYmwB,EAAe,CAAE,2BAA4B,EAAK,CAAE,EACnFS,EAAwB5wB,GAAYowB,CAAqB,EAC/Dh7C,QAAMu7C,EAAmBE,GAAiB,CACnCA,IAGLvR,EAAY1G,EAAiB,KAAK,EAClCkH,EAAYgN,EAAiB,KAAK,EAClC9b,EAAqB,MAAQ,GACnC,CAAK,EACD57B,QAAMw7C,EAAwBC,GAAiB,CAC7ChgB,EAAqB,MAAQggB,CACnC,CAAK,EACD,SAASC,EAAYj4C,EAASk4C,EAAc,CAC1C,OAAQ14C,GAAU,CACZA,EAAM,SAAW04C,GAGMl4C,IAAQR,CAAK,CAChD,CACA,CACI,SAASi8B,EAAQj8B,EAAO,CACtB,GAAIo4C,GAAuBD,EAAqB,MAAO,CACrDC,EAAsB,GACtB,MACR,CACMxc,EAAM,UAAU57B,CAAK,EACrB07B,EAAsB,EACtB/C,EAAqB,MAAQ,EACnC,CACI,SAAS2e,EAAct3C,EAAO,CAC5BA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB47B,EAAM,gBAAgB57B,CAAK,CACjC,CACI,SAAS24C,EAAQ34C,EAAO,CACtB47B,EAAM,WAAW57B,CAAK,CAC5B,CACI,SAAS+rC,EAAc/rC,EAAO,CAC5B,IAAIvC,EAAIyD,EAAIC,GAEZ,GADAm7B,EAAgB,OAAS7+B,EAAK09B,EAAW,QAAU,KAAO,OAAS19B,EAAG,sBAAqB,EACvF,CAACm6C,EAAmB,OAAS,CAAC9M,EAAQ,aAAe9qC,EAAM,SAAW,GAAKA,EAAM,SAAWiQ,EAAU,OAAS,CAACqsB,EAAgB,MAClI,QAEDn7B,IAAMD,EAAKlB,EAAM,SAAW,KAAO,OAASkB,EAAG,oBAAsB,MAAgBC,GAAG,KAAKD,EAAIlB,EAAM,SAAS,EACjH,KAAM,CAAE,EAAA6E,GAAG,EAAA0K,EAAC,EAAKioC,GAAiBx3C,EAAOs8B,EAAgB,KAAK,EAC9D+b,EAAmB,GACnBD,EAAsB,GACtB1c,EAAsB,EACtBic,EAAkB,MAAQ,CACxB,MAAO,EACP,OAAQ,EACR,OAAQ9yC,GACR,OAAQ0K,GACR,EAAA1K,GACA,EAAA0K,EACR,EACMqsB,EAAM,eAAe57B,CAAK,CAChC,CACI,SAASm/B,EAAcn/B,EAAO,CAC5B,IAAIvC,EACJ,GAAI,CAAC6+B,EAAgB,OAAS,CAACqb,EAAkB,MAC/C,OAEFS,EAAsB,GACtB,KAAM,CAAE,EAAGQ,EAAQ,EAAGC,EAAM,EAAK7jB,GAAiBh1B,EAAOs8B,EAAgB,KAAK,EACxE,CAAE,OAAAwc,GAAS,EAAG,OAAAC,GAAS,CAAC,EAAKpB,EAAkB,MAC/CqB,GAAqB,CACzB,OAAAF,GACA,OAAAC,GACA,EAAGH,EAASE,GAASF,EAASE,GAC9B,EAAGD,GAASE,GAASF,GAASE,GAC9B,MAAO,KAAK,IAAIH,EAASE,EAAM,EAC/B,OAAQ,KAAK,IAAID,GAASE,EAAM,CACxC,EACYE,EAAsBjB,EAAgB,MACtCkB,GAAsBjB,EAAgB,MAC5CD,EAAgB,MAAQ,IAAI,IAC1BjrB,GAAejC,EAAM,MAAOkuB,GAAoBhsB,EAAS,MAAO6qB,EAAc,QAAU9xB,GAAc,QAAS,EAAI,EAAE,IAClHthB,GAASA,EAAK,EACzB,CACA,EACMwzC,EAAgB,MAAwB,IAAI,IAC5C,MAAMkB,KAAoB17C,EAAKktB,EAAmB,QAAU,KAAO,OAASltB,EAAG,aAAe,GAC9F,UAAW6tB,KAAU0sB,EAAgB,MAAO,CAC1C,MAAMoB,EAAczf,EAAiB,MAAM,IAAIrO,CAAM,EACrD,GAAK8tB,EAGL,SAAW,CAAE,OAAA3T,CAAM,IAAM2T,EAAY,OAAM,EAAI,CAC7C,MAAM3uB,EAAOuP,EAAW,MAAM,IAAIyL,CAAM,EACpChb,IAASA,EAAK,YAAc0uB,KAC9BlB,EAAgB,MAAM,IAAIxS,CAAM,CAE5C,CACA,CACM,GAAI,CAACpL,GAAa4e,EAAqBjB,EAAgB,KAAK,EAAG,CAC7D,MAAM7nB,EAAUW,GAAoB2E,EAAW,MAAOuiB,EAAgB,MAAO,EAAI,EACjFpc,EAAM,YAAYzL,CAAO,CACjC,CACM,GAAI,CAACkK,GAAa6e,GAAqBjB,EAAgB,KAAK,EAAG,CAC7D,MAAM9nB,EAAUW,GAAoBkJ,EAAW,MAAOie,EAAgB,KAAK,EAC3Erc,EAAM,YAAYzL,CAAO,CACjC,CACMwnB,EAAkB,MAAQqB,GAC1B9B,EAAoB,MAAQ,GAC5Bve,EAAqB,MAAQ,EACnC,CACI,SAAS+G,GAAY1/B,EAAO,CAC1B,IAAIvC,EACAuC,EAAM,SAAW,GAAK,CAACq4C,KAG1B56C,EAAKuC,EAAM,SAAW,MAAgBvC,EAAG,sBAAsBuC,EAAM,SAAS,EAC3E,CAACk3C,EAAoB,OAASS,EAAkB,OAAS33C,EAAM,SAAWiQ,EAAU,OACtFgsB,EAAQj8B,CAAK,EAEfk3C,EAAoB,MAAQ,GAC5BS,EAAkB,MAAQ,KAC1Bhf,EAAqB,MAAQqf,EAAgB,MAAM,KAAO,EAC1Dpc,EAAM,aAAa57B,CAAK,EACpB8qC,EAAQ,sBACVsN,EAAsB,IAExBC,EAAmB,GACzB,CACI,MAAO,CAACrM,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,QAAS,YACT,IAAKl8B,EACL,MAAOm8B,EAAAA,eAAe,CAAC,qCAAsC,CAAE,UAAWJ,EAAK,WAAW,CAAE,CAAC,EAC7F,QAASC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKjsC,GAAUk4C,EAAmB,MAAQ,OAASO,EAAYxc,EAAShsB,EAAU,KAAK,EAAEjQ,CAAK,GAC7H,cAAeisC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKoN,GAAWZ,EAAYnB,EAAernC,EAAU,KAAK,EAAEopC,CAAM,GACvG,eAAgBpN,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKoN,GAAWZ,EAAYE,EAAS1oC,EAAU,KAAK,EAAEopC,CAAM,GAClG,eAAgBpN,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKjsC,GAAUk4C,EAAmB,MAAQ,OAASn9C,EAAAA,MAAM6gC,CAAK,EAAE,eAAe57B,CAAK,GAC1H,cAAeisC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKjsC,GAAUk4C,EAAmB,MAAQnM,EAAc/rC,CAAK,EAAIjF,EAAAA,MAAM6gC,CAAK,EAAE,cAAc57B,CAAK,GACtI,cAAeisC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKjsC,GAAUk4C,EAAmB,MAAQ/Y,EAAcn/B,CAAK,EAAIjF,EAAAA,MAAM6gC,CAAK,EAAE,cAAc57B,CAAK,GACtI,YAAaisC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKjsC,GAAUk4C,EAAmB,MAAQxY,GAAY1/B,CAAK,EAAI,QAClG,eAAgBisC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKoN,GAAWt+C,EAAAA,MAAM6gC,CAAK,EAAE,eAAeyd,CAAM,EAChG,EAAS,CACDhN,aAAWL,EAAK,OAAQ,SAAS,EACjCjxC,QAAMm8C,CAAmB,GAAKn8C,QAAM48C,CAAiB,GAAKzL,YAAS,EAAI6B,EAAAA,YAAY8I,GAAa,CAC9F,IAAK,EACL,sBAAuB97C,EAAAA,MAAM48C,CAAiB,CACxD,EAAW,KAAM,EAAG,CAAC,qBAAqB,CAAC,GAAK/J,EAAAA,mBAAmB,GAAI,EAAI,EACnE7yC,EAAAA,MAAM49B,CAAoB,GAAK59B,EAAAA,MAAMwlC,CAAgB,EAAE,QAAU2L,YAAS,EAAI6B,EAAAA,YAAYiJ,GAAa,CAAE,IAAK,CAAC,CAAE,GAAKpJ,EAAAA,mBAAmB,GAAI,EAAI,CACzJ,EAAS,EAAE,EAEX,CACA,CAAC,EACK0L,GAAgB,CACpB,KAAM,YACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B1O,EAAAA,gBAAgB,CAClD,GAAGyO,GACH,MAAMxO,EAAS,CACb,KAAM,CAAE,SAAA9d,EAAU,cAAAwsB,EAAe,kBAAAC,CAAiB,EAAK5d,GAAU,EAC3D6d,EAAWz3C,EAAAA,SAAS,IACpBu3C,EAAc,MACT,CAACC,EAAkB,MAErB,EACR,EACK32B,EAAY7gB,EAAAA,SAAS,IAAM,aAAa+qB,EAAS,MAAM,CAAC,MAAMA,EAAS,MAAM,CAAC,aAAaA,EAAS,MAAM,IAAI,GAAG,EACvH,MAAO,CAACgf,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,MAAO,mDACP,MAAOwB,EAAAA,eAAe,CAAE,UAAW7qB,EAAU,MAAO,QAAS42B,EAAS,MAAQ,EAAI,MAAM,CAAE,CAClG,EAAS,CACDrN,aAAWL,EAAK,OAAQ,SAAS,CACzC,EAAS,CAAC,EAEV,CACA,CAAC,EACK2N,GAAgB,CACpB,KAAM,WACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B/O,EAAAA,gBAAgB,CAClD,GAAG8O,GACH,MAAM7O,EAAS,CACb,KAAM,CACJ,QAAA7c,EACA,QAAAC,EACA,gBAAA2rB,EACA,gBAAAl2B,EACA,sBAAAm2B,EACA,iBAAAC,EACA,qBAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,UAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,eAAAtP,EACA,MAAAvP,EACA,sBAAAqP,EACA,oBAAAiM,EACA,aAAAwD,EACA,OAAQC,EACR,YAAaC,EACb,cAAeC,EACf,SAAA7tB,EACA,YAAA8tB,EACA,kBAAAC,CACN,EAAQlf,GAAU,EACdya,GAAiBwE,CAAW,EAC5B,MAAME,EAAqBlzB,EAAAA,WAAW,EAAK,EACrCmzB,EAAiBnzB,EAAAA,WAAW,EAAK,EACvC,IAAIozB,EAAmB,KACnBC,EAA6B,GAC7BC,EAAc,EACdC,EAAgB,CAClB,EAAG,EACH,EAAG,EACH,KAAM,CACZ,EACI,MAAMC,EAAgB3zB,GAAYqyB,CAAoB,EAChDuB,EAAsB5zB,GAAYoyB,CAAgB,EAClDyB,EAAiB7zB,GAAYmyB,CAAqB,EAClD2B,EAAkB1X,EAAAA,MACtB,KAAO,CAACwX,EAAoB,OAASA,EAAoB,OAASxB,EAAiB,QAAU,MAAUuB,EAAc,OAASlB,EAAU,MAC9I,EACUsB,EAAoB3X,EAAAA,MAAM,IAAMuX,EAAc,OAASrB,EAAY,KAAK,EACxE0B,GAAc5X,EAAAA,MAAM,IAAMwX,EAAoB,OAASxB,EAAiB,QAAU,IAAQ0B,EAAgB,QAAU,EAAI,EAC9H7P,EAAAA,UAAU,IAAM,CACd,GAAI,CAACkP,EAAY,MAAO,CACtB9iB,GAAK,6BAA6B,EAClC,MACR,CACM,MAAM4jB,GAAkBd,EAAY,MAC9BrQ,GAAOmR,GAAgB,sBAAqB,EAC5CtS,EAAStlB,GAAI,EAAG,cAAc+2B,EAAkB,KAAK,EAAE,YAAY,CAAC9sB,EAAQ,MAAOC,EAAQ,KAAK,CAAC,EAAE,gBAAgBvK,EAAgB,KAAK,EACxI4lB,GAAcr7B,GAAO0tC,EAAe,EAAE,KAAKtS,CAAM,EACjDuS,GAAgBtS,GAAY,GAAG,YAAY,EAC3CiB,EAAmBvnB,GAAS,UAAU42B,EAAgB,MAAM,GAAK,EAAGA,EAAgB,MAAM,GAAK,CAAC,EAAE,MAAMvwB,GAAMuwB,EAAgB,MAAM,MAAQ,EAAG5rB,EAAQ,MAAOC,EAAQ,KAAK,CAAC,EAC5KxK,EAAS,CACb,CAAC,EAAG,CAAC,EACL,CAAC+mB,GAAK,MAAOA,GAAK,MAAM,CAChC,EACYjB,EAAuBF,EAAO,UAAS,EAAGkB,EAAkB9mB,EAAQC,EAAgB,KAAK,EAC/F2lB,EAAO,UAAUC,GAAaC,CAAoB,EAClDF,EAAO,WAAWplB,CAAU,EAC5By2B,EAAY,MAAQrR,EACpBsR,EAAiB,MAAQrR,GACzBsR,EAAmB,MAAQgB,GAC3B7uB,EAAS,MAAQ,CAAE,EAAGwc,EAAqB,EAAG,EAAGA,EAAqB,EAAG,KAAMA,EAAqB,CAAC,EACrGF,EAAO,GAAG,QAAUtpC,GAAU,CAC5B,IAAIvC,EACJ,GAAI,CAACuC,EAAM,YACT,OAAO,KAETo7C,EAAcp7C,EAAM,YAAY,OAChCg7C,EAAmB,MAAQ,GAC3B,MAAMc,EAAgBC,GAAqB/7C,EAAM,SAAS,IACpDvC,EAAKuC,EAAM,cAAgB,KAAO,OAASvC,EAAG,QAAU,cAC5Di9C,EAAa,MAAQ,IAEvBW,EAAgBS,EAChBlgB,EAAM,oBAAoBkgB,CAAa,EACvClgB,EAAM,UAAU,CAAE,MAAA57B,EAAO,cAAA87C,CAAa,CAAE,CAChD,CAAO,EACDxS,EAAO,GAAG,MAAQtpC,GAAU,CAC1B,GAAI,CAACA,EAAM,YACT,OAAO,KAQT,GANAg7C,EAAmB,MAAQ,GAC3BN,EAAa,MAAQ,GACjBsB,EAAgBP,EAAgB,MAAOL,GAAe,CAAC,GAAK,CAACD,GAC/Dvf,EAAM,gBAAgB57B,EAAM,WAAW,EAEzCm7C,EAA6B,GACzBc,EAAYZ,EAAer7C,EAAM,SAAS,EAAG,CAC/C,MAAM87C,EAAgBC,GAAqB/7C,EAAM,SAAS,EAC1Dq7C,EAAgBS,EAChBlgB,EAAM,kBAAkBkgB,CAAa,EACrClgB,EAAM,QAAQ,CAAE,MAAA57B,EAAO,cAAA87C,CAAa,CAAE,CAChD,CACA,CAAO,EACDxS,EAAO,OAAQtpC,GAAU,CACvB,IAAIvC,EACJ,MAAMy+C,EAAaV,EAAe,OAASjB,EAAa,MAClD4B,EAAY7B,EAAY,OAASt6C,EAAM,QACvCo8C,EAAcp8C,EAAM,OAC1B,GAAIo8C,IAAgB,GAAKp8C,EAAM,OAAS,cAAgBq8C,GAAmBr8C,EAAO,gBAAgB,GAAKq8C,GAAmBr8C,EAAO,gBAAgB,GAC/I,MAAO,GAoBT,GAlBI,CAACy7C,EAAgB,OAAS,CAACS,GAAc,CAACR,EAAkB,OAAS,CAACrB,EAAkB,OAAS,CAACC,EAAY,OAG9GpD,EAAoB,OAGpB,CAACmD,EAAkB,OAASr6C,EAAM,OAAS,YAG3Cq8C,GAAmBr8C,EAAOy6C,EAAiB,KAAK,GAAKz6C,EAAM,OAAS,SAGpEq8C,GAAmBr8C,EAAOmrC,EAAe,KAAK,IAAMnrC,EAAM,OAAS,SAAW07C,EAAkB,OAAS17C,EAAM,OAAS,SAAW,CAACw7C,EAAe,QAGnJ,CAAClB,EAAY,OAASt6C,EAAM,SAAWA,EAAM,OAAS,SAGtD,CAACk8C,GAAc,CAACR,EAAkB,OAAS,CAACS,GAAan8C,EAAM,OAAS,QAC1E,MAAO,GAET,GAAI,CAACs6C,GAAet6C,EAAM,OAAS,gBAAkBvC,EAAKuC,EAAM,UAAY,KAAO,OAASvC,EAAG,QAAU,EACvG,OAAAuC,EAAM,eAAc,EACb,GAQT,GANI,CAACy7C,EAAgB,QAAUz7C,EAAM,OAAS,aAAeA,EAAM,OAAS,eAGxE+5C,EAAiB,QAAU,IAAQ,MAAM,QAAQK,EAAU,KAAK,GAAKA,EAAU,MAAM,SAAS,CAAC,GAAKgC,IAAgB,GAGpH,MAAM,QAAQhC,EAAU,KAAK,GAAK,CAACA,EAAU,MAAM,SAASgC,CAAW,IAAMp8C,EAAM,OAAS,aAAeA,EAAM,OAAS,cAC5H,MAAO,GAET,MAAMs8C,GAAgB,MAAM,QAAQlC,EAAU,KAAK,GAAKA,EAAU,MAAM,SAASgC,CAAW,GAAKrC,EAAiB,QAAU,IAAQ,MAAM,QAAQK,EAAU,KAAK,GAAK,CAACA,EAAU,MAAM,SAAS,CAAC,GAAK,CAACgC,GAAeA,GAAe,EACrO,OAAQ,CAACp8C,EAAM,SAAWs7C,EAAc,OAASt7C,EAAM,OAAS,UAAYs8C,EACpF,CAAO,EACDv/C,EAAAA,MACE,CAACm6C,EAAqBuE,CAAe,EACrC,IAAM,CACAvE,EAAoB,OAAS,CAAC8D,EAAmB,MACnD1R,EAAO,GAAG,OAAQ,IAAI,EACZ4N,EAAoB,OAC9B5N,EAAO,GAAG,OAAStpC,GAAU,CAC3BgtB,EAAS,MAAQ,CAAE,EAAGhtB,EAAM,UAAU,EAAG,EAAGA,EAAM,UAAU,EAAG,KAAMA,EAAM,UAAU,CAAC,EACtF,MAAM87C,EAAgBC,GAAqB/7C,EAAM,SAAS,EAC1Dm7C,EAA6Ba,EAAgBP,EAAgB,MAAOL,GAAe,CAAC,EACpFxf,EAAM,eAAekgB,CAAa,EAClClgB,EAAM,KAAK,CAAE,MAAA57B,EAAO,cAAA87C,CAAa,CAAE,CACjD,CAAa,CAEb,EACQ,CAAE,UAAW,EAAI,CACzB,EACM/+C,EAAAA,MACE,CAACm6C,EAAqBwE,EAAmBxB,EAAiBsB,EAAgBlB,EAAaE,EAAkBC,CAAgB,EACzH,IAAM,CACAiB,EAAkB,OAAS,CAACF,EAAe,OAAS,CAACtE,EAAoB,MAC3E3N,GAAY,GACV,aACCvpC,GAAU,CACT,GAAIq8C,GAAmBr8C,EAAOy6C,EAAiB,KAAK,EAClD,MAAO,GAET,MAAMyB,EAAaV,EAAe,OAASjB,EAAa,MAClD4B,EAAY7B,EAAY,OAASt6C,EAAM,QAE7C,GAAI,EADuB,CAACw6C,EAAiB,OAASkB,EAAkB,OAASQ,GAAcC,GAE7F,MAAO,GAETn8C,EAAM,eAAc,EACpBA,EAAM,yBAAwB,EAC9B,MAAMu8C,EAAchT,GAAY,SAAS,QAAQ,EAAE,GAAK,EAClDiT,GAAWpnB,GAAO,EACxB,GAAI,CAACkmB,EAAc,OAASt7C,EAAM,SAAWs6C,EAAY,OAASkC,GAAU,CAC1E,MAAMjuC,GAAQF,GAAQrO,CAAK,EACrBy8C,GAAav4B,EAAWlkB,CAAK,EAC7BgZ,GAAQujC,EAAc,GAAKE,GACjCnT,EAAO,QAAQC,GAAavwB,GAAOzK,GAAOvO,CAAK,EAC/C,MAClB,CACgB,MAAM08C,GAAiB18C,EAAM,YAAc,EAAI,GAAK,EACpD,IAAI28C,GAASzC,EAAgB,QAAU3zB,GAAgB,SAAW,EAAIvmB,EAAM,OAAS08C,GACjFE,GAAS1C,EAAgB,QAAU3zB,GAAgB,WAAa,EAAIvmB,EAAM,OAAS08C,GACnF,CAACF,IAAYx8C,EAAM,UAAYk6C,EAAgB,QAAU3zB,GAAgB,UAAY,CAACo2B,IAAUC,KAClGD,GAASC,GACTA,GAAS,GAEXtT,EAAO,YACLC,GACA,EAAEoT,GAASJ,GAAepC,EAAiB,MAC3C,EAAEyC,GAASL,GAAepC,EAAiB,KAC7D,EACgB,MAAM0C,GAAed,GAAqBxS,GAAY,SAAS,QAAQ,CAAC,EACpE2R,GACF,aAAaA,CAAgB,EAE1BD,EAAe,OAKlBrf,EAAM,KAAK,CAAE,MAAA57B,EAAO,cAAe68C,EAAY,CAAE,EACjDjhB,EAAM,eAAeihB,EAAY,EACjC3B,EAAmB,WAAW,IAAM,CAClCtf,EAAM,QAAQ,CAAE,MAAA57B,EAAO,cAAe68C,EAAY,CAAE,EACpDjhB,EAAM,kBAAkBihB,EAAY,EACpC5B,EAAe,MAAQ,EAC3C,EAAqB,GAAG,IAVNA,EAAe,MAAQ,GACvBrf,EAAM,UAAU,CAAE,MAAA57B,EAAO,cAAe68C,EAAY,CAAE,EACtDjhB,EAAM,oBAAoBihB,EAAY,EAUxD,EACc,CAAE,QAAS,EAAK,CAC9B,EACqB,OAAOhB,GAAkB,KAClCtS,GAAY,GACV,aACA,SAASvpC,EAAO8P,EAAG,CACjB,MAAMgtC,EAAe,CAACtC,EAAiB,OAASx6C,EAAM,OAAS,SAAW,CAACA,EAAM,QAC3Ek8C,EAAaV,EAAe,OAASjB,EAAa,MAClD4B,EAAY7B,EAAY,OAASt6C,EAAM,QAE7C,GAD6B,CAACk8C,GAAc,CAACjC,EAAY,OAAS,CAACkC,GAAan8C,EAAM,OAAS,SACnE88C,GAAgBT,GAAmBr8C,EAAOy6C,EAAiB,KAAK,EAC1F,OAAO,KAETz6C,EAAM,eAAc,EACpB67C,GAAc,KAAK,KAAM77C,EAAO8P,CAAC,CACjD,EACc,CAAE,QAAS,EAAK,CAC9B,CAEA,EACQ,CAAE,UAAW,EAAI,CACzB,CACA,CAAK,EACD,SAASksC,EAAgBe,GAAKC,GAAY,CACxC,OAAOA,KAAe,GAAK,MAAM,QAAQD,EAAG,GAAKA,GAAI,SAAS,CAAC,CACrE,CACI,SAAS74B,EAAWlkB,GAAO,CACzB,MAAM4gC,GAAS5gC,GAAM,SAAWo1B,GAAO,EAAK,GAAK,EACjD,MAAO,CAACp1B,GAAM,QAAUA,GAAM,YAAc,EAAI,IAAOA,GAAM,UAAY,EAAI,MAAQ4gC,EAC3F,CACI,SAASqb,EAAYgB,GAAcC,GAAgB,CACjD,OAAOD,GAAa,IAAMC,GAAe,GAAK,CAAC,OAAO,MAAMA,GAAe,CAAC,GAAKD,GAAa,IAAMC,GAAe,GAAK,CAAC,OAAO,MAAMA,GAAe,CAAC,GAAKD,GAAa,OAASC,GAAe,GAAK,CAAC,OAAO,MAAMA,GAAe,CAAC,CACzO,CACI,SAASnB,GAAqBmB,GAAgB,CAC5C,MAAO,CACL,EAAGA,GAAe,EAClB,EAAGA,GAAe,EAClB,KAAMA,GAAe,CAC7B,CACA,CACI,SAASb,GAAmBr8C,GAAOm9C,GAAW,CAC5C,OAAOn9C,GAAM,OAAO,QAAQ,IAAIm9C,EAAS,EAAE,CACjD,CACI,MAAO,CAACnR,GAAMC,MACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,QAAS,cACT,IAAK2O,EACL,MAAO,wCACf,EAAS,CACDsC,EAAAA,YAAY1F,GAAa,CACvB,eAAgBiE,GAAY,MAC5B,wBAAyB5gD,EAAAA,MAAMwgD,CAAmB,EAClD,MAAOnP,EAAAA,eAAe,CACpB,WAAY,CAAC,CAACrxC,EAAAA,MAAMkwC,CAAqB,EACzC,SAAUlwC,EAAAA,MAAM2/C,CAAY,EAC5B,UAAW3/C,EAAAA,MAAMq/C,CAAS,IAAM,IAAQ,MAAM,QAAQr/C,QAAMq/C,CAAS,CAAC,GAAKr/C,EAAAA,MAAMq/C,CAAS,EAAE,SAAS,CAAC,CAClH,CAAW,CACX,EAAW,CACD,QAASiD,EAAAA,QAAQ,IAAM,CACrBD,EAAAA,YAAY7D,GAAa,KAAM,CAC7B,QAAS8D,EAAAA,QAAQ,IAAM,CACrBhR,aAAWL,GAAK,OAAQ,SAAS,CACjD,CAAe,EACD,EAAG,CACjB,CAAa,CACb,CAAW,EACD,EAAG,CACb,EAAW,EAAG,CAAC,eAAgB,wBAAyB,OAAO,CAAC,CAChE,EAAS,GAAG,EAEZ,CACA,CAAC,EACKsR,GAAe,CAAC,IAAI,EACpBC,GAAa,CAAC,IAAI,EAClBC,GAAa,CAAC,IAAI,EAClBC,GAAgB,CACpB,KAAM,mBACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B7S,EAAAA,gBAAgB,CAClD,GAAG4S,GACH,MAAM3S,EAAS,CACb,KAAM,CAAE,GAAIpuB,EAAK,oBAAAu6B,EAAqB,gBAAA0G,CAAe,EAAK9hB,GAAU,EACpE,MAAO,CAACmQ,EAAMC,KACLC,YAAS,EAAIC,qBAAmBW,EAAAA,SAAU,KAAM,CACrDe,EAAAA,mBAAmB,MAAO,CACxB,GAAI,GAAG9yC,EAAAA,MAAM2tB,EAAkB,CAAC,IAAI3tB,EAAAA,MAAM2hB,CAAG,CAAC,GAC9C,MAAO,CAAE,QAAW,MAAM,CACpC,EAAW,2CAA6CwxB,EAAAA,gBAAiBnzC,EAAAA,MAAMk8C,CAAmB,EAAiE,GAA7D,0DAA+D,EAAI,mHAAoH,EAAGqG,EAAY,EACpSzP,EAAAA,mBAAmB,MAAO,CACxB,GAAI,GAAG9yC,EAAAA,MAAM4tB,EAAkB,CAAC,IAAI5tB,EAAAA,MAAM2hB,CAAG,CAAC,GAC9C,MAAO,CAAE,QAAW,MAAM,CACpC,EAAW,8GAA+G,EAAG6gC,EAAU,EAC9HxiD,EAAAA,MAAMk8C,CAAmB,EAMoCrJ,qBAAmB,GAAI,EAAI,GAN1D1B,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CACpE,IAAK,EACL,GAAI,GAAGpxC,EAAAA,MAAM6tB,EAAiB,CAAC,IAAI7tB,EAAAA,MAAM2hB,CAAG,CAAC,GAC7C,YAAa,YACb,cAAe,OACf,MAAO,CAAE,SAAY,WAAY,MAAS,MAAO,OAAU,MAAO,OAAU,OAAQ,OAAU,IAAK,QAAW,IAAK,SAAY,SAAU,KAAQ,2BAA4B,YAAa,aAAa,CACjN,EAAWwxB,EAAAA,gBAAgBnzC,QAAM4iD,CAAe,CAAC,EAAG,EAAGH,EAAU,EACjE,EAAS,EAAE,EAEX,CACA,CAAC,EACD,SAASI,IAAmB,CAC1B,MAAMC,EAAahiB,GAAU,EAC7B9+B,EAAAA,MACE,IAAM8gD,EAAW,eAAe,MAAM,oBACrCC,GAAkB,CACbA,GACF,WAAW,IAAM,CACfD,EAAW,MAAM,KAAKA,CAAU,EAChCA,EAAW,MAAM,UAAUA,CAAU,CAC/C,EAAW,CAAC,CAEZ,CACA,CACA,CACA,SAASE,GAAOl5C,EAAGm5C,EAAOx0B,EAAU,CAClC,OAAIA,IAAa3D,EAAS,KACjBhhB,EAAIm5C,EAETx0B,IAAa3D,EAAS,MACjBhhB,EAAIm5C,EAENn5C,CACT,CACA,SAASo5C,GAAO1uC,EAAGyuC,EAAOx0B,EAAU,CAClC,OAAIA,IAAa3D,EAAS,IACjBtW,EAAIyuC,EAETx0B,IAAa3D,EAAS,OACjBtW,EAAIyuC,EAENzuC,CACT,CACA,MAAM2uC,GAAa,SAAS,CAC1B,OAAAC,EAAS,GACT,QAAAnc,EAAU,EACV,QAAAC,EAAU,EACV,SAAAzY,EAAW3D,EAAS,IACpB,KAAA5iB,CACF,EAAG,CACD,OAAO4pC,EAAAA,EAAE,SAAU,CACjB,MAAO,+CAA+C5pC,CAAI,GAC1D,GAAI86C,GAAO/b,EAASmc,EAAQ30B,CAAQ,EACpC,GAAIy0B,GAAOhc,EAASkc,EAAQ30B,CAAQ,EACpC,EAAG20B,EACH,OAAQ,cACR,KAAM,aACV,CAAG,CACH,EACAD,GAAW,MAAQ,CAAC,SAAU,UAAW,UAAW,WAAY,MAAM,EACtEA,GAAW,aAAe,CAAE,KAAM,CAAC,EACnC,MAAME,GAAeF,GAuSfG,GAtScxT,EAAAA,gBAAgB,CAClC,KAAM,OACN,aAAc,CAAE,KAAM,CAAC,EACvB,MAAO,CAAC,IAAI,EACZ,MAAM7pC,EAAO,CACX,KAAM,CACJ,GAAIiuB,EACJ,iBAAA0W,EACA,eAAAvP,EACA,kBAAAkoB,EACA,MAAA1iB,EACA,qBAAAjD,EACA,eAAAwS,EACA,aAAA4I,EACA,oBAAAlO,EACA,SAAArL,EACA,SAAA1L,EACA,kBAAA4H,EACA,qBAAA8B,EACA,oBAAAye,EACA,mBAAAW,EACA,eAAA2G,EACA,eAAAC,EACA,MAAAtgB,CACN,EAAQrC,GAAU,EACRpR,EAAOxoB,EAAAA,SAAS,IAAMu4B,EAASx5B,EAAM,EAAE,CAAC,EACxC,CAAE,KAAAC,EAAM,GAAAmM,CAAE,EAAK4wB,GAAavT,EAAK,MAAOmR,CAAK,EAC7C6iB,EAAQxe,EAAAA,OAAOhF,EAAK,EACpBob,EAAW70C,EAAAA,mBAAkB,EAC7Bk9C,EAAYziD,EAAAA,IAAI,EAAK,EACrB0iD,EAAW1iD,EAAAA,IAAI,EAAK,EACpBqvB,EAASrvB,EAAAA,IAAI,EAAE,EACf43B,EAAW53B,EAAAA,IAAI,IAAI,EACnBo7B,EAAkBp7B,EAAAA,IAAI,QAAQ,EAC9B2iD,EAAS3iD,EAAAA,IAAI,IAAI,EACjB4iD,EAAe9a,EAAAA,MACnB,IAAM,OAAOtZ,EAAK,MAAM,WAAe,IAAcmtB,EAAmB,MAAQntB,EAAK,MAAM,UACjG,EACUq0B,EAAc/a,EAAAA,MAAM,IAAM,OAAOtZ,EAAK,MAAM,UAAc,IAAc8zB,EAAe,MAAQ9zB,EAAK,MAAM,SAAS,EACnHs0B,EAAchb,EAAAA,MAAM,IAAM,OAAOtZ,EAAK,MAAM,UAAc,IAAc+zB,EAAe,MAAQ/zB,EAAK,MAAM,SAAS,EACzH2rB,UAAQrb,GAAQ/5B,EAAM,EAAE,EACxBo1C,EAAAA,QAAQpb,GAAS4jB,CAAM,EACvB,MAAMI,EAAY/8C,EAAAA,SAAS,IAAMwoB,EAAK,MAAM,iBAAiB,SAAWA,EAAK,MAAM,MAAMA,EAAK,KAAK,EAAIA,EAAK,MAAM,KAAK,EACjHw0B,EAAYh9C,EAAAA,SAAS,IAAMwoB,EAAK,MAAM,iBAAiB,SAAWA,EAAK,MAAM,MAAMA,EAAK,KAAK,EAAIA,EAAK,MAAM,KAAK,EACjHy0B,EAAUj9C,EAAAA,SAAS,IAAM,CAC7B,MAAMU,EAAO8nB,EAAK,MAAM,MAAQ,UAC1B00B,EAAgCV,IAAM,QAAQ97C,CAAI,EAAE,EAC1D,GAAIw8C,EACF,OAAOA,EAET,IAAIC,EAAW30B,EAAK,MAAM,UAAYspB,EAAa,MAAMpxC,CAAI,EAC7D,GAAI,OAAOy8C,GAAa,UAClB/I,EAAU,CACZ,MAAMgJ,EAAa,OAAO,KAAKhJ,EAAS,WAAW,UAAU,EACzDgJ,GAAcA,EAAW,SAAS18C,CAAI,IACxCy8C,EAAWE,EAAAA,iBAAiB38C,EAAM,EAAK,EAEnD,CAEM,OAAIy8C,GAAY,OAAOA,GAAa,SAC3BA,GAETxjB,EAAM,MAAM,IAAI9I,GAAaC,GAAU,kBAAmBqsB,CAAQ,CAAC,EAC5D,GACb,CAAK,EACK,CAAE,kBAAAngB,CAAiB,EAAKX,GAAU,CACtC,OAAAhT,EACA,SAAAuI,EACA,KAAMwD,EACN,kBAAAX,EACA,gBAAAW,EACA,aAAAkH,GACA,gBAAAC,CACN,CAAK,EACD,MAAO,IAAM,CACX,MAAMvE,EAAanL,EAASrE,EAAK,MAAM,MAAM,EACvCyP,EAAapL,EAASrE,EAAK,MAAM,MAAM,EACvC80B,EAAc,gBAAiB90B,EAAK,MAAQA,EAAK,MAAM,YAAc,CAAA,EAC3E,GAAI,CAACwP,GAAc,CAACC,EAClB,OAAA0B,EAAM,MAAM,IAAI9I,GAAaC,GAAU,2BAA4BtI,EAAK,MAAM,GAAIA,EAAK,MAAM,OAAQA,EAAK,MAAM,MAAM,CAAC,EAChH,KAET,GAAI,CAACwP,EACH,OAAA2B,EAAM,MAAM,IAAI9I,GAAaC,GAAU,oBAAqBtI,EAAK,MAAM,GAAIA,EAAK,MAAM,MAAM,CAAC,EACtF,KAET,GAAI,CAACyP,EACH,OAAA0B,EAAM,MAAM,IAAI9I,GAAaC,GAAU,oBAAqBtI,EAAK,MAAM,GAAIA,EAAK,MAAM,MAAM,CAAC,EACtF,KAET,GAAI,CAACA,EAAK,OAASA,EAAK,MAAM,QAAUwP,EAAW,QAAUC,EAAW,OACtE,OAAO,KAET,IAAIslB,EACAppB,EAAe,QAAUjQ,GAAe,OAC1Cq5B,EAAoBvlB,EAAW,aAAa,OAE5CulB,EAAoB,CAAC,GAAGvlB,EAAW,aAAa,QAAU,GAAI,GAAGA,EAAW,aAAa,QAAU,EAAE,EAEvG,MAAMxO,EAAemI,GAAc4rB,EAAmB/0B,EAAK,MAAM,YAAY,EAC7E,IAAIg1B,EACArpB,EAAe,QAAUjQ,GAAe,OAC1Cs5B,EAAoBvlB,EAAW,aAAa,OAE5CulB,EAAoB,CAAC,GAAGvlB,EAAW,aAAa,QAAU,GAAI,GAAGA,EAAW,aAAa,QAAU,EAAE,EAEvG,MAAMxO,EAAekI,GAAc6rB,EAAmBh1B,EAAK,MAAM,YAAY,EACvE8hB,GAAkD9gB,GAAa,UAAa5F,EAAS,OACrF2mB,GAAkD9gB,GAAa,UAAa7F,EAAS,IACrF,CAAE,EAAGgpB,GAAS,EAAGC,EAAO,EAAKvb,GAAkB0G,EAAYxO,EAAc8gB,EAAc,EACvF,CAAE,EAAGwC,GAAS,EAAGC,EAAO,EAAKzb,GAAkB2G,EAAYxO,EAAc8gB,EAAc,EAC7F,OAAA/hB,EAAK,MAAM,QAAUokB,GACrBpkB,EAAK,MAAM,QAAUqkB,GACrBrkB,EAAK,MAAM,QAAUskB,GACrBtkB,EAAK,MAAM,QAAUukB,GACdnC,EAAAA,EACL,IACA,CACE,IAAO+R,EACP,IAAO59C,EAAM,GACb,UAAWA,EAAM,GACjB,MAAS,CACP,iBACA,kBAAkBk+C,EAAQ,QAAU,GAAQ,UAAYz0B,EAAK,MAAM,MAAQ,SAAS,GACpF0gB,EAAe,MACf6T,EAAU,MACV,CACE,SAAUN,EAAU,MACpB,SAAUj0B,EAAK,MAAM,SACrB,SAAUA,EAAK,MAAM,SACrB,SAAU,CAACo0B,EAAa,OAAS,CAAC3gB,EAAM,MAAM,UAAU,aAAY,CAClF,CACA,EACU,SAAY6gB,EAAY,MAAQ,EAAI,OACpC,aAAct0B,EAAK,MAAM,YAAc,KAAO,OAASA,EAAK,MAAM,WAAa,aAAaA,EAAK,MAAM,MAAM,OAAOA,EAAK,MAAM,MAAM,GACrI,mBAAoBs0B,EAAY,MAAQ,GAAGp2B,EAAkB,IAAIsG,CAAS,GAAK,OAC/E,uBAAwB,OACxB,KAAQ8vB,EAAY,MAAQ,QAAU,MACtC,GAAGt0B,EAAK,MAAM,cACd,QAAWi1B,EACX,cAAiBC,GACjB,WAAcC,GACd,aAAgBC,GAChB,YAAeC,GACf,aAAgBC,EAChB,UAAahB,EAAY,MAAQxH,EAAY,MACvD,EACQ,CACEoH,EAAS,MAAQ,KAAO9R,EAAAA,EAAEqS,EAAQ,QAAU,GAAQnL,EAAa,MAAM,QAAUmL,EAAQ,MAAO,CAC9F,GAAIl+C,EAAM,GACV,WAAAi5B,EACA,WAAAC,EACA,OAAQzP,EAAK,MAAM,OACnB,OAAQA,EAAK,MAAM,OACnB,KAAMA,EAAK,MAAM,KACjB,UAAWq0B,EAAY,MACvB,SAAUr0B,EAAK,MAAM,SACrB,SAAUA,EAAK,MAAM,SACrB,MAAOA,EAAK,MAAM,MAClB,WAAYA,EAAK,MAAM,WACvB,YAAaA,EAAK,MAAM,YACxB,aAAcA,EAAK,MAAM,aACzB,eAAgBA,EAAK,MAAM,eAC3B,oBAAqBA,EAAK,MAAM,oBAChC,KAAMA,EAAK,MAAM,KACjB,OAAQ,CAAE,GAAGA,EAAK,MAAM,OAAQ,GAAGrd,CAAE,EACrC,MAAO6xC,EAAU,MACjB,YAAa,SAASlwB,GAAYtE,EAAK,MAAM,YAAawE,CAAS,CAAC,KACpE,UAAW,SAASF,GAAYtE,EAAK,MAAM,UAAWwE,CAAS,CAAC,KAChE,eAAAsd,GACA,eAAAC,GACA,QAAAqC,GACA,QAAAC,GACA,QAAAC,GACA,QAAAC,GACA,eAAgBvkB,EAAK,MAAM,aAC3B,eAAgBA,EAAK,MAAM,aAC3B,iBAAkBA,EAAK,MAAM,iBAC7B,GAAG80B,CACf,CAAW,EACD,CACET,EAAY,QAAU,UAAYA,EAAY,QAAU,GAAO,CAC7DjS,EAAAA,EACE,IACA,CACE,YAAamT,GACb,aAAcC,EACd,WAAYC,CAC9B,EACgBrT,EAAAA,EAAEuR,GAAc,CACd,SAAY7R,GACZ,QAAWsC,GACX,QAAWC,GACX,OAAUwP,EAAkB,MAC5B,KAAQ,SACR,YAAa,QAC/B,CAAiB,CACjB,CACA,EAAgB,KACJQ,EAAY,QAAU,UAAYA,EAAY,QAAU,GAAO,CAC7DjS,EAAAA,EACE,IACA,CACE,YAAasT,GACb,aAAcF,EACd,WAAYC,CAC9B,EACgBrT,EAAAA,EAAEuR,GAAc,CACd,SAAY5R,GACZ,QAAWuC,GACX,QAAWC,GACX,OAAUsP,EAAkB,MAC5B,KAAQ,SACR,YAAa,QAC/B,CAAiB,CACjB,CACA,EAAgB,IAChB,CACA,CACA,CACA,EACI,SAAS2B,GAA0B,CACjCvB,EAAU,MAAQ,EACxB,CACI,SAASwB,GAAwB,CAC/BxB,EAAU,MAAQ,EACxB,CACI,SAASngB,GAAav+B,EAAOm3B,EAAY,CACvCl2B,EAAK,OAAO,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,WAAA0M,EAAY,CACzD,CACI,SAASqH,EAAgBx+B,EAAO,CAC9BiB,EAAK,UAAU,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,EAC1Ck0B,EAAS,MAAQ,EACvB,CACI,SAASyB,EAAkBpgD,EAAOqgD,EAAgB,CAC5CrgD,EAAM,SAAW,IAGrB2+C,EAAS,MAAQ,GACjBrzB,EAAO,MAAQ+0B,EAAiB51B,EAAK,MAAM,OAASA,EAAK,MAAM,OAC/DoJ,EAAS,OAASwsB,EAAiB51B,EAAK,MAAM,aAAeA,EAAK,MAAM,eAAiB,KACzF4M,EAAgB,MAAQgpB,EAAiB,SAAW,SACpDp/C,EAAK,YAAY,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,EAC5CwU,EAAkBj/B,CAAK,EAC7B,CACI,SAAS0/C,EAAY1/C,EAAO,CAC1B,IAAIvC,EACJ,MAAMkJ,EAAO,CAAE,MAAA3G,EAAO,KAAMyqB,EAAK,KAAK,EAClCo0B,EAAa,QACflmB,EAAqB,MAAQ,GACzBlO,EAAK,MAAM,UAAY+N,EAAqB,OAC9CqN,EAAoB,CAACpb,EAAK,KAAK,CAAC,GAC/BhtB,EAAKmhD,EAAO,QAAU,MAAgBnhD,EAAG,KAAI,GAE9CkoC,EAAiB,CAAClb,EAAK,KAAK,CAAC,GAGjCxpB,EAAK,MAAM0F,CAAI,CACrB,CACI,SAASg5C,GAAkB3/C,EAAO,CAChCiB,EAAK,YAAY,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,CAClD,CACI,SAASm1B,GAAc5/C,EAAO,CAC5BiB,EAAK,YAAY,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,CAClD,CACI,SAASo1B,GAAiB7/C,EAAO,CAC/BiB,EAAK,WAAW,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,CACjD,CACI,SAASq1B,GAAgB9/C,EAAO,CAC9BiB,EAAK,UAAU,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,CAChD,CACI,SAASs1B,EAAiB//C,EAAO,CAC/BiB,EAAK,WAAW,CAAE,MAAAjB,EAAO,KAAMyqB,EAAK,MAAO,CACjD,CACI,SAASu1B,GAA6BhgD,EAAO,CAC3CogD,EAAkBpgD,EAAO,EAAI,CACnC,CACI,SAASmgD,GAA6BngD,EAAO,CAC3CogD,EAAkBpgD,EAAO,EAAK,CACpC,CACI,SAASu3C,EAAUv3C,EAAO,CACxB,IAAIvC,EACA,CAACw5C,EAAoB,OAASpuB,GAAqB,SAAS7oB,EAAM,GAAG,GAAK6+C,EAAa,QACxE7+C,EAAM,MAAQ,WAE5BvC,EAAKmhD,EAAO,QAAU,MAAgBnhD,EAAG,KAAI,EAC9CooC,EAAoB,CAACrL,EAASx5B,EAAM,EAAE,CAAC,CAAC,GAExC2kC,EAAiB,CAACnL,EAASx5B,EAAM,EAAE,CAAC,CAAC,EAG/C,CACA,CACA,CAAC,EA6IKs/C,GA3IiBzV,EAAAA,gBAAgB,CACrC,KAAM,iBACN,aAAc,CAAE,KAAM,CAAC,EACvB,OAAQ,CACN,IAAIptC,EACJ,KAAM,CACJ,GAAIif,EACJ,eAAA0Z,EACA,sBAAA6U,EACA,oBAAAC,EACA,mBAAA9L,EACA,mBAAAmhB,EACA,oBAAAC,EACA,sBAAAC,EACA,iBAAAhpB,EACA,SAAAzK,EACA,SAAA8B,CACN,EAAQ+M,GAAU,EACR6kB,GAA2BjjD,EAAKwiC,SAAOhF,EAAK,IAAM,KAAO,OAASx9B,EAAG,iBAAiB,EACtFkjD,EAAW1+C,EAAAA,SAAS,IAAM,CAC9B,IAAI2+C,EACJ,OAAO9xB,GAAU8xB,EAAM3V,EAAsB,QAAU,KAAO,OAAS2V,EAAI,MAAM,CACvF,CAAK,EACKC,EAAS5+C,EAAAA,SAAS,IAAM,CAC5B,IAAI2+C,EACJ,OAAO9xB,GAAU8xB,EAAM1V,EAAoB,QAAU,KAAO,OAAS0V,EAAI,MAAM,GAAK,IAC1F,CAAK,EACKE,EAAO7+C,EAAAA,SAAS,KACb,CACL,GAAIm9B,EAAmB,MAAM,EAAIpS,EAAS,MAAM,GAAKA,EAAS,MAAM,KACpE,GAAIoS,EAAmB,MAAM,EAAIpS,EAAS,MAAM,GAAKA,EAAS,MAAM,IAC5E,EACK,EACK+zB,EAAc9+C,EAAAA,SAClB,IAAMw+C,EAAsB,MAAM,YAAc,QAAQ1xB,GAAY0xB,EAAsB,MAAM,YAAa/jC,CAAG,CAAC,IAAM,EAC7H,EACUskC,EAAY/+C,EAAAA,SAChB,IAAMw+C,EAAsB,MAAM,UAAY,QAAQ1xB,GAAY0xB,EAAsB,MAAM,UAAW/jC,CAAG,CAAC,IAAM,EACzH,EACI,MAAO,IAAM,CACX,IAAIkkC,EAAK1/C,EAAIC,EACb,GAAI,CAACw/C,EAAS,OAAS,CAAC1V,EAAsB,MAC5C,OAAO,KAET,MAAMgW,EAAgBhW,EAAsB,MAAM,GAC5CnU,EAAamU,EAAsB,MAAM,KACzCiW,EAAmBP,EAAS,MAAM,aACxC,IAAIroB,EAAoD4oB,IAAiBpqB,CAAU,GAAM,CAAA,EACzF,GAAIV,EAAe,QAAUjQ,GAAe,MAAO,CACjD,MAAMg7B,EAAsDD,IAAiBpqB,IAAe,SAAW,SAAW,QAAQ,GAAM,CAAA,EAChIwB,EAAe,CAAC,GAAGA,EAAc,GAAG6oB,CAAc,CAC1D,CACM,GAAI,CAAC7oB,EACH,OAAO,KAET,MAAMzC,GAAcorB,EAAgB3oB,EAAa,KAAMxoB,GAAMA,EAAE,KAAOmxC,CAAa,EAAI3oB,EAAa,CAAC,IAAM,KACrG8oB,EAA8CvrB,GAAW,UAAahQ,EAAS,IAC/E,CAAE,EAAGw7B,EAAO,EAAGC,CAAK,EAAK/tB,GAAkBotB,EAAS,MAAO9qB,EAAYurB,CAAY,EACzF,IAAIG,EAAW,KACXV,EAAO,QACLzqB,EAAe,QAAUjQ,GAAe,OAC1Co7B,IAAaX,EAAMC,EAAO,MAAM,aAAa/pB,IAAe,SAAW,SAAW,QAAQ,IAAM,KAAO,OAAS8pB,EAAI,KACjH9wC,GAAM,CACL,IAAI0xC,EACJ,OAAO1xC,EAAE,OAAS0xC,EAAMtW,EAAoB,QAAU,KAAO,OAASsW,EAAI,GACxF,CACA,IAAgB,KAEND,IAAargD,EAAK,CAAC,GAAG2/C,EAAO,MAAM,aAAa,QAAU,CAAA,EAAI,GAAGA,EAAO,MAAM,aAAa,QAAU,CAAA,CAAE,IAAM,KAAO,OAAS3/C,EAAG,KAC7H4O,GAAM,CACL,IAAI0xC,EACJ,OAAO1xC,EAAE,OAAS0xC,EAAMtW,EAAoB,QAAU,KAAO,OAASsW,EAAI,GACxF,CACA,IAAgB,MAGV,MAAMC,IAAetgD,EAAK+pC,EAAoB,QAAU,KAAO,OAAS/pC,EAAG,YAAcigD,EAAetpB,GAAiBspB,CAAY,EAAI,MACzI,GAAI,CAACA,GAAgB,CAACK,EACpB,OAAO,KAET,MAAMx+C,EAAOs9C,EAAmB,OAASE,EAAsB,MAAM,MAAQx6B,GAAmB,OAChG,IAAIy7B,EAAQ,GACZ,MAAMC,EAAa,CACjB,QAASN,EACT,QAASC,EACT,eAAgBF,EAChB,QAASN,EAAK,MAAM,EACpB,QAASA,EAAK,MAAM,EACpB,eAAgBW,CACxB,EACM,OAAIx+C,IAASgjB,GAAmB,OAC9B,CAACy7B,CAAK,EAAIzR,GAAc0R,CAAU,EACzB1+C,IAASgjB,GAAmB,KACrC,CAACy7B,CAAK,EAAI7O,GAAkB,CAC1B,GAAG8O,EACH,aAAc,CACxB,CAAS,EACQ1+C,IAASgjB,GAAmB,WACrC,CAACy7B,CAAK,EAAI7O,GAAkB8O,CAAU,EAC7B1+C,IAASgjB,GAAmB,aACrC,CAACy7B,CAAK,EAAIpR,GAAoBqR,CAAU,EAExCD,EAAQ,IAAIL,CAAK,IAAIC,CAAK,IAAIR,EAAK,MAAM,CAAC,IAAIA,EAAK,MAAM,CAAC,GAErDjU,EAAAA,EACL,MACA,CAAE,MAAO,8DAA8D,EACvEA,EAAAA,EACE,IACA,CAAE,MAAO,sBAAsB,EAC/B6T,EAA0B7T,EAAAA,EAAE6T,EAAyB,CACnD,QAASW,EACT,QAASC,EACT,eAAgBF,EAChB,QAASN,EAAK,MAAM,EACpB,QAASA,EAAK,MAAM,EACpB,eAAgBW,EAChB,WAAYd,EAAS,MACrB,aAAc9qB,EACd,WAAYgrB,EAAO,MACnB,aAAcU,EACd,UAAWP,EAAU,MACrB,YAAaD,EAAY,MACzB,iBAAkBtpB,EAAiB,KAC/C,CAAW,EAAIoV,EAAAA,EAAE,OAAQ,CACb,EAAK6U,EACL,MAAS,CAACjB,EAAsB,MAAM,MAAOhpB,EAAkB,2BAA2B,EAC1F,MAAS,CACP,GAAG+oB,EAAoB,MACvB,GAAGC,EAAsB,MAAM,KAC7C,EACY,aAAcO,EAAU,MACxB,eAAgBD,EAAY,KACxC,CAAW,CACX,CACA,CACA,CACA,CACA,CAAC,EAEKa,GAAe,CAAC,KAAM,cAAe,eAAgB,cAAe,QAAQ,EAC5EC,GAAgB,CACpB,KAAM,aACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8BjX,EAAAA,gBAAgB,CAClD,GAAGgX,GACH,MAAO,CACL,GAAI,CAAA,EACJ,KAAM,CAAA,EACN,MAAO,CAAE,QAAS,MAAM,EACxB,MAAO,CAAE,QAAS,IAAI,EACtB,OAAQ,CAAE,QAAS,IAAI,EACvB,YAAa,CAAE,QAAS,aAAa,EACrC,OAAQ,CAAE,QAAS,oBAAoB,EACvC,YAAa,CAAE,QAAS,CAAC,CAC7B,EACE,MAAM/W,EAAS,CACb,MAAO,CAACkB,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,SAAU,CAC/C,GAAIH,EAAK,GACT,MAAO,sBACP,QAAS,gBACT,KAAM,IACN,KAAM,IACN,YAAa,GAAGA,EAAK,KAAK,GAC1B,aAAc,GAAGA,EAAK,MAAM,GAC5B,YAAaA,EAAK,YAClB,OAAQA,EAAK,MACrB,EAAS,CACDA,EAAK,OAASjxC,EAAAA,MAAMsrB,EAAU,EAAE,aAAe6lB,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,WAAY,CACzF,IAAK,EACL,MAAOwB,EAAAA,eAAe,CACpB,OAAQ3B,EAAK,MACb,KAAMA,EAAK,MACX,YAAaA,EAAK,WAC9B,CAAW,EACD,iBAAkB,QAClB,kBAAmB,QACnB,OAAQ,sBAClB,EAAW,KAAM,CAAC,GAAK4B,EAAAA,mBAAmB,GAAI,EAAI,EAC1C5B,EAAK,OAASjxC,EAAAA,MAAMsrB,EAAU,EAAE,OAAS6lB,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,WAAY,CACnF,IAAK,EACL,MAAOwB,EAAAA,eAAe,CACpB,OAAQ3B,EAAK,MACb,YAAaA,EAAK,WAC9B,CAAW,EACD,iBAAkB,QAClB,kBAAmB,QACnB,KAAM,OACN,OAAQ,gBAClB,EAAW,KAAM,CAAC,GAAK4B,EAAAA,mBAAmB,GAAI,EAAI,CAClD,EAAS,EAAGgU,EAAY,EAExB,CACA,CAAC,EACKG,GAAe,CACnB,MAAO,uCACP,cAAe,MACjB,EACMC,GAAgB,CACpB,KAAM,oBACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8BpX,EAAAA,gBAAgB,CAClD,GAAGmX,GACH,MAAMlX,EAAS,CACb,KAAM,CAAE,GAAI7b,EAAW,MAAAlE,EAAO,sBAAA01B,EAAuB,mBAAoByB,CAAY,EAAKrmB,GAAU,EAC9FsmB,EAAUlgD,EAAAA,SAAS,IAAM,CAC7B,MAAM0iC,EAAsB,IAAI,IAC1Byd,EAAW,CAAA,EACXC,EAAiBrzB,GAAW,CAChC,GAAIA,EAAQ,CACV,MAAMszB,EAAWvzB,GAAYC,EAAQC,CAAS,EACzC0V,EAAI,IAAI2d,CAAQ,IACf,OAAOtzB,GAAW,SACpBozB,EAAS,KAAK,CAAE,GAAGpzB,EAAQ,GAAIszB,EAAU,MAAOtzB,EAAO,OAASkzB,EAAa,KAAK,CAAE,EAEpFE,EAAS,KAAK,CAAE,GAAIE,EAAU,MAAOJ,EAAa,MAAO,KAAMlzB,EAAQ,EAEzE2V,EAAI,IAAI2d,CAAQ,EAE5B,CACA,EACM,UAAWtzB,IAAU,CAACyxB,EAAsB,MAAM,UAAWA,EAAsB,MAAM,WAAW,EAClG4B,EAAcrzB,CAAM,EAEtB,UAAWvE,KAAQM,EAAM,MACvB,UAAWiE,IAAU,CAACvE,EAAK,YAAaA,EAAK,SAAS,EACpD43B,EAAcrzB,CAAM,EAGxB,OAAOozB,EAAS,KAAK,CAACn5C,EAAGC,IAAMD,EAAE,GAAG,cAAcC,EAAE,EAAE,CAAC,CAC7D,CAAK,EACD,MAAO,CAAC8iC,EAAMC,KACLC,YAAS,EAAIC,qBAAmB,MAAO4V,GAAc,CAC1DlU,EAAAA,mBAAmB,OAAQ,KAAM,EAC9B3B,YAAU,EAAI,EAAGC,EAAAA,mBAAmBW,EAAAA,SAAU,KAAMyV,EAAAA,WAAWJ,EAAQ,MAAQnzB,IACvEkd,EAAAA,UAAS,EAAI6B,EAAAA,YAAY+T,GAAa,CAC3C,GAAI9yB,EAAO,GACX,IAAKA,EAAO,GACZ,KAAMA,EAAO,KACb,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,OAAQA,EAAO,OACf,YAAaA,EAAO,YACpB,eAAgBA,EAAO,YACvB,OAAQA,EAAO,MAC7B,EAAe,KAAM,EAAG,CAAC,KAAM,OAAQ,QAAS,QAAS,SAAU,cAAe,eAAgB,QAAQ,CAAC,EAChG,EAAG,GAAG,EACjB,CAAS,CACT,CAAO,EAEP,CACA,CAAC,EACKwzB,GAAgB,CACpB,KAAM,QACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B5X,EAAAA,gBAAgB,CAClD,GAAG2X,GACH,MAAM1X,EAAS,CACb,KAAM,CAAE,SAAAhc,EAAU,SAAAulB,EAAU,qBAAA7f,CAAoB,EAAKqH,GAAU,EAC/D,MAAO,CAACmQ,EAAMC,KACLC,YAAS,EAAIC,qBAAmBW,EAAAA,SAAU,KAAM,CACrDsQ,EAAAA,YAAY6E,EAAW,GACtB/V,EAAAA,UAAU,EAAI,EAAGC,EAAAA,mBAAmBW,WAAU,KAAMyV,EAAAA,WAAWxnD,QAAMs5C,CAAQ,EAAI5pB,IACzEyhB,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,IAAK1hB,EAAK,GACV,MAAO,sCACP,MAAOkjB,EAAAA,eAAe,CAAE,OAAQ5yC,EAAAA,MAAMw5B,EAAa,EAAE9J,EAAM1vB,EAAAA,MAAM+zB,CAAQ,EAAG/zB,QAAMy5B,CAAoB,CAAC,CAAC,CAAE,CACtH,EAAa,CACD4oB,cAAYriD,EAAAA,MAAMsjD,EAAa,EAAG,CAChC,GAAI5zB,EAAK,EACvB,EAAe,KAAM,EAAG,CAAC,IAAI,CAAC,CAC9B,EAAa,CAAC,EACL,EAAG,GAAG,GACP2yB,EAAAA,YAAYriD,EAAAA,MAAMulD,EAAgB,CAAC,CAC3C,EAAS,EAAE,EAEX,CACA,CAAC,EA8UKoC,GA7Uc7X,EAAAA,gBAAgB,CAClC,KAAM,OACN,aAAc,CAAE,KAAM,CAAC,EACvB,MAAO,CAAC,KAAM,gBAAgB,EAC9B,MAAM7pC,EAAO,CACX,KAAM,CACJ,GAAIiuB,EACJ,eAAAkc,EACA,kBAAA1P,EACA,qBAAA9C,EACA,qBAAAH,EACA,MAAAoD,EACA,oBAAAlD,EACA,iBAAAD,EACA,qBAAAwM,EACA,sBAAA0d,EACA,aAAAzO,EACA,WAAA7gB,EACA,qBAAAuvB,EACA,oBAAA3L,EACA,gBAAA0G,EACA,WAAA1xB,EACA,SAAAC,EACA,kBAAAmP,EACA,eAAAvJ,EACA,mBAAA8lB,EACA,iBAAAjZ,EACA,eAAAkkB,EACA,MAAA3kB,CACN,EAAQrC,GAAU,EACRzD,EAAcn8B,EAAAA,IAAI,IAAI,EAC5Bm6C,EAAAA,QAAQtb,GAAS1C,CAAW,EAC5Bge,UAAQvb,GAAQ75B,EAAM,EAAE,EACxB,MAAMy9C,EAAQxe,EAAAA,OAAOhF,EAAK,EACpBob,EAAW70C,EAAAA,mBAAkB,EAC7Bm6B,EAAsB2E,GAAsB,EAC5C,CAAE,KAAA77B,EAAM,WAAA2lB,CAAU,EAAK8V,GAAQl/B,EAAM,EAAE,EACvC,CAAE,KAAAC,EAAM,GAAAmM,CAAE,EAAKgzB,GAAa37B,EAAMm3B,CAAK,EACvCknB,EAAc/e,EAAAA,MAAM,IAAM,OAAOt/B,EAAK,UAAc,IAAcqtB,EAAe,MAAQrtB,EAAK,SAAS,EACvGo6C,EAAe9a,EAAAA,MAAM,IAAM,OAAOt/B,EAAK,WAAe,IAAcmzC,EAAmB,MAAQnzC,EAAK,UAAU,EAC9GknC,EAAgB5H,EAAAA,MAAM,IAAM,OAAOt/B,EAAK,YAAgB,IAAck6B,EAAiB,MAAQl6B,EAAK,WAAW,EAC/Gs6C,EAAchb,EAAAA,MAAM,IAAM,OAAOt/B,EAAK,UAAc,IAAco+C,EAAe,MAAQp+C,EAAK,SAAS,EACvGs+C,EAAmB9gD,EAAAA,SACvB,IAAM48C,EAAa,OAASiE,EAAY,OAAS5kB,EAAM,MAAM,UAAU,aAAY,GAAMA,EAAM,MAAM,gBAAgB,gBAAkBA,EAAM,MAAM,eAAe,aAAY,GAAMA,EAAM,MAAM,cAAc,aAAY,GAAMA,EAAM,MAAM,eAAe,aAAY,CAC7Q,EACU8kB,EAASjf,EAAAA,MAAM,IAAM,CAAC,CAACt/B,EAAK,WAAW,OAAS,CAAC,CAACA,EAAK,WAAW,MAAM,EACxEw+C,EAAUhhD,EAAAA,SAAS,IAAM,CAC7B,MAAMU,EAAO8B,EAAK,MAAQ,UACpB06C,EAAgCV,IAAM,QAAQ97C,CAAI,EAAE,EAC1D,GAAIw8C,EACF,OAAOA,EAET,IAAI+D,EAAWz+C,EAAK,UAAYyvC,EAAa,MAAMvxC,CAAI,EACvD,GAAI,OAAOugD,GAAa,UAClB7M,EAAU,CACZ,MAAMgJ,EAAa,OAAO,KAAKhJ,EAAS,WAAW,UAAU,EACzDgJ,GAAcA,EAAW,SAAS18C,CAAI,IACxCugD,EAAW5D,EAAAA,iBAAiB38C,EAAM,EAAK,EAEnD,CAEM,OAAIugD,GAAY,OAAOA,GAAa,SAC3BA,GAETtnB,EAAM,MAAM,IAAI9I,GAAaC,GAAU,kBAAmBmwB,CAAQ,CAAC,EAC5D,GACb,CAAK,EACK9mB,GAAWlB,GAAQ,CACvB,GAAIl6B,EAAM,GACV,GAAIo3B,EACJ,SAAU,IAAM,CAAC0qB,EAAY,MAC7B,WAAYjE,EACZ,WAAY,IAAMp6C,EAAK,WACvB,QAAQzE,EAAO,CACbiB,EAAK,UAAUjB,CAAK,CAC5B,EACM,OAAOA,EAAO,CACZiB,EAAK,KAAKjB,CAAK,CACvB,EACM,OAAOA,EAAO,CACZiB,EAAK,SAASjB,CAAK,CAC3B,EACM,QAAQA,EAAO,CACbmjD,EAAanjD,CAAK,CAC1B,CACA,CAAK,EACKojD,EAAWnhD,EAAAA,SAAS,IAAMwC,EAAK,iBAAiB,SAAWA,EAAK,MAAMA,CAAI,EAAIA,EAAK,KAAK,EACxF4+C,EAAWphD,EAAAA,SAAS,IAAM,CAC9B,MAAMqhD,GAAU7+C,EAAK,iBAAiB,SAAWA,EAAK,MAAMA,CAAI,EAAIA,EAAK,QAAU,CAAA,EAC7E+nB,EAAQ/nB,EAAK,iBAAiB,SAAWA,EAAK,MAAMA,CAAI,EAAIA,EAAK,MACjEgoB,EAAShoB,EAAK,kBAAkB,SAAWA,EAAK,OAAOA,CAAI,EAAIA,EAAK,OAC1E,MAAI,CAAC6+C,EAAO,OAAS92B,IACnB82B,EAAO,MAAQ,OAAO92B,GAAU,SAAWA,EAAQ,GAAGA,CAAK,MAEzD,CAAC82B,EAAO,QAAU72B,IACpB62B,EAAO,OAAS,OAAO72B,GAAW,SAAWA,EAAS,GAAGA,CAAM,MAE1D62B,CACb,CAAK,EACKC,EAASxf,EAAAA,MAAM,IAAM,OAAOt/B,EAAK,QAAU4+C,EAAS,MAAM,QAAU,CAAC,CAAC,EAC5E,OAAAV,EAAuB/d,GAAc,EAC/BA,EAAU,SAAS5jC,EAAM,EAAE,GAAK,CAAC4jC,EAAU,SAC7C4e,GAAe,CAEvB,CAAK,EACD5X,EAAAA,UAAU,IAAM,CACd7uC,EAAAA,MACE,IAAM0H,EAAK,OACX,CAACi1C,EAAW,GAAOr3C,EAAGw7B,IAAc,CAC9B,CAAC6b,GAAYthB,EAAY,QAC3Bp3B,EAAM,eAAe,QAAQo3B,EAAY,KAAK,EAC9CyF,EAAU,IAAM,CACVzF,EAAY,OACdp3B,EAAM,eAAe,UAAUo3B,EAAY,KAAK,CAEhE,CAAa,EAEb,EACQ,CAAE,UAAW,GAAM,MAAO,MAAM,CACxC,CACA,CAAK,EACDr7B,QAAM,CAAC,IAAM0H,EAAK,KAAM,IAAMA,EAAK,eAAgB,IAAMA,EAAK,cAAc,EAAG,IAAM,CACnFzC,EAAAA,SAAS,IAAM,CACbijC,EAAqB,CAAC,CAAE,GAAIjkC,EAAM,GAAI,YAAao3B,EAAY,MAAO,YAAa,EAAI,CAAE,CAAC,CAClG,CAAO,CACP,CAAK,EACDr7B,EAAAA,MACE,CACE,IAAM0H,EAAK,SAAS,EACpB,IAAMA,EAAK,SAAS,EACpB,IAAM,CACJ,IAAIhH,EACJ,OAAQA,EAAK2sB,EAAW,QAAU,KAAO,OAAS3sB,EAAG,iBAAiB,CAChF,EACQ,IAAM,CACJ,IAAIA,EACJ,OAAQA,EAAK2sB,EAAW,QAAU,KAAO,OAAS3sB,EAAG,iBAAiB,CAChF,EACQ,IAAM,CACJ,IAAIA,EACJ,OAAQA,EAAK2sB,EAAW,QAAU,KAAO,OAAS3sB,EAAG,iBAAiB,CAChF,EACQ8lD,EACA,IAAM9+C,EAAK,SACX,IAAMA,EAAK,WAAW,OACtB,IAAMA,EAAK,WAAW,MACtB,IAAM,CACJ,IAAIhH,EACJ,OAAQA,EAAK2sB,EAAW,QAAU,KAAO,OAAS3sB,EAAG,WAAW,MAC1E,EACQ,IAAM,CACJ,IAAIA,EACJ,OAAQA,EAAK2sB,EAAW,QAAU,KAAO,OAAS3sB,EAAG,WAAW,KAC1E,CACA,EACM,CAAC,CAACgmD,EAAMC,EAAM1wB,EAASC,EAAS0wB,EAASC,CAAU,IAAM,CACvD,MAAMC,GAAS,CACb,EAAGJ,EACHC,EACA,EAAGE,GAAchB,EAAqB,OAAQn+C,EAAK,SAAW,IAAU,EAClF,EACY,OAAOuuB,EAAY,KAAe,OAAOC,EAAY,IACvDxuB,EAAK,iBAAmBiqB,GAAU,CAAE,EAAGsE,EAAS,EAAGC,EAAS,EAAG0wB,CAAO,EAAIE,EAAM,EAEhFp/C,EAAK,iBAAmBo/C,EAElC,EACM,CAAE,MAAO,OAAQ,UAAW,EAAI,CACtC,EACI9mD,EAAAA,MAAM,CAAC,IAAM0H,EAAK,OAAQ4uB,CAAU,EAAG,CAAC,CAACywB,EAAaC,CAAY,EAAG,CAACC,EAAeC,CAAe,IAAM,EACpGH,IAAgBE,GAAiBD,IAAiBE,IACpDC,GAAc,CAEtB,CAAK,EACGz/C,EAAK,SAAW,UAAY,OAAOA,EAAK,QAAW,UAAY,UAAWA,EAAK,QAAUA,EAAK,OAAO,QAAU,SACjHtF,GAAM,IAAM6jD,CAAM,EAAE,KAAK,EAAI,EAAE,KAAKkB,EAAc,EAElDA,GAAc,EAET,IACDz/C,EAAK,OACA,KAEFooC,EAAAA,EACL,MACA,CACE,IAAOzU,EACP,UAAW3zB,EAAK,GAChB,MAAS,CACP,iBACA,kBAAkBw+C,EAAQ,QAAU,GAAQ,UAAYx+C,EAAK,MAAQ,SAAS,GAC9E,CACE,CAAC0mC,EAAe,KAAK,EAAG2X,EAAY,MACpC,SAAsC1mB,IAAS,MAC/C,UAAW0mB,EAAY,MACvB,SAAUr+C,EAAK,SACf,WAAYo6C,EAAa,MACzB,OAAQp6C,EAAK,QAC3B,EACY2+C,EAAS,KACrB,EACU,MAAS,CACP,WAAYJ,EAAO,MAAQ,UAAY,SACvC,OAAQv+C,EAAK,iBAAiB,GAAK8+C,EAAO,MAC1C,UAAW,aAAa9+C,EAAK,iBAAiB,CAAC,MAAMA,EAAK,iBAAiB,CAAC,MAC5E,cAAes+C,EAAiB,MAAQ,MAAQ,OAChD,GAAGM,EAAS,KACxB,EACU,SAAYtE,EAAY,MAAQ,EAAI,OACpC,KAAQA,EAAY,MAAQ,QAAU,OACtC,mBAAoB9H,EAAoB,MAAQ,OAAS,GAAGvuB,EAAkB,IAAIuG,CAAS,GAC3F,aAAcxqB,EAAK,UACnB,uBAAwB,OACxB,GAAGA,EAAK,cACR,aAAgB0/C,GAChB,YAAeC,GACf,aAAgBC,EAChB,cAAiB/M,GACjB,QAAW6L,EACX,WAAcvD,GACd,UAAarI,CACvB,EACQ,CACE1K,IAAEoW,EAAQ,QAAU,GAAQ/O,EAAa,MAAM,QAAU+O,EAAQ,MAAO,CACtE,GAAIx+C,EAAK,GACT,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,OAAQ,CAAE,GAAGA,EAAK,OAAQ,GAAG2I,CAAE,EAC/B,SAAU3I,EAAK,SACf,SAAUA,EAAK,SACf,SAAU23B,GAAS,MACnB,YAAauP,EAAc,MAC3B,SAAUlnC,EAAK,iBACf,WAAYA,EAAK,WACjB,iBAAkBA,EAAK,iBACvB,iBAAkBA,EAAK,iBACvB,OAAQA,EAAK,WACb,aAAcA,EAAK,WACnB,OAAQA,EAAK,iBAAiB,GAAK8+C,EAAO,MAC1C,eAAgB9+C,EAAK,eACrB,eAAgBA,EAAK,eACrB,MAAOA,EAAK,MACZ,WAAYA,EAAK,WACjB,sBAAuB++C,EACnC,CAAW,CACX,CACA,EAEI,SAASU,IAAiB,CACxB,MAAM9wB,EAAe3uB,EAAK,iBACpB,CAAE,iBAAAmqB,EAAkB,SAAApF,CAAQ,EAAK2J,GACrC1uB,EACAwnB,EAAW,MAAQE,GAAaiH,EAAclH,EAAS,KAAK,EAAIkH,EAChEwI,EAAM,MACNvI,EAAW,MACXjJ,EAAW,KACnB,GACU3lB,EAAK,iBAAiB,IAAMmqB,EAAiB,GAAKnqB,EAAK,iBAAiB,IAAMmqB,EAAiB,KACjGnqB,EAAK,iBAAmB,CAAE,GAAGA,EAAK,iBAAkB,GAAGmqB,CAAgB,IAErEnqB,EAAK,SAAS,IAAM+kB,EAAS,GAAK/kB,EAAK,SAAS,IAAM+kB,EAAS,KACjE/kB,EAAK,SAAW+kB,EAExB,CACI,SAASg6B,IAAkB,CACrBprB,EAAY,OACd6M,EAAqB,CAAC,CAAE,GAAIjkC,EAAM,GAAI,YAAao3B,EAAY,MAAO,YAAa,EAAI,CAAE,CAAC,CAElG,CACI,SAAS+rB,GAAankD,EAAO,CACOo8B,IAAS,OACzCn7B,EAAK,WAAW,CAAE,MAAAjB,EAAO,KAAAyE,CAAI,CAAE,CAEvC,CACI,SAAS2/C,GAAYpkD,EAAO,CACQo8B,IAAS,OACzCn7B,EAAK,UAAU,CAAE,MAAAjB,EAAO,KAAAyE,CAAI,CAAE,CAEtC,CACI,SAAS4/C,EAAarkD,EAAO,CACOo8B,IAAS,OACzCn7B,EAAK,WAAW,CAAE,MAAAjB,EAAO,KAAAyE,CAAI,CAAE,CAEvC,CACI,SAAS6yC,GAAct3C,EAAO,CAC5B,OAAOiB,EAAK,YAAY,CAAE,MAAAjB,EAAO,KAAAyE,CAAI,CAAE,CAC7C,CACI,SAASm7C,GAAc5/C,EAAO,CAC5B,OAAOiB,EAAK,YAAY,CAAE,MAAAjB,EAAO,KAAAyE,CAAI,CAAE,CAC7C,CACI,SAAS0+C,EAAanjD,EAAO,CACvB6+C,EAAa,QAAU,CAACpjB,EAAkB,OAAS,CAACqnB,EAAY,OAASznB,EAAkB,MAAQ,IACrG9C,GACE9zB,EACA+zB,EAAqB,MACrBC,EACAC,EACAC,EACA,GACAP,EAAY,KACtB,EAEMn3B,EAAK,MAAM,CAAE,MAAAjB,EAAO,KAAAyE,CAAI,CAAE,CAChC,CACI,SAAS8yC,EAAUv3C,EAAO,CACxB,GAAI,EAAA2mB,GAAe3mB,CAAK,GAAKi3C,EAAoB,OAGjD,GAAIpuB,GAAqB,SAAS7oB,EAAM,GAAG,GAAK6+C,EAAa,MAAO,CAClE,MAAMjmB,EAAW54B,EAAM,MAAQ,SAC/Bu4B,GACE9zB,EACA+zB,EAAqB,MACrBC,EACAC,EACAC,EACAC,EACAR,EAAY,KACtB,CACA,MAAiB0qB,EAAY,OAASr+C,EAAK,UAAYqkB,GAAc9oB,EAAM,GAAG,IACtEA,EAAM,eAAc,EACpB29C,EAAgB,MAAQ,uBAAuB39C,EAAM,IAAI,QAAQ,QAAS,EAAE,EAAE,YAAW,CAAE,sBAAsB,CAAC,CAACyE,EAAK,SAAS,CAAC,QAAQ,CAAC,CAACA,EAAK,SAAS,CAAC,GAC3Jk3B,EACE,CACE,EAAG7S,GAAc9oB,EAAM,GAAG,EAAE,EAC5B,EAAG8oB,GAAc9oB,EAAM,GAAG,EAAE,CACxC,EACUA,EAAM,QAChB,EAEA,CACA,CACA,CAAC,EAEKskD,GAAe,CACnB,OAAQ,IACR,MAAO,GACT,EACMC,GAAgB,CACpB,KAAM,oBACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B3Z,EAAAA,gBAAgB,CAClD,GAAG0Z,GACH,MAAMzZ,EAAS,CACb,KAAM,CAAE,YAAAgQ,CAAW,EAAKjf,GAAU,EAC5B4oB,EAAiB1gB,EAAAA,MAAM,IAAM,CACjC,IAAItmC,EACJ,OAAQA,EAAKq9C,EAAY,QAAU,KAAO,OAASr9C,EAAG,uBAAuB,uBAAuB,EAAE,CAAC,CAC7G,CAAK,EACD,MAAO,CAACuuC,EAAMC,KACLC,YAAS,EAAIC,qBAAmB,MAAO,KAAM,EACjDD,EAAAA,YAAaC,EAAAA,mBAAmB,gBAAiBmY,GAAc,EAC7DpY,YAAS,EAAI6B,EAAAA,YAAY2W,WAAU,CAClC,GAAID,EAAe,MACnB,SAAU,CAACA,EAAe,KACtC,EAAa,CACDpY,aAAWL,EAAK,OAAQ,SAAS,CAC7C,EAAa,EAAG,CAAC,KAAM,UAAU,CAAC,EAClC,CAAS,EACT,CAAO,EAEP,CACA,CAAC,EACD,SAAS2Y,GAAoB9nD,EAAU,CAAE,mBAAoB,EAAK,EAAI,CACpE,KAAM,CAAE,MAAAiuB,CAAK,EAAK+Q,GAAU,EAC5B,OAAO55B,EAAAA,SAAS,IAAM,CACpB,GAAI6oB,EAAM,MAAM,SAAW,EACzB,MAAO,GAET,UAAWrmB,KAAQqmB,EAAM,MACvB,IAAIjuB,EAAQ,oBAAsB,CAAC4H,EAAK,UACTA,GAAK,eAAkB,QAAUA,EAAK,WAAW,QAAU,GAAKA,EAAK,WAAW,SAAW,GACtH,MAAO,GAIb,MAAO,EACX,CAAG,CACH,CACA,MAAMmgD,GAAe,CAAE,MAAO,qCAAqC,EAC7DC,GAAgB,CACpB,KAAM,QACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8Bja,EAAAA,gBAAgB,CAClD,GAAGga,GACH,MAAM/Z,EAAS,CACb,KAAM,CAAE,SAAAsJ,EAAU,qBAAAnP,EAAsB,MAAArJ,CAAK,EAAKC,GAAU,EACtDkpB,EAAmBJ,GAAmB,EACtCnO,EAAiBv6C,EAAAA,IAAG,EAC1Bc,OAAAA,EAAAA,MACEgoD,EACC/B,GAAW,CACNA,GACFhhD,EAAAA,SAAS,IAAM,CACb45B,EAAM,iBAAiBwY,EAAS,KAAK,CACjD,CAAW,CAEX,EACM,CAAE,UAAW,EAAI,CACvB,EACIxI,EAAAA,UAAU,IAAM,CACd4K,EAAe,MAAQ,IAAI,eAAgBwO,GAAY,CACrD,MAAM9f,EAAU8f,EAAQ,IAAKC,IAEpB,CACL,GAFUA,EAAM,OAAO,aAAa,SAAS,EAG7C,YAAaA,EAAM,OACnB,YAAa,EACzB,EACS,EACDjjD,WAAS,IAAMijC,EAAqBC,CAAO,CAAC,CACpD,CAAO,CACP,CAAK,EACDyR,EAAAA,gBAAgB,IAAM,CACpB,IAAIl5C,EACJ,OAAQA,EAAK+4C,EAAe,QAAU,KAAO,OAAS/4C,EAAG,WAAU,CACzE,CAAK,EACM,CAACuuC,EAAMC,KACLC,YAAS,EAAIC,qBAAmB,MAAOyY,GAAc,CAC1DpO,EAAe,OAAStK,YAAU,EAAI,EAAGC,qBAAmBW,EAAAA,SAAU,CAAE,IAAK,CAAC,EAAIyV,EAAAA,WAAWxnD,EAAAA,MAAMq5C,CAAQ,EAAG,CAAC3vC,EAAMulC,EAAIC,EAAKib,IAAY,CACxI,MAAMC,EAAQ,CAAC1gD,EAAK,EAAE,EACtB,GAAIygD,GAAWA,EAAQ,MAAQzgD,EAAK,IAAM2gD,EAAAA,WAAWF,EAASC,CAAK,EACjE,OAAOD,EACT,MAAMG,GAASnZ,EAAAA,UAAS,EAAI6B,EAAAA,YAAYhzC,EAAAA,MAAM2nD,EAAa,EAAG,CAC5D,GAAIj+C,EAAK,GACT,IAAKA,EAAK,GACV,kBAAmB+xC,EAAe,KAC9C,EAAa,KAAM,EAAG,CAAC,KAAM,iBAAiB,CAAC,GACrC,OAAA6O,EAAM,KAAOF,EACNE,CACjB,EAAWpZ,EAAQ,CAAC,EAAG,GAAG,GAAK2B,EAAAA,mBAAmB,GAAI,EAAI,CAC1D,CAAO,EAEP,CACA,CAAC,EACD,SAAS0X,IAAyB,CAChC,KAAM,CAAE,MAAA1pB,CAAK,EAAKC,GAAU,EAC5B+P,EAAAA,UAAU,IAAM,CACd,GAAI1T,GAAK,EAAI,CACX,MAAMqtB,EAAO,SAAS,cAAc,iBAAiB,EACjDA,GAAU,OAAO,iBAAiBA,CAAI,EAAE,SAAW,KACrD3pB,EAAM,MAAM,IAAI9I,GAAaC,GAAU,cAAc,CAAC,CAE9D,CACA,CAAG,CACH,CACA,MAAMyyB,GAA6B3X,EAAAA,mBAAmB,MAAO,CAAE,MAAO,uBAAuB,EAAI,KAAM,EAAE,EACnG4X,GAAgB,CACpB,KAAM,UACN,aAAc,CAAE,KAAM,CAAC,CACzB,EACMC,GAA8B7a,EAAAA,gBAAgB,CAClD,GAAG4a,GACH,MAAO,CACL,GAAI,CAAA,EACJ,WAAY,CAAA,EACZ,MAAO,CAAA,EACP,MAAO,CAAA,EACP,UAAW,CAAA,EACX,UAAW,CAAA,EACX,eAAgB,CAAA,EAChB,mBAAoB,CAAA,EACpB,oBAAqB,CAAE,QAAS,MAAM,EACtC,sBAAuB,CAAE,QAAS,MAAM,EACxC,iBAAkB,CAAA,EAClB,kBAAmB,CAAE,KAAM,CAAC,SAAU,IAAI,EAAG,QAAS,MAAM,EAC5D,cAAe,CAAE,QAAS,MAAM,EAChC,iBAAkB,CAAE,KAAM,CAAC,QAAS,IAAI,EAAG,QAAS,MAAM,EAC1D,sBAAuB,CAAE,QAAS,MAAM,EACxC,sBAAuB,CAAE,QAAS,MAAM,EACxC,qBAAsB,CAAE,QAAS,MAAM,EACvC,WAAY,CAAE,KAAM,QAAS,QAAS,MAAM,EAC5C,SAAU,CAAA,EACV,0BAA2B,CAAE,KAAM,QAAS,QAAS,MAAM,EAC3D,eAAgB,CAAE,KAAM,CAAC,QAAS,MAAM,EAAG,QAAS,MAAM,EAC1D,eAAgB,CAAE,KAAM,QAAS,QAAS,MAAM,EAChD,iBAAkB,CAAE,KAAM,QAAS,QAAS,MAAM,EAClD,kBAAmB,CAAA,EACnB,mBAAoB,CAAE,KAAM,QAAS,QAAS,MAAM,EACpD,kBAAmB,CAAE,KAAM,QAAS,QAAS,MAAM,EACnD,UAAW,CAAE,KAAM,CAAC,QAAS,KAAK,EAAG,QAAS,MAAM,EACpD,QAAS,CAAA,EACT,QAAS,CAAA,EACT,gBAAiB,CAAA,EACjB,gBAAiB,CAAA,EACjB,WAAY,CAAA,EACZ,mBAAoB,CAAA,EACpB,aAAc,CAAE,KAAM,QAAS,QAAS,MAAM,EAC9C,YAAa,CAAE,KAAM,QAAS,QAAS,MAAM,EAC7C,YAAa,CAAE,KAAM,QAAS,QAAS,MAAM,EAC7C,iBAAkB,CAAA,EAClB,gBAAiB,CAAA,EACjB,kBAAmB,CAAA,EACnB,kBAAmB,CAAE,KAAM,QAAS,QAAS,MAAM,EACnD,iBAAkB,CAAE,KAAM,QAAS,QAAS,MAAM,EAClD,cAAe,CAAA,EACf,kBAAmB,CAAA,EACnB,cAAe,CAAE,KAAM,QAAS,QAAS,MAAM,EAC/C,eAAgB,CAAE,KAAM,QAAS,QAAS,MAAM,EAChD,aAAc,CAAE,KAAM,QAAS,QAAS,MAAM,EAC9C,YAAa,CAAE,KAAM,CAAC,QAAS,QAAQ,EAAG,QAAS,MAAM,EACzD,gBAAiB,CAAA,EACjB,iBAAkB,CAAA,EAClB,eAAgB,CAAA,EAChB,mBAAoB,CAAA,EACpB,qBAAsB,CAAE,KAAM,QAAS,QAAS,MAAM,EACtD,qBAAsB,CAAE,KAAM,QAAS,QAAS,MAAM,EACtD,oBAAqB,CAAE,KAAM,QAAS,QAAS,MAAM,EACrD,eAAgB,CAAE,KAAM,QAAS,QAAS,MAAM,EAChD,eAAgB,CAAE,KAAM,QAAS,QAAS,MAAM,EAChD,iBAAkB,CAAE,KAAM,QAAS,QAAS,MAAM,EAClD,kBAAmB,CAAE,KAAM,QAAS,QAAS,MAAM,EACnD,aAAc,CAAA,CAClB,EACE,MAAO,CAAC,cAAe,cAAe,mBAAoB,YAAa,OAAQ,sBAAuB,QAAS,UAAW,eAAgB,aAAc,oBAAqB,kBAAmB,YAAa,OAAQ,UAAW,qBAAsB,gBAAiB,oBAAqB,uBAAwB,iBAAkB,eAAgB,sBAAuB,iBAAkB,oBAAqB,aAAc,YAAa,kBAAmB,iBAAkB,gBAAiB,iBAAkB,aAAc,kBAAmB,iBAAkB,gBAAiB,iBAAkB,kBAAmB,YAAa,kBAAmB,gBAAiB,kBAAmB,iBAAkB,gBAAiB,iBAAkB,kBAAmB,YAAa,gBAAiB,WAAY,eAAgB,mBAAoB,yBAA0B,wBAAyB,uBAAwB,wBAAyB,oBAAqB,eAAgB,cAAc,EACj9B,MAAM3a,EAAS,CAAE,OAAQC,EAAU,KAAA9pC,CAAI,EAAI,CACzC,MAAMD,EAAQ8pC,EACR2T,EAAQkH,EAAAA,SAAQ,EAChBC,EAAa7kD,GAAUC,EAAO,aAAcC,CAAI,EAChD4kD,EAAa9kD,GAAUC,EAAO,QAASC,CAAI,EAC3C6kD,EAAa/kD,GAAUC,EAAO,QAASC,CAAI,EAC3Co1C,EAAWxa,GAAW76B,CAAK,EAC3B+kD,EAAUvjB,GAAc,CAAE,WAAAojB,EAAY,MAAOC,EAAY,MAAOC,CAAU,EAAI9kD,EAAOq1C,CAAQ,EACnG,OAAAjS,GAASnjC,EAAMo1C,EAAS,KAAK,EAC7BuH,GAAgB,EAChB0H,GAAsB,EACtBlP,EAAAA,QAAQnb,GAAOwjB,CAAK,EACpBuH,EAAAA,YAAY,IAAM,CAChBD,EAAO,CACb,CAAK,EACDhb,EAASsL,CAAQ,EACV,CAACrK,EAAMC,KACLC,EAAAA,UAAS,EAAIC,EAAAA,mBAAmB,MAAO,CAC5C,IAAKpxC,EAAAA,MAAMs7C,CAAQ,EAAE,WACrB,MAAO,UACf,EAAS,CACD+G,EAAAA,YAAYxD,GAAa,KAAM,CAC7B,QAASyD,EAAAA,QAAQ,IAAM,CACrBD,EAAAA,YAAYqF,EAAW,EACvB+C,GACApI,EAAAA,YAAY0H,EAAW,EACvBzY,aAAWL,EAAK,OAAQ,WAAW,CAC/C,CAAW,EACD,EAAG,CACb,CAAS,EACDK,aAAWL,EAAK,OAAQ,SAAS,EACjCoR,EAAAA,YAAYM,EAAW,CAC/B,EAAS,GAAG,EAEZ,CACA,CAAC,sGChhTDuI,GAAe,CACd,aAAc,EACf,6hBArCA,MAAMjlD,EAAQ8pC,EACR7pC,EAAOilD,EAKPC,EAAWC,EAAAA,eAAiC,YAAY,EACxDC,EAAWpqD,EAAAA,IAAwB,EAAE,EACrCqqD,EAAYrqD,EAAAA,IAAI,EAAK,EAC3B,IAAIsqD,EAAY,EAEhB,MAAMC,EAAe,SAAY,CAChC,IAAIzrC,EAAM,KAAK,IAAA,EACXA,EAAMwrC,EAAY,KAAO,CAACD,EAAU,OACvC,MAAMG,EAAA,EAEPF,EAAYxrC,CAAA,EAGP0rC,EAAiB,SAAY,CAClCJ,EAAS,MAAQrlD,EAAM,MACvBslD,EAAU,MAAQ,GAClB,MAAMtkD,WAAA,EACNmkD,EAAS,MAAM,MAAA,CAAM,EAGhBO,EAAiB,IAAM,CAC5BJ,EAAU,MAAQ,GAClBrlD,EAAK,SAAUolD,EAAS,KAAK,CAAA,EAGxBhT,EAAOpxC,EAAAA,SAAS,IAAMguC,GAAcjvC,CAAK,CAAC,oEA3D/C2lD,EAAAA,mBAAiG,OAAA,CAA1F,GAAIrkC,EAAAA,GAAK,uBAAO8iB,EAAAA,KAAK,EAAE,MAAM,sBAAuB,EAAGiO,EAAA,MAAI,CAAA,EAAM,aAAY2N,EAAAA,SAAAA,cAEpF4F,EAAAA,YAmBoBC,EAAAA,MAAAC,EAAA,EAAA,KAAA,mBAlBnB,IAiBM,CAjBNH,EAAAA,mBAiBM,MAAA,CAhBJ,MAAKI,EAAAA,eAAA,yCAA0G,UAAA,mCAAA1T,EAAA,cAAaA,EAAA,MAAI,CAAA,CAAA,KAAA,GAKjI,MAAM,mCACL,uBAAOmT,EAAA,EAAY,GACpBG,EAAAA,mBAAmD,MAAnDpJ,GAAmDyJ,EAAAA,gBAAdpa,EAAAA,KAAK,EAAA,CAAA,EAC/B0Z,EAAA,OAAXW,EAAAA,UAAA,EAAAC,EAAAA,mBAOM,MAPN1J,GAOM,kBANLmJ,EAAAA,mBAKoC,QAAA,CAJnC,IAAI,aACJ,MAAM,mDACGN,EAAQ,MAAAhN,GAChB,sBAAMiN,EAAA,MAAS,IACf,sBAAgBI,EAAc,CAAA,OAAA,CAAA,CAAA,2BAFtBL,EAAA,KAAQ,CAAA,4gBCGtB,MAAMrlD,EAAQ8pC,EACR7pC,EAAOilD,EAEPC,EAAWC,EAAAA,eAAiC,YAAY,EACxDC,EAAWpqD,EAAAA,IAAwB,EAAE,EACrCqqD,EAAYrqD,EAAAA,IAAI,EAAK,EAC3B,IAAIsqD,EAAY,EAEhB,MAAMY,EAAc,SAAY,CAC/B,IAAIpsC,EAAM,KAAK,IAAA,EACXA,EAAMwrC,EAAY,KAAO,CAACD,EAAU,OACvC,MAAMG,EAAA,EAEPF,EAAYxrC,CAAA,EAGP0rC,EAAiB,SAAY,CAClCJ,EAAS,MAAQrlD,EAAM,MACvBslD,EAAU,MAAQ,GAClB,MAAMtkD,WAAA,EACNmkD,EAAS,MAAM,MAAA,CAAM,EAGhBO,EAAiB,IAAM,CAC5BJ,EAAU,MAAQ,GAClBrlD,EAAK,SAAUolD,EAAS,KAAK,CAAA,8BA5C7Ba,EAAAA,mBAYM,MAAA,CAZA,uBAAOC,EAAA,EAAW,GACvBR,EAAAA,mBAAsB,6BAAd/Z,EAAAA,KAAK,EAAA,CAAA,EACF0Z,EAAA,OAAXW,EAAAA,UAAA,EAAAC,EAAAA,mBAOM,MAPN1B,GAOM,kBANLmB,EAAAA,mBAKoC,QAAA,CAJnC,IAAI,aACJ,MAAM,mDACGN,EAAQ,MAAAhN,GAChB,sBAAMiN,EAAA,MAAS,IACf,sBAAgBI,EAAc,CAAA,OAAA,CAAA,CAAA,2BAFtBL,EAAA,KAAQ,CAAA,kCAIL1/C,EAAAA,KAAK,wBAAnBygD,cAA+EP,EAAAA,MAAAQ,EAAA,EAAA,OAAlD,GAAG,IAAI,KAAK,SAAU,SAAU7a,EAAAA,cAAAA,oDAC/C7lC,EAAAA,KAAK,yBAAnBygD,cAAgFP,EAAAA,MAAAQ,EAAA,EAAA,OAAlD,GAAG,IAAI,KAAK,SAAU,SAAU9a,EAAAA,cAAAA,mTCwChE,MAAMtrC,EAAOilD,EAEPoB,EAAQrrD,EAAAA,IAAI,EAAK,EACjBsrD,EAAkBtrD,EAAAA,IAAkB,EAAE,EACtCurD,EAAkBvrD,EAAAA,IAAA,EAElBwrD,EAAmBxrD,EAAAA,IAAI,EAAE,EACzByrD,EAAqBzlD,EAAAA,SAAS,KACnCslD,EAAgB,MAAM,QAAQ,CAAC79B,EAAS/M,IAAU,CACjD,GAAI+M,EAAQ,KAAO+9B,EAAiB,MACnC,OAAO9qC,CACR,CACA,EAEM,GACP,EAEK0O,EAAWppB,EAAAA,SAAS,CACzB,IAAK,IAAM,CACV,MAAM0lD,EAAY7c,EAAA,WAGlB,UAAW8c,KAAYD,EACtBC,EAAS,KAAO,CAAA,EACZA,EAAS,OAAS,SACrBA,EAAS,KAAK,SAAW,GACzBA,EAAS,KAAK,UAAY,IAChBA,EAAS,OAAS,UAC5BA,EAAS,KAAK,SAAW,GACzBA,EAAS,KAAK,UAAY,KAE1BA,EAAS,KAAK,SAAW,GACzBA,EAAS,KAAK,UAAY,IAE3BA,EAAS,MAAQ,yBACjBA,EAAS,KAAO,WAIjB,UAAWA,KAAYD,EACtBC,EAAS,OAAS,CACjB,MAAO,IAAM,CACZH,EAAiB,MAAQG,EAAS,EAAA,CACnC,EAIF,OAAOD,CAAA,EAER,IAAKE,GAAY,CAChB5mD,EAAK,oBAAqB,KAAK,MAAM,KAAK,UAAU4mD,CAAQ,CAAC,CAAC,CAAA,CAC/D,CACA,EACK,CAAE,UAAAC,EAAW,SAAA9gB,EAAU,kBAAA2Y,EAAmB,YAAAoI,EAAa,YAAAtgB,CAAA,EAAgB5L,GAAA,EAE7E+P,EAAAA,UAAU,IAAM,CACf,SAAS,oBAAoB,WAAYoc,CAAc,EACvD,SAAS,iBAAiB,WAAYA,CAAc,CAAA,CACpD,EAEDrR,EAAAA,gBAAgB,IAAM,CACrB,SAAS,oBAAoB,WAAYqR,CAAc,CAAA,CACvD,EAEDD,EAAY1R,GAAY,CACvBmR,EAAgB,MAAQnR,CAAA,CACxB,EAEDkR,EAAgB,MAAQl8B,EAAS,MAGjC,MAAM48B,EAAiBC,IACf,CACN,CAACriC,EAAS,GAAG,EAAGA,EAAS,MACzB,CAACA,EAAS,KAAK,EAAGA,EAAS,OAC3B,CAACA,EAAS,MAAM,EAAGA,EAAS,KAC5B,CAACA,EAAS,IAAI,EAAGA,EAAS,GAAA,GACzBqiC,CAAe,EAGZC,EAAc,IAAM,CACzB,GAAIT,EAAmB,MAAQ,GAAI,CAClC,MAAMU,EAAab,EAAgB,MAAMG,EAAmB,KAAK,EACjEU,EAAW,eAAiBH,EAAcG,EAAW,cAAc,CAAA,CACpE,EAGKC,EAAa,IAAM,CACxB,GAAIX,EAAmB,MAAQ,GAAI,CAClC,MAAMU,EAAab,EAAgB,MAAMG,EAAmB,KAAK,EACjEU,EAAW,eAAiBH,EAAcG,EAAW,cAAc,CAAA,CACpE,EAGKzP,EAAW34C,GAAsB,CACtC,OAAO,SAAS,EAAGA,EAAM,MAAM,CAAA,EAG1BgoD,EAAkBhoD,GAAyB,CAC5CsnD,EAAM,OAAStnD,EAAM,SAAW,MAC/BA,EAAM,KAAO,KAAOA,EAAM,KAAO,MAC/BwnD,EAAgB,MAAM,OAAA,EAExBxnD,EAAM,KAAO,KACXwnD,EAAgB,MAAM,QAAA,EAE7B,EAGKc,EAAU,SAAY,CAC3B,MAAMd,EAAgB,MAAM,QAAA,CAAQ,EAG/Be,EAAU,IAAM,CACrB,IAAIC,EAAW,GACXC,EAAkB,CAAE,EAAG,KAAK,OAAA,EAAW,IAAK,EAAG,KAAK,OAAA,EAAW,GAAA,EACnE,GAAIf,EAAmB,MAAQ,GAAI,CAClC,MAAMU,EAAab,EAAgB,MAAMG,EAAmB,KAAK,EAC7DU,EAAW,KAAK,YACnBK,EAAkB,CAAE,EAAIL,EAAoB,SAAS,EAAI,IAAK,EAAIA,EAAoB,SAAS,EAAI,EAAA,EACnGI,EAAW,GACZ,CAGD,MAAMlmC,EAAKilC,EAAgB,MAAM,OAC3Bj8B,EAAS,QAAQhJ,CAAE,GAqBzB,GApBAilC,EAAgB,MAAM,KAAK,CAC1B,GAAIj8B,EACJ,MAAO,QAAUhJ,EACjB,eAAgBuD,EAAS,MACzB,eAAgBA,EAAS,KACzB,MAAO,yBACP,KAAM,WACN,KAAM,CACL,SAAU,GACV,UAAW,EAAA,EAEZ,OAAQ,CACP,MAAO,IAAM,CACZ4hC,EAAiB,MAAQn8B,CAAA,CAC1B,EAGD,SAAUm9B,CAAA,CACV,EAEGD,EAAU,CACb,IAAI/iB,EAAS,QAAQnjB,EAAK,CAAC,GAC3BilC,EAAgB,MAAM,KAAK,CAC1B,GAAI9hB,EACJ,OAAQgiB,EAAiB,MACzB,OAAQn8B,EACR,KAAM,WACN,MAAO,QAAQhJ,EAAK,CAAC,GACrB,SAAU,GACV,OAAQ,CACP,MAAO,IAAM,CACZmlC,EAAiB,MAAQhiB,CAAA,CAC1B,CACD,CACA,CAAA,CACF,EAGKijB,EAAe,CAAC7nD,EAAGyhB,IAAO,CAC/B,QAAShe,EAAI,EAAGA,EAAIijD,EAAgB,MAAM,OAAQjjD,IACjD,GAAIijD,EAAgB,MAAMjjD,CAAC,EAAE,IAAMge,EAAI,CACtCilC,EAAgB,MAAMjjD,CAAC,EAAE,MAAQzD,EACjC,KAAA,CAEF,EAsBDinD,EAnBuB3wB,GAA2B,CAEjD,MAAM4Q,EAAU,CACf,GAAI,QAFMwf,EAAgB,MAAM,MAElB,GACd,OAAQpwB,EAAW,OACnB,OAAQA,EAAW,OACnB,KAAM,WACN,MAAO,WACP,iBAAkB,IAClB,SAAU,GACV,OAAQ,CACP,MAAO,IAAM,CACZswB,EAAiB,MAAQ1f,EAAQ,EAAA,CAClC,CACD,EAEDf,EAAS,CAACe,CAAO,CAAC,CAAA,CAGI,EAEvB,MAAM4gB,EAAmBljB,GAAU,CAClCgC,EAAYhC,CAAM,CAAA,EAGnB,OAAAka,EAAkB,CAAC,CAAE,MAAA3/C,EAAO,KAAAyqB,KAAW,CACtCk+B,EAAiBl+B,EAAK,EAAE,CAAA,CACxB,wBA3PAy8B,EAAAA,mBAoCM,MAAA,CApCD,MAAK0B,EAAAA,eAAA,CAAC,sBAA8BC,EAAAA,kBAAkB,CAAA,EAAG,2BAAWvB,EAAA,MAAK,IAAU,4BAAYA,EAAA,MAAK,GAAA,GACxGX,EAAAA,mBAkBM,MAlBNnB,GAkBM,CAjBLmB,EAAAA,mBAEM,MAFNpJ,GAEM,CADLoJ,EAAAA,mBAAmF,MAAA,KAAA,CAA9E1a,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA0a,qBAAqB,SAAlB,iBAAc,EAAA,qBAAI,IAACK,EAAAA,gBAAGS,EAAA,MAAmBA,EAAA,MAAgB,MAAA,EAAA,CAAA,CAAA,KAElEd,EAAAA,mBAaM,MAbNnJ,GAaM,CAZLmJ,EAAAA,mBAEM,MAAA,KAAA,CADLA,EAAAA,mBAAiE,SAAA,CAAzD,MAAM,iBAAkB,QAAO4B,CAAA,EAAS,UAAQ,CAAA,GAEzD5B,EAAAA,mBAEM,MAAA,KAAA,CADLA,EAAAA,mBAA+D,SAAA,CAAvD,MAAM,iBAAkB,QAAO2B,CAAA,EAAS,QAAM,CAAA,GAE5CZ,EAAA,MAAkB,kBAA7BR,EAAAA,mBAEM,MAAA4B,GAAA,CADLnC,EAAAA,mBAAgF,SAAA,CAAxE,MAAM,iBAAkB,QAAO0B,CAAA,EAAY,sBAAoB,CAAA,gCAE7DX,EAAA,MAAkB,kBAA7BR,EAAAA,mBAEM,MAAA6B,GAAA,CADLpC,EAAAA,mBAAkF,SAAA,CAA1E,MAAM,iBAAkB,QAAOwB,CAAA,EAAa,uBAAqB,CAAA,oCAMrEZ,EAAA,OAAmBA,EAAA,MAAgB,sBAD1CH,EAAAA,YAcUP,QAAAjsB,EAAA,EAAA,OAZT,MAAM,UACL,oBAAmB,GACnB,iBAAgB,GAChB,mBAAkB,cACV2sB,EAAA,2CAAAA,EAAe,MAAAlO,GACvB,wBAAeV,EAAO,CAAA,SAAA,CAAA,CAAA,GACZ,gBAAaqQ,EAAAA,QACiDhoD,GAD1C,CAC9B4lD,cAAwEqC,GAAxEC,EAAAA,WAAwEloD,EAA7C,CAAG,YAAQ0nD,EAAarP,EAAQr4C,EAAM,EAAE,CAAA,2BAEzD,gBAAagoD,EAAAA,QACiDhoD,GAD1C,CAC9B4lD,cAAwEuC,GAAxED,EAAAA,WAAwEloD,EAA7C,CAAG,YAAQ0nD,EAAarP,EAAQr4C,EAAM,EAAE,CAAA,+SCrBvE,MAAMC,EAAOilD,EACPkD,EAASC,EAAAA,SAAyBve,EAAA,YAAC,EAMnCzf,EAAWppB,EAAAA,SAAuB,CACvC,IAAK,IAAM,CACV,MAAMqnD,EAAY,CAAA,EACZC,EAA8B,CAAA,EAC9BC,EAAyC,CAAA,EAE/C,GAAI,CAACJ,EAAO,MACX,OAAOG,EAGR,IAAI5sC,EAAQ,EACZ,SAAW,CAACrf,EAAKgB,CAAK,IAAK,OAAO,QAAQ8qD,EAAO,KAAK,EAAG,CACxD,MAAMrpD,EAAW,CAChB,GAAIzC,EACJ,MAAOA,EACP,SAAUwtC,EAAA,OAAOxtC,CAAG,GAAG,UAAY,CAAE,EAAG,IAAMqf,EAAO,EAAG,GAAA,EACxD,eAAgBmuB,EAAA,OAAOxtC,CAAG,GAAG,gBAAkBuoB,EAAS,KACxD,eAAgBilB,EAAA,OAAOxtC,CAAG,GAAG,gBAAkBuoB,EAAS,KAAA,EAGrDvnB,GAAO,OAAS,UACnByB,EAAG,KAAO,SACVA,EAAG,MAAQ,uBAGZypD,EAAUlsD,CAAG,EAAIyC,CAAA,CAGlB,SAAW,CAACzC,EAAKgB,CAAK,IAAK,OAAO,QAAQ8qD,EAAO,KAAK,EAAG,CACxD,GAAI9qD,GAAO,GACV,SAAW,CAACmrD,EAASC,CAAS,IAAK,OAAO,QAAQprD,EAAM,EAAE,EAAG,CAM5D,MAAMmB,EAASiqD,EAAU,QAAUA,EACnCH,EAAc,KAAK,CAClB,GAAI,GAAGjsD,CAAG,IAAImC,CAAM,GACpB,OAAQnC,EACR,OAAAmC,EACA,MAAOgqD,EACP,SAAU,EAAA,CACV,EAGDH,EAAU7pD,CAAM,EAAI,EAAA,CAGtBkd,GAAA,CAGD,SAAW,CAACrf,EAAKgB,CAAK,IAAK,OAAO,QAAQkrD,CAAS,EAC7CF,EAAUhsD,CAAG,IACjBgB,EAAM,KAAU,QAChBA,EAAM,MAAW,sBAElBirD,EAAc,KAAKjrD,CAAK,EAGzB,OAAOirD,CAAA,EAGR,IAAK1B,GAAY,CAEhB8B,EAAiB9B,CAAQ,CAAA,CAG1B,CACA,EACK8B,EAAoBt+B,GAA2B,CACpD,MAAMN,EAA6C,CAAA,EAC7C6+B,EAAoC,CAAA,EACpCR,EAAuB,CAAA,EAE7B,UAAWrpD,KAAMsrB,EAAU,CAC1B,MAAMuhB,EAAQ7sC,EAAG,MAEbA,EAAG,OAAS,QAEfqpD,EAAOxc,CAAK,EAAI,CACf,GAAI,CAAA,CAAC,EAEI7sC,EAAG,OAAS,SAEtBqpD,EAAOxc,CAAK,EAAI,CACf,KAAM,OAAA,EAEG7sC,EAAG,QAAUA,EAAG,QAE1BgrB,EAAMhrB,EAAG,MAAM,EAAIgrB,EAAMhrB,EAAG,MAAM,GAAK,CAAA,EACvCgrB,EAAMhrB,EAAG,MAAM,EAAE6sC,CAAK,EAAI,CACzB,OAAQ7sC,EAAG,MAAA,GAIZqpD,EAAOxc,CAAK,EAAI,CACf,GAAI,CAAA,CAAC,EAGPgd,EAAU7pD,EAAG,EAAE,EAAI6sC,CAAA,CAGpB,SAAW,CAAC6c,EAASC,CAAS,IAAK,OAAO,QAAQ3+B,CAAK,EAAG,CAEzD,MAAM6hB,EAAQgd,EAAUH,CAAO,EAC/B,SAAW,CAACnsD,EAAKgB,CAAK,IAAK,OAAO,QAAQorD,CAAS,EAC7CN,EAAOxc,CAAK,IAChBwc,EAAOxc,CAAK,EAAI,CAAE,GAAI,CAAA,CAAC,GAExBwc,EAAOxc,CAAK,EAAE,GAAGtvC,CAAG,EAAIgB,CACzB,CAGD2C,EAAK,oBAAqBmoD,CAAM,CAAA,8BArIhClC,qBAEM,MAAA,KAAA,CADLN,EAAAA,YAA4EiD,GAAA,YAAvDx+B,EAAA,2CAAAA,EAAQ,MAAAguB,GAAG,uBAAsBwP,EAAAA,kBAAAA,sDCSxD,SAASiB,GAAQC,EAAU,CAC1BA,EAAI,UAAU,aAAcF,EAAU,EACtCE,EAAI,UAAU,cAAeC,EAAW,CACzC","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"node-editor.umd.cjs","sources":["../../common/temp/node_modules/.pnpm/@vue-flow+core@1.45.0_vue@3.5.22_typescript@5.9.3_/node_modules/@vue-flow/core/dist/vue-flow-core.mjs","../src/components/EditableEdge.vue","../src/components/EditableNode.vue","../src/components/NodeEditor.vue","../src/components/StateEditor.vue","../src/index.ts"],"sourcesContent":["import { getCurrentScope, onScopeDispose, isRef, reactive, unref, toRefs as toRefs$1, customRef, ref, readonly, watch, getCurrentInstance, nextTick, computed, toValue as toValue$1, shallowRef, markRaw, inject, effectScope, toRef, onBeforeMount, defineComponent, createPropsRestProxy, onMounted, openBlock, createElementBlock, normalizeClass, renderSlot, h, Fragment, normalizeStyle, createCommentVNode, createElementVNode, mergeProps, createBlock, resolveDynamicComponent, createTextVNode, toDisplayString, useAttrs, provide, onBeforeUnmount, createVNode, withCtx, resolveComponent, renderList, Teleport, isMemoSame, useSlots, onUnmounted } from \"vue\";\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isDef$1 = (val) => typeof val !== \"undefined\";\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst noop$2 = () => {\n};\nfunction createFilterWrapper(filter2, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter2(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter2,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter2);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array2 = Array.from(v);\n return array2.includes(value) || array2.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\nconst defaultWindow = isClient ? window : void 0;\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop$2;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\nfunction createKeyPredicate$1(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate$1(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef$1(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\nvar noop$1 = { value: () => {\n} };\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t))\n throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames$1(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t))\n throw new Error(\"unknown type: \" + t);\n return { type: t, name };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._, T = parseTypenames$1(typename + \"\", _), t, i = -1, n = T.length;\n if (arguments.length < 2) {\n while (++i < n)\n if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name)))\n return t;\n return;\n }\n if (callback != null && typeof callback !== \"function\")\n throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type)\n _[t] = set$1(_[t], typename.name, callback);\n else if (callback == null)\n for (t in _)\n _[t] = set$1(_[t], typename.name, null);\n }\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _)\n copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0)\n for (var args = new Array(n), i = 0, n, t; i < n; ++i)\n args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n }\n};\nfunction get$1(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set$1(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop$1, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null)\n type.push({ name, value: callback });\n return type;\n}\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\nconst namespaces = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nfunction namespace(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\")\n name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;\n}\nfunction creatorInherit(name) {\n return function() {\n var document2 = this.ownerDocument, uri = this.namespaceURI;\n return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);\n };\n}\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\nfunction creator(name) {\n var fullname = namespace(name);\n return (fullname.local ? creatorFixed : creatorInherit)(fullname);\n}\nfunction none() {\n}\nfunction selector(selector2) {\n return selector2 == null ? none : function() {\n return this.querySelector(selector2);\n };\n}\nfunction selection_select(select2) {\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\nfunction empty() {\n return [];\n}\nfunction selectorAll(selector2) {\n return selector2 == null ? empty : function() {\n return this.querySelectorAll(selector2);\n };\n}\nfunction arrayAll(select2) {\n return function() {\n return array(select2.apply(this, arguments));\n };\n}\nfunction selection_selectAll(select2) {\n if (typeof select2 === \"function\")\n select2 = arrayAll(select2);\n else\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select2.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection$1(subgroups, parents);\n}\nfunction matcher(selector2) {\n return function() {\n return this.matches(selector2);\n };\n}\nfunction childMatcher(selector2) {\n return function(node) {\n return node.matches(selector2);\n };\n}\nvar find = Array.prototype.find;\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\nfunction childFirst() {\n return this.firstElementChild;\n}\nfunction selection_selectChild(match) {\n return this.select(match == null ? childFirst : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\nvar filter = Array.prototype.filter;\nfunction children() {\n return Array.from(this.children);\n}\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\nfunction selection_selectChildren(match) {\n return this.selectAll(match == null ? children : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\nfunction selection_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction sparse(update) {\n return new Array(update.length);\n}\nfunction selection_enter() {\n return new Selection$1(this._enter || this._groups.map(sparse), this._parents);\n}\nfunction EnterNode(parent, datum2) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum2;\n}\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) {\n return this._parent.insertBefore(child, this._next);\n },\n insertBefore: function(child, next) {\n return this._parent.insertBefore(child, next);\n },\n querySelector: function(selector2) {\n return this._parent.querySelector(selector2);\n },\n querySelectorAll: function(selector2) {\n return this._parent.querySelectorAll(selector2);\n }\n};\nfunction constant$3(x) {\n return function() {\n return x;\n };\n}\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0, node, groupLength = group.length, dataLength = data.length;\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue;\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {\n exit[i] = node;\n }\n }\n}\nfunction datum(node) {\n return node.__data__;\n}\nfunction selection_data(value, key) {\n if (!arguments.length)\n return Array.from(this, datum);\n var bind = key ? bindKey : bindIndex, parents = this._parents, groups = this._groups;\n if (typeof value !== \"function\")\n value = constant$3(value);\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j], group = groups[j], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), dataLength = data.length, enterGroup = enter[j] = new Array(dataLength), updateGroup = update[j] = new Array(dataLength), exitGroup = exit[j] = new Array(groupLength);\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1)\n i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength)\n ;\n previous._next = next || null;\n }\n }\n }\n update = new Selection$1(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data ? data : Array.from(data);\n}\nfunction selection_exit() {\n return new Selection$1(this._exit || this._groups.map(sparse), this._parents);\n}\nfunction selection_join(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter)\n enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update)\n update = update.selection();\n }\n if (onexit == null)\n exit.remove();\n else\n onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\nfunction selection_merge(context) {\n var selection2 = context.selection ? context.selection() : context;\n for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Selection$1(merges, this._parents);\n}\nfunction selection_order() {\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m; ) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4)\n next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n}\nfunction selection_sort(compare) {\n if (!compare)\n compare = ascending;\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n return new Selection$1(sortgroups, this._parents).order();\n}\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction selection_call() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\nfunction selection_nodes() {\n return Array.from(this);\n}\nfunction selection_node() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node)\n return node;\n }\n }\n return null;\n}\nfunction selection_size() {\n let size = 0;\n for (const node of this)\n ++size;\n return size;\n}\nfunction selection_empty() {\n return !this.node();\n}\nfunction selection_each(callback) {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n callback.call(node, node.__data__, i, group);\n }\n }\n return this;\n}\nfunction attrRemove$1(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS$1(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant$1(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\nfunction attrConstantNS$1(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\nfunction attrFunction$1(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttribute(name);\n else\n this.setAttribute(name, v);\n };\n}\nfunction attrFunctionNS$1(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttributeNS(fullname.space, fullname.local);\n else\n this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\nfunction selection_attr(name, value) {\n var fullname = namespace(name);\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);\n }\n return this.each((value == null ? fullname.local ? attrRemoveNS$1 : attrRemove$1 : typeof value === \"function\" ? fullname.local ? attrFunctionNS$1 : attrFunction$1 : fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, value));\n}\nfunction defaultView(node) {\n return node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView;\n}\nfunction styleRemove$1(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant$1(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\nfunction styleFunction$1(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.style.removeProperty(name);\n else\n this.style.setProperty(name, v, priority);\n };\n}\nfunction selection_style(name, value, priority) {\n return arguments.length > 1 ? this.each((value == null ? styleRemove$1 : typeof value === \"function\" ? styleFunction$1 : styleConstant$1)(name, value, priority == null ? \"\" : priority)) : styleValue(this.node(), name);\n}\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n delete this[name];\n else\n this[name] = v;\n };\n}\nfunction selection_property(name, value) {\n return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === \"function\" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];\n}\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.add(names[i]);\n}\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.remove(names[i]);\n}\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\nfunction selection_classed(name, value) {\n var names = classArray(name + \"\");\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n)\n if (!list.contains(names[i]))\n return false;\n return true;\n }\n return this.each((typeof value === \"function\" ? classedFunction : value ? classedTrue : classedFalse)(names, value));\n}\nfunction textRemove() {\n this.textContent = \"\";\n}\nfunction textConstant$1(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction$1(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\nfunction selection_text(value) {\n return arguments.length ? this.each(value == null ? textRemove : (typeof value === \"function\" ? textFunction$1 : textConstant$1)(value)) : this.node().textContent;\n}\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\nfunction selection_html(value) {\n return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === \"function\" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;\n}\nfunction raise() {\n if (this.nextSibling)\n this.parentNode.appendChild(this);\n}\nfunction selection_raise() {\n return this.each(raise);\n}\nfunction lower() {\n if (this.previousSibling)\n this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\nfunction selection_lower() {\n return this.each(lower);\n}\nfunction selection_append(name) {\n var create2 = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create2.apply(this, arguments));\n });\n}\nfunction constantNull() {\n return null;\n}\nfunction selection_insert(name, before) {\n var create2 = typeof name === \"function\" ? name : creator(name), select2 = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create2.apply(this, arguments), select2.apply(this, arguments) || null);\n });\n}\nfunction remove() {\n var parent = this.parentNode;\n if (parent)\n parent.removeChild(this);\n}\nfunction selection_remove() {\n return this.each(remove);\n}\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_clone(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\nfunction selection_datum(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.node().__data__;\n}\nfunction contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n return { type: t, name };\n });\n}\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on)\n return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i)\n on.length = i;\n else\n delete this.__on;\n };\n}\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on)\n for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = { type: typename.type, name: typename.name, value, listener, options };\n if (!on)\n this.__on = [o];\n else\n on.push(o);\n };\n}\nfunction selection_on(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on)\n for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i)\n this.each(on(typenames[i], value, options));\n return this;\n}\nfunction dispatchEvent(node, type, params) {\n var window2 = defaultView(node), event = window2.CustomEvent;\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window2.document.createEvent(\"Event\");\n if (params)\n event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else\n event.initEvent(type, false, false);\n }\n node.dispatchEvent(event);\n}\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\nfunction selection_dispatch(type, params) {\n return this.each((typeof params === \"function\" ? dispatchFunction : dispatchConstant)(type, params));\n}\nfunction* selection_iterator() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n yield node;\n }\n }\n}\nvar root = [null];\nfunction Selection$1(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\nfunction selection() {\n return new Selection$1([[document.documentElement]], root);\n}\nfunction selection_selection() {\n return this;\n}\nSelection$1.prototype = selection.prototype = {\n constructor: Selection$1,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\nfunction select(selector2) {\n return typeof selector2 === \"string\" ? new Selection$1([[document.querySelector(selector2)]], [document.documentElement]) : new Selection$1([[selector2]], root);\n}\nfunction sourceEvent(event) {\n let sourceEvent2;\n while (sourceEvent2 = event.sourceEvent)\n event = sourceEvent2;\n return event;\n}\nfunction pointer(event, node) {\n event = sourceEvent(event);\n if (node === void 0)\n node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\nconst nonpassive = { passive: false };\nconst nonpassivecapture = { capture: true, passive: false };\nfunction nopropagation$1(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent$1(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction dragDisable(view) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", noevent$1, nonpassivecapture);\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", noevent$1, nonpassivecapture);\n } else {\n root2.__noselect = root2.style.MozUserSelect;\n root2.style.MozUserSelect = \"none\";\n }\n}\nfunction yesdrag(view, noclick) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection2.on(\"click.drag\", noevent$1, nonpassivecapture);\n setTimeout(function() {\n selection2.on(\"click.drag\", null);\n }, 0);\n }\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", null);\n } else {\n root2.style.MozUserSelect = root2.__noselect;\n delete root2.__noselect;\n }\n}\nconst constant$2 = (x) => () => x;\nfunction DragEvent(type, {\n sourceEvent: sourceEvent2,\n subject,\n target,\n identifier,\n active,\n x,\n y,\n dx,\n dy,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n subject: { value: subject, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n identifier: { value: identifier, enumerable: true, configurable: true },\n active: { value: active, enumerable: true, configurable: true },\n x: { value: x, enumerable: true, configurable: true },\n y: { value: y, enumerable: true, configurable: true },\n dx: { value: dx, enumerable: true, configurable: true },\n dy: { value: dy, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\nfunction defaultFilter$1(event) {\n return !event.ctrlKey && !event.button;\n}\nfunction defaultContainer() {\n return this.parentNode;\n}\nfunction defaultSubject(event, d) {\n return d == null ? { x: event.x, y: event.y } : d;\n}\nfunction defaultTouchable$1() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction drag() {\n var filter2 = defaultFilter$1, container = defaultContainer, subject = defaultSubject, touchable = defaultTouchable$1, gestures = {}, listeners = dispatch(\"start\", \"drag\", \"end\"), active = 0, mousedownx, mousedowny, mousemoving, touchending, clickDistance2 = 0;\n function drag2(selection2) {\n selection2.on(\"mousedown.drag\", mousedowned).filter(touchable).on(\"touchstart.drag\", touchstarted).on(\"touchmove.drag\", touchmoved, nonpassive).on(\"touchend.drag touchcancel.drag\", touchended).style(\"touch-action\", \"none\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n function mousedowned(event, d) {\n if (touchending || !filter2.call(this, event, d))\n return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture)\n return;\n select(event.view).on(\"mousemove.drag\", mousemoved, nonpassivecapture).on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n dragDisable(event.view);\n nopropagation$1(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n function mousemoved(event) {\n noevent$1(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent$1(event);\n gestures.mouse(\"end\", event);\n }\n function touchstarted(event, d) {\n if (!filter2.call(this, event, d))\n return;\n var touches = event.changedTouches, c = container.call(this, event, d), n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation$1(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n function touchmoved(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent$1(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n function touchended(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, 500);\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation$1(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n function beforestart(that, container2, event, d, identifier, touch) {\n var dispatch2 = listeners.copy(), p = pointer(touch || event, container2), dx, dy, s;\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag2,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch: dispatch2\n }), d)) == null)\n return;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return function gesture(type, event2, touch2) {\n var p0 = p, n;\n switch (type) {\n case \"start\":\n gestures[identifier] = gesture, n = active++;\n break;\n case \"end\":\n delete gestures[identifier], --active;\n case \"drag\":\n p = pointer(touch2 || event2, container2), n = active;\n break;\n }\n dispatch2.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event2,\n subject: s,\n target: drag2,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch: dispatch2\n }),\n d\n );\n };\n }\n drag2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : filter2;\n };\n drag2.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$2(_), drag2) : container;\n };\n drag2.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$2(_), drag2) : subject;\n };\n drag2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : touchable;\n };\n drag2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag2 : value;\n };\n drag2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag2) : Math.sqrt(clickDistance2);\n };\n return drag2;\n}\nfunction define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition)\n prototype[key] = definition[key];\n return prototype;\n}\nfunction Color() {\n}\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\", reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\", reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`), reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`), reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`), reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`), reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`), reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\nvar named = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0)\n r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h2, s, l, a) {\n if (a <= 0)\n h2 = s = l = NaN;\n else if (l <= 0 || l >= 1)\n h2 = s = NaN;\n else if (s <= 0)\n h2 = NaN;\n return new Hsl(h2, s, l, a);\n}\nfunction hslConvert(o) {\n if (o instanceof Hsl)\n return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Hsl();\n if (o instanceof Hsl)\n return o;\n o = o.rgb();\n var r = o.r / 255, g = o.g / 255, b = o.b / 255, min = Math.min(r, g, b), max = Math.max(r, g, b), h2 = NaN, s = max - min, l = (max + min) / 2;\n if (s) {\n if (r === max)\n h2 = (g - b) / s + (g < b) * 6;\n else if (g === max)\n h2 = (b - r) / s + 2;\n else\n h2 = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h2 *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h2;\n }\n return new Hsl(h2, s, l, o.opacity);\n}\nfunction hsl(h2, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h2) : new Hsl(h2, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h2, s, l, opacity) {\n this.h = +h2;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h2 = this.h % 360 + (this.h < 0) * 360, s = isNaN(h2) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h2 >= 240 ? h2 - 240 : h2 + 120, m1, m2),\n hsl2rgb(h2, m1, m2),\n hsl2rgb(h2 < 120 ? h2 + 240 : h2 - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\nfunction hsl2rgb(h2, m1, m2) {\n return (h2 < 60 ? m1 + (m2 - m1) * h2 / 60 : h2 < 180 ? m2 : h2 < 240 ? m1 + (m2 - m1) * (240 - h2) / 60 : m1) * 255;\n}\nconst constant$1 = (x) => () => x;\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a);\n };\n}\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant$1(isNaN(a) ? b : a);\n}\nconst interpolateRgb = function rgbGamma(y) {\n var color2 = gamma(y);\n function rgb$1(start2, end) {\n var r = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color2(start2.g, end.g), b = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity);\n return function(t) {\n start2.r = r(t);\n start2.g = g(t);\n start2.b = b(t);\n start2.opacity = opacity(t);\n return start2 + \"\";\n };\n }\n rgb$1.gamma = rgbGamma;\n return rgb$1;\n}(1);\nfunction numberArray(a, b) {\n if (!b)\n b = [];\n var n = a ? Math.min(b.length, a.length) : 0, c = b.slice(), i;\n return function(t) {\n for (i = 0; i < n; ++i)\n c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x = new Array(na), c = new Array(nb), i;\n for (i = 0; i < na; ++i)\n x[i] = interpolate$1(a[i], b[i]);\n for (; i < nb; ++i)\n c[i] = b[i];\n return function(t) {\n for (i = 0; i < na; ++i)\n c[i] = x[i](t);\n return c;\n };\n}\nfunction date(a, b) {\n var d = /* @__PURE__ */ new Date();\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\nfunction interpolateNumber(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction object(a, b) {\n var i = {}, c = {}, k;\n if (a === null || typeof a !== \"object\")\n a = {};\n if (b === null || typeof b !== \"object\")\n b = {};\n for (k in b) {\n if (k in a) {\n i[k] = interpolate$1(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i)\n c[k] = i[k](t);\n return c;\n };\n}\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n return function() {\n return b;\n };\n}\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\nfunction interpolateString(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i])\n s[i] += bm;\n else\n s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({ i, x: interpolateNumber(am, bm) });\n }\n bi = reB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function(t) {\n for (var i2 = 0, o; i2 < b; ++i2)\n s[(o = q[i2]).i] = o.x(t);\n return s.join(\"\");\n });\n}\nfunction interpolate$1(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant$1(b) : (t === \"number\" ? interpolateNumber : t === \"string\" ? (c = color(b)) ? (b = c, interpolateRgb) : interpolateString : b instanceof color ? interpolateRgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : interpolateNumber)(a, b);\n}\nvar degrees = 180 / Math.PI;\nvar identity$1 = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b))\n a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d)\n c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d))\n c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c)\n a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX,\n scaleY\n };\n}\nvar svgNode;\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity$1 : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nfunction parseSvg(value) {\n if (value == null)\n return identity$1;\n if (!svgNode)\n svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate()))\n return identity$1;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180)\n b += 360;\n else if (b - a > 180)\n a += 360;\n q.push({ i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({ i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function(a, b) {\n var s = [], q = [];\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n)\n s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\nvar epsilon2 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nconst interpolateZoom = function zoomRho(rho, rho2, rho4) {\n function zoom2(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S, coshr0 = cosh(r0), u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n };\n }\n i.duration = S * 1e3 * rho / Math.SQRT2;\n return i;\n }\n zoom2.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom2;\n}(Math.SQRT2, 2, 4);\nvar frame = 0, timeout$1 = 0, interval = 0, pokeDelay = 1e3, taskHead, taskTail, clockLast = 0, clockNow = 0, clockSkew = 0, clock = typeof performance === \"object\" && performance.now ? performance : Date, setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) {\n setTimeout(f, 17);\n};\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nfunction Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\")\n throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail)\n taskTail._next = this;\n else\n taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nfunction timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nfunction timerFlush() {\n now();\n ++frame;\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0)\n t._call.call(void 0, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout$1 = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now2 = clock.now(), delay = now2 - clockLast;\n if (delay > pokeDelay)\n clockSkew -= delay, clockLast = now2;\n}\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time)\n time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame)\n return;\n if (timeout$1)\n timeout$1 = clearTimeout(timeout$1);\n var delay = time - clockNow;\n if (delay > 24) {\n if (time < Infinity)\n timeout$1 = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval)\n interval = clearInterval(interval);\n } else {\n if (!interval)\n clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\nfunction timeout(callback, delay, time) {\n var t = new Timer();\n delay = delay == null ? 0 : +delay;\n t.restart((elapsed) => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\nfunction schedule(node, name, id2, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules)\n node.__transition = {};\n else if (id2 in schedules)\n return;\n create(node, id2, {\n name,\n index,\n // For context during callback.\n group,\n // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\nfunction init(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > CREATED)\n throw new Error(\"too late; already scheduled\");\n return schedule2;\n}\nfunction set(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > STARTED)\n throw new Error(\"too late; already running\");\n return schedule2;\n}\nfunction get(node, id2) {\n var schedule2 = node.__transition;\n if (!schedule2 || !(schedule2 = schedule2[id2]))\n throw new Error(\"transition not found\");\n return schedule2;\n}\nfunction create(node, id2, self) {\n var schedules = node.__transition, tween;\n schedules[id2] = self;\n self.timer = timer(schedule2, 0, self.time);\n function schedule2(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start2, self.delay, self.time);\n if (self.delay <= elapsed)\n start2(elapsed - self.delay);\n }\n function start2(elapsed) {\n var i, j, n, o;\n if (self.state !== SCHEDULED)\n return stop();\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name)\n continue;\n if (o.state === STARTED)\n return timeout(start2);\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n } else if (+i < id2) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING)\n return;\n self.state = STARTED;\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), i = -1, n = tween.length;\n while (++i < n) {\n tween[i].call(node, t);\n }\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id2];\n for (var i in schedules)\n return;\n delete node.__transition;\n }\n}\nfunction interrupt(node, name) {\n var schedules = node.__transition, schedule2, active, empty2 = true, i;\n if (!schedules)\n return;\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule2 = schedules[i]).name !== name) {\n empty2 = false;\n continue;\n }\n active = schedule2.state > STARTING && schedule2.state < ENDING;\n schedule2.state = ENDED;\n schedule2.timer.stop();\n schedule2.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule2.index, schedule2.group);\n delete schedules[i];\n }\n if (empty2)\n delete node.__transition;\n}\nfunction selection_interrupt(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\nfunction tweenRemove(id2, name) {\n var tween0, tween1;\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n schedule2.tween = tween1;\n };\n}\nfunction tweenFunction(id2, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = { name, value }, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n)\n tween1.push(t);\n }\n schedule2.tween = tween1;\n };\n}\nfunction transition_tween(name, value) {\n var id2 = this._id;\n name += \"\";\n if (arguments.length < 2) {\n var tween = get(this.node(), id2).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n return this.each((value == null ? tweenRemove : tweenFunction)(id2, name, value));\n}\nfunction tweenValue(transition, name, value) {\n var id2 = transition._id;\n transition.each(function() {\n var schedule2 = set(this, id2);\n (schedule2.value || (schedule2.value = {}))[name] = value.apply(this, arguments);\n });\n return function(node) {\n return get(node, id2).value[name];\n };\n}\nfunction interpolate(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber : b instanceof color ? interpolateRgb : (c = color(b)) ? (b = c, interpolateRgb) : interpolateString)(a, b);\n}\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrConstantNS(fullname, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction attrFunctionNS(fullname, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction transition_attr(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransformSvg : interpolate;\n return this.attrTween(name, typeof value === \"function\" ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value)) : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_attrTween(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\nfunction delayFunction(id2, value) {\n return function() {\n init(this, id2).delay = +value.apply(this, arguments);\n };\n}\nfunction delayConstant(id2, value) {\n return value = +value, function() {\n init(this, id2).delay = value;\n };\n}\nfunction transition_delay(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? delayFunction : delayConstant)(id2, value)) : get(this.node(), id2).delay;\n}\nfunction durationFunction(id2, value) {\n return function() {\n set(this, id2).duration = +value.apply(this, arguments);\n };\n}\nfunction durationConstant(id2, value) {\n return value = +value, function() {\n set(this, id2).duration = value;\n };\n}\nfunction transition_duration(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? durationFunction : durationConstant)(id2, value)) : get(this.node(), id2).duration;\n}\nfunction easeConstant(id2, value) {\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n set(this, id2).ease = value;\n };\n}\nfunction transition_ease(value) {\n var id2 = this._id;\n return arguments.length ? this.each(easeConstant(id2, value)) : get(this.node(), id2).ease;\n}\nfunction easeVarying(id2, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\")\n throw new Error();\n set(this, id2).ease = v;\n };\n}\nfunction transition_easeVarying(value) {\n if (typeof value !== \"function\")\n throw new Error();\n return this.each(easeVarying(this._id, value));\n}\nfunction transition_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\nfunction transition_merge(transition) {\n if (transition._id !== this._id)\n throw new Error();\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Transition(merges, this._parents, this._name, this._id);\n}\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0)\n t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\nfunction onFunction(id2, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule2 = sit(this, id2), on = schedule2.on;\n if (on !== on0)\n (on1 = (on0 = on).copy()).on(name, listener);\n schedule2.on = on1;\n };\n}\nfunction transition_on(name, listener) {\n var id2 = this._id;\n return arguments.length < 2 ? get(this.node(), id2).on.on(name) : this.each(onFunction(id2, name, listener));\n}\nfunction removeFunction(id2) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition)\n if (+i !== id2)\n return;\n if (parent)\n parent.removeChild(this);\n };\n}\nfunction transition_remove() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\nfunction transition_select(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id2, i, subgroup, get(node, id2));\n }\n }\n }\n return new Transition(subgroups, this._parents, name, id2);\n}\nfunction transition_selectAll(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children2 = select2.call(node, node.__data__, i, group), child, inherit2 = get(node, id2), k = 0, l = children2.length; k < l; ++k) {\n if (child = children2[k]) {\n schedule(child, name, id2, k, children2, inherit2);\n }\n }\n subgroups.push(children2);\n parents.push(node);\n }\n }\n }\n return new Transition(subgroups, parents, name, id2);\n}\nvar Selection = selection.prototype.constructor;\nfunction transition_selection() {\n return new Selection(this._groups, this._parents);\n}\nfunction styleNull(name, interpolate2) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), string1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, string10 = string1);\n };\n}\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = styleValue(this, name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction styleFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), value1 = value(this), string1 = value1 + \"\";\n if (value1 == null)\n string1 = value1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction styleMaybeRemove(id2, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove2;\n return function() {\n var schedule2 = set(this, id2), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name)) : void 0;\n if (on !== on0 || listener0 !== listener)\n (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n schedule2.on = on1;\n };\n}\nfunction transition_style(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransformCss : interpolate;\n return value == null ? this.styleTween(name, styleNull(name, i)).on(\"end.style.\" + name, styleRemove(name)) : typeof value === \"function\" ? this.styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant(name, i, value), priority).on(\"end.style.\" + name, null);\n}\nfunction styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_styleTween(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\nfunction transition_text(value) {\n return this.tween(\"text\", typeof value === \"function\" ? textFunction(tweenValue(this, \"text\", value)) : textConstant(value == null ? \"\" : value + \"\"));\n}\nfunction textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_textTween(value) {\n var key = \"text\";\n if (arguments.length < 1)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, textTween(value));\n}\nfunction transition_transition() {\n var name = this._name, id0 = this._id, id1 = newId();\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit2 = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit2.time + inherit2.delay + inherit2.duration,\n delay: 0,\n duration: inherit2.duration,\n ease: inherit2.ease\n });\n }\n }\n }\n return new Transition(groups, this._parents, name, id1);\n}\nfunction transition_end() {\n var on0, on1, that = this, id2 = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = { value: reject }, end = { value: function() {\n if (--size === 0)\n resolve();\n } };\n that.each(function() {\n var schedule2 = set(this, id2), on = schedule2.on;\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n schedule2.on = on1;\n });\n if (size === 0)\n resolve();\n });\n}\nvar id = 0;\nfunction Transition(groups, parents, name, id2) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id2;\n}\nfunction newId() {\n return ++id;\n}\nvar selection_prototype = selection.prototype;\nTransition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\nvar defaultTiming = {\n time: null,\n // Set on use.\n delay: 0,\n duration: 250,\n ease: cubicInOut\n};\nfunction inherit(node, id2) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id2])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id2} not found`);\n }\n }\n return timing;\n}\nfunction selection_transition(name) {\n var id2, timing;\n if (name instanceof Transition) {\n id2 = name._id, name = name._name;\n } else {\n id2 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id2, i, group, timing || inherit(node, id2));\n }\n }\n }\n return new Transition(groups, this._parents, name, id2);\n}\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\nconst constant = (x) => () => x;\nfunction ZoomEvent(type, {\n sourceEvent: sourceEvent2,\n target,\n transform,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n transform: { value: transform, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nfunction Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\nvar identity = new Transform(1, 0, 0);\nTransform.prototype;\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === \"wheel\") && !event.button;\n}\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * (event.ctrlKey ? 10 : 1);\n}\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\nfunction zoom() {\n var filter2 = defaultFilter, extent = defaultExtent, constrain = defaultConstrain, wheelDelta = defaultWheelDelta, touchable = defaultTouchable, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], duration = 250, interpolate2 = interpolateZoom, listeners = dispatch(\"start\", \"zoom\", \"end\"), touchstarting, touchfirst, touchending, touchDelay = 500, wheelDelay = 150, clickDistance2 = 0, tapDistance = 10;\n function zoom2(selection2) {\n selection2.property(\"__zoom\", defaultTransform).on(\"wheel.zoom\", wheeled, { passive: false }).on(\"mousedown.zoom\", mousedowned).on(\"dblclick.zoom\", dblclicked).filter(touchable).on(\"touchstart.zoom\", touchstarted).on(\"touchmove.zoom\", touchmoved).on(\"touchend.zoom touchcancel.zoom\", touchended).style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n zoom2.transform = function(collection, transform, point, event) {\n var selection2 = collection.selection ? collection.selection() : collection;\n selection2.property(\"__zoom\", defaultTransform);\n if (collection !== selection2) {\n schedule2(collection, transform, point, event);\n } else {\n selection2.interrupt().each(function() {\n gesture(this, arguments).event(event).start().zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform).end();\n });\n }\n };\n zoom2.scaleBy = function(selection2, k, p, event) {\n zoom2.scaleTo(selection2, function() {\n var k0 = this.__zoom.k, k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n zoom2.scaleTo = function(selection2, k, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t0 = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p, p1 = t0.invert(p0), k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n zoom2.translateBy = function(selection2, x, y, event) {\n zoom2.transform(selection2, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n zoom2.translateTo = function(selection2, x, y, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n function centroid(extent2) {\n return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2];\n }\n function schedule2(transition, transform, point, event) {\n transition.on(\"start.zoom\", function() {\n gesture(this, arguments).event(event).start();\n }).on(\"interrupt.zoom end.zoom\", function() {\n gesture(this, arguments).event(event).end();\n }).tween(\"zoom\", function() {\n var that = this, args = arguments, g = gesture(that, args).event(event), e = extent.apply(that, args), p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a = that.__zoom, b = typeof transform === \"function\" ? transform.apply(that, args) : transform, i = interpolate2(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1)\n t = b;\n else {\n var l = i(t), k = w / l[2];\n t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);\n }\n g.zoom(null, t);\n };\n });\n }\n function gesture(that, args, clean) {\n return !clean && that.__zooming || new Gesture(that, args);\n }\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n Gesture.prototype = {\n event: function(event) {\n if (event)\n this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\")\n this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\")\n this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\")\n this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom2,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n function wheeled(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var g = gesture(this, args).event(event), t = this.__zoom, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = pointer(event);\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n } else if (t.k === k)\n return;\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n function mousedowned(event, ...args) {\n if (touchending || !filter2.apply(this, arguments))\n return;\n var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true), p = pointer(event, currentTarget), x0 = event.clientX, y0 = event.clientY;\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n function mousemoved(event2) {\n noevent(event2);\n if (!g.moved) {\n var dx = event2.clientX - x0, dy = event2.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event2).zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event2, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n function mouseupped(event2) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n yesdrag(event2.view, g.moved);\n noevent(event2);\n g.event(event2).end();\n }\n }\n function dblclicked(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var t0 = this.__zoom, p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), p1 = t0.invert(p0), k1 = t0.k * (event.shiftKey ? 0.5 : 2), t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n noevent(event);\n if (duration > 0)\n select(this).transition().duration(duration).call(schedule2, t1, p0, event);\n else\n select(this).call(zoom2.transform, t1, p0, event);\n }\n function touchstarted(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var touches = event.touches, n = touches.length, g = gesture(this, args, event.changedTouches.length === n).event(event), started, i, t, p;\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0)\n g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2])\n g.touch1 = p, g.taps = 0;\n }\n if (touchstarting)\n touchstarting = clearTimeout(touchstarting);\n if (started) {\n if (g.taps < 2)\n touchfirst = p[0], touchstarting = setTimeout(function() {\n touchstarting = null;\n }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n function touchmoved(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t, p, l;\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier)\n g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1], p1 = g.touch1[0], l1 = g.touch1[1], dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n } else if (g.touch0)\n p = g.touch0[0], l = g.touch0[1];\n else\n return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n function touchended(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t;\n nopropagation(event);\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier)\n delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n delete g.touch1;\n }\n if (g.touch1 && !g.touch0)\n g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0)\n g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p)\n p.apply(this, arguments);\n }\n }\n }\n }\n zoom2.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom2) : wheelDelta;\n };\n zoom2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : filter2;\n };\n zoom2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : touchable;\n };\n zoom2.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom2) : extent;\n };\n zoom2.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom2) : [scaleExtent[0], scaleExtent[1]];\n };\n zoom2.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom2) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n zoom2.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom2) : constrain;\n };\n zoom2.duration = function(_) {\n return arguments.length ? (duration = +_, zoom2) : duration;\n };\n zoom2.interpolate = function(_) {\n return arguments.length ? (interpolate2 = _, zoom2) : interpolate2;\n };\n zoom2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom2 : value;\n };\n zoom2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom2) : Math.sqrt(clickDistance2);\n };\n zoom2.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom2) : tapDistance;\n };\n return zoom2;\n}\nvar Position = /* @__PURE__ */ ((Position2) => {\n Position2[\"Left\"] = \"left\";\n Position2[\"Top\"] = \"top\";\n Position2[\"Right\"] = \"right\";\n Position2[\"Bottom\"] = \"bottom\";\n return Position2;\n})(Position || {});\nvar SelectionMode = /* @__PURE__ */ ((SelectionMode2) => {\n SelectionMode2[\"Partial\"] = \"partial\";\n SelectionMode2[\"Full\"] = \"full\";\n return SelectionMode2;\n})(SelectionMode || {});\nvar ConnectionLineType = /* @__PURE__ */ ((ConnectionLineType2) => {\n ConnectionLineType2[\"Bezier\"] = \"default\";\n ConnectionLineType2[\"SimpleBezier\"] = \"simple-bezier\";\n ConnectionLineType2[\"Straight\"] = \"straight\";\n ConnectionLineType2[\"Step\"] = \"step\";\n ConnectionLineType2[\"SmoothStep\"] = \"smoothstep\";\n return ConnectionLineType2;\n})(ConnectionLineType || {});\nvar ConnectionMode = /* @__PURE__ */ ((ConnectionMode2) => {\n ConnectionMode2[\"Strict\"] = \"strict\";\n ConnectionMode2[\"Loose\"] = \"loose\";\n return ConnectionMode2;\n})(ConnectionMode || {});\nvar MarkerType = /* @__PURE__ */ ((MarkerType2) => {\n MarkerType2[\"Arrow\"] = \"arrow\";\n MarkerType2[\"ArrowClosed\"] = \"arrowclosed\";\n return MarkerType2;\n})(MarkerType || {});\nvar PanOnScrollMode = /* @__PURE__ */ ((PanOnScrollMode2) => {\n PanOnScrollMode2[\"Free\"] = \"free\";\n PanOnScrollMode2[\"Vertical\"] = \"vertical\";\n PanOnScrollMode2[\"Horizontal\"] = \"horizontal\";\n return PanOnScrollMode2;\n})(PanOnScrollMode || {});\nvar PanelPosition = /* @__PURE__ */ ((PanelPosition2) => {\n PanelPosition2[\"TopLeft\"] = \"top-left\";\n PanelPosition2[\"TopCenter\"] = \"top-center\";\n PanelPosition2[\"TopRight\"] = \"top-right\";\n PanelPosition2[\"BottomLeft\"] = \"bottom-left\";\n PanelPosition2[\"BottomCenter\"] = \"bottom-center\";\n PanelPosition2[\"BottomRight\"] = \"bottom-right\";\n return PanelPosition2;\n})(PanelPosition || {});\nconst inputTags = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\nconst defaultDoc = typeof document !== \"undefined\" ? document : null;\nfunction isInputDOMNode(event) {\n var _a, _b;\n const target = ((_b = (_a = event.composedPath) == null ? void 0 : _a.call(event)) == null ? void 0 : _b[0]) || event.target;\n const hasAttribute = typeof (target == null ? void 0 : target.hasAttribute) === \"function\" ? target.hasAttribute(\"contenteditable\") : false;\n const closest = typeof (target == null ? void 0 : target.closest) === \"function\" ? target.closest(\".nokey\") : null;\n return inputTags.includes(target == null ? void 0 : target.nodeName) || hasAttribute || !!closest;\n}\nfunction wasModifierPressed(event) {\n return event.ctrlKey || event.metaKey || event.shiftKey || event.altKey;\n}\nfunction isKeyMatch(pressedKey, keyToMatch, pressedKeys, isKeyUp) {\n const keyCombination = keyToMatch.replace(\"+\", \"\\n\").replace(\"\\n\\n\", \"\\n+\").split(\"\\n\").map((k) => k.trim().toLowerCase());\n if (keyCombination.length === 1) {\n return pressedKey.toLowerCase() === keyToMatch.toLowerCase();\n }\n if (!isKeyUp) {\n pressedKeys.add(pressedKey.toLowerCase());\n }\n const isMatch = keyCombination.every(\n (key, index) => pressedKeys.has(key) && Array.from(pressedKeys.values())[index] === keyCombination[index]\n );\n if (isKeyUp) {\n pressedKeys.delete(pressedKey.toLowerCase());\n }\n return isMatch;\n}\nfunction createKeyPredicate(keyFilter, pressedKeys) {\n return (event) => {\n if (!event.code && !event.key) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keyFilter);\n if (Array.isArray(keyFilter)) {\n return keyFilter.some((key) => isKeyMatch(event[keyOrCode], key, pressedKeys, event.type === \"keyup\"));\n }\n return isKeyMatch(event[keyOrCode], keyFilter, pressedKeys, event.type === \"keyup\");\n };\n}\nfunction useKeyOrCode(code, keysToWatch) {\n return keysToWatch.includes(code) ? \"code\" : \"key\";\n}\nfunction useKeyPress(keyFilter, options) {\n const target = computed(() => toValue$1(options == null ? void 0 : options.target) ?? defaultDoc);\n const isPressed = shallowRef(toValue$1(keyFilter) === true);\n let modifierPressed = false;\n const pressedKeys = /* @__PURE__ */ new Set();\n let currentFilter = createKeyFilterFn(toValue$1(keyFilter));\n watch(\n () => toValue$1(keyFilter),\n (nextKeyFilter, previousKeyFilter) => {\n if (typeof previousKeyFilter === \"boolean\" && typeof nextKeyFilter !== \"boolean\") {\n reset();\n }\n currentFilter = createKeyFilterFn(nextKeyFilter);\n },\n {\n immediate: true\n }\n );\n useEventListener([\"blur\", \"contextmenu\"], reset);\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n var _a, _b;\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n const preventDefault = toValue$1(options == null ? void 0 : options.preventDefault) ?? false;\n modifierPressed = wasModifierPressed(e);\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n const target2 = ((_b = (_a = e.composedPath) == null ? void 0 : _a.call(e)) == null ? void 0 : _b[0]) || e.target;\n const isInteractiveElement = (target2 == null ? void 0 : target2.nodeName) === \"BUTTON\" || (target2 == null ? void 0 : target2.nodeName) === \"A\";\n if (!preventDefault && (modifierPressed || !isInteractiveElement)) {\n e.preventDefault();\n }\n isPressed.value = true;\n },\n { eventName: \"keydown\", target }\n );\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n if (isPressed.value) {\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n modifierPressed = false;\n isPressed.value = false;\n }\n },\n { eventName: \"keyup\", target }\n );\n function reset() {\n modifierPressed = false;\n pressedKeys.clear();\n isPressed.value = toValue$1(keyFilter) === true;\n }\n function createKeyFilterFn(keyFilter2) {\n if (keyFilter2 === null) {\n reset();\n return () => false;\n }\n if (typeof keyFilter2 === \"boolean\") {\n reset();\n isPressed.value = keyFilter2;\n return () => false;\n }\n if (Array.isArray(keyFilter2) || typeof keyFilter2 === \"string\") {\n return createKeyPredicate(keyFilter2, pressedKeys);\n }\n return keyFilter2;\n }\n return isPressed;\n}\nconst ARIA_NODE_DESC_KEY = \"vue-flow__node-desc\";\nconst ARIA_EDGE_DESC_KEY = \"vue-flow__edge-desc\";\nconst ARIA_LIVE_MESSAGE = \"vue-flow__aria-live\";\nconst elementSelectionKeys = [\"Enter\", \" \", \"Escape\"];\nconst arrowKeyDiffs = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 }\n};\nfunction nodeToRect(node) {\n return {\n ...node.computedPosition || { x: 0, y: 0 },\n width: node.dimensions.width || 0,\n height: node.dimensions.height || 0\n };\n}\nfunction getOverlappingArea(rectA, rectB) {\n const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n return Math.ceil(xOverlap * yOverlap);\n}\nfunction getDimensions(node) {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n}\nfunction clamp(val, min = 0, max = 1) {\n return Math.min(Math.max(val, min), max);\n}\nfunction clampPosition(position, extent) {\n return {\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1])\n };\n}\nfunction getHostForElement(element) {\n const doc = element.getRootNode();\n if (\"elementFromPoint\" in doc) {\n return doc;\n }\n return window.document;\n}\nfunction isEdge(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"source\" in element && \"target\" in element;\n}\nfunction isGraphEdge(element) {\n return isEdge(element) && \"sourceNode\" in element && \"targetNode\" in element;\n}\nfunction isNode(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"position\" in element && !isEdge(element);\n}\nfunction isGraphNode(element) {\n return isNode(element) && \"computedPosition\" in element;\n}\nfunction isNumeric(n) {\n return !Number.isNaN(n) && Number.isFinite(n);\n}\nfunction isRect(obj) {\n return isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n}\nfunction parseNode(node, existingNode, parentNode) {\n const initialState = {\n id: node.id.toString(),\n type: node.type ?? \"default\",\n dimensions: markRaw({\n width: 0,\n height: 0\n }),\n computedPosition: markRaw({\n z: 0,\n ...node.position\n }),\n // todo: shouldn't be defined initially, as we want to use handleBounds to check if a node was actually initialized or not\n handleBounds: {\n source: [],\n target: []\n },\n draggable: void 0,\n selectable: void 0,\n connectable: void 0,\n focusable: void 0,\n selected: false,\n dragging: false,\n resizing: false,\n initialized: false,\n isParent: false,\n position: {\n x: 0,\n y: 0\n },\n data: isDef(node.data) ? node.data : {},\n events: markRaw(isDef(node.events) ? node.events : {})\n };\n return Object.assign(existingNode ?? initialState, node, { id: node.id.toString(), parentNode });\n}\nfunction parseEdge(edge, existingEdge, defaultEdgeOptions) {\n var _a, _b;\n const initialState = {\n id: edge.id.toString(),\n type: edge.type ?? (existingEdge == null ? void 0 : existingEdge.type) ?? \"default\",\n source: edge.source.toString(),\n target: edge.target.toString(),\n sourceHandle: (_a = edge.sourceHandle) == null ? void 0 : _a.toString(),\n targetHandle: (_b = edge.targetHandle) == null ? void 0 : _b.toString(),\n updatable: edge.updatable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.updatable),\n selectable: edge.selectable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.selectable),\n focusable: edge.focusable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.focusable),\n data: isDef(edge.data) ? edge.data : {},\n events: markRaw(isDef(edge.events) ? edge.events : {}),\n label: edge.label ?? \"\",\n interactionWidth: edge.interactionWidth ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.interactionWidth),\n ...defaultEdgeOptions ?? {}\n };\n return Object.assign(existingEdge ?? initialState, edge, { id: edge.id.toString() });\n}\nfunction getConnectedElements(nodeOrId, nodes, edges, dir) {\n const id2 = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const connectedIds = /* @__PURE__ */ new Set();\n const origin = dir === \"source\" ? \"target\" : \"source\";\n for (const edge of edges) {\n if (edge[origin] === id2) {\n connectedIds.add(edge[dir]);\n }\n }\n return nodes.filter((n) => connectedIds.has(n.id));\n}\nfunction getOutgoers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"target\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const outgoers = elements.filter((el) => isEdge(el) && el.source === nodeId);\n return outgoers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.target));\n}\nfunction getIncomers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"source\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const incomers = elements.filter((el) => isEdge(el) && el.target === nodeId);\n return incomers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.source));\n}\nfunction getEdgeId({ source, sourceHandle, target, targetHandle }) {\n return `vueflow__edge-${source}${sourceHandle ?? \"\"}-${target}${targetHandle ?? \"\"}`;\n}\nfunction connectionExists(edge, elements) {\n return elements.some(\n (el) => isEdge(el) && el.source === edge.source && el.target === edge.target && (el.sourceHandle === edge.sourceHandle || !el.sourceHandle && !edge.sourceHandle) && (el.targetHandle === edge.targetHandle || !el.targetHandle && !edge.targetHandle)\n );\n}\nfunction addEdge(edgeParams, elements, defaults) {\n if (!edgeParams.source || !edgeParams.target) {\n warn(\"Can't create edge. An edge needs a source and a target.\");\n return elements;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaults);\n if (connectionExists(edge, elements)) {\n return elements;\n }\n elements.push(edge);\n return elements;\n}\nfunction updateEdge(oldEdge, newConnection, elements) {\n if (!newConnection.source || !newConnection.target) {\n warn(\"Can't create new edge. An edge needs a source and a target.\");\n return elements;\n }\n const foundEdge = elements.find((e) => isEdge(e) && e.id === oldEdge.id);\n if (!foundEdge) {\n warn(`The old edge with id=${oldEdge.id} does not exist.`);\n return elements;\n }\n const edge = {\n ...oldEdge,\n id: getEdgeId(newConnection),\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n elements.splice(elements.indexOf(foundEdge), 1, edge);\n return elements.filter((e) => e.id !== oldEdge.id);\n}\nfunction rendererPointToPoint({ x, y }, { x: tx, y: ty, zoom: tScale }) {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty\n };\n}\nfunction pointToRendererPoint({ x, y }, { x: tx, y: ty, zoom: tScale }, snapToGrid = false, snapGrid = [1, 1]) {\n const position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale\n };\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n}\nfunction getBoundsOfBoxes(box1, box2) {\n return {\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2)\n };\n}\nfunction rectToBox({ x, y, width, height }) {\n return {\n x,\n y,\n x2: x + width,\n y2: y + height\n };\n}\nfunction boxToRect({ x, y, x2, y2 }) {\n return {\n x,\n y,\n width: x2 - x,\n height: y2 - y\n };\n}\nfunction getBoundsofRects(rect1, rect2) {\n return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n}\nfunction getRectOfNodes(nodes) {\n let box = {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY,\n x2: Number.NEGATIVE_INFINITY,\n y2: Number.NEGATIVE_INFINITY\n };\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n box = getBoundsOfBoxes(\n box,\n rectToBox({\n ...node.computedPosition,\n ...node.dimensions\n })\n );\n }\n return boxToRect(box);\n}\nfunction getNodesInside(nodes, rect, viewport = { x: 0, y: 0, zoom: 1 }, partially = false, excludeNonSelectableNodes = false) {\n const paneRect = {\n ...pointToRendererPoint(rect, viewport),\n width: rect.width / viewport.zoom,\n height: rect.height / viewport.zoom\n };\n const visibleNodes = [];\n for (const node of nodes) {\n const { dimensions, selectable = true, hidden = false } = node;\n const width = dimensions.width ?? node.width ?? null;\n const height = dimensions.height ?? node.height ?? null;\n if (excludeNonSelectableNodes && !selectable || hidden) {\n continue;\n }\n const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));\n const notInitialized = width === null || height === null;\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible = notInitialized || partiallyVisible || overlappingArea >= area;\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n return visibleNodes;\n}\nfunction getConnectedEdges(nodesOrId, edges) {\n const nodeIds = /* @__PURE__ */ new Set();\n if (typeof nodesOrId === \"string\") {\n nodeIds.add(nodesOrId);\n } else if (nodesOrId.length >= 1) {\n for (const n of nodesOrId) {\n nodeIds.add(n.id);\n }\n }\n return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target));\n}\nfunction getTransformForBounds(bounds, width, height, minZoom, maxZoom, padding = 0.1, offset = { x: 0, y: 0 }) {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom2 = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom2, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom + (offset.x ?? 0);\n const y = height / 2 - boundsCenterY * clampedZoom + (offset.y ?? 0);\n return { x, y, zoom: clampedZoom };\n}\nfunction getXYZPos(parentPos, computedPosition) {\n return {\n x: computedPosition.x + parentPos.x,\n y: computedPosition.y + parentPos.y,\n z: (parentPos.z > computedPosition.z ? parentPos.z : computedPosition.z) + 1\n };\n}\nfunction isParentSelected(node, findNode) {\n if (!node.parentNode) {\n return false;\n }\n const parent = findNode(node.parentNode);\n if (!parent) {\n return false;\n }\n if (parent.selected) {\n return true;\n }\n return isParentSelected(parent, findNode);\n}\nfunction getMarkerId(marker, vueFlowId) {\n if (typeof marker === \"undefined\") {\n return \"\";\n }\n if (typeof marker === \"string\") {\n return marker;\n }\n const idPrefix = vueFlowId ? `${vueFlowId}__` : \"\";\n return `${idPrefix}${Object.keys(marker).sort().map((key) => `${key}=${marker[key]}`).join(\"&\")}`;\n}\nfunction calcAutoPanVelocity(value, min, max) {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, min) / min;\n }\n if (value > max) {\n return -clamp(Math.abs(value - max), 1, min) / min;\n }\n return 0;\n}\nfunction calcAutoPan(pos, bounds, speed = 15, distance2 = 40) {\n const xMovement = calcAutoPanVelocity(pos.x, distance2, bounds.width - distance2) * speed;\n const yMovement = calcAutoPanVelocity(pos.y, distance2, bounds.height - distance2) * speed;\n return [xMovement, yMovement];\n}\nfunction handleParentExpand(updateItem, parent) {\n if (parent) {\n const extendWidth = updateItem.position.x + updateItem.dimensions.width - parent.dimensions.width;\n const extendHeight = updateItem.position.y + updateItem.dimensions.height - parent.dimensions.height;\n if (extendWidth > 0 || extendHeight > 0 || updateItem.position.x < 0 || updateItem.position.y < 0) {\n let parentStyles = {};\n if (typeof parent.style === \"function\") {\n parentStyles = { ...parent.style(parent) };\n } else if (parent.style) {\n parentStyles = { ...parent.style };\n }\n parentStyles.width = parentStyles.width ?? `${parent.dimensions.width}px`;\n parentStyles.height = parentStyles.height ?? `${parent.dimensions.height}px`;\n if (extendWidth > 0) {\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + extendWidth}px`;\n } else {\n parentStyles.width += extendWidth;\n }\n }\n if (extendHeight > 0) {\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + extendHeight}px`;\n } else {\n parentStyles.height += extendHeight;\n }\n }\n if (updateItem.position.x < 0) {\n const xDiff = Math.abs(updateItem.position.x);\n parent.position.x = parent.position.x - xDiff;\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + xDiff}px`;\n } else {\n parentStyles.width += xDiff;\n }\n updateItem.position.x = 0;\n }\n if (updateItem.position.y < 0) {\n const yDiff = Math.abs(updateItem.position.y);\n parent.position.y = parent.position.y - yDiff;\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + yDiff}px`;\n } else {\n parentStyles.height += yDiff;\n }\n updateItem.position.y = 0;\n }\n parent.dimensions.width = Number(parentStyles.width.toString().replace(\"px\", \"\"));\n parent.dimensions.height = Number(parentStyles.height.toString().replace(\"px\", \"\"));\n if (typeof parent.style === \"function\") {\n parent.style = (p) => {\n const styleFunc = parent.style;\n return {\n ...styleFunc(p),\n ...parentStyles\n };\n };\n } else {\n parent.style = {\n ...parent.style,\n ...parentStyles\n };\n }\n }\n }\n}\nfunction applyChanges(changes, elements) {\n var _a, _b;\n const addRemoveChanges = changes.filter((c) => c.type === \"add\" || c.type === \"remove\");\n for (const change of addRemoveChanges) {\n if (change.type === \"add\") {\n const index = elements.findIndex((el) => el.id === change.item.id);\n if (index === -1) {\n elements.push(change.item);\n }\n } else if (change.type === \"remove\") {\n const index = elements.findIndex((el) => el.id === change.id);\n if (index !== -1) {\n elements.splice(index, 1);\n }\n }\n }\n const elementIds = elements.map((el) => el.id);\n for (const element of elements) {\n for (const currentChange of changes) {\n if (currentChange.id !== element.id) {\n continue;\n }\n switch (currentChange.type) {\n case \"select\":\n element.selected = currentChange.selected;\n break;\n case \"position\":\n if (isGraphNode(element)) {\n if (typeof currentChange.position !== \"undefined\") {\n element.position = currentChange.position;\n }\n if (typeof currentChange.dragging !== \"undefined\") {\n element.dragging = currentChange.dragging;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n handleParentExpand(element, parent);\n }\n }\n }\n break;\n case \"dimensions\":\n if (isGraphNode(element)) {\n if (typeof currentChange.dimensions !== \"undefined\") {\n element.dimensions = currentChange.dimensions;\n }\n if (typeof currentChange.updateStyle !== \"undefined\" && currentChange.updateStyle) {\n element.style = {\n ...element.style || {},\n width: `${(_a = currentChange.dimensions) == null ? void 0 : _a.width}px`,\n height: `${(_b = currentChange.dimensions) == null ? void 0 : _b.height}px`\n };\n }\n if (typeof currentChange.resizing !== \"undefined\") {\n element.resizing = currentChange.resizing;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n const parentInit = !!parent.dimensions.width && !!parent.dimensions.height;\n if (!parentInit) {\n nextTick(() => {\n handleParentExpand(element, parent);\n });\n } else {\n handleParentExpand(element, parent);\n }\n }\n }\n }\n break;\n }\n }\n }\n return elements;\n}\nfunction applyEdgeChanges(changes, edges) {\n return applyChanges(changes, edges);\n}\nfunction applyNodeChanges(changes, nodes) {\n return applyChanges(changes, nodes);\n}\nfunction createSelectionChange(id2, selected) {\n return {\n id: id2,\n type: \"select\",\n selected\n };\n}\nfunction createAdditionChange(item) {\n return {\n item,\n type: \"add\"\n };\n}\nfunction createNodeRemoveChange(id2) {\n return {\n id: id2,\n type: \"remove\"\n };\n}\nfunction createEdgeRemoveChange(id2, source, target, sourceHandle, targetHandle) {\n return {\n id: id2,\n source,\n target,\n sourceHandle: sourceHandle || null,\n targetHandle: targetHandle || null,\n type: \"remove\"\n };\n}\nfunction getSelectionChanges(items, selectedIds = /* @__PURE__ */ new Set(), mutateItem = false) {\n const changes = [];\n for (const [id2, item] of items) {\n const willBeSelected = selectedIds.has(id2);\n if (!(item.selected === void 0 && !willBeSelected) && item.selected !== willBeSelected) {\n if (mutateItem) {\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n return changes;\n}\nfunction createExtendedEventHook(defaultHandler) {\n const fns = /* @__PURE__ */ new Set();\n let hasDefaultHandler = false;\n const hasListeners = () => fns.size > 0;\n if (defaultHandler) {\n hasDefaultHandler = true;\n fns.add(defaultHandler);\n }\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n if (defaultHandler && hasDefaultHandler) {\n fns.delete(defaultHandler);\n }\n fns.add(fn);\n const offFn = () => {\n off(fn);\n if (defaultHandler && hasDefaultHandler) {\n fns.add(defaultHandler);\n }\n };\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger,\n hasListeners,\n fns\n };\n}\nfunction hasSelector(target, selector2, node) {\n let current = target;\n do {\n if (current && current.matches(selector2)) {\n return true;\n } else if (current === node) {\n return false;\n }\n current = current.parentElement;\n } while (current);\n return false;\n}\nfunction getDragItems(nodes, nodesDraggable, mousePos, findNode, nodeId) {\n var _a, _b;\n const dragItems = [];\n for (const node of nodes) {\n if ((node.selected || node.id === nodeId) && (!node.parentNode || !isParentSelected(node, findNode)) && (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\")) {\n dragItems.push(\n markRaw({\n id: node.id,\n position: node.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - ((_a = node.computedPosition) == null ? void 0 : _a.x) || 0,\n y: mousePos.y - ((_b = node.computedPosition) == null ? void 0 : _b.y) || 0\n },\n from: node.computedPosition,\n extent: node.extent,\n parentNode: node.parentNode,\n dimensions: node.dimensions,\n expandParent: node.expandParent\n })\n );\n }\n }\n return dragItems;\n}\nfunction getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n}) {\n const extendedDragItems = [];\n for (const dragItem of dragItems) {\n const node = findNode(dragItem.id);\n if (node) {\n extendedDragItems.push(node);\n }\n }\n return [id2 ? extendedDragItems.find((n) => n.id === id2) : extendedDragItems[0], extendedDragItems];\n}\nfunction getExtentPadding(padding) {\n if (Array.isArray(padding)) {\n switch (padding.length) {\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n case 2:\n return [padding[0], padding[1], padding[0], padding[1]];\n case 3:\n return [padding[0], padding[1], padding[2], padding[1]];\n case 4:\n return padding;\n default:\n return [0, 0, 0, 0];\n }\n }\n return [padding, padding, padding, padding];\n}\nfunction getParentExtent(currentExtent, node, parent) {\n const [top, right, bottom, left] = typeof currentExtent !== \"string\" ? getExtentPadding(currentExtent.padding) : [0, 0, 0, 0];\n if (parent && typeof parent.computedPosition.x !== \"undefined\" && typeof parent.computedPosition.y !== \"undefined\" && typeof parent.dimensions.width !== \"undefined\" && typeof parent.dimensions.height !== \"undefined\") {\n return [\n [parent.computedPosition.x + left, parent.computedPosition.y + top],\n [\n parent.computedPosition.x + parent.dimensions.width - right,\n parent.computedPosition.y + parent.dimensions.height - bottom\n ]\n ];\n }\n return false;\n}\nfunction getExtent(item, triggerError, extent, parent) {\n let currentExtent = item.extent || extent;\n if ((currentExtent === \"parent\" || !Array.isArray(currentExtent) && (currentExtent == null ? void 0 : currentExtent.range) === \"parent\") && !item.expandParent) {\n if (item.parentNode && parent && item.dimensions.width && item.dimensions.height) {\n const parentExtent = getParentExtent(currentExtent, item, parent);\n if (parentExtent) {\n currentExtent = parentExtent;\n }\n } else {\n triggerError(new VueFlowError(ErrorCode.NODE_EXTENT_INVALID, item.id));\n currentExtent = extent;\n }\n } else if (Array.isArray(currentExtent)) {\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent[0][0] + parentX, currentExtent[0][1] + parentY],\n [currentExtent[1][0] + parentX, currentExtent[1][1] + parentY]\n ];\n } else if (currentExtent !== \"parent\" && (currentExtent == null ? void 0 : currentExtent.range) && Array.isArray(currentExtent.range)) {\n const [top, right, bottom, left] = getExtentPadding(currentExtent.padding);\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent.range[0][0] + parentX + left, currentExtent.range[0][1] + parentY + top],\n [currentExtent.range[1][0] + parentX - right, currentExtent.range[1][1] + parentY - bottom]\n ];\n }\n return currentExtent === \"parent\" ? [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ] : currentExtent;\n}\nfunction clampNodeExtent({ width, height }, extent) {\n return [extent[0], [extent[1][0] - (width || 0), extent[1][1] - (height || 0)]];\n}\nfunction calcNextPosition(node, nextPosition, triggerError, nodeExtent, parentNode) {\n const extent = clampNodeExtent(node.dimensions, getExtent(node, triggerError, nodeExtent, parentNode));\n const clampedPos = clampPosition(nextPosition, extent);\n return {\n position: {\n x: clampedPos.x - ((parentNode == null ? void 0 : parentNode.computedPosition.x) || 0),\n y: clampedPos.y - ((parentNode == null ? void 0 : parentNode.computedPosition.y) || 0)\n },\n computedPosition: clampedPos\n };\n}\nfunction getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) {\n const x = ((handle == null ? void 0 : handle.x) ?? 0) + node.computedPosition.x;\n const y = ((handle == null ? void 0 : handle.y) ?? 0) + node.computedPosition.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n if (center) {\n return { x: x + width / 2, y: y + height / 2 };\n }\n const position = (handle == null ? void 0 : handle.position) ?? fallbackPosition;\n switch (position) {\n case Position.Top:\n return { x: x + width / 2, y };\n case Position.Right:\n return { x: x + width, y: y + height / 2 };\n case Position.Bottom:\n return { x: x + width / 2, y: y + height };\n case Position.Left:\n return { x, y: y + height / 2 };\n }\n}\nfunction getEdgeHandle(bounds, handleId) {\n if (!bounds) {\n return null;\n }\n return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null;\n}\nfunction isEdgeVisible({\n sourcePos,\n targetPos,\n sourceWidth,\n sourceHeight,\n targetWidth,\n targetHeight,\n width,\n height,\n viewport\n}) {\n const edgeBox = {\n x: Math.min(sourcePos.x, targetPos.x),\n y: Math.min(sourcePos.y, targetPos.y),\n x2: Math.max(sourcePos.x + sourceWidth, targetPos.x + targetWidth),\n y2: Math.max(sourcePos.y + sourceHeight, targetPos.y + targetHeight)\n };\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n const viewBox = rectToBox({\n x: (0 - viewport.x) / viewport.zoom,\n y: (0 - viewport.y) / viewport.zoom,\n width: width / viewport.zoom,\n height: height / viewport.zoom\n });\n const xOverlap = Math.max(0, Math.min(viewBox.x2, edgeBox.x2) - Math.max(viewBox.x, edgeBox.x));\n const yOverlap = Math.max(0, Math.min(viewBox.y2, edgeBox.y2) - Math.max(viewBox.y, edgeBox.y));\n const overlappingArea = Math.ceil(xOverlap * yOverlap);\n return overlappingArea > 0;\n}\nfunction getEdgeZIndex(edge, findNode, elevateEdgesOnSelect = false) {\n const hasZIndex = typeof edge.zIndex === \"number\";\n let z = hasZIndex ? edge.zIndex : 0;\n const source = findNode(edge.source);\n const target = findNode(edge.target);\n if (!source || !target) {\n return 0;\n }\n if (elevateEdgesOnSelect) {\n z = hasZIndex ? edge.zIndex : Math.max(source.computedPosition.z || 0, target.computedPosition.z || 0);\n }\n return z;\n}\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[\"MISSING_STYLES\"] = \"MISSING_STYLES\";\n ErrorCode2[\"MISSING_VIEWPORT_DIMENSIONS\"] = \"MISSING_VIEWPORT_DIMENSIONS\";\n ErrorCode2[\"NODE_INVALID\"] = \"NODE_INVALID\";\n ErrorCode2[\"NODE_NOT_FOUND\"] = \"NODE_NOT_FOUND\";\n ErrorCode2[\"NODE_MISSING_PARENT\"] = \"NODE_MISSING_PARENT\";\n ErrorCode2[\"NODE_TYPE_MISSING\"] = \"NODE_TYPE_MISSING\";\n ErrorCode2[\"NODE_EXTENT_INVALID\"] = \"NODE_EXTENT_INVALID\";\n ErrorCode2[\"EDGE_INVALID\"] = \"EDGE_INVALID\";\n ErrorCode2[\"EDGE_NOT_FOUND\"] = \"EDGE_NOT_FOUND\";\n ErrorCode2[\"EDGE_SOURCE_MISSING\"] = \"EDGE_SOURCE_MISSING\";\n ErrorCode2[\"EDGE_TARGET_MISSING\"] = \"EDGE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_TYPE_MISSING\"] = \"EDGE_TYPE_MISSING\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_SAME\"] = \"EDGE_SOURCE_TARGET_SAME\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_MISSING\"] = \"EDGE_SOURCE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_ORPHANED\"] = \"EDGE_ORPHANED\";\n ErrorCode2[\"USEVUEFLOW_OPTIONS\"] = \"USEVUEFLOW_OPTIONS\";\n return ErrorCode2;\n})(ErrorCode || {});\nconst messages = {\n [\n \"MISSING_STYLES\"\n /* MISSING_STYLES */\n ]: () => `It seems that you haven't loaded the necessary styles. Please import '@vue-flow/core/dist/style.css' to ensure that the graph is rendered correctly`,\n [\n \"MISSING_VIEWPORT_DIMENSIONS\"\n /* MISSING_VIEWPORT_DIMENSIONS */\n ]: () => \"The Vue Flow parent container needs a width and a height to render the graph\",\n [\n \"NODE_INVALID\"\n /* NODE_INVALID */\n ]: (id2) => `Node is invalid\nNode: ${id2}`,\n [\n \"NODE_NOT_FOUND\"\n /* NODE_NOT_FOUND */\n ]: (id2) => `Node not found\nNode: ${id2}`,\n [\n \"NODE_MISSING_PARENT\"\n /* NODE_MISSING_PARENT */\n ]: (id2, parentId) => `Node is missing a parent\nNode: ${id2}\nParent: ${parentId}`,\n [\n \"NODE_TYPE_MISSING\"\n /* NODE_TYPE_MISSING */\n ]: (type) => `Node type is missing\nType: ${type}`,\n [\n \"NODE_EXTENT_INVALID\"\n /* NODE_EXTENT_INVALID */\n ]: (id2) => `Only child nodes can use a parent extent\nNode: ${id2}`,\n [\n \"EDGE_INVALID\"\n /* EDGE_INVALID */\n ]: (id2) => `An edge needs a source and a target\nEdge: ${id2}`,\n [\n \"EDGE_SOURCE_MISSING\"\n /* EDGE_SOURCE_MISSING */\n ]: (id2, source) => `Edge source is missing\nEdge: ${id2} \nSource: ${source}`,\n [\n \"EDGE_TARGET_MISSING\"\n /* EDGE_TARGET_MISSING */\n ]: (id2, target) => `Edge target is missing\nEdge: ${id2} \nTarget: ${target}`,\n [\n \"EDGE_TYPE_MISSING\"\n /* EDGE_TYPE_MISSING */\n ]: (type) => `Edge type is missing\nType: ${type}`,\n [\n \"EDGE_SOURCE_TARGET_SAME\"\n /* EDGE_SOURCE_TARGET_SAME */\n ]: (id2, source, target) => `Edge source and target are the same\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_SOURCE_TARGET_MISSING\"\n /* EDGE_SOURCE_TARGET_MISSING */\n ]: (id2, source, target) => `Edge source or target is missing\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_ORPHANED\"\n /* EDGE_ORPHANED */\n ]: (id2) => `Edge was orphaned (suddenly missing source or target) and has been removed\nEdge: ${id2}`,\n [\n \"EDGE_NOT_FOUND\"\n /* EDGE_NOT_FOUND */\n ]: (id2) => `Edge not found\nEdge: ${id2}`,\n // deprecation errors\n [\n \"USEVUEFLOW_OPTIONS\"\n /* USEVUEFLOW_OPTIONS */\n ]: () => `The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead`\n};\nclass VueFlowError extends Error {\n constructor(code, ...args) {\n var _a;\n super((_a = messages[code]) == null ? void 0 : _a.call(messages, ...args));\n this.name = \"VueFlowError\";\n this.code = code;\n this.args = args;\n }\n}\nfunction isErrorOfType(error, code) {\n return error.code === code;\n}\nfunction isMouseEvent(event) {\n return \"clientX\" in event;\n}\nfunction isUseDragEvent(event) {\n return \"sourceEvent\" in event;\n}\nfunction getEventPosition(event, bounds) {\n const isMouse = isMouseEvent(event);\n let evtX;\n let evtY;\n if (isMouse) {\n evtX = event.clientX;\n evtY = event.clientY;\n } else if (\"touches\" in event && event.touches.length > 0) {\n evtX = event.touches[0].clientX;\n evtY = event.touches[0].clientY;\n } else if (\"changedTouches\" in event && event.changedTouches.length > 0) {\n evtX = event.changedTouches[0].clientX;\n evtY = event.changedTouches[0].clientY;\n } else {\n evtX = 0;\n evtY = 0;\n }\n return {\n x: evtX - ((bounds == null ? void 0 : bounds.left) ?? 0),\n y: evtY - ((bounds == null ? void 0 : bounds.top) ?? 0)\n };\n}\nconst isMacOs = () => {\n var _a;\n return typeof navigator !== \"undefined\" && ((_a = navigator == null ? void 0 : navigator.userAgent) == null ? void 0 : _a.indexOf(\"Mac\")) >= 0;\n};\nfunction getNodeDimensions(node) {\n var _a, _b;\n return {\n width: ((_a = node.dimensions) == null ? void 0 : _a.width) ?? node.width ?? 0,\n height: ((_b = node.dimensions) == null ? void 0 : _b.height) ?? node.height ?? 0\n };\n}\nfunction snapPosition(position, snapGrid = [1, 1]) {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1])\n };\n}\nconst alwaysValid$1 = () => true;\nfunction resetRecentHandle(handleDomNode) {\n handleDomNode == null ? void 0 : handleDomNode.classList.remove(\"valid\", \"connecting\", \"vue-flow__handle-valid\", \"vue-flow__handle-connecting\");\n}\nfunction getNodesWithinDistance(position, nodeLookup, distance2) {\n const nodes = [];\n const rect = {\n x: position.x - distance2,\n y: position.y - distance2,\n width: distance2 * 2,\n height: distance2 * 2\n };\n for (const node of nodeLookup.values()) {\n if (getOverlappingArea(rect, nodeToRect(node)) > 0) {\n nodes.push(node);\n }\n }\n return nodes;\n}\nconst ADDITIONAL_DISTANCE = 250;\nfunction getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {\n var _a, _b;\n let closestHandles = [];\n let minDistance = Number.POSITIVE_INFINITY;\n const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);\n for (const node of closeNodes) {\n const allHandles = [...((_a = node.handleBounds) == null ? void 0 : _a.source) ?? [], ...((_b = node.handleBounds) == null ? void 0 : _b.target) ?? []];\n for (const handle of allHandles) {\n if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {\n continue;\n }\n const { x, y } = getHandlePosition(node, handle, handle.position, true);\n const distance2 = Math.sqrt((x - position.x) ** 2 + (y - position.y) ** 2);\n if (distance2 > connectionRadius) {\n continue;\n }\n if (distance2 < minDistance) {\n closestHandles = [{ ...handle, x, y }];\n minDistance = distance2;\n } else if (distance2 === minDistance) {\n closestHandles.push({ ...handle, x, y });\n }\n }\n }\n if (!closestHandles.length) {\n return null;\n }\n if (closestHandles.length > 1) {\n const oppositeHandleType = fromHandle.type === \"source\" ? \"target\" : \"source\";\n return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];\n }\n return closestHandles[0];\n}\nfunction isValidHandle(event, {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid$1\n}, edges, nodes, findNode) {\n const isTarget = fromType === \"target\";\n const handleDomNode = handle ? doc.querySelector(`.${lib}-flow__handle[data-id=\"${flowId}-${handle == null ? void 0 : handle.nodeId}-${handle == null ? void 0 : handle.id}-${handle == null ? void 0 : handle.type}\"]`) : null;\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n const handleToCheck = (handleBelow == null ? void 0 : handleBelow.classList.contains(`${lib}-flow__handle`)) ? handleBelow : handleDomNode;\n const result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n toHandle: null\n };\n if (handleToCheck) {\n const handleType = getHandleType(void 0, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute(\"data-nodeid\");\n const handleId = handleToCheck.getAttribute(\"data-handleid\");\n const connectable = handleToCheck.classList.contains(\"connectable\");\n const connectableEnd = handleToCheck.classList.contains(\"connectableend\");\n if (!handleNodeId || !handleType) {\n return result;\n }\n const connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId\n };\n result.connection = connection;\n const isConnectable = connectable && connectableEnd;\n const isValid = isConnectable && (connectionMode === ConnectionMode.Strict ? isTarget && handleType === \"source\" || !isTarget && handleType === \"target\" : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n result.isValid = isValid && isValidConnection(connection, {\n nodes,\n edges,\n sourceNode: findNode(fromNodeId),\n targetNode: findNode(handleNodeId)\n });\n result.toHandle = handle;\n }\n return result;\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"target\")) {\n return \"target\";\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"source\")) {\n return \"source\";\n }\n return null;\n}\nfunction getConnectionStatus(isInsideConnectionRadius, isHandleValid) {\n let connectionStatus = null;\n if (isHandleValid) {\n connectionStatus = \"valid\";\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = \"invalid\";\n }\n return connectionStatus;\n}\nfunction isConnectionValid(isInsideConnectionRadius, isHandleValid) {\n let isValid = null;\n if (isHandleValid) {\n isValid = true;\n } else if (isInsideConnectionRadius && !isHandleValid) {\n isValid = false;\n }\n return isValid;\n}\nfunction getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) {\n var _a, _b, _c;\n const node = nodeLookup.get(nodeId);\n if (!node) {\n return null;\n }\n const handles = connectionMode === ConnectionMode.Strict ? (_a = node.handleBounds) == null ? void 0 : _a[handleType] : [...((_b = node.handleBounds) == null ? void 0 : _b.source) ?? [], ...((_c = node.handleBounds) == null ? void 0 : _c.target) ?? []];\n const handle = (handleId ? handles == null ? void 0 : handles.find((h2) => h2.id === handleId) : handles == null ? void 0 : handles[0]) ?? null;\n return handle && withAbsolutePosition ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) } : handle;\n}\nconst oppositePosition = {\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top\n};\nconst productionEnvs = [\"production\", \"prod\"];\nfunction warn(message, ...args) {\n if (isDev()) {\n console.warn(`[Vue Flow]: ${message}`, ...args);\n }\n}\nfunction isDev() {\n return !productionEnvs.includes(process.env.NODE_ENV || \"\");\n}\nfunction getHandleBounds(type, nodeElement, nodeBounds, zoom2, nodeId) {\n const handles = nodeElement.querySelectorAll(`.vue-flow__handle.${type}`);\n if (!(handles == null ? void 0 : handles.length)) {\n return null;\n }\n return Array.from(handles).map((handle) => {\n const handleBounds = handle.getBoundingClientRect();\n return {\n id: handle.getAttribute(\"data-handleid\"),\n type,\n nodeId,\n position: handle.getAttribute(\"data-handlepos\"),\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n ...getDimensions(handle)\n };\n });\n}\nfunction handleNodeClick(node, multiSelectionActive, addSelectedNodes, removeSelectedNodes, nodesSelectionActive, unselect = false, nodeEl) {\n nodesSelectionActive.value = false;\n if (!node.selected) {\n addSelectedNodes([node]);\n } else if (unselect || node.selected && multiSelectionActive) {\n removeSelectedNodes([node]);\n nextTick(() => {\n nodeEl.blur();\n });\n }\n}\nfunction isDef(val) {\n const unrefVal = unref(val);\n return typeof unrefVal !== \"undefined\";\n}\nfunction addEdgeToStore(edgeParams, edges, triggerError, defaultEdgeOptions) {\n if (!edgeParams || !edgeParams.source || !edgeParams.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, (edgeParams == null ? void 0 : edgeParams.id) ?? `[ID UNKNOWN]`));\n return false;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = edgeParams;\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaultEdgeOptions);\n if (connectionExists(edge, edges)) {\n return false;\n }\n return edge;\n}\nfunction updateEdgeAction(edge, newConnection, prevEdge, shouldReplaceId, triggerError) {\n if (!newConnection.source || !newConnection.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n return false;\n }\n if (!prevEdge) {\n triggerError(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edge.id));\n return false;\n }\n const { id: id2, ...rest } = edge;\n return {\n ...rest,\n id: shouldReplaceId ? getEdgeId(newConnection) : id2,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n}\nfunction createGraphNodes(nodes, findNode, triggerError) {\n const parentNodes = {};\n const nextNodes = [];\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n if (!isNode(node)) {\n triggerError(\n new VueFlowError(ErrorCode.NODE_INVALID, node == null ? void 0 : node.id) || `[ID UNKNOWN|INDEX ${i}]`\n );\n continue;\n }\n const parsed = parseNode(node, findNode(node.id), node.parentNode);\n if (node.parentNode) {\n parentNodes[node.parentNode] = true;\n }\n nextNodes[i] = parsed;\n }\n for (const node of nextNodes) {\n const parentNode = findNode(node.parentNode) || nextNodes.find((n) => n.id === node.parentNode);\n if (node.parentNode && !parentNode) {\n triggerError(new VueFlowError(ErrorCode.NODE_MISSING_PARENT, node.id, node.parentNode));\n }\n if (node.parentNode || parentNodes[node.id]) {\n if (parentNodes[node.id]) {\n node.isParent = true;\n }\n if (parentNode) {\n parentNode.isParent = true;\n }\n }\n }\n return nextNodes;\n}\nfunction addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {\n let key = nodeId;\n const nodeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, nodeMap.set(connectionKey, connection));\n key = `${nodeId}-${type}`;\n const typeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, typeMap.set(connectionKey, connection));\n if (handleId) {\n key = `${nodeId}-${type}-${handleId}`;\n const handleMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, handleMap.set(connectionKey, connection));\n }\n}\nfunction updateConnectionLookup(connectionLookup, edgeLookup, edges) {\n connectionLookup.clear();\n for (const edge of edges) {\n const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge;\n const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle };\n const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`;\n const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`;\n addConnectionToLookup(\"source\", connection, targetKey, connectionLookup, sourceNode, sourceHandle);\n addConnectionToLookup(\"target\", connection, sourceKey, connectionLookup, targetNode, targetHandle);\n }\n}\nfunction handleConnectionChange(a, b, cb) {\n if (!cb) {\n return;\n }\n const diff = [];\n for (const key of a.keys()) {\n if (!b.has(key)) {\n diff.push(a.get(key));\n }\n }\n if (diff.length) {\n cb(diff);\n }\n}\nfunction areConnectionMapsEqual(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.size !== b.size) {\n return false;\n }\n if (!a.size && !b.size) {\n return true;\n }\n for (const key of a.keys()) {\n if (!b.has(key)) {\n return false;\n }\n }\n return true;\n}\nfunction areSetsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n}\nfunction createGraphEdges(nextEdges, isValidConnection, findNode, findEdge, onError, defaultEdgeOptions, nodes, edges) {\n const validEdges = [];\n for (const edgeOrConnection of nextEdges) {\n const edge = isEdge(edgeOrConnection) ? edgeOrConnection : addEdgeToStore(edgeOrConnection, edges, onError, defaultEdgeOptions);\n if (!edge) {\n continue;\n }\n const sourceNode = findNode(edge.source);\n const targetNode = findNode(edge.target);\n if (!sourceNode || !targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.id, edge.source, edge.target));\n continue;\n }\n if (!sourceNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.id, edge.source));\n continue;\n }\n if (!targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.id, edge.target));\n continue;\n }\n if (isValidConnection) {\n const isValid = isValidConnection(edge, {\n edges,\n nodes,\n sourceNode,\n targetNode\n });\n if (!isValid) {\n onError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n continue;\n }\n }\n const existingEdge = findEdge(edge.id);\n validEdges.push({\n ...parseEdge(edge, existingEdge, defaultEdgeOptions),\n sourceNode,\n targetNode\n });\n }\n return validEdges;\n}\nconst VueFlow = Symbol(\"vueFlow\");\nconst NodeId = Symbol(\"nodeId\");\nconst NodeRef = Symbol(\"nodeRef\");\nconst EdgeId = Symbol(\"edgeId\");\nconst EdgeRef = Symbol(\"edgeRef\");\nconst Slots = Symbol(\"slots\");\nfunction useDrag(params) {\n const {\n vueFlowRef,\n snapToGrid,\n snapGrid,\n noDragClassName,\n nodes,\n nodeExtent,\n nodeDragThreshold,\n viewport,\n autoPanOnNodeDrag,\n autoPanSpeed,\n nodesDraggable,\n panBy,\n findNode,\n multiSelectionActive,\n nodesSelectionActive,\n selectNodesOnDrag,\n removeSelectedElements,\n addSelectedNodes,\n updateNodePositions,\n emits\n } = useVueFlow();\n const { onStart, onDrag, onStop, onClick, el, disabled, id: id2, selectable, dragHandle } = params;\n const dragging = shallowRef(false);\n let dragItems = [];\n let dragHandler;\n let containerBounds = null;\n let lastPos = { x: void 0, y: void 0 };\n let mousePosition = { x: 0, y: 0 };\n let dragEvent = null;\n let dragStarted = false;\n let autoPanId = 0;\n let autoPanStarted = false;\n const getPointerPosition = useGetPointerPosition();\n const updateNodes = ({ x, y }) => {\n lastPos = { x, y };\n let hasChange = false;\n dragItems = dragItems.map((n) => {\n const nextPosition = { x: x - n.distance.x, y: y - n.distance.y };\n const { computedPosition } = calcNextPosition(\n n,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n n.parentNode ? findNode(n.parentNode) : void 0\n );\n hasChange = hasChange || n.position.x !== computedPosition.x || n.position.y !== computedPosition.y;\n n.position = computedPosition;\n return n;\n });\n if (!hasChange) {\n return;\n }\n updateNodePositions(dragItems, true, true);\n dragging.value = true;\n if (dragEvent) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onDrag({ event: dragEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const autoPan = () => {\n if (!containerBounds) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed.value);\n if (xMovement !== 0 || yMovement !== 0) {\n const nextPos = {\n x: (lastPos.x ?? 0) - xMovement / viewport.value.zoom,\n y: (lastPos.y ?? 0) - yMovement / viewport.value.zoom\n };\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(nextPos);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n };\n const startDrag = (event, nodeEl) => {\n dragStarted = true;\n const node = findNode(id2);\n if (!selectNodesOnDrag.value && !multiSelectionActive.value && node) {\n if (!node.selected) {\n removeSelectedElements();\n }\n }\n if (node && toValue$1(selectable) && selectNodesOnDrag.value) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedElements,\n nodesSelectionActive,\n false,\n nodeEl\n );\n }\n const pointerPos = getPointerPosition(event.sourceEvent);\n lastPos = pointerPos;\n dragItems = getDragItems(nodes.value, nodesDraggable.value, pointerPos, findNode, id2);\n if (dragItems.length) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStart({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const eventStart = (event, nodeEl) => {\n var _a;\n if (event.sourceEvent.type === \"touchmove\" && event.sourceEvent.touches.length > 1) {\n return;\n }\n if (nodeDragThreshold.value === 0) {\n startDrag(event, nodeEl);\n }\n lastPos = getPointerPosition(event.sourceEvent);\n containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n };\n const eventDrag = (event, nodeEl) => {\n const pointerPos = getPointerPosition(event.sourceEvent);\n if (!autoPanStarted && dragStarted && autoPanOnNodeDrag.value) {\n autoPanStarted = true;\n autoPan();\n }\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 > nodeDragThreshold.value) {\n startDrag(event, nodeEl);\n }\n }\n if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems.length && dragStarted) {\n dragEvent = event.sourceEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n updateNodes(pointerPos);\n }\n };\n const eventEnd = (event) => {\n let isClick = false;\n if (!dragStarted && !dragging.value && !multiSelectionActive.value) {\n const evt = event.sourceEvent;\n const pointerPos = getPointerPosition(evt);\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 !== 0 && distance2 <= nodeDragThreshold.value) {\n onClick == null ? void 0 : onClick(evt);\n isClick = true;\n }\n }\n if (dragItems.length && !isClick) {\n updateNodePositions(dragItems, false, false);\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStop({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n dragItems = [];\n dragging.value = false;\n autoPanStarted = false;\n dragStarted = false;\n lastPos = { x: void 0, y: void 0 };\n cancelAnimationFrame(autoPanId);\n };\n watch([() => toValue$1(disabled), el], ([isDisabled, nodeEl], _, onCleanup) => {\n if (nodeEl) {\n const selection2 = select(nodeEl);\n if (!isDisabled) {\n dragHandler = drag().on(\"start\", (event) => eventStart(event, nodeEl)).on(\"drag\", (event) => eventDrag(event, nodeEl)).on(\"end\", (event) => eventEnd(event)).filter((event) => {\n const target = event.target;\n const unrefDragHandle = toValue$1(dragHandle);\n return !event.button && (!noDragClassName.value || !hasSelector(target, `.${noDragClassName.value}`, nodeEl) && (!unrefDragHandle || hasSelector(target, unrefDragHandle, nodeEl)));\n });\n selection2.call(dragHandler);\n }\n onCleanup(() => {\n selection2.on(\".drag\", null);\n if (dragHandler) {\n dragHandler.on(\"start\", null);\n dragHandler.on(\"drag\", null);\n dragHandler.on(\"end\", null);\n }\n });\n }\n });\n return dragging;\n}\nfunction useEdge(id2) {\n const edgeId = id2 ?? inject(EdgeId, \"\");\n const edgeEl = inject(EdgeRef, ref(null));\n const { findEdge, emits } = useVueFlow();\n const edge = findEdge(edgeId);\n if (!edge) {\n emits.error(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edgeId));\n }\n return {\n id: edgeId,\n edge,\n edgeEl\n };\n}\nfunction createEdgeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n updateStart: createExtendedEventHook(),\n update: createExtendedEventHook(),\n updateEnd: createExtendedEventHook()\n };\n}\nfunction useEdgeHooks(edge, emits) {\n const edgeHooks = createEdgeHooks();\n edgeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.edgeDoubleClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.click.on((event) => {\n var _a, _b;\n emits.edgeClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.edgeMouseEnter(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.edgeMouseMove(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.edgeMouseLeave(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.edgeContextMenu(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateStart.on((event) => {\n var _a, _b;\n emits.edgeUpdateStart(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateStart) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.update.on((event) => {\n var _a, _b;\n emits.edgeUpdate(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.update) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateEnd.on((event) => {\n var _a, _b;\n emits.edgeUpdateEnd(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateEnd) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(edgeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useGetPointerPosition() {\n const { viewport, snapGrid, snapToGrid, vueFlowRef } = useVueFlow();\n return (event) => {\n var _a;\n const containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? { left: 0, top: 0 };\n const evt = isUseDragEvent(event) ? event.sourceEvent : event;\n const { x, y } = getEventPosition(evt, containerBounds);\n const pointerPos = pointToRendererPoint({ x, y }, viewport.value);\n const { x: xSnapped, y: ySnapped } = snapToGrid.value ? snapPosition(pointerPos, snapGrid.value) : pointerPos;\n return {\n xSnapped,\n ySnapped,\n ...pointerPos\n };\n };\n}\nfunction alwaysValid() {\n return true;\n}\nfunction useHandle({\n handleId,\n nodeId,\n type,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n}) {\n const {\n id: flowId,\n vueFlowRef,\n connectionMode,\n connectionRadius,\n connectOnClick,\n connectionClickStartHandle,\n nodesConnectable,\n autoPanOnConnect,\n autoPanSpeed,\n findNode,\n panBy,\n startConnection,\n updateConnection,\n endConnection,\n emits,\n viewport,\n edges,\n nodes,\n isValidConnection: isValidConnectionProp,\n nodeLookup\n } = useVueFlow();\n let connection = null;\n let isValid = false;\n let handleDomNode = null;\n function handlePointerDown(event) {\n var _a;\n const isTarget = toValue$1(type) === \"target\";\n const isMouseTriggered = isMouseEvent(event);\n const doc = getHostForElement(event.target);\n if (isMouseTriggered && event.button === 0 || !isMouseTriggered) {\n let onPointerMove = function(event2) {\n connectionPosition = getEventPosition(event2, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, viewport.value, false, [1, 1]),\n connectionRadius.value,\n nodeLookup.value,\n fromHandle\n );\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n const result = isValidHandle(\n event2,\n {\n handle: closestHandle,\n connectionMode: connectionMode.value,\n fromNodeId: toValue$1(nodeId),\n fromHandleId: toValue$1(handleId),\n fromType: isTarget ? \"target\" : \"source\",\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = isConnectionValid(!!closestHandle, result.isValid);\n const newConnection2 = {\n // from stays the same\n ...previousConnection,\n isValid,\n to: result.toHandle && isValid ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, viewport.value) : connectionPosition,\n toHandle: result.toHandle,\n toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],\n toNode: result.toHandle ? nodeLookup.value.get(result.toHandle.nodeId) : null\n };\n if (isValid && closestHandle && (previousConnection == null ? void 0 : previousConnection.toHandle) && newConnection2.toHandle && previousConnection.toHandle.type === newConnection2.toHandle.type && previousConnection.toHandle.nodeId === newConnection2.toHandle.nodeId && previousConnection.toHandle.id === newConnection2.toHandle.id && previousConnection.to.x === newConnection2.to.x && previousConnection.to.y === newConnection2.to.y) {\n return;\n }\n updateConnection(\n closestHandle && isValid ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y\n },\n viewport.value\n ) : connectionPosition,\n result.toHandle,\n getConnectionStatus(!!closestHandle, isValid)\n );\n previousConnection = newConnection2;\n if (!closestHandle && !isValid && !handleDomNode) {\n return resetRecentHandle(prevActiveHandle);\n }\n if (connection && connection.source !== connection.target && handleDomNode) {\n resetRecentHandle(prevActiveHandle);\n prevActiveHandle = handleDomNode;\n handleDomNode.classList.add(\"connecting\", \"vue-flow__handle-connecting\");\n handleDomNode.classList.toggle(\"valid\", !!isValid);\n handleDomNode.classList.toggle(\"vue-flow__handle-valid\", !!isValid);\n }\n }, onPointerUp = function(event2) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n if (!onEdgeUpdate) {\n emits.connect(connection);\n } else {\n onEdgeUpdate(event2, connection);\n }\n }\n emits.connectEnd(event2);\n if (edgeUpdaterType) {\n onEdgeUpdateEnd == null ? void 0 : onEdgeUpdateEnd(event2);\n }\n resetRecentHandle(prevActiveHandle);\n cancelAnimationFrame(autoPanId);\n endConnection(event2);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n doc.removeEventListener(\"mousemove\", onPointerMove);\n doc.removeEventListener(\"mouseup\", onPointerUp);\n doc.removeEventListener(\"touchmove\", onPointerMove);\n doc.removeEventListener(\"touchend\", onPointerUp);\n };\n const node = findNode(toValue$1(nodeId));\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n let closestHandle;\n let autoPanId = 0;\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc == null ? void 0 : doc.elementFromPoint(x, y);\n const handleType = getHandleType(toValue$1(edgeUpdaterType), clickedHandle);\n const containerBounds = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!containerBounds || !handleType) {\n return;\n }\n const fromHandleInternal = getHandle(toValue$1(nodeId), handleType, toValue$1(handleId), nodeLookup.value, connectionMode.value);\n if (!fromHandleInternal) {\n return;\n }\n let prevActiveHandle;\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n const autoPan = () => {\n if (!autoPanOnConnect.value) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(connectionPosition, containerBounds, autoPanSpeed.value);\n panBy({ x: xMovement, y: yMovement });\n autoPanId = requestAnimationFrame(autoPan);\n };\n const fromHandle = {\n ...fromHandleInternal,\n nodeId: toValue$1(nodeId),\n type: handleType,\n position: fromHandleInternal.position\n };\n const fromNodeInternal = nodeLookup.value.get(toValue$1(nodeId));\n const from = getHandlePosition(fromNodeInternal, fromHandle, Position.Left, true);\n const newConnection = {\n inProgress: true,\n isValid: null,\n from,\n fromHandle,\n fromPosition: fromHandle.position,\n fromNode: fromNodeInternal,\n to: connectionPosition,\n toHandle: null,\n toPosition: oppositePosition[fromHandle.position],\n toNode: null\n };\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: handleType,\n position: (clickedHandle == null ? void 0 : clickedHandle.getAttribute(\"data-handlepos\")) || Position.Top,\n ...connectionPosition\n },\n {\n x: x - containerBounds.left,\n y: y - containerBounds.top\n }\n );\n emits.connectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId), handleType });\n let previousConnection = newConnection;\n doc.addEventListener(\"mousemove\", onPointerMove);\n doc.addEventListener(\"mouseup\", onPointerUp);\n doc.addEventListener(\"touchmove\", onPointerMove);\n doc.addEventListener(\"touchend\", onPointerUp);\n }\n }\n function handleClick(event) {\n var _a, _b;\n if (!connectOnClick.value) {\n return;\n }\n const isTarget = toValue$1(type) === \"target\";\n if (!connectionClickStartHandle.value) {\n emits.clickConnectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId) });\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n type: toValue$1(type),\n id: toValue$1(handleId),\n position: Position.Top,\n ...getEventPosition(event)\n },\n void 0,\n true\n );\n return;\n }\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n const node = findNode(toValue$1(nodeId));\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n if (node && (typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable) === false) {\n return;\n }\n const doc = getHostForElement(event.target);\n const result = isValidHandle(\n event,\n {\n handle: {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: toValue$1(type),\n position: Position.Top,\n ...getEventPosition(event)\n },\n connectionMode: connectionMode.value,\n fromNodeId: connectionClickStartHandle.value.nodeId,\n fromHandleId: connectionClickStartHandle.value.id ?? null,\n fromType: connectionClickStartHandle.value.type,\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n const isOwnHandle = ((_a = result.connection) == null ? void 0 : _a.source) === ((_b = result.connection) == null ? void 0 : _b.target);\n if (result.isValid && result.connection && !isOwnHandle) {\n emits.connect(result.connection);\n }\n emits.clickConnectEnd(event);\n endConnection(event, true);\n }\n return {\n handlePointerDown,\n handleClick\n };\n}\nfunction useNodeId() {\n return inject(NodeId, \"\");\n}\nfunction useNode(id2) {\n const nodeId = id2 ?? useNodeId() ?? \"\";\n const nodeEl = inject(NodeRef, ref(null));\n const { findNode, edges, emits } = useVueFlow();\n const node = findNode(nodeId);\n if (!node) {\n emits.error(new VueFlowError(ErrorCode.NODE_NOT_FOUND, nodeId));\n }\n return {\n id: nodeId,\n nodeEl,\n node,\n parentNode: computed(() => findNode(node.parentNode)),\n connectedEdges: computed(() => getConnectedEdges([node], edges.value))\n };\n}\nfunction createNodeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n dragStart: createExtendedEventHook(),\n drag: createExtendedEventHook(),\n dragStop: createExtendedEventHook()\n };\n}\nfunction useNodeHooks(node, emits) {\n const nodeHooks = createNodeHooks();\n nodeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.nodeDoubleClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.click.on((event) => {\n var _a, _b;\n emits.nodeClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.nodeMouseEnter(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.nodeMouseMove(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.nodeMouseLeave(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.nodeContextMenu(event);\n (_b = (_a = node.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStart.on((event) => {\n var _a, _b;\n emits.nodeDragStart(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStart) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.drag.on((event) => {\n var _a, _b;\n emits.nodeDrag(event);\n (_b = (_a = node.events) == null ? void 0 : _a.drag) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStop.on((event) => {\n var _a, _b;\n emits.nodeDragStop(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStop) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(nodeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useUpdateNodePositions() {\n const { getSelectedNodes, nodeExtent, updateNodePositions, findNode, snapGrid, snapToGrid, nodesDraggable, emits } = useVueFlow();\n return (positionDiff, isShiftPressed = false) => {\n const xVelo = snapToGrid.value ? snapGrid.value[0] : 5;\n const yVelo = snapToGrid.value ? snapGrid.value[1] : 5;\n const factor = isShiftPressed ? 4 : 1;\n const positionDiffX = positionDiff.x * xVelo * factor;\n const positionDiffY = positionDiff.y * yVelo * factor;\n const nodeUpdates = [];\n for (const node of getSelectedNodes.value) {\n if (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\") {\n const nextPosition = { x: node.computedPosition.x + positionDiffX, y: node.computedPosition.y + positionDiffY };\n const { computedPosition } = calcNextPosition(\n node,\n nextPosition,\n emits.error,\n nodeExtent.value,\n node.parentNode ? findNode(node.parentNode) : void 0\n );\n nodeUpdates.push({\n id: node.id,\n position: computedPosition,\n from: node.position,\n distance: { x: positionDiff.x, y: positionDiff.y },\n dimensions: node.dimensions\n });\n }\n }\n updateNodePositions(nodeUpdates, true, false);\n };\n}\nconst DEFAULT_PADDING = 0.1;\nconst defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\nfunction noop() {\n warn(\"Viewport not initialized yet.\");\n return Promise.resolve(false);\n}\nconst initialViewportHelper = {\n zoomIn: noop,\n zoomOut: noop,\n zoomTo: noop,\n fitView: noop,\n setCenter: noop,\n fitBounds: noop,\n project: (position) => position,\n screenToFlowCoordinate: (position) => position,\n flowToScreenCoordinate: (position) => position,\n setViewport: noop,\n setTransform: noop,\n getViewport: () => ({ x: 0, y: 0, zoom: 1 }),\n getTransform: () => ({ x: 0, y: 0, zoom: 1 }),\n viewportInitialized: false\n};\nfunction useViewportHelper(state) {\n function zoom2(scale, transitionOptions) {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleBy(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n scale\n );\n } else {\n resolve(false);\n }\n });\n }\n function transformViewport(x, y, zoom22, transitionOptions) {\n return new Promise((resolve) => {\n var _a;\n const { x: clampedX, y: clampedY } = clampPosition({ x: -x, y: -y }, state.translateExtent);\n const nextTransform = identity.translate(-clampedX, -clampedY).scale(zoom22);\n if (state.d3Selection && state.d3Zoom) {\n (_a = state.d3Zoom) == null ? void 0 : _a.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).transform(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n nextTransform\n );\n } else {\n resolve(false);\n }\n });\n }\n return computed(() => {\n const isInitialized = state.d3Zoom && state.d3Selection && state.dimensions.width && state.dimensions.height;\n if (!isInitialized) {\n return initialViewportHelper;\n }\n return {\n viewportInitialized: true,\n // todo: allow passing scale as option\n zoomIn: (options) => {\n return zoom2(1.2, options);\n },\n zoomOut: (options) => {\n return zoom2(1 / 1.2, options);\n },\n zoomTo: (zoomLevel, options) => {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((options == null ? void 0 : options.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleTo(\n getD3Transition(state.d3Selection, options == null ? void 0 : options.duration, options == null ? void 0 : options.ease, () => {\n resolve(true);\n }),\n zoomLevel\n );\n } else {\n resolve(false);\n }\n });\n },\n setViewport: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n setTransform: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n getViewport: () => ({\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n }),\n getTransform: () => {\n return {\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n };\n },\n fitView: (options = {\n padding: DEFAULT_PADDING,\n includeHiddenNodes: false,\n duration: 0\n }) => {\n var _a, _b;\n const nodesToFit = [];\n for (const node of state.nodes) {\n const isVisible = node.dimensions.width && node.dimensions.height && ((options == null ? void 0 : options.includeHiddenNodes) || !node.hidden);\n if (isVisible) {\n if (!((_a = options.nodes) == null ? void 0 : _a.length) || ((_b = options.nodes) == null ? void 0 : _b.length) && options.nodes.includes(node.id)) {\n nodesToFit.push(node);\n }\n }\n }\n if (!nodesToFit.length) {\n return Promise.resolve(false);\n }\n const bounds = getRectOfNodes(nodesToFit);\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n options.minZoom ?? state.minZoom,\n options.maxZoom ?? state.maxZoom,\n options.padding ?? DEFAULT_PADDING,\n options.offset\n );\n return transformViewport(x, y, zoom22, options);\n },\n setCenter: (x, y, options) => {\n const nextZoom = typeof (options == null ? void 0 : options.zoom) !== \"undefined\" ? options.zoom : state.maxZoom;\n const centerX = state.dimensions.width / 2 - x * nextZoom;\n const centerY = state.dimensions.height / 2 - y * nextZoom;\n return transformViewport(centerX, centerY, nextZoom, options);\n },\n fitBounds: (bounds, options = { padding: DEFAULT_PADDING }) => {\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n state.minZoom,\n state.maxZoom,\n options.padding\n );\n return transformViewport(x, y, zoom22, options);\n },\n project: (position) => pointToRendererPoint(position, state.viewport, state.snapToGrid, state.snapGrid),\n screenToFlowCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x - domX,\n y: position.y - domY\n };\n return pointToRendererPoint(correctedPosition, state.viewport, state.snapToGrid, state.snapGrid);\n }\n return { x: 0, y: 0 };\n },\n flowToScreenCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x + domX,\n y: position.y + domY\n };\n return rendererPointToPoint(correctedPosition, state.viewport);\n }\n return { x: 0, y: 0 };\n }\n };\n });\n}\nfunction getD3Transition(selection2, duration = 0, ease = defaultEase, onEnd = () => {\n}) {\n const hasDuration = typeof duration === \"number\" && duration > 0;\n if (!hasDuration) {\n onEnd();\n }\n return hasDuration ? selection2.transition().duration(duration).ease(ease).on(\"end\", onEnd) : selection2;\n}\nfunction useWatchProps(models, props, store) {\n const scope = effectScope(true);\n scope.run(() => {\n const watchModelValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!(store.nodes.value.length || store.edges.value.length);\n pauseModel = watchPausable([models.modelValue, () => {\n var _a, _b;\n return (_b = (_a = models.modelValue) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([elements]) => {\n if (elements && Array.isArray(elements)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setElements(elements);\n if (!pauseStore && !immediateStore && elements.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, store.edges, () => store.edges.value.length, () => store.nodes.value.length],\n ([nodes, edges]) => {\n var _a;\n if (((_a = models.modelValue) == null ? void 0 : _a.value) && Array.isArray(models.modelValue.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.modelValue.value = [...nodes, ...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchNodesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.nodes.value.length;\n pauseModel = watchPausable([models.nodes, () => {\n var _a, _b;\n return (_b = (_a = models.nodes) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([nodes]) => {\n if (nodes && Array.isArray(nodes)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setNodes(nodes);\n if (!pauseStore && !immediateStore && nodes.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, () => store.nodes.value.length],\n ([nodes]) => {\n var _a;\n if (((_a = models.nodes) == null ? void 0 : _a.value) && Array.isArray(models.nodes.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.nodes.value = [...nodes];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchEdgesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.edges.value.length;\n pauseModel = watchPausable([models.edges, () => {\n var _a, _b;\n return (_b = (_a = models.edges) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([edges]) => {\n if (edges && Array.isArray(edges)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setEdges(edges);\n if (!pauseStore && !immediateStore && edges.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.edges, () => store.edges.value.length],\n ([edges]) => {\n var _a;\n if (((_a = models.edges) == null ? void 0 : _a.value) && Array.isArray(models.edges.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.edges.value = [...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchMaxZoom = () => {\n scope.run(() => {\n watch(\n () => props.maxZoom,\n () => {\n if (props.maxZoom && isDef(props.maxZoom)) {\n store.setMaxZoom(props.maxZoom);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchMinZoom = () => {\n scope.run(() => {\n watch(\n () => props.minZoom,\n () => {\n if (props.minZoom && isDef(props.minZoom)) {\n store.setMinZoom(props.minZoom);\n }\n },\n { immediate: true }\n );\n });\n };\n const watchTranslateExtent = () => {\n scope.run(() => {\n watch(\n () => props.translateExtent,\n () => {\n if (props.translateExtent && isDef(props.translateExtent)) {\n store.setTranslateExtent(props.translateExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchNodeExtent = () => {\n scope.run(() => {\n watch(\n () => props.nodeExtent,\n () => {\n if (props.nodeExtent && isDef(props.nodeExtent)) {\n store.setNodeExtent(props.nodeExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchApplyDefault = () => {\n scope.run(() => {\n watch(\n () => props.applyDefault,\n () => {\n if (isDef(props.applyDefault)) {\n store.applyDefault.value = props.applyDefault;\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchAutoConnect = () => {\n scope.run(() => {\n const autoConnector = async (params) => {\n let connection = params;\n if (typeof props.autoConnect === \"function\") {\n connection = await props.autoConnect(params);\n }\n if (connection !== false) {\n store.addEdges([connection]);\n }\n };\n watch(\n () => props.autoConnect,\n () => {\n if (isDef(props.autoConnect)) {\n store.autoConnect.value = props.autoConnect;\n }\n },\n { immediate: true }\n );\n watch(\n store.autoConnect,\n (autoConnectEnabled, _, onCleanup) => {\n if (autoConnectEnabled) {\n store.onConnect(autoConnector);\n } else {\n store.hooks.value.connect.off(autoConnector);\n }\n onCleanup(() => {\n store.hooks.value.connect.off(autoConnector);\n });\n },\n { immediate: true }\n );\n });\n };\n const watchRest = () => {\n const skip = [\n \"id\",\n \"modelValue\",\n \"translateExtent\",\n \"nodeExtent\",\n \"edges\",\n \"nodes\",\n \"maxZoom\",\n \"minZoom\",\n \"applyDefault\",\n \"autoConnect\"\n ];\n for (const key of Object.keys(props)) {\n const propKey = key;\n if (!skip.includes(propKey)) {\n const propValue = toRef(() => props[propKey]);\n const storeRef = store[propKey];\n if (isRef(storeRef)) {\n scope.run(() => {\n watch(\n propValue,\n (nextValue) => {\n if (isDef(nextValue)) {\n storeRef.value = nextValue;\n }\n },\n { immediate: true }\n );\n });\n }\n }\n }\n };\n const runAll = () => {\n watchModelValue();\n watchNodesValue();\n watchEdgesValue();\n watchMinZoom();\n watchMaxZoom();\n watchTranslateExtent();\n watchNodeExtent();\n watchApplyDefault();\n watchAutoConnect();\n watchRest();\n };\n runAll();\n });\n return () => scope.stop();\n}\nfunction useZoomPanHelper(vueFlowId) {\n const state = useVueFlow({ id: vueFlowId });\n const viewportHelper = useViewportHelper(toReactive(state));\n return {\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params)\n };\n}\nfunction createHooks() {\n return {\n edgesChange: createExtendedEventHook(),\n nodesChange: createExtendedEventHook(),\n nodeDoubleClick: createExtendedEventHook(),\n nodeClick: createExtendedEventHook(),\n nodeMouseEnter: createExtendedEventHook(),\n nodeMouseMove: createExtendedEventHook(),\n nodeMouseLeave: createExtendedEventHook(),\n nodeContextMenu: createExtendedEventHook(),\n nodeDragStart: createExtendedEventHook(),\n nodeDrag: createExtendedEventHook(),\n nodeDragStop: createExtendedEventHook(),\n nodesInitialized: createExtendedEventHook(),\n miniMapNodeClick: createExtendedEventHook(),\n miniMapNodeDoubleClick: createExtendedEventHook(),\n miniMapNodeMouseEnter: createExtendedEventHook(),\n miniMapNodeMouseMove: createExtendedEventHook(),\n miniMapNodeMouseLeave: createExtendedEventHook(),\n connect: createExtendedEventHook(),\n connectStart: createExtendedEventHook(),\n connectEnd: createExtendedEventHook(),\n clickConnectStart: createExtendedEventHook(),\n clickConnectEnd: createExtendedEventHook(),\n paneReady: createExtendedEventHook(),\n init: createExtendedEventHook(),\n move: createExtendedEventHook(),\n moveStart: createExtendedEventHook(),\n moveEnd: createExtendedEventHook(),\n selectionDragStart: createExtendedEventHook(),\n selectionDrag: createExtendedEventHook(),\n selectionDragStop: createExtendedEventHook(),\n selectionContextMenu: createExtendedEventHook(),\n selectionStart: createExtendedEventHook(),\n selectionEnd: createExtendedEventHook(),\n viewportChangeStart: createExtendedEventHook(),\n viewportChange: createExtendedEventHook(),\n viewportChangeEnd: createExtendedEventHook(),\n paneScroll: createExtendedEventHook(),\n paneClick: createExtendedEventHook(),\n paneContextMenu: createExtendedEventHook(),\n paneMouseEnter: createExtendedEventHook(),\n paneMouseMove: createExtendedEventHook(),\n paneMouseLeave: createExtendedEventHook(),\n edgeContextMenu: createExtendedEventHook(),\n edgeMouseEnter: createExtendedEventHook(),\n edgeMouseMove: createExtendedEventHook(),\n edgeMouseLeave: createExtendedEventHook(),\n edgeDoubleClick: createExtendedEventHook(),\n edgeClick: createExtendedEventHook(),\n edgeUpdateStart: createExtendedEventHook(),\n edgeUpdate: createExtendedEventHook(),\n edgeUpdateEnd: createExtendedEventHook(),\n updateNodeInternals: createExtendedEventHook(),\n error: createExtendedEventHook((err) => warn(err.message))\n };\n}\nfunction useHooks(emit, hooks) {\n onBeforeMount(() => {\n for (const [key, value] of Object.entries(hooks.value)) {\n const listener = (data) => {\n emit(key, data);\n };\n value.fns.add(listener);\n tryOnScopeDispose(() => {\n value.off(listener);\n });\n }\n });\n}\nfunction useState() {\n return {\n vueFlowRef: null,\n viewportRef: null,\n nodes: [],\n edges: [],\n connectionLookup: /* @__PURE__ */ new Map(),\n nodeTypes: {},\n edgeTypes: {},\n initialized: false,\n dimensions: {\n width: 0,\n height: 0\n },\n viewport: { x: 0, y: 0, zoom: 1 },\n d3Zoom: null,\n d3Selection: null,\n d3ZoomHandler: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n nodeExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n selectionMode: SelectionMode.Full,\n paneDragging: false,\n preventScrolling: true,\n zoomOnScroll: true,\n zoomOnPinch: true,\n zoomOnDoubleClick: true,\n panOnScroll: false,\n panOnScrollSpeed: 0.5,\n panOnScrollMode: PanOnScrollMode.Free,\n paneClickDistance: 0,\n panOnDrag: true,\n edgeUpdaterRadius: 10,\n onlyRenderVisibleElements: false,\n defaultViewport: { x: 0, y: 0, zoom: 1 },\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n defaultMarkerColor: \"#b1b1b7\",\n connectionLineStyle: {},\n connectionLineType: null,\n connectionLineOptions: {\n type: ConnectionLineType.Bezier,\n style: {}\n },\n connectionMode: ConnectionMode.Loose,\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectionPosition: { x: Number.NaN, y: Number.NaN },\n connectionRadius: 20,\n connectOnClick: true,\n connectionStatus: null,\n isValidConnection: null,\n snapGrid: [15, 15],\n snapToGrid: false,\n edgesUpdatable: false,\n edgesFocusable: true,\n nodesFocusable: true,\n nodesConnectable: true,\n nodesDraggable: true,\n nodeDragThreshold: 1,\n elementsSelectable: true,\n selectNodesOnDrag: true,\n multiSelectionActive: false,\n selectionKeyCode: \"Shift\",\n multiSelectionKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n zoomActivationKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n deleteKeyCode: \"Backspace\",\n panActivationKeyCode: \"Space\",\n hooks: createHooks(),\n applyDefault: true,\n autoConnect: false,\n fitViewOnInit: false,\n fitViewOnInitDone: false,\n noDragClassName: \"nodrag\",\n noWheelClassName: \"nowheel\",\n noPanClassName: \"nopan\",\n defaultEdgeOptions: void 0,\n elevateEdgesOnSelect: false,\n elevateNodesOnSelect: true,\n autoPanOnNodeDrag: true,\n autoPanOnConnect: true,\n autoPanSpeed: 15,\n disableKeyboardA11y: false,\n ariaLiveMessage: \"\"\n };\n}\nconst storeOptionsToSkip = [\n \"id\",\n \"vueFlowRef\",\n \"viewportRef\",\n \"initialized\",\n \"modelValue\",\n \"nodes\",\n \"edges\",\n \"maxZoom\",\n \"minZoom\",\n \"translateExtent\",\n \"hooks\",\n \"defaultEdgeOptions\"\n];\nfunction useActions(state, nodeLookup, edgeLookup) {\n const viewportHelper = useViewportHelper(state);\n const updateNodeInternals = (ids) => {\n const updateIds = ids ?? [];\n state.hooks.updateNodeInternals.trigger(updateIds);\n };\n const getIncomers$1 = (nodeOrId) => {\n return getIncomers(nodeOrId, state.nodes, state.edges);\n };\n const getOutgoers$1 = (nodeOrId) => {\n return getOutgoers(nodeOrId, state.nodes, state.edges);\n };\n const getConnectedEdges$1 = (nodesOrId) => {\n return getConnectedEdges(nodesOrId, state.edges);\n };\n const getHandleConnections = ({ id: id2, type, nodeId }) => {\n var _a;\n return Array.from(((_a = state.connectionLookup.get(`${nodeId}-${type}-${id2 ?? null}`)) == null ? void 0 : _a.values()) ?? []);\n };\n const findNode = (id2) => {\n if (!id2) {\n return;\n }\n return nodeLookup.value.get(id2);\n };\n const findEdge = (id2) => {\n if (!id2) {\n return;\n }\n return edgeLookup.value.get(id2);\n };\n const updateNodePositions = (dragItems, changed, dragging) => {\n var _a, _b;\n const changes = [];\n for (const node of dragItems) {\n const change = {\n id: node.id,\n type: \"position\",\n dragging,\n from: node.from\n };\n if (changed) {\n change.position = node.position;\n if (node.parentNode) {\n const parentNode = findNode(node.parentNode);\n change.position = {\n x: change.position.x - (((_a = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _a.x) ?? 0),\n y: change.position.y - (((_b = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _b.y) ?? 0)\n };\n }\n }\n changes.push(change);\n }\n if (changes == null ? void 0 : changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const updateNodeDimensions = (updates) => {\n if (!state.vueFlowRef) {\n return;\n }\n const viewportNode = state.vueFlowRef.querySelector(\".vue-flow__transformationpane\");\n if (!viewportNode) {\n return;\n }\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const changes = [];\n for (const element of updates) {\n const update = element;\n const node = findNode(update.id);\n if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const doUpdate = !!(dimensions.width && dimensions.height && (node.dimensions.width !== dimensions.width || node.dimensions.height !== dimensions.height || update.forceUpdate));\n if (doUpdate) {\n const nodeBounds = update.nodeElement.getBoundingClientRect();\n node.dimensions = dimensions;\n node.handleBounds.source = getHandleBounds(\"source\", update.nodeElement, nodeBounds, zoom2, node.id);\n node.handleBounds.target = getHandleBounds(\"target\", update.nodeElement, nodeBounds, zoom2, node.id);\n changes.push({\n id: node.id,\n type: \"dimensions\",\n dimensions\n });\n }\n }\n }\n if (!state.fitViewOnInitDone && state.fitViewOnInit) {\n viewportHelper.value.fitView().then(() => {\n state.fitViewOnInitDone = true;\n });\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const elementSelectionHandler = (elements, selected) => {\n const nodeIds = /* @__PURE__ */ new Set();\n const edgeIds = /* @__PURE__ */ new Set();\n for (const element of elements) {\n if (isNode(element)) {\n nodeIds.add(element.id);\n } else if (isEdge(element)) {\n edgeIds.add(element.id);\n }\n }\n const changedNodes = getSelectionChanges(nodeLookup.value, nodeIds, true);\n const changedEdges = getSelectionChanges(edgeLookup.value, edgeIds);\n if (state.multiSelectionActive) {\n for (const nodeId of nodeIds) {\n changedNodes.push(createSelectionChange(nodeId, selected));\n }\n for (const edgeId of edgeIds) {\n changedEdges.push(createSelectionChange(edgeId, selected));\n }\n }\n if (changedNodes.length) {\n state.hooks.nodesChange.trigger(changedNodes);\n }\n if (changedEdges.length) {\n state.hooks.edgesChange.trigger(changedEdges);\n }\n };\n const addSelectedNodes = (nodes) => {\n if (state.multiSelectionActive) {\n const nodeChanges = nodes.map((node) => createSelectionChange(node.id, true));\n state.hooks.nodesChange.trigger(nodeChanges);\n return;\n }\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, new Set(nodes.map((n) => n.id)), true));\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value));\n };\n const addSelectedEdges = (edges) => {\n if (state.multiSelectionActive) {\n const changedEdges = edges.map((edge) => createSelectionChange(edge.id, true));\n state.hooks.edgesChange.trigger(changedEdges);\n return;\n }\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value, new Set(edges.map((e) => e.id))));\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, /* @__PURE__ */ new Set(), true));\n };\n const addSelectedElements = (elements) => {\n elementSelectionHandler(elements, true);\n };\n const removeSelectedNodes = (nodes) => {\n const nodesToUnselect = nodes || state.nodes;\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n state.hooks.nodesChange.trigger(nodeChanges);\n };\n const removeSelectedEdges = (edges) => {\n const edgesToUnselect = edges || state.edges;\n const edgeChanges = edgesToUnselect.map((e) => {\n e.selected = false;\n return createSelectionChange(e.id, false);\n });\n state.hooks.edgesChange.trigger(edgeChanges);\n };\n const removeSelectedElements = (elements) => {\n if (!elements || !elements.length) {\n return elementSelectionHandler([], false);\n }\n const changes = elements.reduce(\n (changes2, curr) => {\n const selectionChange = createSelectionChange(curr.id, false);\n if (isNode(curr)) {\n changes2.nodes.push(selectionChange);\n } else {\n changes2.edges.push(selectionChange);\n }\n return changes2;\n },\n { nodes: [], edges: [] }\n );\n if (changes.nodes.length) {\n state.hooks.nodesChange.trigger(changes.nodes);\n }\n if (changes.edges.length) {\n state.hooks.edgesChange.trigger(changes.edges);\n }\n };\n const setMinZoom = (minZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([minZoom, state.maxZoom]);\n state.minZoom = minZoom;\n };\n const setMaxZoom = (maxZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([state.minZoom, maxZoom]);\n state.maxZoom = maxZoom;\n };\n const setTranslateExtent = (translateExtent) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.translateExtent(translateExtent);\n state.translateExtent = translateExtent;\n };\n const setNodeExtent = (nodeExtent) => {\n state.nodeExtent = nodeExtent;\n updateNodeInternals();\n };\n const setPaneClickDistance = (clickDistance) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.clickDistance(clickDistance);\n };\n const setInteractive = (isInteractive) => {\n state.nodesDraggable = isInteractive;\n state.nodesConnectable = isInteractive;\n state.elementsSelectable = isInteractive;\n };\n const setNodes = (nodes) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n if (!state.initialized && !nextNodes.length) {\n return;\n }\n state.nodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n };\n const setEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n if (!state.initialized && !nextEdges.length) {\n return;\n }\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, validEdges);\n state.edges = validEdges;\n };\n const setElements = (elements) => {\n const nextElements = elements instanceof Function ? elements([...state.nodes, ...state.edges]) : elements;\n if (!state.initialized && !nextElements.length) {\n return;\n }\n setNodes(nextElements.filter(isNode));\n setEdges(nextElements.filter(isEdge));\n };\n const addNodes = (nodes) => {\n let nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n nextNodes = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const graphNodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n const changes = [];\n for (const node of graphNodes) {\n changes.push(createAdditionChange(node));\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const addEdges = (params) => {\n let nextEdges = params instanceof Function ? params(state.edges) : params;\n nextEdges = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n const changes = [];\n for (const edge of validEdges) {\n changes.push(createAdditionChange(edge));\n }\n if (changes.length) {\n state.hooks.edgesChange.trigger(changes);\n }\n };\n const removeNodes = (nodes, removeConnectedEdges = true, removeChildren = false) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n const nodesToRemove = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const nodeChanges = [];\n const edgeChanges = [];\n function createEdgeRemovalChanges(nodes2) {\n const connectedEdges = getConnectedEdges$1(nodes2);\n for (const edge of connectedEdges) {\n if (isDef(edge.deletable) ? edge.deletable : true) {\n edgeChanges.push(createEdgeRemoveChange(edge.id, edge.source, edge.target, edge.sourceHandle, edge.targetHandle));\n }\n }\n }\n function createChildrenRemovalChanges(id2) {\n const children2 = [];\n for (const node of state.nodes) {\n if (node.parentNode === id2) {\n children2.push(node);\n }\n }\n if (children2.length) {\n for (const child of children2) {\n nodeChanges.push(createNodeRemoveChange(child.id));\n }\n if (removeConnectedEdges) {\n createEdgeRemovalChanges(children2);\n }\n for (const child of children2) {\n createChildrenRemovalChanges(child.id);\n }\n }\n }\n for (const item of nodesToRemove) {\n const currNode = typeof item === \"string\" ? findNode(item) : item;\n if (!currNode) {\n continue;\n }\n if (isDef(currNode.deletable) && !currNode.deletable) {\n continue;\n }\n nodeChanges.push(createNodeRemoveChange(currNode.id));\n if (removeConnectedEdges) {\n createEdgeRemovalChanges([currNode]);\n }\n if (removeChildren) {\n createChildrenRemovalChanges(currNode.id);\n }\n }\n if (edgeChanges.length) {\n state.hooks.edgesChange.trigger(edgeChanges);\n }\n if (nodeChanges.length) {\n state.hooks.nodesChange.trigger(nodeChanges);\n }\n };\n const removeEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n const edgesToRemove = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const changes = [];\n for (const item of edgesToRemove) {\n const currEdge = typeof item === \"string\" ? findEdge(item) : item;\n if (!currEdge) {\n continue;\n }\n if (isDef(currEdge.deletable) && !currEdge.deletable) {\n continue;\n }\n changes.push(\n createEdgeRemoveChange(\n typeof item === \"string\" ? item : item.id,\n currEdge.source,\n currEdge.target,\n currEdge.sourceHandle,\n currEdge.targetHandle\n )\n );\n }\n state.hooks.edgesChange.trigger(changes);\n };\n const updateEdge2 = (oldEdge, newConnection, shouldReplaceId = true) => {\n const prevEdge = findEdge(oldEdge.id);\n if (!prevEdge) {\n return false;\n }\n const prevEdgeIndex = state.edges.indexOf(prevEdge);\n const newEdge = updateEdgeAction(oldEdge, newConnection, prevEdge, shouldReplaceId, state.hooks.error.trigger);\n if (newEdge) {\n const [validEdge] = createGraphEdges(\n [newEdge],\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n state.edges = state.edges.map((edge, index) => index === prevEdgeIndex ? validEdge : edge);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, [validEdge]);\n return validEdge;\n }\n return false;\n };\n const updateEdgeData = (id2, dataUpdate, options = { replace: false }) => {\n const edge = findEdge(id2);\n if (!edge) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(edge) : dataUpdate;\n edge.data = options.replace ? nextData : { ...edge.data, ...nextData };\n };\n const applyNodeChanges2 = (changes) => {\n return applyChanges(changes, state.nodes);\n };\n const applyEdgeChanges2 = (changes) => {\n const changedEdges = applyChanges(changes, state.edges);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, changedEdges);\n return changedEdges;\n };\n const updateNode = (id2, nodeUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextNode = typeof nodeUpdate === \"function\" ? nodeUpdate(node) : nodeUpdate;\n if (options.replace) {\n state.nodes.splice(state.nodes.indexOf(node), 1, nextNode);\n } else {\n Object.assign(node, nextNode);\n }\n };\n const updateNodeData = (id2, dataUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(node) : dataUpdate;\n node.data = options.replace ? nextData : { ...node.data, ...nextData };\n };\n const startConnection = (startHandle, position, isClick = false) => {\n if (isClick) {\n state.connectionClickStartHandle = startHandle;\n } else {\n state.connectionStartHandle = startHandle;\n }\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (position) {\n state.connectionPosition = position;\n }\n };\n const updateConnection = (position, result = null, status = null) => {\n if (state.connectionStartHandle) {\n state.connectionPosition = position;\n state.connectionEndHandle = result;\n state.connectionStatus = status;\n }\n };\n const endConnection = (event, isClick) => {\n state.connectionPosition = { x: Number.NaN, y: Number.NaN };\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (isClick) {\n state.connectionClickStartHandle = null;\n } else {\n state.connectionStartHandle = null;\n }\n };\n const getNodeRect = (nodeOrRect) => {\n const isRectObj = isRect(nodeOrRect);\n const node = isRectObj ? null : isGraphNode(nodeOrRect) ? nodeOrRect : findNode(nodeOrRect.id);\n if (!isRectObj && !node) {\n return [null, null, isRectObj];\n }\n const nodeRect = isRectObj ? nodeOrRect : nodeToRect(node);\n return [nodeRect, node, isRectObj];\n };\n const getIntersectingNodes = (nodeOrRect, partially = true, nodes = state.nodes) => {\n const [nodeRect, node, isRect2] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return [];\n }\n const intersections = [];\n for (const n of nodes || state.nodes) {\n if (!isRect2 && (n.id === node.id || !n.computedPosition)) {\n continue;\n }\n const currNodeRect = nodeToRect(n);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n if (partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height)) {\n intersections.push(n);\n }\n }\n return intersections;\n };\n const isNodeIntersecting = (nodeOrRect, area, partially = true) => {\n const [nodeRect] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return false;\n }\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n return partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height);\n };\n const panBy = (delta) => {\n const { viewport, dimensions, d3Zoom, d3Selection, translateExtent } = state;\n if (!d3Zoom || !d3Selection || !delta.x && !delta.y) {\n return false;\n }\n const nextTransform = identity.translate(viewport.x + delta.x, viewport.y + delta.y).scale(viewport.zoom);\n const extent = [\n [0, 0],\n [dimensions.width, dimensions.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(nextTransform, extent, translateExtent);\n const transformChanged = state.viewport.x !== constrainedTransform.x || state.viewport.y !== constrainedTransform.y || state.viewport.zoom !== constrainedTransform.k;\n d3Zoom.transform(d3Selection, constrainedTransform);\n return transformChanged;\n };\n const setState = (options) => {\n const opts = options instanceof Function ? options(state) : options;\n const exclude = [\n \"d3Zoom\",\n \"d3Selection\",\n \"d3ZoomHandler\",\n \"viewportRef\",\n \"vueFlowRef\",\n \"dimensions\",\n \"hooks\"\n ];\n if (isDef(opts.defaultEdgeOptions)) {\n state.defaultEdgeOptions = opts.defaultEdgeOptions;\n }\n const elements = opts.modelValue || opts.nodes || opts.edges ? [] : void 0;\n if (elements) {\n if (opts.modelValue) {\n elements.push(...opts.modelValue);\n }\n if (opts.nodes) {\n elements.push(...opts.nodes);\n }\n if (opts.edges) {\n elements.push(...opts.edges);\n }\n setElements(elements);\n }\n const setSkippedOptions = () => {\n if (isDef(opts.maxZoom)) {\n setMaxZoom(opts.maxZoom);\n }\n if (isDef(opts.minZoom)) {\n setMinZoom(opts.minZoom);\n }\n if (isDef(opts.translateExtent)) {\n setTranslateExtent(opts.translateExtent);\n }\n };\n for (const o of Object.keys(opts)) {\n const key = o;\n const option = opts[key];\n if (![...storeOptionsToSkip, ...exclude].includes(key) && isDef(option)) {\n state[key] = option;\n }\n }\n until(() => state.d3Zoom).not.toBeNull().then(setSkippedOptions);\n if (!state.initialized) {\n state.initialized = true;\n }\n };\n const toObject = () => {\n const nodes = [];\n const edges = [];\n for (const node of state.nodes) {\n const {\n computedPosition: _,\n handleBounds: __,\n selected: ___,\n dimensions: ____,\n isParent: _____,\n resizing: ______,\n dragging: _______,\n events: _________,\n ...rest\n } = node;\n nodes.push(rest);\n }\n for (const edge of state.edges) {\n const { selected: _, sourceNode: __, targetNode: ___, events: ____, ...rest } = edge;\n edges.push(rest);\n }\n return JSON.parse(\n JSON.stringify({\n nodes,\n edges,\n position: [state.viewport.x, state.viewport.y],\n zoom: state.viewport.zoom,\n viewport: state.viewport\n })\n );\n };\n const fromObject = (obj) => {\n return new Promise((resolve) => {\n const { nodes, edges, position, zoom: zoom2, viewport } = obj;\n if (nodes) {\n setNodes(nodes);\n }\n if (edges) {\n setEdges(edges);\n }\n if ((viewport == null ? void 0 : viewport.x) && (viewport == null ? void 0 : viewport.y) || position) {\n const x = (viewport == null ? void 0 : viewport.x) || position[0];\n const y = (viewport == null ? void 0 : viewport.y) || position[1];\n const nextZoom = (viewport == null ? void 0 : viewport.zoom) || zoom2 || state.viewport.zoom;\n return until(() => viewportHelper.value.viewportInitialized).toBe(true).then(() => {\n viewportHelper.value.setViewport({\n x,\n y,\n zoom: nextZoom\n }).then(() => {\n resolve(true);\n });\n });\n } else {\n resolve(true);\n }\n });\n };\n const $reset = () => {\n const resetState = useState();\n state.edges = [];\n state.nodes = [];\n if (state.d3Zoom && state.d3Selection) {\n const updatedTransform = identity.translate(resetState.defaultViewport.x ?? 0, resetState.defaultViewport.y ?? 0).scale(clamp(resetState.defaultViewport.zoom ?? 1, resetState.minZoom, resetState.maxZoom));\n const bbox = state.viewportRef.getBoundingClientRect();\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = state.d3Zoom.constrain()(updatedTransform, extent, resetState.translateExtent);\n state.d3Zoom.transform(state.d3Selection, constrainedTransform);\n }\n setState(resetState);\n };\n return {\n updateNodePositions,\n updateNodeDimensions,\n setElements,\n setNodes,\n setEdges,\n addNodes,\n addEdges,\n removeNodes,\n removeEdges,\n findNode,\n findEdge,\n updateEdge: updateEdge2,\n updateEdgeData,\n updateNode,\n updateNodeData,\n applyEdgeChanges: applyEdgeChanges2,\n applyNodeChanges: applyNodeChanges2,\n addSelectedElements,\n addSelectedNodes,\n addSelectedEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n setPaneClickDistance,\n removeSelectedElements,\n removeSelectedNodes,\n removeSelectedEdges,\n startConnection,\n updateConnection,\n endConnection,\n setInteractive,\n setState,\n getIntersectingNodes,\n getIncomers: getIncomers$1,\n getOutgoers: getOutgoers$1,\n getConnectedEdges: getConnectedEdges$1,\n getHandleConnections,\n isNodeIntersecting,\n panBy,\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params),\n screenToFlowCoordinate: (params) => viewportHelper.value.screenToFlowCoordinate(params),\n flowToScreenCoordinate: (params) => viewportHelper.value.flowToScreenCoordinate(params),\n toObject,\n fromObject,\n updateNodeInternals,\n viewportHelper,\n $reset,\n $destroy: () => {\n }\n };\n}\nconst _hoisted_1$9 = [\"data-id\", \"data-handleid\", \"data-nodeid\", \"data-handlepos\"];\nconst __default__$f = {\n name: \"Handle\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$f = /* @__PURE__ */ defineComponent({\n ...__default__$f,\n props: {\n id: { default: null },\n type: {},\n position: { default: () => Position.Top },\n isValidConnection: { type: Function },\n connectable: { type: [Boolean, Number, String, Function], default: void 0 },\n connectableStart: { type: Boolean, default: true },\n connectableEnd: { type: Boolean, default: true }\n },\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"position\", \"connectable\", \"connectableStart\", \"connectableEnd\", \"id\"]);\n const type = toRef(() => props.type ?? \"source\");\n const isValidConnection = toRef(() => props.isValidConnection ?? null);\n const {\n id: flowId,\n connectionStartHandle,\n connectionClickStartHandle,\n connectionEndHandle,\n vueFlowRef,\n nodesConnectable,\n noDragClassName,\n noPanClassName\n } = useVueFlow();\n const { id: nodeId, node, nodeEl, connectedEdges } = useNode();\n const handle = ref();\n const isConnectableStart = toRef(() => typeof __props.connectableStart !== \"undefined\" ? __props.connectableStart : true);\n const isConnectableEnd = toRef(() => typeof __props.connectableEnd !== \"undefined\" ? __props.connectableEnd : true);\n const isConnecting = toRef(\n () => {\n var _a, _b, _c, _d, _e, _f;\n return ((_a = connectionStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionStartHandle.value) == null ? void 0 : _c.type) === type.value || ((_d = connectionEndHandle.value) == null ? void 0 : _d.nodeId) === nodeId && ((_e = connectionEndHandle.value) == null ? void 0 : _e.id) === __props.id && ((_f = connectionEndHandle.value) == null ? void 0 : _f.type) === type.value;\n }\n );\n const isClickConnecting = toRef(\n () => {\n var _a, _b, _c;\n return ((_a = connectionClickStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionClickStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionClickStartHandle.value) == null ? void 0 : _c.type) === type.value;\n }\n );\n const { handlePointerDown, handleClick } = useHandle({\n nodeId,\n handleId: __props.id,\n isValidConnection,\n type\n });\n const isConnectable = computed(() => {\n if (typeof __props.connectable === \"string\" && __props.connectable === \"single\") {\n return !connectedEdges.value.some((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n });\n }\n if (typeof __props.connectable === \"number\") {\n return connectedEdges.value.filter((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n }).length < __props.connectable;\n }\n if (typeof __props.connectable === \"function\") {\n return __props.connectable(node, connectedEdges.value);\n }\n return isDef(__props.connectable) ? __props.connectable : nodesConnectable.value;\n });\n onMounted(() => {\n var _a;\n if (!node.dimensions.width || !node.dimensions.height) {\n return;\n }\n const existingBounds = (_a = node.handleBounds[type.value]) == null ? void 0 : _a.find((b) => b.id === __props.id);\n if (!vueFlowRef.value || existingBounds) {\n return;\n }\n const viewportNode = vueFlowRef.value.querySelector(\".vue-flow__transformationpane\");\n if (!nodeEl.value || !handle.value || !viewportNode || !__props.id) {\n return;\n }\n const nodeBounds = nodeEl.value.getBoundingClientRect();\n const handleBounds = handle.value.getBoundingClientRect();\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const nextBounds = {\n id: __props.id,\n position: __props.position,\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n type: type.value,\n nodeId,\n ...getDimensions(handle.value)\n };\n node.handleBounds[type.value] = [...node.handleBounds[type.value] ?? [], nextBounds];\n });\n function onPointerDown(event) {\n const isMouseTriggered = isMouseEvent(event);\n if (isConnectable.value && isConnectableStart.value && (isMouseTriggered && event.button === 0 || !isMouseTriggered)) {\n handlePointerDown(event);\n }\n }\n function onClick(event) {\n if (!nodeId || !connectionClickStartHandle.value && !isConnectableStart.value) {\n return;\n }\n if (isConnectable.value) {\n handleClick(event);\n }\n }\n __expose({\n handleClick,\n handlePointerDown,\n onClick,\n onPointerDown\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"handle\",\n ref: handle,\n \"data-id\": `${unref(flowId)}-${unref(nodeId)}-${__props.id}-${type.value}`,\n \"data-handleid\": __props.id,\n \"data-nodeid\": unref(nodeId),\n \"data-handlepos\": _ctx.position,\n class: normalizeClass([\"vue-flow__handle\", [\n `vue-flow__handle-${_ctx.position}`,\n `vue-flow__handle-${__props.id}`,\n unref(noDragClassName),\n unref(noPanClassName),\n type.value,\n {\n connectable: isConnectable.value,\n connecting: isClickConnecting.value,\n connectablestart: isConnectableStart.value,\n connectableend: isConnectableEnd.value,\n connectionindicator: isConnectable.value && (isConnectableStart.value && !isConnecting.value || isConnectableEnd.value && isConnecting.value)\n }\n ]]),\n onMousedown: onPointerDown,\n onTouchstartPassive: onPointerDown,\n onClick\n }, [\n renderSlot(_ctx.$slots, \"default\", { id: _ctx.id })\n ], 42, _hoisted_1$9);\n };\n }\n});\nconst DefaultNode = function({\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nDefaultNode.props = [\"sourcePosition\", \"targetPosition\", \"label\", \"isValidTargetPos\", \"isValidSourcePos\", \"connectable\", \"data\"];\nDefaultNode.inheritAttrs = false;\nDefaultNode.compatConfig = { MODE: 3 };\nconst DefaultNode$1 = DefaultNode;\nconst OutputNode = function({\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label])\n ];\n};\nOutputNode.props = [\"targetPosition\", \"label\", \"isValidTargetPos\", \"connectable\", \"data\"];\nOutputNode.inheritAttrs = false;\nOutputNode.compatConfig = { MODE: 3 };\nconst OutputNode$1 = OutputNode;\nconst InputNode = function({\n sourcePosition = Position.Bottom,\n label: _label,\n connectable = true,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nInputNode.props = [\"sourcePosition\", \"label\", \"isValidSourcePos\", \"connectable\", \"data\"];\nInputNode.inheritAttrs = false;\nInputNode.compatConfig = { MODE: 3 };\nconst InputNode$1 = InputNode;\nconst _hoisted_1$8 = [\"transform\"];\nconst _hoisted_2$2 = [\"width\", \"height\", \"x\", \"y\", \"rx\", \"ry\"];\nconst _hoisted_3$1 = [\"y\"];\nconst __default__$e = {\n name: \"EdgeText\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$e = /* @__PURE__ */ defineComponent({\n ...__default__$e,\n props: {\n x: {},\n y: {},\n label: {},\n labelStyle: { default: () => ({}) },\n labelShowBg: { type: Boolean, default: true },\n labelBgStyle: { default: () => ({}) },\n labelBgPadding: { default: () => [2, 4] },\n labelBgBorderRadius: { default: 2 }\n },\n setup(__props) {\n const box = ref({ x: 0, y: 0, width: 0, height: 0 });\n const el = ref(null);\n const transform = computed(() => `translate(${__props.x - box.value.width / 2} ${__props.y - box.value.height / 2})`);\n onMounted(getBox);\n watch([() => __props.x, () => __props.y, el, () => __props.label], getBox);\n function getBox() {\n if (!el.value) {\n return;\n }\n const nextBox = el.value.getBBox();\n if (nextBox.width !== box.value.width || nextBox.height !== box.value.height) {\n box.value = nextBox;\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"g\", {\n transform: transform.value,\n class: \"vue-flow__edge-textwrapper\"\n }, [\n _ctx.labelShowBg ? (openBlock(), createElementBlock(\"rect\", {\n key: 0,\n class: \"vue-flow__edge-textbg\",\n width: `${box.value.width + 2 * _ctx.labelBgPadding[0]}px`,\n height: `${box.value.height + 2 * _ctx.labelBgPadding[1]}px`,\n x: -_ctx.labelBgPadding[0],\n y: -_ctx.labelBgPadding[1],\n style: normalizeStyle(_ctx.labelBgStyle),\n rx: _ctx.labelBgBorderRadius,\n ry: _ctx.labelBgBorderRadius\n }, null, 12, _hoisted_2$2)) : createCommentVNode(\"\", true),\n createElementVNode(\"text\", mergeProps(_ctx.$attrs, {\n ref_key: \"el\",\n ref: el,\n class: \"vue-flow__edge-text\",\n y: box.value.height / 2,\n dy: \"0.3em\",\n style: _ctx.labelStyle\n }), [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n typeof _ctx.label !== \"string\" ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.label), { key: 0 })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ], 64))\n ])\n ], 16, _hoisted_3$1)\n ], 8, _hoisted_1$8);\n };\n }\n});\nconst _hoisted_1$7 = [\"id\", \"d\", \"marker-end\", \"marker-start\"];\nconst _hoisted_2$1 = [\"d\", \"stroke-width\"];\nconst __default__$d = {\n name: \"BaseEdge\",\n inheritAttrs: false,\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$d = /* @__PURE__ */ defineComponent({\n ...__default__$d,\n props: {\n id: {},\n labelX: {},\n labelY: {},\n path: {},\n label: {},\n markerStart: {},\n markerEnd: {},\n interactionWidth: { default: 20 },\n labelStyle: {},\n labelShowBg: { type: Boolean },\n labelBgStyle: {},\n labelBgPadding: {},\n labelBgBorderRadius: {}\n },\n setup(__props, { expose: __expose }) {\n const pathEl = ref(null);\n const interactionEl = ref(null);\n const labelEl = ref(null);\n const attrs = useAttrs();\n __expose({\n pathEl,\n interactionEl,\n labelEl\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"path\", mergeProps(unref(attrs), {\n id: _ctx.id,\n ref_key: \"pathEl\",\n ref: pathEl,\n d: _ctx.path,\n class: \"vue-flow__edge-path\",\n \"marker-end\": _ctx.markerEnd,\n \"marker-start\": _ctx.markerStart\n }), null, 16, _hoisted_1$7),\n _ctx.interactionWidth ? (openBlock(), createElementBlock(\"path\", {\n key: 0,\n ref_key: \"interactionEl\",\n ref: interactionEl,\n fill: \"none\",\n d: _ctx.path,\n \"stroke-width\": _ctx.interactionWidth,\n \"stroke-opacity\": 0,\n class: \"vue-flow__edge-interaction\"\n }, null, 8, _hoisted_2$1)) : createCommentVNode(\"\", true),\n _ctx.label && _ctx.labelX && _ctx.labelY ? (openBlock(), createBlock(_sfc_main$e, {\n key: 1,\n ref_key: \"labelEl\",\n ref: labelEl,\n x: _ctx.labelX,\n y: _ctx.labelY,\n label: _ctx.label,\n \"label-show-bg\": _ctx.labelShowBg,\n \"label-bg-style\": _ctx.labelBgStyle,\n \"label-bg-padding\": _ctx.labelBgPadding,\n \"label-bg-border-radius\": _ctx.labelBgBorderRadius,\n \"label-style\": _ctx.labelStyle\n }, null, 8, [\"x\", \"y\", \"label\", \"label-show-bg\", \"label-bg-style\", \"label-bg-padding\", \"label-bg-border-radius\", \"label-style\"])) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n}) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n}\nfunction getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n}) {\n const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n return [centerX, centerY, offsetX, offsetY];\n}\nfunction calculateControlOffset(distance2, curvature) {\n if (distance2 >= 0) {\n return 0.5 * distance2;\n } else {\n return curvature * 25 * Math.sqrt(-distance2);\n }\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n ctX = x1 - calculateControlOffset(x1 - x2, c);\n ctY = y1;\n break;\n case Position.Right:\n ctX = x1 + calculateControlOffset(x2 - x1, c);\n ctY = y1;\n break;\n case Position.Top:\n ctX = x1;\n ctY = y1 - calculateControlOffset(y1 - y2, c);\n break;\n case Position.Bottom:\n ctX = x1;\n ctY = y1 + calculateControlOffset(y2 - y1, c);\n break;\n }\n return [ctX, ctY];\n}\nfunction getBezierPath(bezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25\n } = bezierPathParams;\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY\n ];\n}\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n case Position.Right:\n ctX = 0.5 * (x1 + x2);\n ctY = y1;\n break;\n case Position.Top:\n case Position.Bottom:\n ctX = x1;\n ctY = 0.5 * (y1 + y2);\n break;\n }\n return [ctX, ctY];\n}\nfunction getSimpleBezierPath(simpleBezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top\n } = simpleBezierPathParams;\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY\n });\n const [centerX, centerY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n centerX,\n centerY,\n offsetX,\n offsetY\n ];\n}\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 }\n};\nfunction getDirection({\n source,\n sourcePosition = Position.Bottom,\n target\n}) {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n}\nfunction distance(a, b) {\n return Math.sqrt((b.x - a.x) ** 2 + (b.y - a.y) ** 2);\n}\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset\n}) {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped\n });\n const dirAccessor = dir.x !== 0 ? \"x\" : \"y\";\n const currDir = dir[dirAccessor];\n let points;\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] = getSimpleEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y\n });\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n const verticalSplit = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y }\n ];\n const horizontalSplit = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY }\n ];\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === \"x\" ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === \"x\" ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n if (dirAccessor === \"x\") {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n }\n }\n }\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === \"x\" ? \"y\" : \"x\";\n const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget = sourceDir[dirAccessor] === 1 && (!isSameDir && sourceGtTargetOppo || isSameDir && sourceLtTargetOppo) || sourceDir[dirAccessor] !== 1 && (!isSameDir && sourceLtTargetOppo || isSameDir && sourceGtTargetOppo);\n if (flipSourceTarget) {\n points = dirAccessor === \"x\" ? sourceTarget : targetSource;\n }\n }\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target\n ];\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n if (a.x === x && x === c.x || a.y === y && y === c.y) {\n return `L${x} ${y}`;\n }\n if (a.y === y) {\n const xDir2 = a.x < c.x ? -1 : 1;\n const yDir2 = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir2},${y}Q ${x},${y} ${x},${y + bendSize * yDir2}`;\n }\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\nfunction getSmoothStepPath(smoothStepPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20\n } = smoothStepPathParams;\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset\n });\n const path = points.reduce((res, p, i) => {\n let segment;\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? \"M\" : \"L\"}${p.x} ${p.y}`;\n }\n res += segment;\n return res;\n }, \"\");\n return [path, labelX, labelY, offsetX, offsetY];\n}\nfunction getStraightPath(straightEdgeParams) {\n const { sourceX, sourceY, targetX, targetY } = straightEdgeParams;\n const [centerX, centerY, offsetX, offsetY] = getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n });\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, centerX, centerY, offsetX, offsetY];\n}\nconst StraightEdge = defineComponent({\n name: \"StraightEdge\",\n props: [\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getStraightPath(props);\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst StraightEdge$1 = StraightEdge;\nconst SmoothStepEdge = defineComponent({\n name: \"SmoothStepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"borderRadius\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\",\n \"offset\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSmoothStepPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SmoothStepEdge$1 = SmoothStepEdge;\nconst StepEdge = defineComponent({\n name: \"StepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n setup(props, { attrs }) {\n return () => h(SmoothStepEdge$1, { ...props, ...attrs, borderRadius: 0 });\n }\n});\nconst StepEdge$1 = StepEdge;\nconst BezierEdge = defineComponent({\n name: \"BezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"curvature\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst BezierEdge$1 = BezierEdge;\nconst SimpleBezierEdge = defineComponent({\n name: \"SimpleBezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SimpleBezierEdge$1 = SimpleBezierEdge;\nconst defaultNodeTypes = {\n input: InputNode$1,\n default: DefaultNode$1,\n output: OutputNode$1\n};\nconst defaultEdgeTypes = {\n default: BezierEdge$1,\n straight: StraightEdge$1,\n step: StepEdge$1,\n smoothstep: SmoothStepEdge$1,\n simplebezier: SimpleBezierEdge$1\n};\nfunction useGetters(state, nodeLookup, edgeLookup) {\n const getNode = computed(() => (id2) => nodeLookup.value.get(id2));\n const getEdge = computed(() => (id2) => edgeLookup.value.get(id2));\n const getEdgeTypes = computed(() => {\n const edgeTypes = {\n ...defaultEdgeTypes,\n ...state.edgeTypes\n };\n const keys = Object.keys(edgeTypes);\n for (const e of state.edges) {\n e.type && !keys.includes(e.type) && (edgeTypes[e.type] = e.type);\n }\n return edgeTypes;\n });\n const getNodeTypes = computed(() => {\n const nodeTypes = {\n ...defaultNodeTypes,\n ...state.nodeTypes\n };\n const keys = Object.keys(nodeTypes);\n for (const n of state.nodes) {\n n.type && !keys.includes(n.type) && (nodeTypes[n.type] = n.type);\n }\n return nodeTypes;\n });\n const getNodes = computed(() => {\n if (state.onlyRenderVisibleElements) {\n return getNodesInside(\n state.nodes,\n {\n x: 0,\n y: 0,\n width: state.dimensions.width,\n height: state.dimensions.height\n },\n state.viewport,\n true\n );\n }\n return state.nodes;\n });\n const getEdges = computed(() => {\n if (state.onlyRenderVisibleElements) {\n const visibleEdges = [];\n for (const edge of state.edges) {\n const source = nodeLookup.value.get(edge.source);\n const target = nodeLookup.value.get(edge.target);\n if (isEdgeVisible({\n sourcePos: source.computedPosition || { x: 0, y: 0 },\n targetPos: target.computedPosition || { x: 0, y: 0 },\n sourceWidth: source.dimensions.width,\n sourceHeight: source.dimensions.height,\n targetWidth: target.dimensions.width,\n targetHeight: target.dimensions.height,\n width: state.dimensions.width,\n height: state.dimensions.height,\n viewport: state.viewport\n })) {\n visibleEdges.push(edge);\n }\n }\n return visibleEdges;\n }\n return state.edges;\n });\n const getElements = computed(() => [...getNodes.value, ...getEdges.value]);\n const getSelectedNodes = computed(() => {\n const selectedNodes = [];\n for (const node of state.nodes) {\n if (node.selected) {\n selectedNodes.push(node);\n }\n }\n return selectedNodes;\n });\n const getSelectedEdges = computed(() => {\n const selectedEdges = [];\n for (const edge of state.edges) {\n if (edge.selected) {\n selectedEdges.push(edge);\n }\n }\n return selectedEdges;\n });\n const getSelectedElements = computed(() => [\n ...getSelectedNodes.value,\n ...getSelectedEdges.value\n ]);\n const getNodesInitialized = computed(() => {\n const initializedNodes = [];\n for (const node of state.nodes) {\n if (!!node.dimensions.width && !!node.dimensions.height && node.handleBounds !== void 0) {\n initializedNodes.push(node);\n }\n }\n return initializedNodes;\n });\n const areNodesInitialized = computed(\n () => getNodes.value.length > 0 && getNodesInitialized.value.length === getNodes.value.length\n );\n return {\n getNode,\n getEdge,\n getElements,\n getEdgeTypes,\n getNodeTypes,\n getEdges,\n getNodes,\n getSelectedElements,\n getSelectedNodes,\n getSelectedEdges,\n getNodesInitialized,\n areNodesInitialized\n };\n}\nclass Storage {\n constructor() {\n this.currentId = 0;\n this.flows = /* @__PURE__ */ new Map();\n }\n static getInstance() {\n var _a;\n const vueApp = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app;\n const existingInstance = (vueApp == null ? void 0 : vueApp.config.globalProperties.$vueFlowStorage) ?? Storage.instance;\n Storage.instance = existingInstance ?? new Storage();\n if (vueApp) {\n vueApp.config.globalProperties.$vueFlowStorage = Storage.instance;\n }\n return Storage.instance;\n }\n set(id2, flow) {\n return this.flows.set(id2, flow);\n }\n get(id2) {\n return this.flows.get(id2);\n }\n remove(id2) {\n return this.flows.delete(id2);\n }\n create(id2, preloadedState) {\n const state = useState();\n const reactiveState = reactive(state);\n const hooksOn = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n const name = `on${n.charAt(0).toUpperCase() + n.slice(1)}`;\n hooksOn[name] = h2.on;\n }\n const emits = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n emits[n] = h2.trigger;\n }\n const nodeLookup = computed(() => {\n const nodesMap = /* @__PURE__ */ new Map();\n for (const node of reactiveState.nodes) {\n nodesMap.set(node.id, node);\n }\n return nodesMap;\n });\n const edgeLookup = computed(() => {\n const edgesMap = /* @__PURE__ */ new Map();\n for (const edge of reactiveState.edges) {\n edgesMap.set(edge.id, edge);\n }\n return edgesMap;\n });\n const getters = useGetters(reactiveState, nodeLookup, edgeLookup);\n const actions = useActions(reactiveState, nodeLookup, edgeLookup);\n actions.setState({ ...reactiveState, ...preloadedState });\n const flow = {\n ...hooksOn,\n ...getters,\n ...actions,\n ...toRefs(reactiveState),\n nodeLookup,\n edgeLookup,\n emits,\n id: id2,\n vueFlowVersion: \"1.45.0\",\n $destroy: () => {\n this.remove(id2);\n }\n };\n this.set(id2, flow);\n return flow;\n }\n getId() {\n return `vue-flow-${this.currentId++}`;\n }\n}\nfunction useVueFlow(idOrOpts) {\n const storage = Storage.getInstance();\n const scope = getCurrentScope();\n const isOptsObj = typeof idOrOpts === \"object\";\n const options = isOptsObj ? idOrOpts : { id: idOrOpts };\n const id2 = options.id;\n const vueFlowId = id2 ?? (scope == null ? void 0 : scope.vueFlowId);\n let vueFlow;\n if (scope) {\n const injectedState = inject(VueFlow, null);\n if (typeof injectedState !== \"undefined\" && injectedState !== null && (!vueFlowId || injectedState.id === vueFlowId)) {\n vueFlow = injectedState;\n }\n }\n if (!vueFlow) {\n if (vueFlowId) {\n vueFlow = storage.get(vueFlowId);\n }\n }\n if (!vueFlow || vueFlowId && vueFlow.id !== vueFlowId) {\n const name = id2 ?? storage.getId();\n const state = storage.create(name, options);\n vueFlow = state;\n const vfScope = scope ?? effectScope(true);\n vfScope.run(() => {\n watch(\n state.applyDefault,\n (shouldApplyDefault, __, onCleanup) => {\n const nodesChangeHandler = (changes) => {\n state.applyNodeChanges(changes);\n };\n const edgesChangeHandler = (changes) => {\n state.applyEdgeChanges(changes);\n };\n if (shouldApplyDefault) {\n state.onNodesChange(nodesChangeHandler);\n state.onEdgesChange(edgesChangeHandler);\n } else {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n }\n onCleanup(() => {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n });\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n if (vueFlow) {\n const storedInstance = storage.get(vueFlow.id);\n if (storedInstance) {\n storedInstance.$destroy();\n } else {\n warn(`No store instance found for id ${vueFlow.id} in storage.`);\n }\n }\n });\n });\n } else {\n if (isOptsObj) {\n vueFlow.setState(options);\n }\n }\n if (scope) {\n provide(VueFlow, vueFlow);\n scope.vueFlowId = vueFlow.id;\n }\n if (isOptsObj) {\n const instance = getCurrentInstance();\n if ((instance == null ? void 0 : instance.type.name) !== \"VueFlow\") {\n vueFlow.emits.error(new VueFlowError(ErrorCode.USEVUEFLOW_OPTIONS));\n }\n }\n return vueFlow;\n}\nfunction useResizeHandler(viewportEl) {\n const { emits, dimensions } = useVueFlow();\n let resizeObserver;\n onMounted(() => {\n const rendererNode = viewportEl.value;\n const updateDimensions = () => {\n if (!rendererNode) {\n return;\n }\n const size = getDimensions(rendererNode);\n if (size.width === 0 || size.height === 0) {\n emits.error(new VueFlowError(ErrorCode.MISSING_VIEWPORT_DIMENSIONS));\n }\n dimensions.value = { width: size.width || 500, height: size.height || 500 };\n };\n updateDimensions();\n window.addEventListener(\"resize\", updateDimensions);\n if (rendererNode) {\n resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(rendererNode);\n }\n onBeforeUnmount(() => {\n window.removeEventListener(\"resize\", updateDimensions);\n if (resizeObserver && rendererNode) {\n resizeObserver.unobserve(rendererNode);\n }\n });\n });\n}\nconst __default__$c = {\n name: \"UserSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n ...__default__$c,\n props: {\n userSelectionRect: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__selection vue-flow__container\",\n style: normalizeStyle({\n width: `${_ctx.userSelectionRect.width}px`,\n height: `${_ctx.userSelectionRect.height}px`,\n transform: `translate(${_ctx.userSelectionRect.x}px, ${_ctx.userSelectionRect.y}px)`\n })\n }, null, 4);\n };\n }\n});\nconst _hoisted_1$6 = [\"tabIndex\"];\nconst __default__$b = {\n name: \"NodesSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n ...__default__$b,\n setup(__props) {\n const { emits, viewport, getSelectedNodes, noPanClassName, disableKeyboardA11y, userSelectionActive } = useVueFlow();\n const updatePositions = useUpdateNodePositions();\n const el = ref(null);\n const dragging = useDrag({\n el,\n onStart(args) {\n emits.selectionDragStart(args);\n },\n onDrag(args) {\n emits.selectionDrag(args);\n },\n onStop(args) {\n emits.selectionDragStop(args);\n }\n });\n onMounted(() => {\n var _a;\n if (!disableKeyboardA11y.value) {\n (_a = el.value) == null ? void 0 : _a.focus({ preventScroll: true });\n }\n });\n const selectedNodesBBox = computed(() => getRectOfNodes(getSelectedNodes.value));\n const innerStyle = computed(() => ({\n width: `${selectedNodesBBox.value.width}px`,\n height: `${selectedNodesBBox.value.height}px`,\n top: `${selectedNodesBBox.value.y}px`,\n left: `${selectedNodesBBox.value.x}px`\n }));\n function onContextMenu(event) {\n emits.selectionContextMenu({ event, nodes: getSelectedNodes.value });\n }\n function onKeyDown(event) {\n if (disableKeyboardA11y) {\n return;\n }\n if (arrowKeyDiffs[event.key]) {\n event.preventDefault();\n updatePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n return (_ctx, _cache) => {\n return !unref(userSelectionActive) && selectedNodesBBox.value.width && selectedNodesBBox.value.height ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vue-flow__nodesselection vue-flow__container\", unref(noPanClassName)]),\n style: normalizeStyle({ transform: `translate(${unref(viewport).x}px,${unref(viewport).y}px) scale(${unref(viewport).zoom})` })\n }, [\n createElementVNode(\"div\", {\n ref_key: \"el\",\n ref: el,\n class: normalizeClass([{ dragging: unref(dragging) }, \"vue-flow__nodesselection-rect\"]),\n style: normalizeStyle(innerStyle.value),\n tabIndex: unref(disableKeyboardA11y) ? void 0 : -1,\n onContextmenu: onContextMenu,\n onKeydown: onKeyDown\n }, null, 46, _hoisted_1$6)\n ], 6)) : createCommentVNode(\"\", true);\n };\n }\n});\nfunction getMousePosition(event, containerBounds) {\n return {\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n };\n}\nconst __default__$a = {\n name: \"Pane\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n ...__default__$a,\n props: {\n isSelecting: { type: Boolean },\n selectionKeyPressed: { type: Boolean }\n },\n setup(__props) {\n const {\n vueFlowRef,\n nodes,\n viewport,\n emits,\n userSelectionActive,\n removeSelectedElements,\n userSelectionRect,\n elementsSelectable,\n nodesSelectionActive,\n getSelectedEdges,\n getSelectedNodes,\n removeNodes,\n removeEdges,\n selectionMode,\n deleteKeyCode,\n multiSelectionKeyCode,\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n connectionLookup,\n defaultEdgeOptions,\n connectionStartHandle\n } = useVueFlow();\n const container = ref(null);\n const selectedNodeIds = ref(/* @__PURE__ */ new Set());\n const selectedEdgeIds = ref(/* @__PURE__ */ new Set());\n const containerBounds = ref();\n const hasActiveSelection = toRef(() => elementsSelectable.value && (__props.isSelecting || userSelectionActive.value));\n const connectionInProgress = toRef(() => connectionStartHandle.value !== null);\n let selectionInProgress = false;\n let selectionStarted = false;\n const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });\n const multiSelectKeyPressed = useKeyPress(multiSelectionKeyCode);\n watch(deleteKeyPressed, (isKeyPressed) => {\n if (!isKeyPressed) {\n return;\n }\n removeNodes(getSelectedNodes.value);\n removeEdges(getSelectedEdges.value);\n nodesSelectionActive.value = false;\n });\n watch(multiSelectKeyPressed, (isKeyPressed) => {\n multiSelectionActive.value = isKeyPressed;\n });\n function wrapHandler(handler, containerRef) {\n return (event) => {\n if (event.target !== containerRef) {\n return;\n }\n handler == null ? void 0 : handler(event);\n };\n }\n function onClick(event) {\n if (selectionInProgress || connectionInProgress.value) {\n selectionInProgress = false;\n return;\n }\n emits.paneClick(event);\n removeSelectedElements();\n nodesSelectionActive.value = false;\n }\n function onContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n emits.paneContextMenu(event);\n }\n function onWheel(event) {\n emits.paneScroll(event);\n }\n function onPointerDown(event) {\n var _a, _b, _c;\n containerBounds.value = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!elementsSelectable.value || !__props.isSelecting || event.button !== 0 || event.target !== container.value || !containerBounds.value) {\n return;\n }\n (_c = (_b = event.target) == null ? void 0 : _b.setPointerCapture) == null ? void 0 : _c.call(_b, event.pointerId);\n const { x, y } = getMousePosition(event, containerBounds.value);\n selectionStarted = true;\n selectionInProgress = false;\n removeSelectedElements();\n userSelectionRect.value = {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y\n };\n emits.selectionStart(event);\n }\n function onPointerMove(event) {\n var _a;\n if (!containerBounds.value || !userSelectionRect.value) {\n return;\n }\n selectionInProgress = true;\n const { x: mouseX, y: mouseY } = getEventPosition(event, containerBounds.value);\n const { startX = 0, startY = 0 } = userSelectionRect.value;\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY)\n };\n const prevSelectedNodeIds = selectedNodeIds.value;\n const prevSelectedEdgeIds = selectedEdgeIds.value;\n selectedNodeIds.value = new Set(\n getNodesInside(nodes.value, nextUserSelectRect, viewport.value, selectionMode.value === SelectionMode.Partial, true).map(\n (node) => node.id\n )\n );\n selectedEdgeIds.value = /* @__PURE__ */ new Set();\n const edgesSelectable = ((_a = defaultEdgeOptions.value) == null ? void 0 : _a.selectable) ?? true;\n for (const nodeId of selectedNodeIds.value) {\n const connections = connectionLookup.value.get(nodeId);\n if (!connections) {\n continue;\n }\n for (const { edgeId } of connections.values()) {\n const edge = edgeLookup.value.get(edgeId);\n if (edge && (edge.selectable ?? edgesSelectable)) {\n selectedEdgeIds.value.add(edgeId);\n }\n }\n }\n if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.value)) {\n const changes = getSelectionChanges(nodeLookup.value, selectedNodeIds.value, true);\n emits.nodesChange(changes);\n }\n if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.value)) {\n const changes = getSelectionChanges(edgeLookup.value, selectedEdgeIds.value);\n emits.edgesChange(changes);\n }\n userSelectionRect.value = nextUserSelectRect;\n userSelectionActive.value = true;\n nodesSelectionActive.value = false;\n }\n function onPointerUp(event) {\n var _a;\n if (event.button !== 0 || !selectionStarted) {\n return;\n }\n (_a = event.target) == null ? void 0 : _a.releasePointerCapture(event.pointerId);\n if (!userSelectionActive.value && userSelectionRect.value && event.target === container.value) {\n onClick(event);\n }\n userSelectionActive.value = false;\n userSelectionRect.value = null;\n nodesSelectionActive.value = selectedNodeIds.value.size > 0;\n emits.selectionEnd(event);\n if (__props.selectionKeyPressed) {\n selectionInProgress = false;\n }\n selectionStarted = false;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: normalizeClass([\"vue-flow__pane vue-flow__container\", { selection: _ctx.isSelecting }]),\n onClick: _cache[0] || (_cache[0] = (event) => hasActiveSelection.value ? void 0 : wrapHandler(onClick, container.value)(event)),\n onContextmenu: _cache[1] || (_cache[1] = ($event) => wrapHandler(onContextMenu, container.value)($event)),\n onWheelPassive: _cache[2] || (_cache[2] = ($event) => wrapHandler(onWheel, container.value)($event)),\n onPointerenter: _cache[3] || (_cache[3] = (event) => hasActiveSelection.value ? void 0 : unref(emits).paneMouseEnter(event)),\n onPointerdown: _cache[4] || (_cache[4] = (event) => hasActiveSelection.value ? onPointerDown(event) : unref(emits).paneMouseMove(event)),\n onPointermove: _cache[5] || (_cache[5] = (event) => hasActiveSelection.value ? onPointerMove(event) : unref(emits).paneMouseMove(event)),\n onPointerup: _cache[6] || (_cache[6] = (event) => hasActiveSelection.value ? onPointerUp(event) : void 0),\n onPointerleave: _cache[7] || (_cache[7] = ($event) => unref(emits).paneMouseLeave($event))\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n unref(userSelectionActive) && unref(userSelectionRect) ? (openBlock(), createBlock(_sfc_main$c, {\n key: 0,\n \"user-selection-rect\": unref(userSelectionRect)\n }, null, 8, [\"user-selection-rect\"])) : createCommentVNode(\"\", true),\n unref(nodesSelectionActive) && unref(getSelectedNodes).length ? (openBlock(), createBlock(_sfc_main$b, { key: 1 })) : createCommentVNode(\"\", true)\n ], 34);\n };\n }\n});\nconst __default__$9 = {\n name: \"Transform\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n ...__default__$9,\n setup(__props) {\n const { viewport, fitViewOnInit, fitViewOnInitDone } = useVueFlow();\n const isHidden = computed(() => {\n if (fitViewOnInit.value) {\n return !fitViewOnInitDone.value;\n }\n return false;\n });\n const transform = computed(() => `translate(${viewport.value.x}px,${viewport.value.y}px) scale(${viewport.value.zoom})`);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__transformationpane vue-flow__container\",\n style: normalizeStyle({ transform: transform.value, opacity: isHidden.value ? 0 : void 0 })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 4);\n };\n }\n});\nconst __default__$8 = {\n name: \"Viewport\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n ...__default__$8,\n setup(__props) {\n const {\n minZoom,\n maxZoom,\n defaultViewport,\n translateExtent,\n zoomActivationKeyCode,\n selectionKeyCode,\n panActivationKeyCode,\n panOnScroll,\n panOnScrollMode,\n panOnScrollSpeed,\n panOnDrag,\n zoomOnDoubleClick,\n zoomOnPinch,\n zoomOnScroll,\n preventScrolling,\n noWheelClassName,\n noPanClassName,\n emits,\n connectionStartHandle,\n userSelectionActive,\n paneDragging,\n d3Zoom: storeD3Zoom,\n d3Selection: storeD3Selection,\n d3ZoomHandler: storeD3ZoomHandler,\n viewport,\n viewportRef,\n paneClickDistance\n } = useVueFlow();\n useResizeHandler(viewportRef);\n const isZoomingOrPanning = shallowRef(false);\n const isPanScrolling = shallowRef(false);\n let panScrollTimeout = null;\n let zoomedWithRightMouseButton = false;\n let mouseButton = 0;\n let prevTransform = {\n x: 0,\n y: 0,\n zoom: 0\n };\n const panKeyPressed = useKeyPress(panActivationKeyCode);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const zoomKeyPressed = useKeyPress(zoomActivationKeyCode);\n const shouldPanOnDrag = toRef(\n () => (!selectionKeyPressed.value || selectionKeyPressed.value && selectionKeyCode.value === true) && (panKeyPressed.value || panOnDrag.value)\n );\n const shouldPanOnScroll = toRef(() => panKeyPressed.value || panOnScroll.value);\n const isSelecting = toRef(() => selectionKeyPressed.value || selectionKeyCode.value === true && shouldPanOnDrag.value !== true);\n onMounted(() => {\n if (!viewportRef.value) {\n warn(\"Viewport element is missing\");\n return;\n }\n const viewportElement = viewportRef.value;\n const bbox = viewportElement.getBoundingClientRect();\n const d3Zoom = zoom().clickDistance(paneClickDistance.value).scaleExtent([minZoom.value, maxZoom.value]).translateExtent(translateExtent.value);\n const d3Selection = select(viewportElement).call(d3Zoom);\n const d3ZoomHandler = d3Selection.on(\"wheel.zoom\");\n const updatedTransform = identity.translate(defaultViewport.value.x ?? 0, defaultViewport.value.y ?? 0).scale(clamp(defaultViewport.value.zoom ?? 1, minZoom.value, maxZoom.value));\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(updatedTransform, extent, translateExtent.value);\n d3Zoom.transform(d3Selection, constrainedTransform);\n d3Zoom.wheelDelta(wheelDelta);\n storeD3Zoom.value = d3Zoom;\n storeD3Selection.value = d3Selection;\n storeD3ZoomHandler.value = d3ZoomHandler;\n viewport.value = { x: constrainedTransform.x, y: constrainedTransform.y, zoom: constrainedTransform.k };\n d3Zoom.on(\"start\", (event) => {\n var _a;\n if (!event.sourceEvent) {\n return null;\n }\n mouseButton = event.sourceEvent.button;\n isZoomingOrPanning.value = true;\n const flowTransform = eventToFlowTransform(event.transform);\n if (((_a = event.sourceEvent) == null ? void 0 : _a.type) === \"mousedown\") {\n paneDragging.value = true;\n }\n prevTransform = flowTransform;\n emits.viewportChangeStart(flowTransform);\n emits.moveStart({ event, flowTransform });\n });\n d3Zoom.on(\"end\", (event) => {\n if (!event.sourceEvent) {\n return null;\n }\n isZoomingOrPanning.value = false;\n paneDragging.value = false;\n if (isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0) && !zoomedWithRightMouseButton) {\n emits.paneContextMenu(event.sourceEvent);\n }\n zoomedWithRightMouseButton = false;\n if (viewChanged(prevTransform, event.transform)) {\n const flowTransform = eventToFlowTransform(event.transform);\n prevTransform = flowTransform;\n emits.viewportChangeEnd(flowTransform);\n emits.moveEnd({ event, flowTransform });\n }\n });\n d3Zoom.filter((event) => {\n var _a;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const eventButton = event.button;\n if (eventButton === 1 && event.type === \"mousedown\" && (isWrappedWithClass(event, \"vue-flow__node\") || isWrappedWithClass(event, \"vue-flow__edge\"))) {\n return true;\n }\n if (!shouldPanOnDrag.value && !zoomScroll && !shouldPanOnScroll.value && !zoomOnDoubleClick.value && !zoomOnPinch.value) {\n return false;\n }\n if (userSelectionActive.value) {\n return false;\n }\n if (!zoomOnDoubleClick.value && event.type === \"dblclick\") {\n return false;\n }\n if (isWrappedWithClass(event, noWheelClassName.value) && event.type === \"wheel\") {\n return false;\n }\n if (isWrappedWithClass(event, noPanClassName.value) && (event.type !== \"wheel\" || shouldPanOnScroll.value && event.type === \"wheel\" && !zoomKeyPressed.value)) {\n return false;\n }\n if (!zoomOnPinch.value && event.ctrlKey && event.type === \"wheel\") {\n return false;\n }\n if (!zoomScroll && !shouldPanOnScroll.value && !pinchZoom && event.type === \"wheel\") {\n return false;\n }\n if (!zoomOnPinch && event.type === \"touchstart\" && ((_a = event.touches) == null ? void 0 : _a.length) > 1) {\n event.preventDefault();\n return false;\n }\n if (!shouldPanOnDrag.value && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n if (selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && panOnDrag.value.includes(0) && eventButton === 0) {\n return false;\n }\n if (Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(eventButton) && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n const buttonAllowed = Array.isArray(panOnDrag.value) && panOnDrag.value.includes(eventButton) || selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(0) || !eventButton || eventButton <= 1;\n return (!event.ctrlKey || panKeyPressed.value || event.type === \"wheel\") && buttonAllowed;\n });\n watch(\n [userSelectionActive, shouldPanOnDrag],\n () => {\n if (userSelectionActive.value && !isZoomingOrPanning.value) {\n d3Zoom.on(\"zoom\", null);\n } else if (!userSelectionActive.value) {\n d3Zoom.on(\"zoom\", (event) => {\n viewport.value = { x: event.transform.x, y: event.transform.y, zoom: event.transform.k };\n const flowTransform = eventToFlowTransform(event.transform);\n zoomedWithRightMouseButton = isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0);\n emits.viewportChange(flowTransform);\n emits.move({ event, flowTransform });\n });\n }\n },\n { immediate: true }\n );\n watch(\n [userSelectionActive, shouldPanOnScroll, panOnScrollMode, zoomKeyPressed, zoomOnPinch, preventScrolling, noWheelClassName],\n () => {\n if (shouldPanOnScroll.value && !zoomKeyPressed.value && !userSelectionActive.value) {\n d3Selection.on(\n \"wheel.zoom\",\n (event) => {\n if (isWrappedWithClass(event, noWheelClassName.value)) {\n return false;\n }\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventEnabled = !preventScrolling.value || shouldPanOnScroll.value || zoomScroll || pinchZoom;\n if (!scrollEventEnabled) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n const currentZoom = d3Selection.property(\"__zoom\").k || 1;\n const _isMacOs = isMacOs();\n if (!panKeyPressed.value && event.ctrlKey && zoomOnPinch.value && _isMacOs) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom2 = currentZoom * 2 ** pinchDelta;\n d3Zoom.scaleTo(d3Selection, zoom2, point, event);\n return;\n }\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX = panOnScrollMode.value === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n let deltaY = panOnScrollMode.value === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n if (!_isMacOs && event.shiftKey && panOnScrollMode.value !== PanOnScrollMode.Vertical && !deltaX && deltaY) {\n deltaX = deltaY;\n deltaY = 0;\n }\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed.value,\n -(deltaY / currentZoom) * panOnScrollSpeed.value\n );\n const nextViewport = eventToFlowTransform(d3Selection.property(\"__zoom\"));\n if (panScrollTimeout) {\n clearTimeout(panScrollTimeout);\n }\n if (!isPanScrolling.value) {\n isPanScrolling.value = true;\n emits.moveStart({ event, flowTransform: nextViewport });\n emits.viewportChangeStart(nextViewport);\n } else {\n emits.move({ event, flowTransform: nextViewport });\n emits.viewportChange(nextViewport);\n panScrollTimeout = setTimeout(() => {\n emits.moveEnd({ event, flowTransform: nextViewport });\n emits.viewportChangeEnd(nextViewport);\n isPanScrolling.value = false;\n }, 150);\n }\n },\n { passive: false }\n );\n } else if (typeof d3ZoomHandler !== \"undefined\") {\n d3Selection.on(\n \"wheel.zoom\",\n function(event, d) {\n const invalidEvent = !preventScrolling.value && event.type === \"wheel\" && !event.ctrlKey;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventsDisabled = !zoomScroll && !panOnScroll.value && !pinchZoom && event.type === \"wheel\";\n if (scrollEventsDisabled || invalidEvent || isWrappedWithClass(event, noWheelClassName.value)) {\n return null;\n }\n event.preventDefault();\n d3ZoomHandler.call(this, event, d);\n },\n { passive: false }\n );\n }\n },\n { immediate: true }\n );\n });\n function isRightClickPan(pan, usedButton) {\n return usedButton === 2 && Array.isArray(pan) && pan.includes(2);\n }\n function wheelDelta(event) {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * factor;\n }\n function viewChanged(prevViewport, eventTransform) {\n return prevViewport.x !== eventTransform.x && !Number.isNaN(eventTransform.x) || prevViewport.y !== eventTransform.y && !Number.isNaN(eventTransform.y) || prevViewport.zoom !== eventTransform.k && !Number.isNaN(eventTransform.k);\n }\n function eventToFlowTransform(eventTransform) {\n return {\n x: eventTransform.x,\n y: eventTransform.y,\n zoom: eventTransform.k\n };\n }\n function isWrappedWithClass(event, className) {\n return event.target.closest(`.${className}`);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"viewportRef\",\n ref: viewportRef,\n class: \"vue-flow__viewport vue-flow__container\"\n }, [\n createVNode(_sfc_main$a, {\n \"is-selecting\": isSelecting.value,\n \"selection-key-pressed\": unref(selectionKeyPressed),\n class: normalizeClass({\n connecting: !!unref(connectionStartHandle),\n dragging: unref(paneDragging),\n draggable: unref(panOnDrag) === true || Array.isArray(unref(panOnDrag)) && unref(panOnDrag).includes(0)\n })\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$9, null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n })\n ]),\n _: 3\n }, 8, [\"is-selecting\", \"selection-key-pressed\", \"class\"])\n ], 512);\n };\n }\n});\nconst _hoisted_1$5 = [\"id\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"id\"];\nconst __default__$7 = {\n name: \"A11yDescriptions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n ...__default__$7,\n setup(__props) {\n const { id: id2, disableKeyboardA11y, ariaLiveMessage } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", {\n id: `${unref(ARIA_NODE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select a node. \" + toDisplayString(!unref(disableKeyboardA11y) ? \"You can then use the arrow keys to move the node around.\" : \"\") + \" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. \", 9, _hoisted_1$5),\n createElementVNode(\"div\", {\n id: `${unref(ARIA_EDGE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. \", 8, _hoisted_2),\n !unref(disableKeyboardA11y) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: `${unref(ARIA_LIVE_MESSAGE)}-${unref(id2)}`,\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n style: { \"position\": \"absolute\", \"width\": \"1px\", \"height\": \"1px\", \"margin\": \"-1px\", \"border\": \"0\", \"padding\": \"0\", \"overflow\": \"hidden\", \"clip\": \"rect(0px, 0px, 0px, 0px)\", \"clip-path\": \"inset(100%)\" }\n }, toDisplayString(unref(ariaLiveMessage)), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction useOnInitHandler() {\n const vfInstance = useVueFlow();\n watch(\n () => vfInstance.viewportHelper.value.viewportInitialized,\n (isInitialized) => {\n if (isInitialized) {\n setTimeout(() => {\n vfInstance.emits.init(vfInstance);\n vfInstance.emits.paneReady(vfInstance);\n }, 1);\n }\n }\n );\n}\nfunction shiftX(x, shift, position) {\n if (position === Position.Left) {\n return x - shift;\n }\n if (position === Position.Right) {\n return x + shift;\n }\n return x;\n}\nfunction shiftY(y, shift, position) {\n if (position === Position.Top) {\n return y - shift;\n }\n if (position === Position.Bottom) {\n return y + shift;\n }\n return y;\n}\nconst EdgeAnchor = function({\n radius = 10,\n centerX = 0,\n centerY = 0,\n position = Position.Top,\n type\n}) {\n return h(\"circle\", {\n class: `vue-flow__edgeupdater vue-flow__edgeupdater-${type}`,\n cx: shiftX(centerX, radius, position),\n cy: shiftY(centerY, radius, position),\n r: radius,\n stroke: \"transparent\",\n fill: \"transparent\"\n });\n};\nEdgeAnchor.props = [\"radius\", \"centerX\", \"centerY\", \"position\", \"type\"];\nEdgeAnchor.compatConfig = { MODE: 3 };\nconst EdgeAnchor$1 = EdgeAnchor;\nconst EdgeWrapper = defineComponent({\n name: \"Edge\",\n compatConfig: { MODE: 3 },\n props: [\"id\"],\n setup(props) {\n const {\n id: vueFlowId,\n addSelectedEdges,\n connectionMode,\n edgeUpdaterRadius,\n emits,\n nodesSelectionActive,\n noPanClassName,\n getEdgeTypes,\n removeSelectedEdges,\n findEdge,\n findNode,\n isValidConnection,\n multiSelectionActive,\n disableKeyboardA11y,\n elementsSelectable,\n edgesUpdatable,\n edgesFocusable,\n hooks\n } = useVueFlow();\n const edge = computed(() => findEdge(props.id));\n const { emit, on } = useEdgeHooks(edge.value, emits);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const mouseOver = ref(false);\n const updating = ref(false);\n const nodeId = ref(\"\");\n const handleId = ref(null);\n const edgeUpdaterType = ref(\"source\");\n const edgeEl = ref(null);\n const isSelectable = toRef(\n () => typeof edge.value.selectable === \"undefined\" ? elementsSelectable.value : edge.value.selectable\n );\n const isUpdatable = toRef(() => typeof edge.value.updatable === \"undefined\" ? edgesUpdatable.value : edge.value.updatable);\n const isFocusable = toRef(() => typeof edge.value.focusable === \"undefined\" ? edgesFocusable.value : edge.value.focusable);\n provide(EdgeId, props.id);\n provide(EdgeRef, edgeEl);\n const edgeClass = computed(() => edge.value.class instanceof Function ? edge.value.class(edge.value) : edge.value.class);\n const edgeStyle = computed(() => edge.value.style instanceof Function ? edge.value.style(edge.value) : edge.value.style);\n const edgeCmp = computed(() => {\n const name = edge.value.type || \"default\";\n const slot = slots == null ? void 0 : slots[`edge-${name}`];\n if (slot) {\n return slot;\n }\n let edgeType = edge.value.template ?? getEdgeTypes.value[name];\n if (typeof edgeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n edgeType = resolveComponent(name, false);\n }\n }\n }\n if (edgeType && typeof edgeType !== \"string\") {\n return edgeType;\n }\n emits.error(new VueFlowError(ErrorCode.EDGE_TYPE_MISSING, edgeType));\n return false;\n });\n const { handlePointerDown } = useHandle({\n nodeId,\n handleId,\n type: edgeUpdaterType,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n });\n return () => {\n const sourceNode = findNode(edge.value.source);\n const targetNode = findNode(edge.value.target);\n const pathOptions = \"pathOptions\" in edge.value ? edge.value.pathOptions : {};\n if (!sourceNode && !targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.value.id, edge.value.source, edge.value.target));\n return null;\n }\n if (!sourceNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.value.id, edge.value.source));\n return null;\n }\n if (!targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.value.id, edge.value.target));\n return null;\n }\n if (!edge.value || edge.value.hidden || sourceNode.hidden || targetNode.hidden) {\n return null;\n }\n let sourceNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n sourceNodeHandles = sourceNode.handleBounds.source;\n } else {\n sourceNodeHandles = [...sourceNode.handleBounds.source || [], ...sourceNode.handleBounds.target || []];\n }\n const sourceHandle = getEdgeHandle(sourceNodeHandles, edge.value.sourceHandle);\n let targetNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n targetNodeHandles = targetNode.handleBounds.target;\n } else {\n targetNodeHandles = [...targetNode.handleBounds.target || [], ...targetNode.handleBounds.source || []];\n }\n const targetHandle = getEdgeHandle(targetNodeHandles, edge.value.targetHandle);\n const sourcePosition = (sourceHandle == null ? void 0 : sourceHandle.position) || Position.Bottom;\n const targetPosition = (targetHandle == null ? void 0 : targetHandle.position) || Position.Top;\n const { x: sourceX, y: sourceY } = getHandlePosition(sourceNode, sourceHandle, sourcePosition);\n const { x: targetX, y: targetY } = getHandlePosition(targetNode, targetHandle, targetPosition);\n edge.value.sourceX = sourceX;\n edge.value.sourceY = sourceY;\n edge.value.targetX = targetX;\n edge.value.targetY = targetY;\n return h(\n \"g\",\n {\n \"ref\": edgeEl,\n \"key\": props.id,\n \"data-id\": props.id,\n \"class\": [\n \"vue-flow__edge\",\n `vue-flow__edge-${edgeCmp.value === false ? \"default\" : edge.value.type || \"default\"}`,\n noPanClassName.value,\n edgeClass.value,\n {\n updating: mouseOver.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n inactive: !isSelectable.value && !hooks.value.edgeClick.hasListeners()\n }\n ],\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"aria-label\": edge.value.ariaLabel === null ? void 0 : edge.value.ariaLabel ?? `Edge from ${edge.value.source} to ${edge.value.target}`,\n \"aria-describedby\": isFocusable.value ? `${ARIA_EDGE_DESC_KEY}-${vueFlowId}` : void 0,\n \"aria-roledescription\": \"edge\",\n \"role\": isFocusable.value ? \"group\" : \"img\",\n ...edge.value.domAttributes,\n \"onClick\": onEdgeClick,\n \"onContextmenu\": onEdgeContextMenu,\n \"onDblclick\": onDoubleClick,\n \"onMouseenter\": onEdgeMouseEnter,\n \"onMousemove\": onEdgeMouseMove,\n \"onMouseleave\": onEdgeMouseLeave,\n \"onKeyDown\": isFocusable.value ? onKeyDown : void 0\n },\n [\n updating.value ? null : h(edgeCmp.value === false ? getEdgeTypes.value.default : edgeCmp.value, {\n id: props.id,\n sourceNode,\n targetNode,\n source: edge.value.source,\n target: edge.value.target,\n type: edge.value.type,\n updatable: isUpdatable.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n label: edge.value.label,\n labelStyle: edge.value.labelStyle,\n labelShowBg: edge.value.labelShowBg,\n labelBgStyle: edge.value.labelBgStyle,\n labelBgPadding: edge.value.labelBgPadding,\n labelBgBorderRadius: edge.value.labelBgBorderRadius,\n data: edge.value.data,\n events: { ...edge.value.events, ...on },\n style: edgeStyle.value,\n markerStart: `url('#${getMarkerId(edge.value.markerStart, vueFlowId)}')`,\n markerEnd: `url('#${getMarkerId(edge.value.markerEnd, vueFlowId)}')`,\n sourcePosition,\n targetPosition,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceHandleId: edge.value.sourceHandle,\n targetHandleId: edge.value.targetHandle,\n interactionWidth: edge.value.interactionWidth,\n ...pathOptions\n }),\n [\n isUpdatable.value === \"source\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterSourceMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": sourcePosition,\n \"centerX\": sourceX,\n \"centerY\": sourceY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"source\",\n \"data-type\": \"source\"\n })\n )\n ] : null,\n isUpdatable.value === \"target\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterTargetMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": targetPosition,\n \"centerX\": targetX,\n \"centerY\": targetY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"target\",\n \"data-type\": \"target\"\n })\n )\n ] : null\n ]\n ]\n );\n };\n function onEdgeUpdaterMouseEnter() {\n mouseOver.value = true;\n }\n function onEdgeUpdaterMouseOut() {\n mouseOver.value = false;\n }\n function onEdgeUpdate(event, connection) {\n emit.update({ event, edge: edge.value, connection });\n }\n function onEdgeUpdateEnd(event) {\n emit.updateEnd({ event, edge: edge.value });\n updating.value = false;\n }\n function handleEdgeUpdater(event, isSourceHandle) {\n if (event.button !== 0) {\n return;\n }\n updating.value = true;\n nodeId.value = isSourceHandle ? edge.value.target : edge.value.source;\n handleId.value = (isSourceHandle ? edge.value.targetHandle : edge.value.sourceHandle) ?? null;\n edgeUpdaterType.value = isSourceHandle ? \"target\" : \"source\";\n emit.updateStart({ event, edge: edge.value });\n handlePointerDown(event);\n }\n function onEdgeClick(event) {\n var _a;\n const data = { event, edge: edge.value };\n if (isSelectable.value) {\n nodesSelectionActive.value = false;\n if (edge.value.selected && multiSelectionActive.value) {\n removeSelectedEdges([edge.value]);\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n } else {\n addSelectedEdges([edge.value]);\n }\n }\n emit.click(data);\n }\n function onEdgeContextMenu(event) {\n emit.contextMenu({ event, edge: edge.value });\n }\n function onDoubleClick(event) {\n emit.doubleClick({ event, edge: edge.value });\n }\n function onEdgeMouseEnter(event) {\n emit.mouseEnter({ event, edge: edge.value });\n }\n function onEdgeMouseMove(event) {\n emit.mouseMove({ event, edge: edge.value });\n }\n function onEdgeMouseLeave(event) {\n emit.mouseLeave({ event, edge: edge.value });\n }\n function onEdgeUpdaterSourceMouseDown(event) {\n handleEdgeUpdater(event, true);\n }\n function onEdgeUpdaterTargetMouseDown(event) {\n handleEdgeUpdater(event, false);\n }\n function onKeyDown(event) {\n var _a;\n if (!disableKeyboardA11y.value && elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n if (unselect) {\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n removeSelectedEdges([findEdge(props.id)]);\n } else {\n addSelectedEdges([findEdge(props.id)]);\n }\n }\n }\n }\n});\nconst EdgeWrapper$1 = EdgeWrapper;\nconst ConnectionLine = defineComponent({\n name: \"ConnectionLine\",\n compatConfig: { MODE: 3 },\n setup() {\n var _a;\n const {\n id: id2,\n connectionMode,\n connectionStartHandle,\n connectionEndHandle,\n connectionPosition,\n connectionLineType,\n connectionLineStyle,\n connectionLineOptions,\n connectionStatus,\n viewport,\n findNode\n } = useVueFlow();\n const connectionLineComponent = (_a = inject(Slots)) == null ? void 0 : _a[\"connection-line\"];\n const fromNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionStartHandle.value) == null ? void 0 : _a2.nodeId);\n });\n const toNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionEndHandle.value) == null ? void 0 : _a2.nodeId) ?? null;\n });\n const toXY = computed(() => {\n return {\n x: (connectionPosition.value.x - viewport.value.x) / viewport.value.zoom,\n y: (connectionPosition.value.y - viewport.value.y) / viewport.value.zoom\n };\n });\n const markerStart = computed(\n () => connectionLineOptions.value.markerStart ? `url(#${getMarkerId(connectionLineOptions.value.markerStart, id2)})` : \"\"\n );\n const markerEnd = computed(\n () => connectionLineOptions.value.markerEnd ? `url(#${getMarkerId(connectionLineOptions.value.markerEnd, id2)})` : \"\"\n );\n return () => {\n var _a2, _b, _c;\n if (!fromNode.value || !connectionStartHandle.value) {\n return null;\n }\n const startHandleId = connectionStartHandle.value.id;\n const handleType = connectionStartHandle.value.type;\n const fromHandleBounds = fromNode.value.handleBounds;\n let handleBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType]) ?? [];\n if (connectionMode.value === ConnectionMode.Loose) {\n const oppositeBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType === \"source\" ? \"target\" : \"source\"]) ?? [];\n handleBounds = [...handleBounds, ...oppositeBounds];\n }\n if (!handleBounds) {\n return null;\n }\n const fromHandle = (startHandleId ? handleBounds.find((d) => d.id === startHandleId) : handleBounds[0]) ?? null;\n const fromPosition = (fromHandle == null ? void 0 : fromHandle.position) ?? Position.Top;\n const { x: fromX, y: fromY } = getHandlePosition(fromNode.value, fromHandle, fromPosition);\n let toHandle = null;\n if (toNode.value) {\n if (connectionMode.value === ConnectionMode.Strict) {\n toHandle = ((_a2 = toNode.value.handleBounds[handleType === \"source\" ? \"target\" : \"source\"]) == null ? void 0 : _a2.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n } else {\n toHandle = ((_b = [...toNode.value.handleBounds.source ?? [], ...toNode.value.handleBounds.target ?? []]) == null ? void 0 : _b.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n }\n }\n const toPosition = ((_c = connectionEndHandle.value) == null ? void 0 : _c.position) ?? (fromPosition ? oppositePosition[fromPosition] : null);\n if (!fromPosition || !toPosition) {\n return null;\n }\n const type = connectionLineType.value ?? connectionLineOptions.value.type ?? ConnectionLineType.Bezier;\n let dAttr = \"\";\n const pathParams = {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition\n };\n if (type === ConnectionLineType.Bezier) {\n [dAttr] = getBezierPath(pathParams);\n } else if (type === ConnectionLineType.Step) {\n [dAttr] = getSmoothStepPath({\n ...pathParams,\n borderRadius: 0\n });\n } else if (type === ConnectionLineType.SmoothStep) {\n [dAttr] = getSmoothStepPath(pathParams);\n } else if (type === ConnectionLineType.SimpleBezier) {\n [dAttr] = getSimpleBezierPath(pathParams);\n } else {\n dAttr = `M${fromX},${fromY} ${toXY.value.x},${toXY.value.y}`;\n }\n return h(\n \"svg\",\n { class: \"vue-flow__edges vue-flow__connectionline vue-flow__container\" },\n h(\n \"g\",\n { class: \"vue-flow__connection\" },\n connectionLineComponent ? h(connectionLineComponent, {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition,\n sourceNode: fromNode.value,\n sourceHandle: fromHandle,\n targetNode: toNode.value,\n targetHandle: toHandle,\n markerEnd: markerEnd.value,\n markerStart: markerStart.value,\n connectionStatus: connectionStatus.value\n }) : h(\"path\", {\n \"d\": dAttr,\n \"class\": [connectionLineOptions.value.class, connectionStatus, \"vue-flow__connection-path\"],\n \"style\": {\n ...connectionLineStyle.value,\n ...connectionLineOptions.value.style\n },\n \"marker-end\": markerEnd.value,\n \"marker-start\": markerStart.value\n })\n )\n );\n };\n }\n});\nconst ConnectionLine$1 = ConnectionLine;\nconst _hoisted_1$4 = [\"id\", \"markerWidth\", \"markerHeight\", \"markerUnits\", \"orient\"];\nconst __default__$6 = {\n name: \"MarkerType\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n ...__default__$6,\n props: {\n id: {},\n type: {},\n color: { default: \"none\" },\n width: { default: 12.5 },\n height: { default: 12.5 },\n markerUnits: { default: \"strokeWidth\" },\n orient: { default: \"auto-start-reverse\" },\n strokeWidth: { default: 1 }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"marker\", {\n id: _ctx.id,\n class: \"vue-flow__arrowhead\",\n viewBox: \"-10 -10 20 20\",\n refX: \"0\",\n refY: \"0\",\n markerWidth: `${_ctx.width}`,\n markerHeight: `${_ctx.height}`,\n markerUnits: _ctx.markerUnits,\n orient: _ctx.orient\n }, [\n _ctx.type === unref(MarkerType).ArrowClosed ? (openBlock(), createElementBlock(\"polyline\", {\n key: 0,\n style: normalizeStyle({\n stroke: _ctx.color,\n fill: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n points: \"-5,-4 0,0 -5,4 -5,-4\"\n }, null, 4)) : createCommentVNode(\"\", true),\n _ctx.type === unref(MarkerType).Arrow ? (openBlock(), createElementBlock(\"polyline\", {\n key: 1,\n style: normalizeStyle({\n stroke: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n fill: \"none\",\n points: \"-5,-4 0,0 -5,4\"\n }, null, 4)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1$4);\n };\n }\n});\nconst _hoisted_1$3 = {\n class: \"vue-flow__marker vue-flow__container\",\n \"aria-hidden\": \"true\"\n};\nconst __default__$5 = {\n name: \"MarkerDefinitions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$5 = /* @__PURE__ */ defineComponent({\n ...__default__$5,\n setup(__props) {\n const { id: vueFlowId, edges, connectionLineOptions, defaultMarkerColor: defaultColor } = useVueFlow();\n const markers = computed(() => {\n const ids = /* @__PURE__ */ new Set();\n const markers2 = [];\n const createMarkers = (marker) => {\n if (marker) {\n const markerId = getMarkerId(marker, vueFlowId);\n if (!ids.has(markerId)) {\n if (typeof marker === \"object\") {\n markers2.push({ ...marker, id: markerId, color: marker.color || defaultColor.value });\n } else {\n markers2.push({ id: markerId, color: defaultColor.value, type: marker });\n }\n ids.add(markerId);\n }\n }\n };\n for (const marker of [connectionLineOptions.value.markerEnd, connectionLineOptions.value.markerStart]) {\n createMarkers(marker);\n }\n for (const edge of edges.value) {\n for (const marker of [edge.markerStart, edge.markerEnd]) {\n createMarkers(marker);\n }\n }\n return markers2.sort((a, b) => a.id.localeCompare(b.id));\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$3, [\n createElementVNode(\"defs\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(markers.value, (marker) => {\n return openBlock(), createBlock(_sfc_main$6, {\n id: marker.id,\n key: marker.id,\n type: marker.type,\n color: marker.color,\n width: marker.width,\n height: marker.height,\n markerUnits: marker.markerUnits,\n \"stroke-width\": marker.strokeWidth,\n orient: marker.orient\n }, null, 8, [\"id\", \"type\", \"color\", \"width\", \"height\", \"markerUnits\", \"stroke-width\", \"orient\"]);\n }), 128))\n ])\n ]);\n };\n }\n});\nconst __default__$4 = {\n name: \"Edges\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n ...__default__$4,\n setup(__props) {\n const { findNode, getEdges, elevateEdgesOnSelect } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(_sfc_main$5),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getEdges), (edge) => {\n return openBlock(), createElementBlock(\"svg\", {\n key: edge.id,\n class: \"vue-flow__edges vue-flow__container\",\n style: normalizeStyle({ zIndex: unref(getEdgeZIndex)(edge, unref(findNode), unref(elevateEdgesOnSelect)) })\n }, [\n createVNode(unref(EdgeWrapper$1), {\n id: edge.id\n }, null, 8, [\"id\"])\n ], 4);\n }), 128)),\n createVNode(unref(ConnectionLine$1))\n ], 64);\n };\n }\n});\nconst NodeWrapper = defineComponent({\n name: \"Node\",\n compatConfig: { MODE: 3 },\n props: [\"id\", \"resizeObserver\"],\n setup(props) {\n const {\n id: vueFlowId,\n noPanClassName,\n selectNodesOnDrag,\n nodesSelectionActive,\n multiSelectionActive,\n emits,\n removeSelectedNodes,\n addSelectedNodes,\n updateNodeDimensions,\n onUpdateNodeInternals,\n getNodeTypes,\n nodeExtent,\n elevateNodesOnSelect,\n disableKeyboardA11y,\n ariaLiveMessage,\n snapToGrid,\n snapGrid,\n nodeDragThreshold,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n hooks\n } = useVueFlow();\n const nodeElement = ref(null);\n provide(NodeRef, nodeElement);\n provide(NodeId, props.id);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const updateNodePositions = useUpdateNodePositions();\n const { node, parentNode } = useNode(props.id);\n const { emit, on } = useNodeHooks(node, emits);\n const isDraggable = toRef(() => typeof node.draggable === \"undefined\" ? nodesDraggable.value : node.draggable);\n const isSelectable = toRef(() => typeof node.selectable === \"undefined\" ? elementsSelectable.value : node.selectable);\n const isConnectable = toRef(() => typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable);\n const isFocusable = toRef(() => typeof node.focusable === \"undefined\" ? nodesFocusable.value : node.focusable);\n const hasPointerEvents = computed(\n () => isSelectable.value || isDraggable.value || hooks.value.nodeClick.hasListeners() || hooks.value.nodeDoubleClick.hasListeners() || hooks.value.nodeMouseEnter.hasListeners() || hooks.value.nodeMouseMove.hasListeners() || hooks.value.nodeMouseLeave.hasListeners()\n );\n const isInit = toRef(() => !!node.dimensions.width && !!node.dimensions.height);\n const nodeCmp = computed(() => {\n const name = node.type || \"default\";\n const slot = slots == null ? void 0 : slots[`node-${name}`];\n if (slot) {\n return slot;\n }\n let nodeType = node.template || getNodeTypes.value[name];\n if (typeof nodeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n nodeType = resolveComponent(name, false);\n }\n }\n }\n if (nodeType && typeof nodeType !== \"string\") {\n return nodeType;\n }\n emits.error(new VueFlowError(ErrorCode.NODE_TYPE_MISSING, nodeType));\n return false;\n });\n const dragging = useDrag({\n id: props.id,\n el: nodeElement,\n disabled: () => !isDraggable.value,\n selectable: isSelectable,\n dragHandle: () => node.dragHandle,\n onStart(event) {\n emit.dragStart(event);\n },\n onDrag(event) {\n emit.drag(event);\n },\n onStop(event) {\n emit.dragStop(event);\n },\n onClick(event) {\n onSelectNode(event);\n }\n });\n const getClass = computed(() => node.class instanceof Function ? node.class(node) : node.class);\n const getStyle = computed(() => {\n const styles = (node.style instanceof Function ? node.style(node) : node.style) || {};\n const width = node.width instanceof Function ? node.width(node) : node.width;\n const height = node.height instanceof Function ? node.height(node) : node.height;\n if (!styles.width && width) {\n styles.width = typeof width === \"string\" ? width : `${width}px`;\n }\n if (!styles.height && height) {\n styles.height = typeof height === \"string\" ? height : `${height}px`;\n }\n return styles;\n });\n const zIndex = toRef(() => Number(node.zIndex ?? getStyle.value.zIndex ?? 0));\n onUpdateNodeInternals((updateIds) => {\n if (updateIds.includes(props.id) || !updateIds.length) {\n updateInternals();\n }\n });\n onMounted(() => {\n watch(\n () => node.hidden,\n (isHidden = false, _, onCleanup) => {\n if (!isHidden && nodeElement.value) {\n props.resizeObserver.observe(nodeElement.value);\n onCleanup(() => {\n if (nodeElement.value) {\n props.resizeObserver.unobserve(nodeElement.value);\n }\n });\n }\n },\n { immediate: true, flush: \"post\" }\n );\n });\n watch([() => node.type, () => node.sourcePosition, () => node.targetPosition], () => {\n nextTick(() => {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n });\n });\n watch(\n [\n () => node.position.x,\n () => node.position.y,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.x;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.y;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.z;\n },\n zIndex,\n () => node.selected,\n () => node.dimensions.height,\n () => node.dimensions.width,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.height;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.width;\n }\n ],\n ([newX, newY, parentX, parentY, parentZ, nodeZIndex]) => {\n const xyzPos = {\n x: newX,\n y: newY,\n z: nodeZIndex + (elevateNodesOnSelect.value ? node.selected ? 1e3 : 0 : 0)\n };\n if (typeof parentX !== \"undefined\" && typeof parentY !== \"undefined\") {\n node.computedPosition = getXYZPos({ x: parentX, y: parentY, z: parentZ }, xyzPos);\n } else {\n node.computedPosition = xyzPos;\n }\n },\n { flush: \"post\", immediate: true }\n );\n watch([() => node.extent, nodeExtent], ([nodeExtent2, globalExtent], [oldNodeExtent, oldGlobalExtent]) => {\n if (nodeExtent2 !== oldNodeExtent || globalExtent !== oldGlobalExtent) {\n clampPosition2();\n }\n });\n if (node.extent === \"parent\" || typeof node.extent === \"object\" && \"range\" in node.extent && node.extent.range === \"parent\") {\n until(() => isInit).toBe(true).then(clampPosition2);\n } else {\n clampPosition2();\n }\n return () => {\n if (node.hidden) {\n return null;\n }\n return h(\n \"div\",\n {\n \"ref\": nodeElement,\n \"data-id\": node.id,\n \"class\": [\n \"vue-flow__node\",\n `vue-flow__node-${nodeCmp.value === false ? \"default\" : node.type || \"default\"}`,\n {\n [noPanClassName.value]: isDraggable.value,\n dragging: dragging == null ? void 0 : dragging.value,\n draggable: isDraggable.value,\n selected: node.selected,\n selectable: isSelectable.value,\n parent: node.isParent\n },\n getClass.value\n ],\n \"style\": {\n visibility: isInit.value ? \"visible\" : \"hidden\",\n zIndex: node.computedPosition.z ?? zIndex.value,\n transform: `translate(${node.computedPosition.x}px,${node.computedPosition.y}px)`,\n pointerEvents: hasPointerEvents.value ? \"all\" : \"none\",\n ...getStyle.value\n },\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"role\": isFocusable.value ? \"group\" : void 0,\n \"aria-describedby\": disableKeyboardA11y.value ? void 0 : `${ARIA_NODE_DESC_KEY}-${vueFlowId}`,\n \"aria-label\": node.ariaLabel,\n \"aria-roledescription\": \"node\",\n ...node.domAttributes,\n \"onMouseenter\": onMouseEnter,\n \"onMousemove\": onMouseMove,\n \"onMouseleave\": onMouseLeave,\n \"onContextmenu\": onContextMenu,\n \"onClick\": onSelectNode,\n \"onDblclick\": onDoubleClick,\n \"onKeydown\": onKeyDown\n },\n [\n h(nodeCmp.value === false ? getNodeTypes.value.default : nodeCmp.value, {\n id: node.id,\n type: node.type,\n data: node.data,\n events: { ...node.events, ...on },\n selected: node.selected,\n resizing: node.resizing,\n dragging: dragging.value,\n connectable: isConnectable.value,\n position: node.computedPosition,\n dimensions: node.dimensions,\n isValidTargetPos: node.isValidTargetPos,\n isValidSourcePos: node.isValidSourcePos,\n parent: node.parentNode,\n parentNodeId: node.parentNode,\n zIndex: node.computedPosition.z ?? zIndex.value,\n targetPosition: node.targetPosition,\n sourcePosition: node.sourcePosition,\n label: node.label,\n dragHandle: node.dragHandle,\n onUpdateNodeInternals: updateInternals\n })\n ]\n );\n };\n function clampPosition2() {\n const nextPosition = node.computedPosition;\n const { computedPosition, position } = calcNextPosition(\n node,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n parentNode.value\n );\n if (node.computedPosition.x !== computedPosition.x || node.computedPosition.y !== computedPosition.y) {\n node.computedPosition = { ...node.computedPosition, ...computedPosition };\n }\n if (node.position.x !== position.x || node.position.y !== position.y) {\n node.position = position;\n }\n }\n function updateInternals() {\n if (nodeElement.value) {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n }\n }\n function onMouseEnter(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseEnter({ event, node });\n }\n }\n function onMouseMove(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseMove({ event, node });\n }\n }\n function onMouseLeave(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseLeave({ event, node });\n }\n }\n function onContextMenu(event) {\n return emit.contextMenu({ event, node });\n }\n function onDoubleClick(event) {\n return emit.doubleClick({ event, node });\n }\n function onSelectNode(event) {\n if (isSelectable.value && (!selectNodesOnDrag.value || !isDraggable.value || nodeDragThreshold.value > 0)) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n false,\n nodeElement.value\n );\n }\n emit.click({ event, node });\n }\n function onKeyDown(event) {\n if (isInputDOMNode(event) || disableKeyboardA11y.value) {\n return;\n }\n if (elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n unselect,\n nodeElement.value\n );\n } else if (isDraggable.value && node.selected && arrowKeyDiffs[event.key]) {\n event.preventDefault();\n ariaLiveMessage.value = `Moved selected node ${event.key.replace(\"Arrow\", \"\").toLowerCase()}. New position, x: ${~~node.position.x}, y: ${~~node.position.y}`;\n updateNodePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n }\n});\nconst NodeWrapper$1 = NodeWrapper;\nconst _hoisted_1$2 = {\n height: \"0\",\n width: \"0\"\n};\nconst __default__$3 = {\n name: \"EdgeLabelRenderer\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n ...__default__$3,\n setup(__props) {\n const { viewportRef } = useVueFlow();\n const teleportTarget = toRef(() => {\n var _a;\n return (_a = viewportRef.value) == null ? void 0 : _a.getElementsByClassName(\"vue-flow__edge-labels\")[0];\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", null, [\n (openBlock(), createElementBlock(\"foreignObject\", _hoisted_1$2, [\n (openBlock(), createBlock(Teleport, {\n to: teleportTarget.value,\n disabled: !teleportTarget.value\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, [\"to\", \"disabled\"]))\n ]))\n ]);\n };\n }\n});\nfunction useNodesInitialized(options = { includeHiddenNodes: false }) {\n const { nodes } = useVueFlow();\n return computed(() => {\n if (nodes.value.length === 0) {\n return false;\n }\n for (const node of nodes.value) {\n if (options.includeHiddenNodes || !node.hidden) {\n if ((node == null ? void 0 : node.handleBounds) === void 0 || node.dimensions.width === 0 || node.dimensions.height === 0) {\n return false;\n }\n }\n }\n return true;\n });\n}\nconst _hoisted_1$1 = { class: \"vue-flow__nodes vue-flow__container\" };\nconst __default__$2 = {\n name: \"Nodes\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n ...__default__$2,\n setup(__props) {\n const { getNodes, updateNodeDimensions, emits } = useVueFlow();\n const nodesInitialized = useNodesInitialized();\n const resizeObserver = ref();\n watch(\n nodesInitialized,\n (isInit) => {\n if (isInit) {\n nextTick(() => {\n emits.nodesInitialized(getNodes.value);\n });\n }\n },\n { immediate: true }\n );\n onMounted(() => {\n resizeObserver.value = new ResizeObserver((entries) => {\n const updates = entries.map((entry) => {\n const id2 = entry.target.getAttribute(\"data-id\");\n return {\n id: id2,\n nodeElement: entry.target,\n forceUpdate: true\n };\n });\n nextTick(() => updateNodeDimensions(updates));\n });\n });\n onBeforeUnmount(() => {\n var _a;\n return (_a = resizeObserver.value) == null ? void 0 : _a.disconnect();\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n resizeObserver.value ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(getNodes), (node, __, ___, _cached) => {\n const _memo = [node.id];\n if (_cached && _cached.key === node.id && isMemoSame(_cached, _memo))\n return _cached;\n const _item = (openBlock(), createBlock(unref(NodeWrapper$1), {\n id: node.id,\n key: node.id,\n \"resize-observer\": resizeObserver.value\n }, null, 8, [\"id\", \"resize-observer\"]));\n _item.memo = _memo;\n return _item;\n }, _cache, 0), 128)) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nfunction useStylesLoadedWarning() {\n const { emits } = useVueFlow();\n onMounted(() => {\n if (isDev()) {\n const pane = document.querySelector(\".vue-flow__pane\");\n if (pane && !(window.getComputedStyle(pane).zIndex === \"1\")) {\n emits.error(new VueFlowError(ErrorCode.MISSING_STYLES));\n }\n }\n });\n}\nconst _hoisted_1 = /* @__PURE__ */ createElementVNode(\"div\", { class: \"vue-flow__edge-labels\" }, null, -1);\nconst __default__$1 = {\n name: \"VueFlow\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n ...__default__$1,\n props: {\n id: {},\n modelValue: {},\n nodes: {},\n edges: {},\n edgeTypes: {},\n nodeTypes: {},\n connectionMode: {},\n connectionLineType: {},\n connectionLineStyle: { default: void 0 },\n connectionLineOptions: { default: void 0 },\n connectionRadius: {},\n isValidConnection: { type: [Function, null], default: void 0 },\n deleteKeyCode: { default: void 0 },\n selectionKeyCode: { type: [Boolean, null], default: void 0 },\n multiSelectionKeyCode: { default: void 0 },\n zoomActivationKeyCode: { default: void 0 },\n panActivationKeyCode: { default: void 0 },\n snapToGrid: { type: Boolean, default: void 0 },\n snapGrid: {},\n onlyRenderVisibleElements: { type: Boolean, default: void 0 },\n edgesUpdatable: { type: [Boolean, String], default: void 0 },\n nodesDraggable: { type: Boolean, default: void 0 },\n nodesConnectable: { type: Boolean, default: void 0 },\n nodeDragThreshold: {},\n elementsSelectable: { type: Boolean, default: void 0 },\n selectNodesOnDrag: { type: Boolean, default: void 0 },\n panOnDrag: { type: [Boolean, Array], default: void 0 },\n minZoom: {},\n maxZoom: {},\n defaultViewport: {},\n translateExtent: {},\n nodeExtent: {},\n defaultMarkerColor: {},\n zoomOnScroll: { type: Boolean, default: void 0 },\n zoomOnPinch: { type: Boolean, default: void 0 },\n panOnScroll: { type: Boolean, default: void 0 },\n panOnScrollSpeed: {},\n panOnScrollMode: {},\n paneClickDistance: {},\n zoomOnDoubleClick: { type: Boolean, default: void 0 },\n preventScrolling: { type: Boolean, default: void 0 },\n selectionMode: {},\n edgeUpdaterRadius: {},\n fitViewOnInit: { type: Boolean, default: void 0 },\n connectOnClick: { type: Boolean, default: void 0 },\n applyDefault: { type: Boolean, default: void 0 },\n autoConnect: { type: [Boolean, Function], default: void 0 },\n noDragClassName: {},\n noWheelClassName: {},\n noPanClassName: {},\n defaultEdgeOptions: {},\n elevateEdgesOnSelect: { type: Boolean, default: void 0 },\n elevateNodesOnSelect: { type: Boolean, default: void 0 },\n disableKeyboardA11y: { type: Boolean, default: void 0 },\n edgesFocusable: { type: Boolean, default: void 0 },\n nodesFocusable: { type: Boolean, default: void 0 },\n autoPanOnConnect: { type: Boolean, default: void 0 },\n autoPanOnNodeDrag: { type: Boolean, default: void 0 },\n autoPanSpeed: {}\n },\n emits: [\"nodesChange\", \"edgesChange\", \"nodesInitialized\", \"paneReady\", \"init\", \"updateNodeInternals\", \"error\", \"connect\", \"connectStart\", \"connectEnd\", \"clickConnectStart\", \"clickConnectEnd\", \"moveStart\", \"move\", \"moveEnd\", \"selectionDragStart\", \"selectionDrag\", \"selectionDragStop\", \"selectionContextMenu\", \"selectionStart\", \"selectionEnd\", \"viewportChangeStart\", \"viewportChange\", \"viewportChangeEnd\", \"paneScroll\", \"paneClick\", \"paneContextMenu\", \"paneMouseEnter\", \"paneMouseMove\", \"paneMouseLeave\", \"edgeUpdate\", \"edgeContextMenu\", \"edgeMouseEnter\", \"edgeMouseMove\", \"edgeMouseLeave\", \"edgeDoubleClick\", \"edgeClick\", \"edgeUpdateStart\", \"edgeUpdateEnd\", \"nodeContextMenu\", \"nodeMouseEnter\", \"nodeMouseMove\", \"nodeMouseLeave\", \"nodeDoubleClick\", \"nodeClick\", \"nodeDragStart\", \"nodeDrag\", \"nodeDragStop\", \"miniMapNodeClick\", \"miniMapNodeDoubleClick\", \"miniMapNodeMouseEnter\", \"miniMapNodeMouseMove\", \"miniMapNodeMouseLeave\", \"update:modelValue\", \"update:nodes\", \"update:edges\"],\n setup(__props, { expose: __expose, emit }) {\n const props = __props;\n const slots = useSlots();\n const modelValue = useVModel(props, \"modelValue\", emit);\n const modelNodes = useVModel(props, \"nodes\", emit);\n const modelEdges = useVModel(props, \"edges\", emit);\n const instance = useVueFlow(props);\n const dispose = useWatchProps({ modelValue, nodes: modelNodes, edges: modelEdges }, props, instance);\n useHooks(emit, instance.hooks);\n useOnInitHandler();\n useStylesLoadedWarning();\n provide(Slots, slots);\n onUnmounted(() => {\n dispose();\n });\n __expose(instance);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: unref(instance).vueFlowRef,\n class: \"vue-flow\"\n }, [\n createVNode(_sfc_main$8, null, {\n default: withCtx(() => [\n createVNode(_sfc_main$4),\n _hoisted_1,\n createVNode(_sfc_main$2),\n renderSlot(_ctx.$slots, \"zoom-pane\")\n ]),\n _: 3\n }),\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(_sfc_main$7)\n ], 512);\n };\n }\n});\nconst __default__ = {\n name: \"Panel\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n position: {}\n },\n setup(__props) {\n const props = __props;\n const { userSelectionActive } = useVueFlow();\n const positionClasses = computed(() => `${props.position}`.split(\"-\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vue-flow__panel\", positionClasses.value]),\n style: normalizeStyle({ pointerEvents: unref(userSelectionActive) ? \"none\" : \"all\" })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nfunction useConnection() {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionStatus: status,\n connectionPosition: position\n } = useVueFlow();\n return {\n startHandle,\n endHandle,\n status,\n position\n };\n}\nfunction useHandleConnections(params) {\n const { type, id: id2, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const currentNodeId = toRef(() => toValue$1(nodeId) ?? _nodeId);\n const handleType = toRef(() => toValue$1(type));\n const handleId = toRef(() => toValue$1(id2) ?? null);\n const prevConnections = ref(null);\n const connections = ref();\n watch(\n () => connectionLookup.value.get(`${currentNodeId.value}-${handleType.value}-${handleId.value}`),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodeConnections(params = {}) {\n const { handleType, handleId, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const prevConnections = ref(null);\n const connections = ref();\n const lookupKey = computed(() => {\n const currNodeId = toValue$1(nodeId) ?? _nodeId;\n const currentHandleType = toValue$1(handleType);\n const currHandleId = toValue$1(handleId);\n let handleSuffix = \"\";\n if (currentHandleType) {\n handleSuffix = currHandleId ? `-${currentHandleType}-${currHandleId}` : `-${currentHandleType}`;\n }\n return `${currNodeId}${handleSuffix}`;\n });\n watch(\n () => connectionLookup.value.get(lookupKey.value),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodesData(_nodeIds) {\n const { findNode } = useVueFlow();\n return computed({\n get() {\n const nodeIds = toValue$1(_nodeIds);\n if (!Array.isArray(nodeIds)) {\n const node = findNode(nodeIds);\n if (node) {\n return {\n id: node.id,\n type: node.type,\n data: node.data\n };\n }\n return null;\n }\n const data = [];\n for (const nodeId of nodeIds) {\n const node = findNode(nodeId);\n if (node) {\n data.push({\n id: node.id,\n type: node.type,\n data: node.data\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set node data via useNodesData. This is not supported.\");\n }\n });\n}\nfunction useEdgesData(_edgeIds) {\n const { findEdge } = useVueFlow();\n return computed({\n get() {\n const edgeIds = toValue$1(_edgeIds);\n if (!Array.isArray(edgeIds)) {\n const edge = findEdge(edgeIds);\n if (edge) {\n return {\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n };\n }\n return null;\n }\n const data = [];\n for (const edgeId of edgeIds) {\n const edge = findEdge(edgeId);\n if (edge) {\n data.push({\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set edge data via useEdgesData. This is not supported.\");\n }\n });\n}\nexport {\n _sfc_main$d as BaseEdge,\n BezierEdge$1 as BezierEdge,\n ConnectionLineType,\n ConnectionMode,\n _sfc_main$3 as EdgeLabelRenderer,\n _sfc_main$e as EdgeText,\n ErrorCode,\n _sfc_main$f as Handle,\n MarkerType,\n NodeId as NodeIdInjection,\n PanOnScrollMode,\n _sfc_main as Panel,\n PanelPosition,\n Position,\n SelectionMode,\n SimpleBezierEdge$1 as SimpleBezierEdge,\n SmoothStepEdge$1 as SmoothStepEdge,\n StepEdge$1 as StepEdge,\n StraightEdge$1 as StraightEdge,\n _sfc_main$1 as VueFlow,\n VueFlowError,\n VueFlow as VueFlowInjection,\n addEdge,\n applyChanges,\n applyEdgeChanges,\n applyNodeChanges,\n clamp,\n connectionExists,\n defaultEdgeTypes,\n defaultNodeTypes,\n getBezierEdgeCenter,\n getBezierPath,\n getBoundsofRects,\n getConnectedEdges,\n getIncomers,\n getMarkerId,\n getNodesInside,\n getOutgoers,\n getRectOfNodes,\n getSimpleBezierPath,\n getSimpleEdgeCenter,\n getSmoothStepPath,\n getStraightPath,\n getTransformForBounds,\n rendererPointToPoint as graphPosToZoomedPos,\n isEdge,\n isErrorOfType,\n isGraphEdge,\n isGraphNode,\n isNode,\n pointToRendererPoint,\n rendererPointToPoint,\n updateEdge,\n useConnection,\n useEdge,\n useEdgesData,\n useGetPointerPosition,\n useHandle,\n useHandleConnections,\n useKeyPress,\n useNode,\n useNodeConnections,\n useNodeId,\n useNodesData,\n useNodesInitialized,\n useVueFlow,\n useZoomPanHelper\n};\n","<template>\n\t<path :id=\"id\" :style=\"style\" class=\"vue-flow__edge-path\" :d=\"path[0]\" :marker-end=\"markerEnd\" />\n\n\t<EdgeLabelRenderer>\n\t\t<div\n\t\t\t:style=\"{\n\t\t\t\tpointerEvents: 'all',\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttransform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`,\n\t\t\t}\"\n\t\t\tclass=\"nodrag nopan editable-edge-label\"\n\t\t\t@click=\"labelOnClick()\">\n\t\t\t<div class=\"vue-flow__edge-label\">{{ label }}</div>\n\t\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t\t<input\n\t\t\t\t\tref=\"labelInput\"\n\t\t\t\t\tclass=\"label-input\"\n\t\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t\t</div>\n\t\t</div>\n\t</EdgeLabelRenderer>\n</template>\n\n<script setup lang=\"ts\">\nimport { type EdgeProps, EdgeLabelRenderer, getBezierPath /* useVueFlow */ } from '@vue-flow/core'\nimport { computed, ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<EdgeProps>()\nconst emit = defineEmits(['change'])\n\n// TODO: Implement edge removal\n// const { removeEdges } = useVueFlow()\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<EdgeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst labelOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n\nconst path = computed(() => getBezierPath(props))\n</script>\n\n<script lang=\"ts\">\nexport default {\n\tinheritAttrs: false,\n}\n</script>\n\n<style>\n.editable-edge-label {\n\tbackground-color: white;\n\tposition: relative;\n\tfont-size: 12px;\n}\n\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n\twidth: 40ch;\n}\n</style>\n","<template>\n\t<div @click=\"nodeOnClick()\">\n\t\t<div>{{ label }}</div>\n\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t<input\n\t\t\t\tref=\"labelInput\"\n\t\t\t\tclass=\"label-input\"\n\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t</div>\n\t\t<Handle v-if=\"data.hasInput\" id=\"a\" type=\"target\" :position=\"targetPosition\" />\n\t\t<Handle v-if=\"data.hasOutput\" id=\"b\" type=\"source\" :position=\"sourcePosition\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { NodeProps, Handle } from '@vue-flow/core'\nimport { ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<NodeProps>()\nconst emit = defineEmits(['change'])\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<NodeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst nodeOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n</script>\n\n<style>\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n}\n</style>\n","<template>\n\t<div class=\"node-editor-wrapper\" :class=\"nodeContainerClass\" @mouseover=\"hover = true\" @mouseleave=\"hover = false\">\n\t\t<div class=\"chart-controls\">\n\t\t\t<div class=\"chart-controls-left\">\n\t\t\t\t<div><b>Selected Node:</b> {{ activeElementKey ? activeElementKey : 'none' }}</div>\n\t\t\t</div>\n\t\t\t<div class=\"chart-controls-right\">\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"addNode\">Add Node</button>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"fitView\">Center</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftInput\">Shift Input Position</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftOutput\">Shift Output Position</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<VueFlow\n\t\t\tv-if=\"vueFlowElements && vueFlowElements.length\"\n\t\t\tclass=\"nowheel\"\n\t\t\t:prevent-scrolling=\"true\"\n\t\t\t:zoom-on-scroll=\"false\"\n\t\t\t:fit-view-on-init=\"true\"\n\t\t\tv-model=\"vueFlowElements\"\n\t\t\t@wheel.prevent=\"onWheel\">\n\t\t\t<template #node-editable=\"props\">\n\t\t\t\t<EditableNode v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t\t<template #edge-editable=\"props\">\n\t\t\t\t<EditableEdge v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t</VueFlow>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type VueFlowStore, Position, VueFlow, useVueFlow, Connection, Node } from '@vue-flow/core'\nimport { type HTMLAttributes, ref, computed, defineEmits, onBeforeUnmount, onMounted } from 'vue'\n\nimport EditableEdge from './EditableEdge.vue'\nimport EditableNode from './EditableNode.vue'\nimport type { FlowElements } from '../types'\n\nconst { modelValue, nodeContainerClass } = defineProps<{\n\tmodelValue: FlowElements\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\nconst emit = defineEmits(['update:modelValue'])\n\nconst hover = ref(false)\nconst vueFlowElements = ref<FlowElements>([])\nconst vueFlowInstance = ref<VueFlowStore>()\n\nconst activeElementKey = ref('')\nconst activeElementIndex = computed(() => {\n\tvueFlowElements.value.forEach((element, index) => {\n\t\tif (element.id === activeElementKey.value) {\n\t\t\treturn index\n\t\t}\n\t})\n\n\treturn -1\n})\n\nconst elements = computed({\n\tget: () => {\n\t\tconst _elements = modelValue\n\n\t\t// Add data to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.data = {}\n\t\t\tif (_element.type === 'input') {\n\t\t\t\t_element.data.hasInput = false\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t} else if (_element.type === 'output') {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = false\n\t\t\t} else {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t}\n\t\t\t_element.class = 'vue-flow__node-default'\n\t\t\t_element.type = 'editable'\n\t\t}\n\n\t\t// Add click event to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.events = {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = _element.id\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn _elements\n\t},\n\tset: newValue => {\n\t\temit('update:modelValue', JSON.parse(JSON.stringify(newValue)))\n\t},\n})\nconst { onConnect, addEdges, onEdgeContextMenu, onPaneReady, removeEdges } = useVueFlow()\n\nonMounted(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n\tdocument.addEventListener('keypress', handleKeypress)\n})\n\nonBeforeUnmount(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n})\n\nonPaneReady(instance => {\n\tvueFlowInstance.value = instance\n})\n\nvueFlowElements.value = elements.value\n\n// Methods\nconst shiftTerminal = (currentTerminal: Position) => {\n\treturn {\n\t\t[Position.Top]: Position.Right,\n\t\t[Position.Right]: Position.Bottom,\n\t\t[Position.Bottom]: Position.Left,\n\t\t[Position.Left]: Position.Top,\n\t}[currentTerminal]\n}\n\nconst shiftOutput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.sourcePosition = shiftTerminal(activeNode.sourcePosition)\n\t}\n}\n\nconst shiftInput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.targetPosition = shiftTerminal(activeNode.targetPosition)\n\t}\n}\n\nconst onWheel = (event: WheelEvent) => {\n\twindow.scrollBy(0, event.deltaY)\n}\n\nconst handleKeypress = (event: KeyboardEvent) => {\n\tif (hover.value && event.ctrlKey == true) {\n\t\tif (event.key == '+' || event.key == '=') {\n\t\t\tvoid vueFlowInstance.value.zoomIn()\n\t\t}\n\t\tif (event.key == '-') {\n\t\t\tvoid vueFlowInstance.value.zoomOut()\n\t\t}\n\t}\n}\n\nconst fitView = async () => {\n\tawait vueFlowInstance.value.fitView()\n}\n\nconst addNode = () => {\n\tlet makeEdge = false\n\tlet newNodePosition = { x: Math.random() * 200, y: Math.random() * 200 }\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value]\n\t\tif (activeNode.data.hasOutput) {\n\t\t\tnewNodePosition = { x: (activeNode as Node).position.x + 200, y: (activeNode as Node).position.y + 50 }\n\t\t\tmakeEdge = true\n\t\t}\n\t}\n\n\tconst id = vueFlowElements.value.length\n\tconst nodeId = `node-${id}`\n\tvueFlowElements.value.push({\n\t\tid: nodeId,\n\t\tlabel: 'Node ' + id,\n\t\tsourcePosition: Position.Right,\n\t\ttargetPosition: Position.Left,\n\t\tclass: 'vue-flow__node-default',\n\t\ttype: 'editable',\n\t\tdata: {\n\t\t\thasInput: true,\n\t\t\thasOutput: true,\n\t\t},\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = nodeId\n\t\t\t},\n\t\t},\n\t\t// position: { x: Math.random() * vueFlowInstance.value.dimensions.width, y: Math.random() * vueFlowInstance.value.dimensions.height }\n\t\tposition: newNodePosition,\n\t})\n\n\tif (makeEdge) {\n\t\tlet edgeId = `edge-${id + 1}`\n\t\tvueFlowElements.value.push({\n\t\t\tid: edgeId,\n\t\t\tsource: activeElementKey.value,\n\t\t\ttarget: nodeId,\n\t\t\ttype: 'editable',\n\t\t\tlabel: `EDGE ${id + 1}`,\n\t\t\tanimated: true,\n\t\t\tevents: {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = edgeId\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n}\n\nconst labelChanged = (e, id) => {\n\tfor (let j = 0; j < vueFlowElements.value.length; j++) {\n\t\tif (vueFlowElements.value[j].id == id) {\n\t\t\tvueFlowElements.value[j].label = e\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nconst handleConnect = (connection: Connection) => {\n\tconst id = vueFlowElements.value.length\n\tconst newEdge = {\n\t\tid: `edge-${id}`,\n\t\tsource: connection.source,\n\t\ttarget: connection.target,\n\t\ttype: 'editable',\n\t\tlabel: `New Edge`,\n\t\tinteractionWidth: 400,\n\t\tanimated: true,\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = newEdge.id\n\t\t\t},\n\t\t},\n\t}\n\taddEdges([newEdge])\n}\n\nonConnect(handleConnect)\n\nconst handleEdgeRemove = edgeId => {\n\tremoveEdges(edgeId)\n}\n\nonEdgeContextMenu(({ event, edge }) => {\n\thandleEdgeRemove(edge.id)\n})\n</script>\n\n<style>\n@import '@vue-flow/core/dist/style.css';\n@import '@vue-flow/core/dist/theme-default.css';\n\n.chart-controls-left,\n.chart-controls-right {\n\theight: 1.8em;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding-top: 0.2em;\n}\n\n.chart-controls-right div {\n\tmargin-left: 5px;\n}\n\n.chart-controls {\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n\theight: 1.8em;\n\tborder-bottom: 1px solid #ccc;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n}\n\n.chart-controls div {\n\tmargin-bottom: 5px;\n}\n\n.defaultContainerClass {\n\theight: 90vh;\n\twidth: 100%;\n\tborder: 1px solid #ccc;\n}\n\n.default-input-node.vue-flow__node-input,\n.default-output-node.vue-flow__node-output {\n\tborder-color: #000;\n}\n\n.default-input-node.vue-flow__node-input .vue-flow__handle,\n.default-output-node.vue-flow__node-output .vue-flow__handle {\n\tbackground-color: #000;\n}\n\n.default-input-node.vue-flow__node-input.selected,\n.default-output-node.vue-flow__node-output.selected {\n\tbox-shadow: 0 0 0 0.5px #000;\n}\n\nbutton.button-default {\n\tbackground-color: #ffffff;\n\tpadding: 1px 12px;\n\tborder-radius: 3px;\n\tborder: 1px solid #ccc;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\nbutton.button-default:hover {\n\tbackground-color: #f2f2f2;\n}\n\n.vue-flow {\n\tbackground-size: 40px 40px;\n\tbackground-image: linear-gradient(to right, #ccc 1px, transparent 1px),\n\t\tlinear-gradient(to bottom, #ccc 1px, transparent 1px);\n}\n\ninput.label-editor {\n\tposition: absolute;\n}\n\n.node-editor-wrapper {\n\tposition: relative;\n}\n</style>\n","<template>\n\t<div>\n\t\t<NodeEditor v-model=\"elements\" :node-container-class=\"nodeContainerClass\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type Node, Position } from '@vue-flow/core'\nimport { type HTMLAttributes, computed } from 'vue'\n\nimport NodeEditor from './NodeEditor.vue'\nimport type { EditorStates, FlowElement, FlowElements, Layout } from '../types'\n\nconst emit = defineEmits(['update:modelValue'])\nconst states = defineModel<EditorStates>()\nconst { layout, nodeContainerClass } = defineProps<{\n\tlayout: Layout\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\n\nconst elements = computed<FlowElements>({\n\tget: () => {\n\t\tconst hasInputs = {}\n\t\tconst stateElements: FlowElements = []\n\t\tconst stateHash: Record<string, FlowElement> = {}\n\n\t\tif (!states.value) {\n\t\t\treturn stateElements\n\t\t}\n\n\t\tlet index = 0\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tconst el: Node = {\n\t\t\t\tid: key,\n\t\t\t\tlabel: key,\n\t\t\t\tposition: layout[key]?.position || { x: 200 * index, y: 100 },\n\t\t\t\ttargetPosition: layout[key]?.targetPosition || Position.Left,\n\t\t\t\tsourcePosition: layout[key]?.sourcePosition || Position.Right,\n\t\t\t}\n\n\t\t\tif (value?.type === 'final') {\n\t\t\t\tel.type = 'output'\n\t\t\t\tel.class = 'default-output-node'\n\t\t\t}\n\n\t\t\tstateHash[key] = el\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tif (value?.on) {\n\t\t\t\tfor (const [edgeKey, edgeValue] of Object.entries(value.on)) {\n\t\t\t\t\t// NOTE: If the proxy array 'value.on' has more than one edge, 'edgeValue' will contain a proxy object\n\t\t\t\t\t// where 'target' can be accessed. Otherwise, 'edgeValue' will be available directly.\n\n\t\t\t\t\t// TODO: resolve type issues with xstate\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tconst target = edgeValue.target || edgeValue\n\t\t\t\t\tstateElements.push({\n\t\t\t\t\t\tid: `${key}-${target}`,\n\t\t\t\t\t\tsource: key,\n\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\tlabel: edgeKey,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t})\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\thasInputs[target] = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex++\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(stateHash)) {\n\t\t\tif (!hasInputs[key]) {\n\t\t\t\tvalue['type'] = 'input'\n\t\t\t\tvalue['class'] = 'default-input-node'\n\t\t\t}\n\t\t\tstateElements.push(value)\n\t\t}\n\n\t\treturn stateElements\n\t},\n\n\tset: newValue => {\n\t\t// update modelValue when elements change\n\t\tonElementsChange(newValue)\n\n\t\t// TODO: emit('update:modelValue', modelValue)\n\t},\n})\nconst onElementsChange = (elements: FlowElements) => {\n\tconst edges: Record<string, Record<string, any>> = {}\n\tconst idToLabel: Record<string, string> = {}\n\tconst states: EditorStates = {}\n\n\tfor (const el of elements) {\n\t\tconst label = el.label as string\n\n\t\tif (el.type === 'input') {\n\t\t\t// it's an input node\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t} else if (el.type === 'output') {\n\t\t\t// it's an output node\n\t\t\tstates[label] = {\n\t\t\t\ttype: 'final',\n\t\t\t}\n\t\t} else if (el.source && el.target) {\n\t\t\t// it's an edge\n\t\t\tedges[el.source] = edges[el.source] || {}\n\t\t\tedges[el.source][label] = {\n\t\t\t\ttarget: el.target,\n\t\t\t}\n\t\t} else {\n\t\t\t// it's a state\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t}\n\t\tidToLabel[el.id] = label\n\t}\n\n\tfor (const [edgeKey, edgeValue] of Object.entries(edges)) {\n\t\t// add edges to states\n\t\tconst label = idToLabel[edgeKey]\n\t\tfor (const [key, value] of Object.entries(edgeValue)) {\n\t\t\tif (!states[label]) {\n\t\t\t\tstates[label] = { on: {} }\n\t\t\t}\n\t\t\tstates[label].on[key] = value\n\t\t}\n\t}\n\n\temit('update:modelValue', states)\n}\n</script>\n","import { App } from 'vue'\n\nimport NodeEditor from './components/NodeEditor.vue'\nimport StateEditor from './components/StateEditor.vue'\nexport type * from './types'\n\n/**\n * Install all Node Editor components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App) {\n\tapp.component('NodeEditor', NodeEditor)\n\tapp.component('StateEditor', StateEditor)\n}\n\nexport { install, NodeEditor, StateEditor }\n"],"names":["tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","toValue","r","unref","isClient","isDef$1","val","toString","isObject","noop$2","createFilterWrapper","filter2","wrapper","args","resolve","reject","bypassFilter","invoke","pausableFilter","extendFilter","isActive","ref","pause","resume","eventFilter","readonly","promiseTimeout","ms","throwOnTimeout","reason","watchWithFilter","source","cb","options","watchOptions","watch","watchPausable","toRefs","objectRef","isRef","toRefs$1","result","key","customRef","v","_a","copy","newObject","createUntil","isNot","toMatch","condition","flush","deep","timeout2","stop","promises","toBe","value","v1","v2","toBeTruthy","toBeNull","toBeUndefined","toBeNaN","toContains","array2","changed","changedTimes","n","count","until","unrefElement","elRef","plain","defaultWindow","useEventListener","target","events","listeners","cleanups","cleanup","register","el","event","listener","options2","stopWatch","optionsClone","createKeyPredicate$1","keyFilter","onKeyStroke","handler","eventName","passive","dedupe","predicate","e","cloneFnJSON","useVModel","props","emit","_b","_c","clone","defaultValue","shouldEmit","vm","getCurrentInstance","_emit","cloneFn","getValue","triggerEmit","initialValue","proxy","isUpdating","nextTick","computed","noop$1","dispatch","i","_","t","Dispatch","parseTypenames$1","typenames","types","name","typename","callback","T","get$1","set$1","type","that","c","xhtml","namespaces","namespace","prefix","creatorInherit","document2","uri","creatorFixed","fullname","creator","none","selector","selector2","selection_select","select2","groups","m","subgroups","j","group","subgroup","node","subnode","Selection$1","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum2","child","next","constant$3","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","datum","selection_data","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection2","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","a","b","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove$1","attrRemoveNS$1","attrConstant$1","attrConstantNS$1","attrFunction$1","attrFunctionNS$1","selection_attr","defaultView","styleRemove$1","styleConstant$1","priority","styleFunction$1","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant$1","textFunction$1","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create2","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","selection_cloneDeep","selection_clone","selection_datum","contextListener","parseTypenames","onRemove","on","o","onAdd","selection_on","dispatchEvent","params","window2","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection","selection_selection","select","sourceEvent","sourceEvent2","pointer","svg","point","rect","nonpassive","nonpassivecapture","nopropagation$1","noevent$1","dragDisable","view","root2","yesdrag","noclick","constant$2","DragEvent","subject","identifier","active","y","dx","dy","dispatch2","defaultFilter$1","defaultContainer","defaultSubject","d","defaultTouchable$1","drag","container","touchable","gestures","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","touches","container2","touch","p","s","event2","touch2","p0","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h2","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","constant$1","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","color2","rgb$1","start2","end","numberArray","isNumberArray","genericArray","nb","na","interpolate$1","date","interpolateNumber","object","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","i2","degrees","identity$1","decompose","f","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom2","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","_1","_2","_4","frame","timeout$1","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","now2","t0","t1","t2","timeout","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id2","index","timing","schedules","create","init","schedule2","get","set","self","tween","tick","interrupt","empty2","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","attrRemove","attrRemoveNS","attrConstant","interpolate2","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","string10","attrFunctionNS","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","start","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","children2","inherit2","Selection","transition_selection","styleNull","styleRemove","styleConstant","styleFunction","styleMaybeRemove","listener0","remove2","transition_style","styleInterpolate","styleTween","transition_styleTween","textConstant","textFunction","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","cancel","id","selection_prototype","cubicInOut","defaultTiming","inherit","selection_transition","constant","ZoomEvent","transform","Transform","location","identity","nopropagation","noevent","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","zoom","constrain","wheelDelta","scaleExtent","duration","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","k0","k1","centroid","extent2","w","clean","Gesture","wheelidled","currentTarget","x0","y0","started","l0","l1","dp","dl","Position","Position2","SelectionMode","SelectionMode2","ConnectionLineType","ConnectionLineType2","ConnectionMode","ConnectionMode2","MarkerType","MarkerType2","PanOnScrollMode","PanOnScrollMode2","inputTags","defaultDoc","isInputDOMNode","hasAttribute","closest","wasModifierPressed","isKeyMatch","pressedKey","keyToMatch","pressedKeys","isKeyUp","keyCombination","isMatch","createKeyPredicate","keyOrCode","useKeyOrCode","code","keysToWatch","useKeyPress","toValue$1","isPressed","shallowRef","modifierPressed","currentFilter","createKeyFilterFn","nextKeyFilter","previousKeyFilter","reset","actInsideInputWithModifier","preventDefault","target2","isInteractiveElement","keyFilter2","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","ARIA_LIVE_MESSAGE","elementSelectionKeys","arrowKeyDiffs","nodeToRect","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","getDimensions","clamp","clampPosition","position","getHostForElement","element","doc","isEdge","isNode","isGraphNode","isNumeric","isRect","obj","parseNode","existingNode","parentNode","initialState","markRaw","isDef","parseEdge","edge","existingEdge","defaultEdgeOptions","getConnectedElements","nodeOrId","nodes","edges","dir","connectedIds","origin","getOutgoers","nodeOrId2","elements","nodeId","getIncomers","getEdgeId","sourceHandle","targetHandle","connectionExists","rendererPointToPoint","tx","ty","tScale","pointToRendererPoint","snapToGrid","snapGrid","snapPosition","getBoundsOfBoxes","box1","box2","rectToBox","width","height","boxToRect","x2","y2","getRectOfNodes","box","getNodesInside","viewport","partially","excludeNonSelectableNodes","paneRect","visibleNodes","dimensions","selectable","hidden","overlappingArea","notInitialized","partiallyVisible","area","getConnectedEdges","nodesOrId","nodeIds","getTransformForBounds","bounds","minZoom","maxZoom","padding","offset","xZoom","yZoom","clampedZoom","boundsCenterX","boundsCenterY","getXYZPos","parentPos","computedPosition","isParentSelected","findNode","getMarkerId","marker","vueFlowId","calcAutoPanVelocity","calcAutoPan","pos","speed","distance2","xMovement","yMovement","handleParentExpand","updateItem","extendWidth","extendHeight","parentStyles","currWidth","xDiff","yDiff","styleFunc","applyChanges","changes","addRemoveChanges","change","elementIds","currentChange","createSelectionChange","selected","createAdditionChange","item","createNodeRemoveChange","createEdgeRemoveChange","getSelectionChanges","items","selectedIds","mutateItem","willBeSelected","createExtendedEventHook","defaultHandler","fns","hasDefaultHandler","hasListeners","off","offFn","param","hasSelector","current","getDragItems","nodesDraggable","mousePos","dragItems","getEventHandlerParams","extendedDragItems","dragItem","getExtentPadding","getParentExtent","currentExtent","top","right","bottom","left","getExtent","triggerError","parentExtent","VueFlowError","ErrorCode","parentX","parentY","clampNodeExtent","calcNextPosition","nextPosition","nodeExtent","clampedPos","getHandlePosition","handle","fallbackPosition","center","getNodeDimensions","getEdgeHandle","handleId","isEdgeVisible","sourcePos","targetPos","sourceWidth","sourceHeight","targetWidth","targetHeight","edgeBox","viewBox","getEdgeZIndex","elevateEdgesOnSelect","hasZIndex","z","ErrorCode2","messages","parentId","isMouseEvent","isUseDragEvent","getEventPosition","isMouse","evtX","evtY","isMacOs","alwaysValid$1","resetRecentHandle","handleDomNode","getNodesWithinDistance","nodeLookup","ADDITIONAL_DISTANCE","getClosestHandle","connectionRadius","fromHandle","closestHandles","minDistance","closeNodes","allHandles","oppositeHandleType","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","lib","flowId","isValidConnection","isTarget","handleBelow","handleToCheck","handleType","getHandleType","handleNodeId","connectable","connectableEnd","connection","isValid","edgeUpdaterType","getConnectionStatus","isInsideConnectionRadius","isHandleValid","connectionStatus","isConnectionValid","getHandle","withAbsolutePosition","handles","oppositePosition","productionEnvs","warn","message","isDev","getHandleBounds","nodeElement","nodeBounds","handleBounds","handleNodeClick","multiSelectionActive","addSelectedNodes","removeSelectedNodes","nodesSelectionActive","unselect","nodeEl","addEdgeToStore","edgeParams","updateEdgeAction","newConnection","prevEdge","shouldReplaceId","rest","createGraphNodes","parentNodes","nextNodes","parsed","addConnectionToLookup","connectionKey","connectionLookup","nodeMap","typeMap","handleMap","updateConnectionLookup","edgeLookup","sourceNode","targetNode","sourceKey","targetKey","areSetsEqual","createGraphEdges","nextEdges","findEdge","onError","validEdges","edgeOrConnection","VueFlow","NodeId","NodeRef","EdgeId","EdgeRef","Slots","useDrag","vueFlowRef","noDragClassName","nodeDragThreshold","autoPanOnNodeDrag","autoPanSpeed","panBy","selectNodesOnDrag","removeSelectedElements","updateNodePositions","emits","useVueFlow","onStart","onDrag","onStop","onClick","disabled","dragHandle","dragging","dragHandler","containerBounds","lastPos","mousePosition","dragEvent","dragStarted","autoPanId","autoPanStarted","getPointerPosition","useGetPointerPosition","updateNodes","hasChange","currentNode","nodes2","autoPan","nextPos","startDrag","pointerPos","eventStart","eventDrag","eventEnd","isClick","evt","isDisabled","onCleanup","unrefDragHandle","createEdgeHooks","useEdgeHooks","edgeHooks","hooks","xSnapped","ySnapped","alwaysValid","useHandle","onEdgeUpdate","onEdgeUpdateEnd","connectOnClick","connectionClickStartHandle","nodesConnectable","autoPanOnConnect","startConnection","updateConnection","endConnection","isValidConnectionProp","handlePointerDown","isMouseTriggered","onPointerMove","connectionPosition","closestHandle","isValidConnectionHandler","newConnection2","previousConnection","prevActiveHandle","onPointerUp","clickedHandle","fromHandleInternal","fromNodeInternal","handleClick","isOwnHandle","useNodeId","inject","useNode","createNodeHooks","useNodeHooks","nodeHooks","useUpdateNodePositions","getSelectedNodes","positionDiff","isShiftPressed","xVelo","yVelo","factor","positionDiffX","positionDiffY","nodeUpdates","DEFAULT_PADDING","defaultEase","noop","initialViewportHelper","useViewportHelper","state","transitionOptions","getD3Transition","transformViewport","zoom22","clampedX","clampedY","nextTransform","zoomLevel","nodesToFit","nextZoom","centerX","centerY","domX","domY","correctedPosition","ease","onEnd","hasDuration","useWatchProps","models","store","scope","effectScope","watchModelValue","pauseModel","pauseStore","immediateStore","watchNodesValue","watchEdgesValue","watchMaxZoom","watchMinZoom","watchTranslateExtent","watchNodeExtent","watchApplyDefault","watchAutoConnect","autoConnector","autoConnectEnabled","watchRest","skip","propKey","propValue","toRef","storeRef","nextValue","createHooks","err","useHooks","onBeforeMount","useState","storeOptionsToSkip","useActions","viewportHelper","updateNodeInternals","ids","updateIds","getIncomers$1","getOutgoers$1","getConnectedEdges$1","getHandleConnections","updateNodeDimensions","updates","viewportNode","style","elementSelectionHandler","edgeIds","changedNodes","changedEdges","edgeId","nodeChanges","addSelectedEdges","addSelectedElements","removeSelectedEdges","edgeChanges","changes2","curr","selectionChange","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","setPaneClickDistance","clickDistance","setInteractive","isInteractive","setNodes","setEdges","setElements","nextElements","addNodes","graphNodes","addEdges","removeNodes","removeConnectedEdges","removeChildren","nodesToRemove","createEdgeRemovalChanges","connectedEdges","createChildrenRemovalChanges","currNode","removeEdges","edgesToRemove","currEdge","updateEdge2","oldEdge","prevEdgeIndex","newEdge","validEdge","updateEdgeData","dataUpdate","nextData","applyNodeChanges2","applyEdgeChanges2","updateNode","nodeUpdate","nextNode","updateNodeData","startHandle","status","getNodeRect","nodeOrRect","isRectObj","getIntersectingNodes","nodeRect","isRect2","intersections","currNodeRect","isNodeIntersecting","delta","d3Zoom","d3Selection","constrainedTransform","transformChanged","setState","opts","exclude","setSkippedOptions","option","transitionOpts","__","___","____","_____","______","_______","_________","resetState","updatedTransform","bbox","_hoisted_1$9","__default__$f","_sfc_main$f","defineComponent","__props","__expose","createPropsRestProxy","connectionStartHandle","connectionEndHandle","noPanClassName","isConnectableStart","isConnectableEnd","isConnecting","_d","_e","_f","isClickConnecting","isConnectable","onMounted","existingBounds","nextBounds","onPointerDown","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","DefaultNode","sourcePosition","targetPosition","_label","isValidTargetPos","isValidSourcePos","label","h","Fragment","DefaultNode$1","OutputNode","OutputNode$1","InputNode","InputNode$1","_hoisted_1$8","_hoisted_2$2","_hoisted_3$1","__default__$e","_sfc_main$e","getBox","nextBox","normalizeStyle","createCommentVNode","createElementVNode","mergeProps","createBlock","resolveDynamicComponent","createTextVNode","toDisplayString","_hoisted_1$7","_hoisted_2$1","__default__$d","_sfc_main$d","pathEl","interactionEl","labelEl","attrs","useAttrs","getSimpleEdgeCenter","sourceX","sourceY","targetX","targetY","xOffset","yOffset","getBezierEdgeCenter","sourceControlX","sourceControlY","targetControlX","targetControlY","offsetX","offsetY","calculateControlOffset","curvature","getControlWithCurvature","x1","y1","ctX","ctY","getBezierPath","bezierPathParams","labelX","labelY","getControl","getSimpleBezierPath","simpleBezierPathParams","handleDirections","getDirection","distance","getPoints","sourceDir","targetDir","sourceGapped","targetGapped","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","maxXDistance","maxYDistance","getBend","bendSize","xDir2","yDir2","xDir","yDir","getSmoothStepPath","smoothStepPathParams","borderRadius","res","segment","getStraightPath","straightEdgeParams","StraightEdge$1","path","SmoothStepEdge$1","StepEdge$1","BezierEdge$1","SimpleBezierEdge$1","defaultNodeTypes","defaultEdgeTypes","useGetters","getNode","getEdge","getEdgeTypes","edgeTypes","keys","getNodeTypes","nodeTypes","getNodes","getEdges","visibleEdges","getElements","selectedNodes","getSelectedEdges","selectedEdges","getSelectedElements","getNodesInitialized","initializedNodes","areNodesInitialized","Storage","vueApp","existingInstance","flow","preloadedState","reactiveState","reactive","hooksOn","nodesMap","edgesMap","getters","actions","idOrOpts","storage","isOptsObj","vueFlow","injectedState","shouldApplyDefault","nodesChangeHandler","edgesChangeHandler","storedInstance","provide","instance","useResizeHandler","viewportEl","resizeObserver","rendererNode","updateDimensions","onBeforeUnmount","__default__$c","_sfc_main$c","_hoisted_1$6","__default__$b","_sfc_main$b","disableKeyboardA11y","userSelectionActive","updatePositions","selectedNodesBBox","innerStyle","onContextMenu","onKeyDown","getMousePosition","__default__$a","_sfc_main$a","userSelectionRect","elementsSelectable","selectionMode","deleteKeyCode","multiSelectionKeyCode","selectedNodeIds","selectedEdgeIds","hasActiveSelection","connectionInProgress","selectionInProgress","selectionStarted","deleteKeyPressed","multiSelectKeyPressed","isKeyPressed","wrapHandler","containerRef","onWheel","mouseX","mouseY","startX","startY","nextUserSelectRect","prevSelectedNodeIds","prevSelectedEdgeIds","edgesSelectable","connections","$event","__default__$9","_sfc_main$9","fitViewOnInit","fitViewOnInitDone","isHidden","__default__$8","_sfc_main$8","defaultViewport","zoomActivationKeyCode","selectionKeyCode","panActivationKeyCode","panOnScroll","panOnScrollMode","panOnScrollSpeed","panOnDrag","zoomOnDoubleClick","zoomOnPinch","zoomOnScroll","preventScrolling","noWheelClassName","paneDragging","storeD3Zoom","storeD3Selection","storeD3ZoomHandler","viewportRef","paneClickDistance","isZoomingOrPanning","isPanScrolling","panScrollTimeout","zoomedWithRightMouseButton","mouseButton","prevTransform","panKeyPressed","selectionKeyPressed","zoomKeyPressed","shouldPanOnDrag","shouldPanOnScroll","isSelecting","viewportElement","d3ZoomHandler","flowTransform","eventToFlowTransform","isRightClickPan","viewChanged","zoomScroll","pinchZoom","eventButton","isWrappedWithClass","buttonAllowed","currentZoom","_isMacOs","pinchDelta","deltaNormalize","deltaX","deltaY","nextViewport","invalidEvent","pan","usedButton","prevViewport","eventTransform","className","createVNode","withCtx","_hoisted_1$5","_hoisted_2","_hoisted_3","__default__$7","_sfc_main$7","ariaLiveMessage","useOnInitHandler","vfInstance","isInitialized","shiftX","shift","shiftY","EdgeAnchor","radius","EdgeAnchor$1","EdgeWrapper$1","edgeUpdaterRadius","edgesUpdatable","edgesFocusable","slots","mouseOver","updating","edgeEl","isSelectable","isUpdatable","isFocusable","edgeClass","edgeStyle","edgeCmp","slot","edgeType","components","resolveComponent","pathOptions","sourceNodeHandles","targetNodeHandles","onEdgeClick","onEdgeContextMenu","onDoubleClick","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","onEdgeUpdaterSourceMouseDown","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","onEdgeUpdaterTargetMouseDown","handleEdgeUpdater","isSourceHandle","ConnectionLine$1","connectionLineType","connectionLineStyle","connectionLineOptions","connectionLineComponent","fromNode","_a2","toNode","toXY","markerStart","markerEnd","startHandleId","fromHandleBounds","oppositeBounds","fromPosition","fromX","fromY","toHandle","_a3","toPosition","dAttr","pathParams","_hoisted_1$4","__default__$6","_sfc_main$6","_hoisted_1$3","__default__$5","_sfc_main$5","defaultColor","markers","markers2","createMarkers","markerId","renderList","__default__$4","_sfc_main$4","NodeWrapper$1","onUpdateNodeInternals","elevateNodesOnSelect","nodesFocusable","isDraggable","hasPointerEvents","isInit","nodeCmp","nodeType","onSelectNode","getClass","getStyle","styles","zIndex","updateInternals","newX","newY","parentZ","nodeZIndex","xyzPos","nodeExtent2","globalExtent","oldNodeExtent","oldGlobalExtent","clampPosition2","onMouseEnter","onMouseMove","onMouseLeave","_hoisted_1$2","__default__$3","_sfc_main$3","teleportTarget","Teleport","useNodesInitialized","_hoisted_1$1","__default__$2","_sfc_main$2","nodesInitialized","entries","entry","_cached","_memo","isMemoSame","_item","useStylesLoadedWarning","pane","_hoisted_1","__default__$1","_sfc_main$1","useSlots","modelValue","modelNodes","modelEdges","dispose","onUnmounted","__default__","__emit","inputRef","useTemplateRef","newLabel","showInput","lastClick","labelOnClick","showLabelInput","submitNewLabel","_createElementVNode","_createVNode","_unref","EdgeLabelRenderer","_normalizeStyle","_toDisplayString","_openBlock","_createElementBlock","nodeOnClick","_createBlock","Handle","hover","vueFlowElements","vueFlowInstance","activeElementKey","activeElementIndex","_elements","_element","newValue","onConnect","onPaneReady","handleKeypress","shiftTerminal","currentTerminal","shiftOutput","activeNode","shiftInput","fitView","addNode","makeEdge","newNodePosition","labelChanged","handleEdgeRemove","_normalizeClass","_hoisted_4","_hoisted_5","_withCtx","EditableNode","_mergeProps","EditableEdge","states","_useModel","hasInputs","stateElements","stateHash","edgeKey","edgeValue","onElementsChange","idToLabel","NodeEditor","install","app","StateEditor"],"mappings":"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","x_google_ignoreList":[0]}
|