diff --git a/AGENTS.md b/AGENTS.md
index 6a134461..f7f45e29 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -102,6 +102,7 @@ npm run test:coverage # Generate coverage report
- ComfyUI: `app.registerExtension()`, `node.addDOMWidget(name, type, element, options)`
- Event handlers via `addEventListener` or widget callbacks
- Shared utilities: `web/comfyui/utils.js`
+- Dual-mode rendering patterns (canvas vs Vue): see `docs/comfyui-dual-mode-widgets.md`
### Vue Composables Pattern
diff --git a/docs/comfyui-dual-mode-widgets.md b/docs/comfyui-dual-mode-widgets.md
new file mode 100644
index 00000000..f4fc4fdd
--- /dev/null
+++ b/docs/comfyui-dual-mode-widgets.md
@@ -0,0 +1,65 @@
+# ComfyUI Dual-Mode Widget Rendering
+
+ComfyUI custom node widgets render in one of two modes. Patterns that work in one often fail silently in the other. Test both.
+
+## Mode Detection
+
+```js
+typeof LiteGraph !== 'undefined' && LiteGraph.vueNodesMode
+```
+
+In Vue SFCs, `window.LiteGraph` is unavailable — pass as a prop from `main.ts`.
+
+## Canvas Mode Layout
+
+Uses `computeLayoutSize()` + `distributeSpace()` to allocate widget height within the node. Widgets with `computeLayoutSize` participate in space distribution; those with `computeSize` have fixed height.
+
+- `getMinHeight()` in `addDOMWidget` options → minimum widget height
+- `widget.computeLayoutSize()` → `{ minHeight, minWidth, maxHeight? }`
+- Avoid `getMaxHeight()` unless the widget genuinely needs a fixed cap (prevents user resize)
+
+## Vue Mode Layout
+
+Uses CSS Grid (`grid-template-rows`) + `ResizeObserver`. The ResizeObserver watches the widget's DOM and feeds back into grid row sizing. This creates a feedback loop: content grows → row resizes → more space for content → content reflows/grows → row resizes again.
+
+### Height Containment
+
+The fix: `contain: layout size` on the widget root. This tells the browser the element's intrinsic size is CSS-determined, not driven by descendant content. The ResizeObserver sees a stable size and the loop is broken.
+
+```css
+.widget-root.lm-vue-node {
+ height: 100%;
+ min-height: var(--comfy-widget-min-height, 200px);
+ contain: layout size;
+}
+```
+
+Existing examples: `.lm-loras-container.lm-vue-node` and `.comfy-tags-container.lm-vue-node` in `web/comfyui/lm_styles.css`.
+
+**Do NOT** fix height issues with `maxHeight`, `getMaxHeight()`, or inline `max-height` — these prevent the user from resizing the node.
+
+## Scroll Wheel Isolation
+
+Both modes need to distinguish "user wants to scroll widget content" from "user wants to zoom canvas".
+
+**Canvas mode:** Add `@wheel` on widget root. Check `event.target.closest(selector)` for scrollable sub-areas. If scrollable → `event.stopPropagation()`. Otherwise → `app.canvas.processMouseWheel(event)`.
+
+**Vue mode:** Add CSS class `lm-wheel-scrollable` to scrollable elements. The global capture-phase hook in `web/comfyui/utils.js` (`enableListWheelScroll`) detects wheel events on marked elements and manually scrolls them via `element.scrollTop`, consuming the event before canvas zoom sees it.
+
+## DOM Structure
+
+`main.ts` creates an outer `
` container, then `vueApp.mount(container)`. The Vue app renders its own root element inside.
+
+- `container.id` / `container.style.*` → outer element
+- Vue scoped `
\ No newline at end of file
diff --git a/vue-widgets/src/main.ts b/vue-widgets/src/main.ts
index e5fc4227..1f818b05 100644
--- a/vue-widgets/src/main.ts
+++ b/vue-widgets/src/main.ts
@@ -656,7 +656,7 @@ function createLoraInfoWidget(node: any) {
forwardMiddleMouseToCanvas(container)
- let internalValue: { name?: string; notes?: string; filePath?: string } | undefined
+ let internalValue: { name?: string; notes?: string; filePath?: string; activeTab?: string } | undefined
const widget = node.addDOMWidget(
'lora_info_display',
@@ -666,13 +666,13 @@ function createLoraInfoWidget(node: any) {
getValue() {
return internalValue
},
- setValue(v: { name?: string; notes?: string; filePath?: string }) {
+ setValue(v: { name?: string; notes?: string; filePath?: string; activeTab?: string }) {
internalValue = v
if (typeof widget.onSetValue === 'function') {
widget.onSetValue(v)
}
},
- serialize: false, // Display-only widget
+ serialize: true,
getMinHeight() {
return LORA_INFO_WIDGET_MIN_HEIGHT
}
@@ -684,6 +684,7 @@ function createLoraInfoWidget(node: any) {
node,
api,
app,
+ isVueMode: typeof LiteGraph !== 'undefined' && LiteGraph.vueNodesMode,
})
vueApp.use(PrimeVue, {
diff --git a/vue-widgets/tests/components/LoraInfoWidget.test.ts b/vue-widgets/tests/components/LoraInfoWidget.test.ts
new file mode 100644
index 00000000..f1d6c75f
--- /dev/null
+++ b/vue-widgets/tests/components/LoraInfoWidget.test.ts
@@ -0,0 +1,417 @@
+/**
+ * Tests for LoraInfoWidget — tab switching, lazy description loading,
+ * state serialization roundtrip, and activeTab persistence.
+ */
+
+import { nextTick } from 'vue'
+import { shallowMount } from '@vue/test-utils'
+import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest'
+import LoraInfoWidget from '@/components/LoraInfoWidget.vue'
+import { setupFetchMock, resetFetchMock } from '../setup'
+
+// ── Helpers ──
+
+function createMockFetchApi(overrides: {
+ response?: unknown
+ ok?: boolean
+ error?: string
+} = {}) {
+ const { response = { success: true, metadata: {} }, ok = true } = overrides
+ return vi.fn().mockResolvedValue({
+ ok,
+ json: () => Promise.resolve(response),
+ })
+}
+
+function createMockToast() {
+ return { add: vi.fn() }
+}
+
+function createMockWidget(value?: unknown) {
+ type PendingInfo = { name: string; notes: string; filePath: string; activeTab?: string } | null
+ const widget = {
+ serializeValue: (async () => null) as () => Promise
,
+ value: (value ?? undefined) as unknown,
+ onSetValue: undefined as unknown as ((v: unknown) => void),
+ _setLoraInfo: undefined as unknown as (data: Record | null) => void,
+ __pendingLoraInfo: undefined as unknown as PendingInfo | undefined,
+ }
+ return widget
+}
+
+interface MountOptions {
+ initialValue?: Record
+}
+
+type TestWidget = ReturnType
+
+function mountWidget(options: MountOptions = {}) {
+ const fetchApi = createMockFetchApi()
+ const widget = createMockWidget(options.initialValue)
+ const node = { id: 1 }
+ const app = { extensionManager: { toast: createMockToast() } }
+
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: { widget, node, api: { fetchApi }, app },
+ })
+
+ return { wrapper, widget: widget as TestWidget, fetchApi, app }
+}
+
+// ── Tests ──
+
+describe('LoraInfoWidget', () => {
+ beforeEach(() => {
+ setupFetchMock()
+ })
+
+ afterEach(() => {
+ resetFetchMock()
+ })
+
+ describe('initial state', () => {
+ it('shows placeholder when no LoRA is selected', () => {
+ const { wrapper } = mountWidget()
+ expect(wrapper.text()).toContain('No LoRA selected')
+ })
+
+ it('shows Notes tab by default when LoRA is set', async () => {
+ const { wrapper, widget } = mountWidget()
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ expect(wrapper.text()).toContain('test.safetensors')
+ expect(wrapper.find('.notes-tab').isVisible()).toBe(true)
+ expect(wrapper.find('.description-tab').isVisible()).toBe(false)
+ })
+ })
+
+ describe('tab switching', () => {
+ it('switches to Description tab and back to Notes', async () => {
+ const { wrapper, widget } = mountWidget()
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ const tabs = wrapper.findAll('.lora-info-tab')
+
+ // Click Description tab
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+
+ expect(tabs[1].classes()).toContain('active')
+ expect(wrapper.text()).toContain('No description available')
+
+ // Switch back to Notes
+ const notesTab = wrapper.findAll('.lora-info-tab-input')[0]
+ await notesTab.setValue('notes')
+ await nextTick()
+
+ expect(tabs[0].classes()).toContain('active')
+ expect(wrapper.text()).toContain('test.safetensors')
+ })
+ })
+
+ describe('description lazy loading', () => {
+ it('fetches metadata when Description tab is activated', async () => {
+ const fetchApi = createMockFetchApi({
+ response: {
+ success: true,
+ metadata: {
+ description: 'Version desc
',
+ model: { description: 'Model desc
' },
+ },
+ },
+ })
+ const widget = createMockWidget()
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ // Switch to Description tab
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+ await nextTick() // flush async fetch
+
+ expect(fetchApi).toHaveBeenCalledWith(
+ expect.stringContaining('/lm/loras/metadata'),
+ expect.objectContaining({ method: 'GET' })
+ )
+ expect(wrapper.html()).toContain('Version desc')
+ expect(wrapper.html()).toContain('Model desc')
+ })
+
+ it('shows loading state while fetching', async () => {
+ // Use a never-resolving promise to simulate loading
+ const fetchApi = vi.fn().mockReturnValue(new Promise(() => {}))
+ const widget = createMockWidget()
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+
+ expect(wrapper.text()).toContain('Loading description')
+ })
+
+ it('shows error state when fetch fails', async () => {
+ const fetchApi = vi.fn().mockRejectedValue(new Error('Network error'))
+ const widget = createMockWidget()
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+ await nextTick()
+
+ expect(wrapper.text()).toContain('Failed to load description')
+ })
+
+ it('shows empty state when metadata has no descriptions', async () => {
+ const fetchApi = createMockFetchApi({
+ response: {
+ success: true,
+ metadata: {
+ description: '',
+ model: {},
+ },
+ },
+ })
+ const widget = createMockWidget()
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+ await nextTick()
+
+ expect(wrapper.text()).toContain('No description available')
+ })
+
+ it('caches description and does not re-fetch on second activation', async () => {
+ const fetchApi = createMockFetchApi({
+ response: {
+ success: true,
+ metadata: {
+ description: 'Version desc
',
+ model: { description: 'Model desc
' },
+ },
+ },
+ })
+ const widget = createMockWidget()
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ // First activation
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+ await nextTick()
+
+ expect(fetchApi).toHaveBeenCalledTimes(1)
+
+ // Switch away and back
+ const notesTab = wrapper.findAll('.lora-info-tab-input')[0]
+ await notesTab.setValue('notes')
+ await nextTick()
+ await descriptionTab.setValue('description')
+ await nextTick()
+
+ // Should NOT have called fetch again
+ expect(fetchApi).toHaveBeenCalledTimes(1)
+ })
+
+ it('re-fetches when LoRA selection changes', async () => {
+ const fetchApi = createMockFetchApi({
+ response: {
+ success: true,
+ metadata: {
+ description: 'Version desc
',
+ model: { description: 'Model desc
' },
+ },
+ },
+ })
+ const widget = createMockWidget()
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ widget._setLoraInfo!({ name: 'first.safetensors', notes: '', filePath: '/path/first.safetensors' })
+ await nextTick()
+
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+ await nextTick()
+
+ expect(fetchApi).toHaveBeenCalledTimes(1)
+
+ // Select a different LoRA — resets description state
+ widget._setLoraInfo!({ name: 'second.safetensors', notes: '', filePath: '/path/second.safetensors' })
+ await nextTick()
+
+ // Should show loading again (not cached)
+ await descriptionTab.setValue('description')
+ await nextTick()
+ await nextTick()
+
+ expect(fetchApi).toHaveBeenCalledTimes(2)
+ })
+ })
+
+ describe('serialization roundtrip', () => {
+ it('serializeValue includes activeTab', async () => {
+ const { wrapper, widget } = mountWidget()
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: 'my notes', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ // Switch to Description tab
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+
+ const serialized = await widget.serializeValue!()
+ expect(serialized).toMatchObject({
+ name: 'test.safetensors',
+ notes: 'my notes',
+ filePath: '/path/test.safetensors',
+ activeTab: 'description',
+ })
+ })
+
+ it('onSetValue restores activeTab from workflow value', async () => {
+ const { wrapper } = mountWidget({
+ initialValue: {
+ name: 'saved.safetensors',
+ notes: 'saved notes',
+ filePath: '/path/saved.safetensors',
+ activeTab: 'description',
+ },
+ })
+
+ await nextTick()
+
+ // Description tab should be visible (activeTab restored to 'description')
+ expect(wrapper.find('.description-tab').isVisible()).toBe(true)
+ expect(wrapper.text()).toContain('saved.safetensors')
+ })
+
+ it('defaults to notes tab when activeTab is missing in saved value', async () => {
+ const { wrapper } = mountWidget({
+ initialValue: {
+ name: 'legacy.safetensors',
+ notes: 'legacy notes',
+ filePath: '/path/legacy.safetensors',
+ // No activeTab — legacy workflow
+ },
+ })
+
+ await nextTick()
+
+ expect(wrapper.find('.notes-tab').isVisible()).toBe(true)
+ })
+ })
+
+ describe('_setLoraInfo race condition guard', () => {
+ it('consumes __pendingLoraInfo pushed before mount', async () => {
+ const widget = createMockWidget()
+ widget.__pendingLoraInfo = {
+ name: 'pending.safetensors',
+ notes: 'pending notes',
+ filePath: '/path/pending.safetensors',
+ }
+
+ const wrapper = shallowMount(LoraInfoWidget, {
+ props: {
+ widget,
+ node: { id: 1 },
+ api: { fetchApi: createMockFetchApi() },
+ app: { extensionManager: { toast: createMockToast() } },
+ },
+ })
+
+ await nextTick()
+
+ expect(widget.__pendingLoraInfo).toBeUndefined()
+ expect(wrapper.text()).toContain('pending.safetensors')
+ })
+
+ it('preserves activeTab when _setLoraInfo called with null (deselection)', async () => {
+ const { wrapper, widget } = mountWidget()
+ widget._setLoraInfo!({ name: 'test.safetensors', notes: '', filePath: '/path/test.safetensors' })
+ await nextTick()
+
+ // Switch to Description tab
+ const descriptionTab = wrapper.findAll('.lora-info-tab-input')[1]
+ await descriptionTab.setValue('description')
+ await nextTick()
+
+ // Deselect — template shows placeholder (no tab bar rendered)
+ widget._setLoraInfo!(null)
+ await nextTick()
+
+ // Placeholder shown
+ expect(wrapper.text()).toContain('No LoRA selected')
+
+ // Re-select — activeTab should still be 'description'
+ widget._setLoraInfo!({ name: 'second.safetensors', notes: '', filePath: '/path/second.safetensors' })
+ await nextTick()
+
+ const tabs = wrapper.findAll('.lora-info-tab')
+ expect(tabs[1].classes()).toContain('active')
+ })
+ })
+})
diff --git a/web/comfyui/vue-widgets/lora-manager-widgets.js b/web/comfyui/vue-widgets/lora-manager-widgets.js
index e65cb949..58206b29 100644
--- a/web/comfyui/vue-widgets/lora-manager-widgets.js
+++ b/web/comfyui/vue-widgets/lora-manager-widgets.js
@@ -2224,7 +2224,7 @@ to { transform: rotate(360deg);
resize: vertical !important;
}
-.lora-info-widget[data-v-db325517] {
+.lora-info-widget[data-v-a65e9027] {
padding: 12px;
background: rgba(40, 44, 52, 0.6);
border-radius: 4px;
@@ -2234,12 +2234,85 @@ to { transform: rotate(360deg);
box-sizing: border-box;
overflow: hidden;
}
-.info-field[data-v-db325517] {
+
+/* Vue node mode: prevent content from pushing node size via ResizeObserver.
+ contain:layout size tells the browser the element's intrinsic size is
+ determined solely by CSS — not by descendant content. This breaks the
+ feedback loop where content grows → ResizeObserver resizes → content
+ reflows → repeat. Same technique used by tags_widget.js + lm_styles.css. */
+.lora-info-widget.lm-vue-node[data-v-a65e9027] {
+ contain: layout size;
+}
+
+/* ── Tab bar ── */
+.lora-info-tabs[data-v-a65e9027] {
+ display: flex;
+ gap: 0;
+ margin-bottom: 10px;
+ border-bottom: 1px solid var(--border-color, #444);
+ flex-shrink: 0;
+}
+.lora-info-tab[data-v-a65e9027] {
+ flex: 1;
+ text-align: center;
+ cursor: pointer;
+ padding: 6px 0;
+ position: relative;
+}
+.lora-info-tab-input[data-v-a65e9027] {
+ position: absolute;
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+.lora-info-tab-label[data-v-a65e9027] {
+ font-size: 12px;
+ font-weight: 500;
+ color: var(--fg-color, #fff);
+ opacity: 0.5;
+ transition: opacity 0.15s;
+}
+.lora-info-tab:hover .lora-info-tab-label[data-v-a65e9027] {
+ opacity: 0.75;
+}
+.lora-info-tab.active .lora-info-tab-label[data-v-a65e9027] {
+ opacity: 1;
+}
+.lora-info-tab.active[data-v-a65e9027]::after {
+ content: '';
+ position: absolute;
+ bottom: -1px;
+ left: 25%;
+ right: 25%;
+ height: 2px;
+ background: rgba(66, 153, 225, 0.8);
+ border-radius: 1px;
+}
+
+/* ── Tab content ── */
+.tab-content[data-v-a65e9027] {
+ flex: 1;
+ min-height: 0;
+ overflow: hidden;
+}
+.notes-tab[data-v-a65e9027] {
+ display: flex;
+ flex-direction: column;
+}
+.description-tab[data-v-a65e9027] {
+ display: flex;
+ flex-direction: column;
+ overflow-y: auto;
+ min-height: 0;
+}
+
+/* ── Info fields (shared) ── */
+.info-field[data-v-a65e9027] {
display: flex;
flex-direction: column;
gap: 4px;
}
-.info-label[data-v-db325517] {
+.info-label[data-v-a65e9027] {
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
@@ -2247,18 +2320,18 @@ to { transform: rotate(360deg);
color: var(--fg-color, #fff);
opacity: 0.6;
}
-.lora-filename[data-v-db325517] {
+.lora-filename[data-v-a65e9027] {
font-size: 13px;
font-weight: 500;
color: var(--fg-color, #fff);
word-break: break-all;
margin-bottom: 8px;
}
-.notes-field[data-v-db325517] {
+.notes-field[data-v-a65e9027] {
flex: 1;
min-height: 0;
}
-.lora-notes[data-v-db325517] {
+.lora-notes[data-v-a65e9027] {
width: 100%;
flex: 1;
min-height: 60px;
@@ -2273,14 +2346,14 @@ to { transform: rotate(360deg);
font-family: inherit;
outline: none;
}
-.lora-notes[data-v-db325517]:focus {
+.lora-notes[data-v-a65e9027]:focus {
border-color: var(--comfy-input-border, #444);
}
-.lora-notes[data-v-db325517]:disabled {
+.lora-notes[data-v-a65e9027]:disabled {
opacity: 0.6;
cursor: not-allowed;
}
-.save-btn[data-v-db325517] {
+.save-btn[data-v-a65e9027] {
width: 100%;
margin-top: 8px;
padding: 6px 12px;
@@ -2294,22 +2367,104 @@ to { transform: rotate(360deg);
box-sizing: border-box;
flex-shrink: 0;
}
-.save-btn[data-v-db325517]:hover:not(:disabled) {
+.save-btn[data-v-a65e9027]:hover:not(:disabled) {
background: rgba(66, 153, 225, 0.25);
border-color: rgba(66, 153, 225, 0.6);
}
-.save-btn[data-v-db325517]:disabled {
+.save-btn[data-v-a65e9027]:disabled {
opacity: 0.4;
cursor: not-allowed;
background: rgba(66, 153, 225, 0.05);
border-color: rgba(226, 232, 240, 0.1);
}
-.placeholder[data-v-db325517] {
+
+/* ── Description states ── */
+.description-state[data-v-a65e9027] {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ padding: 24px 16px;
+ color: var(--fg-color, #fff);
+ opacity: 0.5;
+ font-size: 12px;
+ min-height: 0;
+ flex-shrink: 0;
+}
+.description-state.error[data-v-a65e9027] {
+ opacity: 0.7;
+ color: #f87171;
+}
+
+/* ── Description content ── */
+.description-content[data-v-a65e9027] {
+ min-height: 0;
+}
+.description-section[data-v-a65e9027] {
+ margin-bottom: 14px;
+}
+.description-section[data-v-a65e9027]:last-child {
+ margin-bottom: 0;
+}
+.description-text[data-v-a65e9027] {
+ padding: 8px 0;
+ font-size: 12px;
+ line-height: 1.5;
+ color: var(--fg-color, #fff);
+ opacity: 0.85;
+ word-break: break-word;
+}
+.description-text[data-v-a65e9027] p {
+ margin: 0 0 8px 0;
+}
+.description-text[data-v-a65e9027] p:last-child {
+ margin-bottom: 0;
+}
+.description-text[data-v-a65e9027] a {
+ color: rgba(66, 153, 225, 0.9);
+}
+.description-text[data-v-a65e9027] ul,
+.description-text[data-v-a65e9027] ol {
+ padding-left: 20px;
+ margin: 4px 0;
+}
+.description-text[data-v-a65e9027] h1,
+.description-text[data-v-a65e9027] h2,
+.description-text[data-v-a65e9027] h3 {
+ font-size: 13px;
+ margin: 10px 0 4px 0;
+ font-weight: 600;
+ opacity: 0.95;
+}
+.description-text[data-v-a65e9027] code {
+ background: rgba(255, 255, 255, 0.08);
+ padding: 1px 4px;
+ border-radius: 3px;
+ font-size: 11px;
+}
+.description-text[data-v-a65e9027] img {
+ max-width: 100%;
+ border-radius: 4px;
+}
+
+/* ── Placeholder (shared) ── */
+.placeholder[data-v-a65e9027] {
font-style: italic;
color: rgba(226, 232, 240, 0.5);
text-align: center;
padding: 16px 0;
font-size: 12px;
+}
+
+/* ── Spinner (Font Awesome) ── */
+.fa-spinner[data-v-a65e9027] {
+ animation: fa-spin-a65e9027 1s linear infinite;
+}
+@keyframes fa-spin-a65e9027 {
+0% { transform: rotate(0deg);
+}
+100% { transform: rotate(360deg);
+}
}`));
document.head.appendChild(elementStyle);
}
@@ -2351,6 +2506,7 @@ const hasOwn = (val, key) => hasOwnProperty$1.call(val, key);
const isArray = Array.isArray;
const isMap = (val) => toTypeString(val) === "[object Map]";
const isSet = (val) => toTypeString(val) === "[object Set]";
+const isDate = (val) => toTypeString(val) === "[object Date]";
const isFunction = (val) => typeof val === "function";
const isString = (val) => typeof val === "string";
const isSymbol = (val) => typeof val === "symbol";
@@ -2476,6 +2632,52 @@ const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
function includeBooleanAttr(value) {
return !!value || value === "";
}
+function looseCompareArrays(a2, b2) {
+ if (a2.length !== b2.length) return false;
+ let equal = true;
+ for (let i2 = 0; equal && i2 < a2.length; i2++) {
+ equal = looseEqual(a2[i2], b2[i2]);
+ }
+ return equal;
+}
+function looseEqual(a2, b2) {
+ if (a2 === b2) return true;
+ let aValidType = isDate(a2);
+ let bValidType = isDate(b2);
+ if (aValidType || bValidType) {
+ return aValidType && bValidType ? a2.getTime() === b2.getTime() : false;
+ }
+ aValidType = isSymbol(a2);
+ bValidType = isSymbol(b2);
+ if (aValidType || bValidType) {
+ return a2 === b2;
+ }
+ aValidType = isArray(a2);
+ bValidType = isArray(b2);
+ if (aValidType || bValidType) {
+ return aValidType && bValidType ? looseCompareArrays(a2, b2) : false;
+ }
+ aValidType = isObject(a2);
+ bValidType = isObject(b2);
+ if (aValidType || bValidType) {
+ if (!aValidType || !bValidType) {
+ return false;
+ }
+ const aKeysCount = Object.keys(a2).length;
+ const bKeysCount = Object.keys(b2).length;
+ if (aKeysCount !== bKeysCount) {
+ return false;
+ }
+ for (const key in a2) {
+ const aHasKey = a2.hasOwnProperty(key);
+ const bHasKey = b2.hasOwnProperty(key);
+ if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a2[key], b2[key])) {
+ return false;
+ }
+ }
+ }
+ return String(a2) === String(b2);
+}
const isRef$1 = (val) => {
return !!(val && val["__v_isRef"] === true);
};
@@ -9215,6 +9417,46 @@ function patchClass(el, value, isSVG) {
}
const vShowOriginalDisplay = /* @__PURE__ */ Symbol("_vod");
const vShowHidden = /* @__PURE__ */ Symbol("_vsh");
+const vShow = {
+ // used for prop mismatch check during hydration
+ name: "show",
+ beforeMount(el, { value }, { transition }) {
+ el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display;
+ if (transition && value) {
+ transition.beforeEnter(el);
+ } else {
+ setDisplay(el, value);
+ }
+ },
+ mounted(el, { value }, { transition }) {
+ if (transition && value) {
+ transition.enter(el);
+ }
+ },
+ updated(el, { value, oldValue }, { transition }) {
+ if (!value === !oldValue) return;
+ if (transition) {
+ if (value) {
+ transition.beforeEnter(el);
+ setDisplay(el, true);
+ transition.enter(el);
+ } else {
+ transition.leave(el, () => {
+ setDisplay(el, false);
+ });
+ }
+ } else {
+ setDisplay(el, value);
+ }
+ },
+ beforeUnmount(el, { value }) {
+ setDisplay(el, value);
+ }
+};
+function setDisplay(el, value) {
+ el.style.display = value ? el[vShowOriginalDisplay] : "none";
+ el[vShowHidden] = !value;
+}
const CSS_VAR_TEXT = /* @__PURE__ */ Symbol("");
const displayRE = /(?:^|;)\s*display\s*:/;
function patchStyle(el, prev, next) {
@@ -9574,6 +9816,24 @@ const vModelText = {
el.value = newValue;
}
};
+const vModelRadio = {
+ created(el, { value }, vnode) {
+ el.checked = looseEqual(value, vnode.props.value);
+ el[assignKey] = getModelAssigner(vnode);
+ addEventListener(el, "change", () => {
+ el[assignKey](getValue(el));
+ });
+ },
+ beforeUpdate(el, { value, oldValue }, vnode) {
+ el[assignKey] = getModelAssigner(vnode);
+ if (value !== oldValue) {
+ el.checked = looseEqual(value, vnode.props.value);
+ }
+ }
+};
+function getValue(el) {
+ return "_value" in el ? el._value : el.value;
+}
const systemModifiers = ["ctrl", "shift", "alt", "meta"];
const modifierGuards = {
stop: (e) => e.stopPropagation(),
@@ -10844,14 +11104,14 @@ const _hoisted_7$a = {
key: 1,
class: "section__chips"
};
-const _hoisted_8$7 = { class: "section__column" };
-const _hoisted_9$5 = { class: "section__column-header" };
-const _hoisted_10$5 = { class: "section__column-content" };
-const _hoisted_11$4 = {
+const _hoisted_8$8 = { class: "section__column" };
+const _hoisted_9$6 = { class: "section__column-header" };
+const _hoisted_10$6 = { class: "section__column-content" };
+const _hoisted_11$5 = {
key: 0,
class: "section__empty"
};
-const _hoisted_12$4 = {
+const _hoisted_12$5 = {
key: 1,
class: "section__chips"
};
@@ -10888,15 +11148,15 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
]))
])
]),
- createBaseVNode("div", _hoisted_8$7, [
- createBaseVNode("div", _hoisted_9$5, [
+ createBaseVNode("div", _hoisted_8$8, [
+ createBaseVNode("div", _hoisted_9$6, [
_cache[3] || (_cache[3] = createBaseVNode("span", { class: "section__column-title section__column-title--exclude" }, "EXCLUDE", -1)),
createVNode(EditButton, {
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("edit-exclude"))
})
]),
- createBaseVNode("div", _hoisted_10$5, [
- __props.excludeTags.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_11$4, " None ")) : (openBlock(), createElementBlock("div", _hoisted_12$4, [
+ createBaseVNode("div", _hoisted_10$6, [
+ __props.excludeTags.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_11$5, " None ")) : (openBlock(), createElementBlock("div", _hoisted_12$5, [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.excludeTags, (tag) => {
return openBlock(), createBlock(FilterChip, {
key: tag,
@@ -10926,14 +11186,14 @@ const _hoisted_7$9 = {
key: 1,
class: "section__empty"
};
-const _hoisted_8$6 = { class: "section__column" };
-const _hoisted_9$4 = { class: "section__column-header" };
-const _hoisted_10$4 = { class: "section__content" };
-const _hoisted_11$3 = {
+const _hoisted_8$7 = { class: "section__column" };
+const _hoisted_9$5 = { class: "section__column-header" };
+const _hoisted_10$5 = { class: "section__content" };
+const _hoisted_11$4 = {
key: 0,
class: "section__paths"
};
-const _hoisted_12$3 = {
+const _hoisted_12$4 = {
key: 1,
class: "section__empty"
};
@@ -10993,8 +11253,8 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
])) : (openBlock(), createElementBlock("div", _hoisted_7$9, " No folders selected "))
])
]),
- createBaseVNode("div", _hoisted_8$6, [
- createBaseVNode("div", _hoisted_9$4, [
+ createBaseVNode("div", _hoisted_8$7, [
+ createBaseVNode("div", _hoisted_9$5, [
_cache[5] || (_cache[5] = createBaseVNode("span", { class: "section__column-title section__column-title--exclude" }, "EXCLUDE", -1)),
createBaseVNode("button", {
type: "button",
@@ -11009,8 +11269,8 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
], -1)
])])
]),
- createBaseVNode("div", _hoisted_10$4, [
- __props.excludeFolders.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_11$3, [
+ createBaseVNode("div", _hoisted_10$5, [
+ __props.excludeFolders.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_11$4, [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.excludeFolders, (path) => {
return openBlock(), createBlock(FilterChip, {
key: path,
@@ -11020,7 +11280,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
onRemove: ($event) => removeExclude(path)
}, null, 8, ["label", "onRemove"]);
}), 128))
- ])) : (openBlock(), createElementBlock("div", _hoisted_12$3, " No folders selected "))
+ ])) : (openBlock(), createElementBlock("div", _hoisted_12$4, " No folders selected "))
])
])
])
@@ -11036,17 +11296,17 @@ const _hoisted_4$c = ["checked"];
const _hoisted_5$a = { class: "section__columns" };
const _hoisted_6$a = { class: "section__column" };
const _hoisted_7$8 = { class: "section__input-wrapper" };
-const _hoisted_8$5 = ["placeholder"];
-const _hoisted_9$3 = { class: "section__patterns" };
-const _hoisted_10$3 = {
+const _hoisted_8$6 = ["placeholder"];
+const _hoisted_9$4 = { class: "section__patterns" };
+const _hoisted_10$4 = {
key: 0,
class: "section__empty"
};
-const _hoisted_11$2 = { class: "section__column" };
-const _hoisted_12$2 = { class: "section__input-wrapper" };
-const _hoisted_13$2 = ["placeholder"];
-const _hoisted_14$2 = { class: "section__patterns" };
-const _hoisted_15$2 = {
+const _hoisted_11$3 = { class: "section__column" };
+const _hoisted_12$3 = { class: "section__input-wrapper" };
+const _hoisted_13$3 = ["placeholder"];
+const _hoisted_14$3 = { class: "section__patterns" };
+const _hoisted_15$3 = {
key: 0,
class: "section__empty"
};
@@ -11108,7 +11368,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
placeholder: __props.useRegex ? "Add regex pattern..." : "Add text pattern...",
class: "section__input",
onKeydown: withKeys(addInclude, ["enter"])
- }, null, 40, _hoisted_8$5), [
+ }, null, 40, _hoisted_8$6), [
[vModelText, includeInput.value]
]),
createBaseVNode("button", {
@@ -11117,7 +11377,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
onClick: addInclude
}, "+")
]),
- createBaseVNode("div", _hoisted_9$3, [
+ createBaseVNode("div", _hoisted_9$4, [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.includePatterns, (pattern) => {
return openBlock(), createBlock(FilterChip, {
key: pattern,
@@ -11127,21 +11387,21 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
onRemove: ($event) => removeInclude(pattern)
}, null, 8, ["label", "onRemove"]);
}), 128)),
- __props.includePatterns.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_10$3, toDisplayString(__props.useRegex ? "No regex patterns" : "No text patterns"), 1)) : createCommentVNode("", true)
+ __props.includePatterns.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_10$4, toDisplayString(__props.useRegex ? "No regex patterns" : "No text patterns"), 1)) : createCommentVNode("", true)
])
]),
- createBaseVNode("div", _hoisted_11$2, [
+ createBaseVNode("div", _hoisted_11$3, [
_cache[6] || (_cache[6] = createBaseVNode("div", { class: "section__column-header" }, [
createBaseVNode("span", { class: "section__column-title section__column-title--exclude" }, "EXCLUDE")
], -1)),
- createBaseVNode("div", _hoisted_12$2, [
+ createBaseVNode("div", _hoisted_12$3, [
withDirectives(createBaseVNode("input", {
type: "text",
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => excludeInput.value = $event),
placeholder: __props.useRegex ? "Add regex pattern..." : "Add text pattern...",
class: "section__input",
onKeydown: withKeys(addExclude, ["enter"])
- }, null, 40, _hoisted_13$2), [
+ }, null, 40, _hoisted_13$3), [
[vModelText, excludeInput.value]
]),
createBaseVNode("button", {
@@ -11150,7 +11410,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
onClick: addExclude
}, "+")
]),
- createBaseVNode("div", _hoisted_14$2, [
+ createBaseVNode("div", _hoisted_14$3, [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.excludePatterns, (pattern) => {
return openBlock(), createBlock(FilterChip, {
key: pattern,
@@ -11160,7 +11420,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
onRemove: ($event) => removeExclude(pattern)
}, null, 8, ["label", "onRemove"]);
}), 128)),
- __props.excludePatterns.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_15$2, toDisplayString(__props.useRegex ? "No regex patterns" : "No text patterns"), 1)) : createCommentVNode("", true)
+ __props.excludePatterns.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_15$3, toDisplayString(__props.useRegex ? "No regex patterns" : "No text patterns"), 1)) : createCommentVNode("", true)
])
])
])
@@ -11240,12 +11500,12 @@ const _hoisted_7$7 = {
key: 1,
class: "preview__thumb preview__thumb--placeholder"
};
-const _hoisted_8$4 = { class: "preview__name" };
-const _hoisted_9$2 = {
+const _hoisted_8$5 = { class: "preview__name" };
+const _hoisted_9$3 = {
key: 0,
class: "preview__more"
};
-const _hoisted_10$2 = {
+const _hoisted_10$3 = {
key: 0,
class: "preview__empty"
};
@@ -11313,16 +11573,16 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
createBaseVNode("path", { d: "M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-12zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1h12z" })
], -1)
])])),
- createBaseVNode("span", _hoisted_8$4, toDisplayString(item.model_name || item.file_name), 1)
+ createBaseVNode("span", _hoisted_8$5, toDisplayString(item.model_name || item.file_name), 1)
]);
}), 128)),
- __props.matchCount > 5 ? (openBlock(), createElementBlock("div", _hoisted_9$2, " +" + toDisplayString((__props.matchCount - 5).toLocaleString()) + " more ", 1)) : createCommentVNode("", true)
+ __props.matchCount > 5 ? (openBlock(), createElementBlock("div", _hoisted_9$3, " +" + toDisplayString((__props.matchCount - 5).toLocaleString()) + " more ", 1)) : createCommentVNode("", true)
])
])) : createCommentVNode("", true)
]),
_: 1
}),
- __props.items.length === 0 && !__props.isLoading ? (openBlock(), createElementBlock("div", _hoisted_10$2, " No matching LoRAs ")) : createCommentVNode("", true)
+ __props.items.length === 0 && !__props.isLoading ? (openBlock(), createElementBlock("div", _hoisted_10$3, " No matching LoRAs ")) : createCommentVNode("", true)
]);
};
}
@@ -11498,7 +11758,7 @@ const _hoisted_5$6 = {
};
const _hoisted_6$6 = { class: "model-name" };
const _hoisted_7$6 = { class: "model-count" };
-const _hoisted_8$3 = {
+const _hoisted_8$4 = {
key: 0,
class: "no-results"
};
@@ -11608,7 +11868,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
createBaseVNode("span", _hoisted_7$6, "(" + toDisplayString(model.count) + ")", 1)
]);
}), 128)),
- filteredModels.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_8$3, " No models found ")) : createCommentVNode("", true)
+ filteredModels.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_8$4, " No models found ")) : createCommentVNode("", true)
])
]),
_: 1
@@ -12398,7 +12658,7 @@ const _hoisted_4$5 = {
const _hoisted_5$4 = { class: "last-used-preview__info" };
const _hoisted_6$4 = { class: "last-used-preview__name" };
const _hoisted_7$4 = { class: "last-used-preview__strength" };
-const _hoisted_8$2 = {
+const _hoisted_8$3 = {
key: 0,
class: "last-used-preview__more"
};
@@ -12457,7 +12717,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
])
]);
}), 128)),
- __props.loras.length > 5 ? (openBlock(), createElementBlock("div", _hoisted_8$2, " +" + toDisplayString((__props.loras.length - 5).toLocaleString()) + " more LoRAs ", 1)) : createCommentVNode("", true)
+ __props.loras.length > 5 ? (openBlock(), createElementBlock("div", _hoisted_8$3, " +" + toDisplayString((__props.loras.length - 5).toLocaleString()) + " more LoRAs ", 1)) : createCommentVNode("", true)
])
]);
};
@@ -12888,16 +13148,16 @@ const _hoisted_4$4 = ["checked"];
const _hoisted_5$3 = ["checked"];
const _hoisted_6$3 = { class: "slider-container" };
const _hoisted_7$3 = { class: "setting-section" };
-const _hoisted_8$1 = { class: "slider-container" };
-const _hoisted_9$1 = { class: "setting-section" };
-const _hoisted_10$1 = { class: "section-header-with-toggle" };
-const _hoisted_11$1 = ["aria-checked"];
-const _hoisted_12$1 = { class: "setting-section" };
-const _hoisted_13$1 = { class: "section-header-with-toggle" };
-const _hoisted_14$1 = { class: "setting-label" };
-const _hoisted_15$1 = ["aria-checked"];
-const _hoisted_16$1 = { class: "setting-section" };
-const _hoisted_17$1 = { class: "roll-buttons-with-tooltip" };
+const _hoisted_8$2 = { class: "slider-container" };
+const _hoisted_9$2 = { class: "setting-section" };
+const _hoisted_10$2 = { class: "section-header-with-toggle" };
+const _hoisted_11$2 = ["aria-checked"];
+const _hoisted_12$2 = { class: "setting-section" };
+const _hoisted_13$2 = { class: "section-header-with-toggle" };
+const _hoisted_14$2 = { class: "setting-label" };
+const _hoisted_15$2 = ["aria-checked"];
+const _hoisted_16$2 = { class: "setting-section" };
+const _hoisted_17$2 = { class: "roll-buttons-with-tooltip" };
const _hoisted_18$1 = { class: "roll-buttons" };
const _hoisted_19$1 = ["disabled"];
const _hoisted_20$1 = ["disabled"];
@@ -12999,7 +13259,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
]),
createBaseVNode("div", _hoisted_7$3, [
_cache[21] || (_cache[21] = createBaseVNode("label", { class: "setting-label" }, "Model Strength Range", -1)),
- createBaseVNode("div", _hoisted_8$1, [
+ createBaseVNode("div", _hoisted_8$2, [
createVNode(DualRangeSlider, {
min: -10,
max: 10,
@@ -13015,8 +13275,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
}, null, 8, ["value-min", "value-max"])
])
]),
- createBaseVNode("div", _hoisted_9$1, [
- createBaseVNode("div", _hoisted_10$1, [
+ createBaseVNode("div", _hoisted_9$2, [
+ createBaseVNode("div", _hoisted_10$2, [
_cache[23] || (_cache[23] = createBaseVNode("label", { class: "setting-label" }, " Preset Strength Scale ", -1)),
createBaseVNode("button", {
type: "button",
@@ -13028,7 +13288,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
}, [..._cache[22] || (_cache[22] = [
createBaseVNode("span", { class: "toggle-switch__track" }, null, -1),
createBaseVNode("span", { class: "toggle-switch__thumb" }, null, -1)
- ])], 10, _hoisted_11$1)
+ ])], 10, _hoisted_11$2)
]),
createBaseVNode("div", {
class: normalizeClass(["slider-container", { "slider-container--disabled": !__props.useRecommendedStrength }])
@@ -13047,9 +13307,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
}, null, 8, ["value-min", "value-max", "disabled"])
], 2)
]),
- createBaseVNode("div", _hoisted_12$1, [
- createBaseVNode("div", _hoisted_13$1, [
- createBaseVNode("label", _hoisted_14$1, " Clip Strength Range - " + toDisplayString(__props.useCustomClipRange ? "Custom Range" : "Use Model Strength"), 1),
+ createBaseVNode("div", _hoisted_12$2, [
+ createBaseVNode("div", _hoisted_13$2, [
+ createBaseVNode("label", _hoisted_14$2, " Clip Strength Range - " + toDisplayString(__props.useCustomClipRange ? "Custom Range" : "Use Model Strength"), 1),
createBaseVNode("button", {
type: "button",
class: normalizeClass(["toggle-switch", { "toggle-switch--active": __props.useCustomClipRange }]),
@@ -13060,7 +13320,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
}, [..._cache[24] || (_cache[24] = [
createBaseVNode("span", { class: "toggle-switch__track" }, null, -1),
createBaseVNode("span", { class: "toggle-switch__thumb" }, null, -1)
- ])], 10, _hoisted_15$1)
+ ])], 10, _hoisted_15$2)
]),
createBaseVNode("div", {
class: normalizeClass(["slider-container", { "slider-container--disabled": __props.isClipStrengthDisabled }])
@@ -13081,9 +13341,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
}, null, 8, ["value-min", "value-max", "disabled"])
], 2)
]),
- createBaseVNode("div", _hoisted_16$1, [
+ createBaseVNode("div", _hoisted_16$2, [
_cache[28] || (_cache[28] = createBaseVNode("label", { class: "setting-label" }, "Roll Mode", -1)),
- createBaseVNode("div", _hoisted_17$1, [
+ createBaseVNode("div", _hoisted_17$2, [
createBaseVNode("div", _hoisted_18$1, [
createBaseVNode("button", {
class: normalizeClass(["roll-button", { selected: __props.rollMode === "fixed" }]),
@@ -13584,19 +13844,19 @@ const _hoisted_4$3 = ["title"];
const _hoisted_5$2 = { class: "progress-counter" };
const _hoisted_6$2 = { class: "progress-index" };
const _hoisted_7$2 = { class: "progress-total" };
-const _hoisted_8 = {
+const _hoisted_8$1 = {
key: 0,
class: "repeat-progress"
};
-const _hoisted_9 = { class: "repeat-progress-track" };
-const _hoisted_10 = { class: "repeat-progress-text" };
-const _hoisted_11 = { class: "setting-section" };
-const _hoisted_12 = { class: "index-controls-row" };
-const _hoisted_13 = { class: "control-group" };
-const _hoisted_14 = { class: "control-group-content" };
-const _hoisted_15 = ["max", "value", "disabled"];
-const _hoisted_16 = { class: "index-hint" };
-const _hoisted_17 = { class: "control-group" };
+const _hoisted_9$1 = { class: "repeat-progress-track" };
+const _hoisted_10$1 = { class: "repeat-progress-text" };
+const _hoisted_11$1 = { class: "setting-section" };
+const _hoisted_12$1 = { class: "index-controls-row" };
+const _hoisted_13$1 = { class: "control-group" };
+const _hoisted_14$1 = { class: "control-group-content" };
+const _hoisted_15$1 = ["max", "value", "disabled"];
+const _hoisted_16$1 = { class: "index-hint" };
+const _hoisted_17$1 = { class: "control-group" };
const _hoisted_18 = { class: "control-group-content" };
const _hoisted_19 = ["value"];
const _hoisted_20 = { class: "action-buttons" };
@@ -13723,23 +13983,23 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
createBaseVNode("span", _hoisted_6$2, toDisplayString(__props.currentIndex), 1),
_cache[15] || (_cache[15] = createBaseVNode("span", { class: "progress-separator" }, "/", -1)),
createBaseVNode("span", _hoisted_7$2, toDisplayString(__props.totalCount), 1),
- __props.repeatCount > 1 ? (openBlock(), createElementBlock("div", _hoisted_8, [
- createBaseVNode("div", _hoisted_9, [
+ __props.repeatCount > 1 ? (openBlock(), createElementBlock("div", _hoisted_8$1, [
+ createBaseVNode("div", _hoisted_9$1, [
createBaseVNode("div", {
class: normalizeClass(["repeat-progress-fill", { "is-complete": __props.repeatUsed >= __props.repeatCount }]),
style: normalizeStyle({ width: `${__props.repeatUsed / __props.repeatCount * 100}%` })
}, null, 6)
]),
- createBaseVNode("span", _hoisted_10, toDisplayString(__props.repeatUsed) + "/" + toDisplayString(__props.repeatCount), 1)
+ createBaseVNode("span", _hoisted_10$1, toDisplayString(__props.repeatUsed) + "/" + toDisplayString(__props.repeatCount), 1)
])) : createCommentVNode("", true)
])
], 2)
]),
- createBaseVNode("div", _hoisted_11, [
- createBaseVNode("div", _hoisted_12, [
- createBaseVNode("div", _hoisted_13, [
+ createBaseVNode("div", _hoisted_11$1, [
+ createBaseVNode("div", _hoisted_12$1, [
+ createBaseVNode("div", _hoisted_13$1, [
_cache[16] || (_cache[16] = createBaseVNode("label", { class: "control-group-label" }, "Starting Index", -1)),
- createBaseVNode("div", _hoisted_14, [
+ createBaseVNode("div", _hoisted_14$1, [
createBaseVNode("input", {
type: "number",
class: "index-input",
@@ -13755,11 +14015,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
}, ["stop"])),
onPointerup: _cache[2] || (_cache[2] = withModifiers(() => {
}, ["stop"]))
- }, null, 40, _hoisted_15),
- createBaseVNode("span", _hoisted_16, "/ " + toDisplayString(__props.totalCount || 1), 1)
+ }, null, 40, _hoisted_15$1),
+ createBaseVNode("span", _hoisted_16$1, "/ " + toDisplayString(__props.totalCount || 1), 1)
])
]),
- createBaseVNode("div", _hoisted_17, [
+ createBaseVNode("div", _hoisted_17$1, [
_cache[18] || (_cache[18] = createBaseVNode("label", { class: "control-group-label" }, "Repeat", -1)),
createBaseVNode("div", _hoisted_18, [
createBaseVNode("input", {
@@ -15049,13 +15309,41 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
}
});
const AutocompleteTextWidget = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3f3d7a1a"]]);
-const _hoisted_1 = { class: "lora-info-widget" };
-const _hoisted_2 = { class: "info-field" };
-const _hoisted_3 = { class: "lora-filename" };
-const _hoisted_4 = { class: "info-field notes-field" };
-const _hoisted_5 = ["disabled"];
+const _hoisted_1 = { class: "lora-info-tabs" };
+const _hoisted_2 = { class: "tab-content notes-tab" };
+const _hoisted_3 = { class: "info-field" };
+const _hoisted_4 = { class: "lora-filename" };
+const _hoisted_5 = { class: "info-field notes-field" };
const _hoisted_6 = ["disabled"];
-const _hoisted_7 = {
+const _hoisted_7 = ["disabled"];
+const _hoisted_8 = { class: "tab-content description-tab lm-wheel-scrollable" };
+const _hoisted_9 = {
+ key: 0,
+ class: "description-state"
+};
+const _hoisted_10 = {
+ key: 1,
+ class: "description-state error"
+};
+const _hoisted_11 = {
+ key: 2,
+ class: "description-state placeholder"
+};
+const _hoisted_12 = {
+ key: 3,
+ class: "description-content"
+};
+const _hoisted_13 = {
+ key: 0,
+ class: "description-section"
+};
+const _hoisted_14 = ["innerHTML"];
+const _hoisted_15 = {
+ key: 1,
+ class: "description-section"
+};
+const _hoisted_16 = ["innerHTML"];
+const _hoisted_17 = {
key: 1,
class: "placeholder"
};
@@ -15065,7 +15353,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
widget: {},
node: {},
api: {},
- app: {}
+ app: {},
+ isVueMode: { type: Boolean }
},
setup(__props) {
const props = __props;
@@ -15074,6 +15363,57 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
const originalNotes = ref("");
const filePath = ref("");
const saving = ref(false);
+ const activeTab = ref("notes");
+ const versionDescription = ref("");
+ const modelDescription = ref("");
+ const descriptionLoading = ref(false);
+ const descriptionError = ref(false);
+ const descriptionLoaded = ref(false);
+ const hasDescription = computed(
+ () => !!(versionDescription.value || modelDescription.value)
+ );
+ watch(filePath, (newPath) => {
+ descriptionLoaded.value = false;
+ descriptionError.value = false;
+ versionDescription.value = "";
+ modelDescription.value = "";
+ if (newPath && activeTab.value === "description") {
+ fetchDescription();
+ }
+ });
+ function onDescriptionTabActivated() {
+ if (!descriptionLoaded.value && filePath.value) {
+ fetchDescription();
+ }
+ }
+ async function fetchDescription() {
+ var _a2;
+ if (descriptionLoading.value || !filePath.value) return;
+ descriptionLoading.value = true;
+ descriptionError.value = false;
+ try {
+ const response = await props.api.fetchApi(
+ `/lm/loras/metadata?file_path=${encodeURIComponent(filePath.value)}`,
+ { method: "GET" }
+ );
+ if (!response.ok) {
+ throw new Error(`Failed to fetch metadata: ${response.statusText}`);
+ }
+ const data = await response.json();
+ if (data.success && data.metadata) {
+ versionDescription.value = data.metadata.description || "";
+ modelDescription.value = ((_a2 = data.metadata.model) == null ? void 0 : _a2.description) || "";
+ descriptionLoaded.value = true;
+ } else {
+ descriptionLoaded.value = true;
+ }
+ } catch (e) {
+ console.error("[LoraInfoWidget] Failed to fetch description:", e);
+ descriptionError.value = true;
+ } finally {
+ descriptionLoading.value = false;
+ }
+ }
async function saveNotes() {
if (notes.value === originalNotes.value || saving.value) return;
if (!filePath.value) return;
@@ -15113,8 +15453,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
saving.value = false;
}
}
+ function onWheel(event) {
+ var _a2;
+ const target = event.target;
+ if (!target) return;
+ const comfyApp = window.app;
+ if (!((_a2 = comfyApp == null ? void 0 : comfyApp.canvas) == null ? void 0 : _a2.processMouseWheel)) return;
+ if (event.ctrlKey) {
+ event.preventDefault();
+ event.stopPropagation();
+ comfyApp.canvas.processMouseWheel(event);
+ return;
+ }
+ if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) {
+ event.preventDefault();
+ event.stopPropagation();
+ comfyApp.canvas.processMouseWheel(event);
+ return;
+ }
+ const scrollableEl = target.closest(".lora-notes, .description-tab");
+ if (scrollableEl) {
+ const canScrollY = scrollableEl.scrollHeight > scrollableEl.clientHeight;
+ if (canScrollY) {
+ event.stopPropagation();
+ return;
+ }
+ }
+ event.preventDefault();
+ event.stopPropagation();
+ comfyApp.canvas.processMouseWheel(event);
+ }
onMounted(() => {
- props.widget.serializeValue = async () => null;
+ props.widget.serializeValue = async () => ({
+ name: loraName.value,
+ notes: notes.value,
+ filePath: filePath.value,
+ activeTab: activeTab.value
+ });
props.widget.onSetValue = (v2) => {
if (v2 && typeof v2 === "object") {
const data = v2;
@@ -15124,6 +15499,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
originalNotes.value = data.notes;
}
if (data.filePath !== void 0) filePath.value = data.filePath;
+ if (data.activeTab !== void 0) activeTab.value = data.activeTab;
}
};
if (props.widget.value && typeof props.widget.value === "object") {
@@ -15134,6 +15510,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
originalNotes.value = data.notes;
}
if (data.filePath !== void 0) filePath.value = data.filePath;
+ if (data.activeTab !== void 0) activeTab.value = data.activeTab;
}
props.widget._setLoraInfo = (data) => {
if (data) {
@@ -15141,6 +15518,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
notes.value = data.notes;
originalNotes.value = data.notes;
filePath.value = data.filePath;
+ if (data.activeTab !== void 0) {
+ activeTab.value = data.activeTab;
+ }
} else {
loraName.value = "";
notes.value = "";
@@ -15154,34 +15534,97 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
}
});
return (_ctx, _cache) => {
- return openBlock(), createElementBlock("div", _hoisted_1, [
+ return openBlock(), createElementBlock("div", {
+ class: normalizeClass(["lora-info-widget", { "lm-vue-node": __props.isVueMode }]),
+ onWheel
+ }, [
loraName.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
- createBaseVNode("div", _hoisted_2, [
- _cache[1] || (_cache[1] = createBaseVNode("label", { class: "info-label" }, "Filename", -1)),
- createBaseVNode("div", _hoisted_3, toDisplayString(loraName.value), 1)
+ createBaseVNode("div", _hoisted_1, [
+ createBaseVNode("label", {
+ class: normalizeClass(["lora-info-tab", { active: activeTab.value === "notes" }])
+ }, [
+ withDirectives(createBaseVNode("input", {
+ type: "radio",
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
+ value: "notes",
+ class: "lora-info-tab-input"
+ }, null, 512), [
+ [vModelRadio, activeTab.value]
+ ]),
+ _cache[3] || (_cache[3] = createBaseVNode("span", { class: "lora-info-tab-label" }, "Notes", -1))
+ ], 2),
+ createBaseVNode("label", {
+ class: normalizeClass(["lora-info-tab", { active: activeTab.value === "description" }])
+ }, [
+ withDirectives(createBaseVNode("input", {
+ type: "radio",
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => activeTab.value = $event),
+ value: "description",
+ class: "lora-info-tab-input",
+ onChange: onDescriptionTabActivated
+ }, null, 544), [
+ [vModelRadio, activeTab.value]
+ ]),
+ _cache[4] || (_cache[4] = createBaseVNode("span", { class: "lora-info-tab-label" }, "Description", -1))
+ ], 2)
]),
- createBaseVNode("div", _hoisted_4, [
- _cache[2] || (_cache[2] = createBaseVNode("label", { class: "info-label" }, "Notes", -1)),
- withDirectives(createBaseVNode("textarea", {
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => notes.value = $event),
- class: "lora-notes",
- placeholder: "Add notes about this LoRA...",
- disabled: saving.value
- }, null, 8, _hoisted_5), [
- [vModelText, notes.value]
- ])
+ withDirectives(createBaseVNode("div", _hoisted_2, [
+ createBaseVNode("div", _hoisted_3, [
+ _cache[5] || (_cache[5] = createBaseVNode("label", { class: "info-label" }, "Filename", -1)),
+ createBaseVNode("div", _hoisted_4, toDisplayString(loraName.value), 1)
+ ]),
+ createBaseVNode("div", _hoisted_5, [
+ _cache[6] || (_cache[6] = createBaseVNode("label", { class: "info-label" }, "Notes", -1)),
+ withDirectives(createBaseVNode("textarea", {
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => notes.value = $event),
+ class: "lora-notes lm-wheel-scrollable",
+ placeholder: "Add notes about this LoRA...",
+ disabled: saving.value
+ }, null, 8, _hoisted_6), [
+ [vModelText, notes.value]
+ ])
+ ]),
+ createBaseVNode("button", {
+ class: "save-btn",
+ disabled: notes.value === originalNotes.value || saving.value,
+ onClick: saveNotes
+ }, toDisplayString(saving.value ? "Saving..." : "Save"), 9, _hoisted_7)
+ ], 512), [
+ [vShow, activeTab.value === "notes"]
]),
- createBaseVNode("button", {
- class: "save-btn",
- disabled: notes.value === originalNotes.value || saving.value,
- onClick: saveNotes
- }, toDisplayString(saving.value ? "Saving..." : "Save"), 9, _hoisted_6)
- ], 64)) : (openBlock(), createElementBlock("div", _hoisted_7, "No LoRA selected"))
- ]);
+ withDirectives(createBaseVNode("div", _hoisted_8, [
+ descriptionLoading.value ? (openBlock(), createElementBlock("div", _hoisted_9, [..._cache[7] || (_cache[7] = [
+ createBaseVNode("i", { class: "fas fa-spinner fa-spin" }, null, -1),
+ createBaseVNode("span", null, "Loading description...", -1)
+ ])])) : descriptionError.value ? (openBlock(), createElementBlock("div", _hoisted_10, [..._cache[8] || (_cache[8] = [
+ createBaseVNode("span", null, "Failed to load description", -1)
+ ])])) : !hasDescription.value ? (openBlock(), createElementBlock("div", _hoisted_11, [..._cache[9] || (_cache[9] = [
+ createBaseVNode("span", null, "No description available", -1)
+ ])])) : (openBlock(), createElementBlock("div", _hoisted_12, [
+ versionDescription.value ? (openBlock(), createElementBlock("div", _hoisted_13, [
+ _cache[10] || (_cache[10] = createBaseVNode("label", { class: "info-label" }, "About this version", -1)),
+ createBaseVNode("div", {
+ class: "description-text",
+ innerHTML: versionDescription.value
+ }, null, 8, _hoisted_14)
+ ])) : createCommentVNode("", true),
+ modelDescription.value ? (openBlock(), createElementBlock("div", _hoisted_15, [
+ _cache[11] || (_cache[11] = createBaseVNode("label", { class: "info-label" }, "Model Description", -1)),
+ createBaseVNode("div", {
+ class: "description-text",
+ innerHTML: modelDescription.value
+ }, null, 8, _hoisted_16)
+ ])) : createCommentVNode("", true)
+ ]))
+ ], 512), [
+ [vShow, activeTab.value === "description"]
+ ])
+ ], 64)) : (openBlock(), createElementBlock("div", _hoisted_17, "No LoRA selected"))
+ ], 34);
};
}
});
-const LoraInfoWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-db325517"]]);
+const LoraInfoWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a65e9027"]]);
function createVueWidgetCleanup(vueApp, onCleanup) {
let didUnmount = false;
return () => {
@@ -16045,8 +16488,7 @@ function createLoraInfoWidget(node) {
widget.onSetValue(v2);
}
},
- serialize: false,
- // Display-only widget
+ serialize: true,
getMinHeight() {
return LORA_INFO_WIDGET_MIN_HEIGHT;
}
@@ -16056,7 +16498,8 @@ function createLoraInfoWidget(node) {
widget,
node,
api: api$1,
- app: app$1
+ app: app$1,
+ isVueMode: typeof LiteGraph !== "undefined" && LiteGraph.vueNodesMode
});
vueApp.use(PrimeVue, {
unstyled: true,
diff --git a/web/comfyui/vue-widgets/lora-manager-widgets.js.map b/web/comfyui/vue-widgets/lora-manager-widgets.js.map
index 7a9ead55..7be58f9c 100644
--- a/web/comfyui/vue-widgets/lora-manager-widgets.js.map
+++ b/web/comfyui/vue-widgets/lora-manager-widgets.js.map
@@ -1 +1 @@
-{"version":3,"file":"lora-manager-widgets.js","sources":["../../../vue-widgets/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../vue-widgets/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../vue-widgets/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../vue-widgets/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../vue-widgets/node_modules/@primeuix/utils/dist/object/index.mjs","../../../vue-widgets/node_modules/@primeuix/utils/dist/eventbus/index.mjs","../../../vue-widgets/node_modules/@primeuix/utils/dist/dom/index.mjs","../../../vue-widgets/node_modules/@primeuix/styled/dist/index.mjs","../../../vue-widgets/node_modules/@primevue/core/api/index.mjs","../../../vue-widgets/node_modules/@primeuix/styles/dist/base/index.mjs","../../../vue-widgets/node_modules/@primevue/core/usestyle/index.mjs","../../../vue-widgets/node_modules/@primevue/core/base/style/index.mjs","../../../vue-widgets/node_modules/@primevue/core/service/index.mjs","../../../vue-widgets/node_modules/@primevue/core/config/index.mjs","../../../vue-widgets/src/components/lora-pool/shared/FilterChip.vue","../../../vue-widgets/src/components/lora-pool/shared/EditButton.vue","../../../vue-widgets/src/components/lora-pool/sections/BaseModelSection.vue","../../../vue-widgets/src/components/lora-pool/sections/TagsSection.vue","../../../vue-widgets/src/components/lora-pool/sections/FoldersSection.vue","../../../vue-widgets/src/components/lora-pool/sections/NamePatternsSection.vue","../../../vue-widgets/src/components/lora-pool/sections/LicenseSection.vue","../../../vue-widgets/src/components/lora-pool/LoraPoolPreview.vue","../../../vue-widgets/src/components/lora-pool/LoraPoolSummaryView.vue","../../../vue-widgets/src/components/lora-pool/modals/ModalWrapper.vue","../../../vue-widgets/src/components/lora-pool/modals/BaseModelModal.vue","../../../vue-widgets/src/components/lora-pool/modals/TagsModal.vue","../../../vue-widgets/src/components/lora-pool/modals/FolderTreeNode.vue","../../../vue-widgets/src/components/lora-pool/modals/FoldersModal.vue","../../../vue-widgets/src/composables/useLoraPoolApi.ts","../../../vue-widgets/src/composables/useLoraPoolState.ts","../../../vue-widgets/src/composables/useModalState.ts","../../../vue-widgets/src/components/LoraPoolWidget.vue","../../../vue-widgets/src/components/lora-randomizer/LastUsedPreview.vue","../../../vue-widgets/src/components/shared/SingleSlider.vue","../../../vue-widgets/src/components/shared/DualRangeSlider.vue","../../../vue-widgets/src/components/lora-randomizer/LoraRandomizerSettingsView.vue","../../../vue-widgets/src/composables/useLoraRandomizerState.ts","../../../vue-widgets/src/components/LoraRandomizerWidget.vue","../../../vue-widgets/src/components/lora-cycler/LoraCyclerSettingsView.vue","../../../vue-widgets/src/components/lora-cycler/LoraListModal.vue","../../../vue-widgets/src/composables/useLoraCyclerState.ts","../../../vue-widgets/src/components/LoraCyclerWidget.vue","../../../vue-widgets/src/components/JsonDisplayWidget.vue","../../../vue-widgets/src/composables/useAutocomplete.ts","../../../vue-widgets/src/components/AutocompleteTextWidget.vue","../../../vue-widgets/src/components/LoraInfoWidget.vue","../../../vue-widgets/src/vue-widget-cleanup.ts","../../../vue-widgets/src/mode-change-handler.ts","../../../scripts/app.js","../../../scripts/api.js","../autocomplete.js","../utils.js","../../../vue-widgets/src/main.ts"],"sourcesContent":["/**\n* @vue/shared v3.5.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `CACHED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>|?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nfunction normalizeCssVarValue(value) {\n if (value == null) {\n return \"initial\";\n }\n if (typeof value === \"string\") {\n return value === \"\" ? \" \" : value;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\n \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n value\n );\n }\n }\n return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, makeMap, isObject, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n activeEffectScope = this.prevScope;\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope && activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nfunction toWrapped(target, item) {\n if (isReadonly(target)) {\n return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);\n }\n return toReactive(item);\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toWrapped(this, value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(\n this,\n \"filter\",\n fn,\n thisArg,\n (v) => v.map((item) => toWrapped(this, item)),\n arguments\n );\n },\n find(fn, thisArg) {\n return apply(\n this,\n \"find\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(\n this,\n \"findLast\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", (item) => toWrapped(this, item));\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (!result.done) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n let wrappedFn = fn;\n if (arr !== self) {\n if (!isShallow(self)) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n const value = targetIsArray && isIntegerKey(key) ? res : res.value;\n return isReadonly2 && isObject(value) ? readonly(value) : value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n this._raw = toRaw(_object);\n let shallow = true;\n let obj = _object;\n if (!isArray(_object) || !isIntegerKey(String(_key))) {\n do {\n shallow = !isProxy(obj) || isShallow(obj);\n } while (shallow && (obj = obj[\"__v_raw\"]));\n }\n this._shallow = shallow;\n }\n get value() {\n let val = this._object[this._key];\n if (this._shallow) {\n val = unref(val);\n }\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n if (this._shallow && isRef(this._raw[this._key])) {\n const nestedRef = this._object[this._key];\n if (isRef(nestedRef)) {\n nestedRef.value = newVal;\n return;\n }\n }\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(this._raw, this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n return new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Map();\n if ((seen.get(value) || 0) >= depth) {\n return value;\n }\n seen.set(value, depth);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, watch as watch$1, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, customRef, shallowReactive, trigger, ReactiveEffect, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, EMPTY_ARR, makeMap, toRawType, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= -2;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= -2;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= -2;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n if (!(instance.job.flags & 8)) {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n }\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nfunction provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!currentInstance || currentInstance.isMounted) {\n warn$1(`provide() can only be used inside setup().`);\n }\n }\n if (currentInstance) {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = getCurrentInstance();\n if (instance || currentApp) {\n let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(getCurrentInstance() || currentApp);\n}\n\nconst ssrContextKey = /* @__PURE__ */ Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, flush, once } = options;\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const baseWatchOptions = extend({}, options);\n if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else if (!runsImmediately) {\n const watchStopHandle = () => {\n };\n watchStopHandle.stop = NOOP;\n watchStopHandle.resume = NOOP;\n watchStopHandle.pause = NOOP;\n return watchStopHandle;\n }\n }\n const instance = currentInstance;\n baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n let isPre = false;\n if (flush === \"post\") {\n baseWatchOptions.scheduler = (job) => {\n queuePostRenderEffect(job, instance && instance.suspense);\n };\n } else if (flush !== \"sync\") {\n isPre = true;\n baseWatchOptions.scheduler = (job, isFirstRun) => {\n if (isFirstRun) {\n job();\n } else {\n queueJob(job);\n }\n };\n }\n baseWatchOptions.augmentJob = (job) => {\n if (cb) {\n job.flags |= 4;\n }\n if (isPre) {\n job.flags |= 2;\n if (instance) {\n job.id = instance.uid;\n job.i = instance;\n }\n }\n };\n const watchHandle = watch$1(source, cb, baseWatchOptions);\n if (isInSSRComponentSetup) {\n if (ssrCleanup) {\n ssrCleanup.push(watchHandle);\n } else if (runsImmediately) {\n watchHandle();\n }\n }\n return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\n\nconst TeleportEndKey = /* @__PURE__ */ Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = () => {\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = prepareAnchor(target, n2, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (parentComponent && parentComponent.isCE) {\n (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target);\n }\n if (!disabled) {\n mount(target, targetAnchor);\n updateCssVars(n2, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\n \"Invalid Teleport target on mount:\",\n target,\n `(${typeof target})`\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n updateCssVars(n2, true);\n }\n if (isTeleportDeferred(n2.props)) {\n n2.el.__isMounted = false;\n queuePostRenderEffect(() => {\n mountToTarget();\n delete n2.el.__isMounted;\n }, parentSuspense);\n } else {\n mountToTarget();\n }\n } else {\n if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {\n queuePostRenderEffect(() => {\n TeleportImpl.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n }, parentSuspense);\n return;\n }\n n2.el = n1.el;\n n2.targetStart = n1.targetStart;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, !!!(process.env.NODE_ENV !== \"production\"));\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {\n vnode2.anchor = hydrateChildren(\n nextSibling(node2),\n vnode2,\n parentNode(node2),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode2.targetStart = targetStart;\n vnode2.targetAnchor = targetAnchor;\n }\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n const disabled = isTeleportDisabled(vnode.props);\n if (target) {\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n hydrateDisabledTeleport(\n node,\n vnode,\n targetNode,\n targetNode && nextSibling(targetNode)\n );\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n } else if (disabled) {\n if (vnode.shapeFlag & 16) {\n hydrateDisabledTeleport(node, vnode, node, nextSibling(node));\n }\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target);\n insert(targetAnchor, target);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = /* @__PURE__ */ Symbol(\"_leaveCb\");\nconst enterCbKey = /* @__PURE__ */ Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n const child = findNonCommentChild(children);\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n let desc;\n if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\n\nconst pendingSetRefMap = /* @__PURE__ */ new WeakMap();\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n return hasOwn(rawSetupState, key);\n };\n const canSetRef = (ref2) => {\n return !!!(process.env.NODE_ENV !== \"production\") || !knownTemplateRefs.has(ref2);\n };\n if (oldRef != null && oldRef !== ref) {\n invalidatePendingSetRef(oldRawRef);\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n if (canSetRef(oldRef)) {\n oldRef.value = null;\n }\n const oldRawRefAtom = oldRawRef;\n if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n const newVal = [refValue];\n if (canSetRef(ref)) {\n ref.value = newVal;\n }\n if (rawRef.k) refs[rawRef.k] = newVal;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n if (canSetRef(ref)) {\n ref.value = value;\n }\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n const job = () => {\n doSet();\n pendingSetRefMap.delete(rawRef);\n };\n job.id = -1;\n pendingSetRefMap.set(rawRef, job);\n queuePostRenderEffect(job, parentSuspense);\n } else {\n invalidatePendingSetRef(rawRef);\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\nfunction invalidatePendingSetRef(rawRef) {\n const pendingSetRef = pendingSetRefMap.get(rawRef);\n if (pendingSetRef) {\n pendingSetRef.flags |= 8;\n pendingSetRefMap.delete(rawRef);\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n const cls = content.getAttribute(\"class\");\n if (cls) content.$cls = cls;\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n const { textContent } = el;\n if (textContent !== clientText && // innerHTML normalize \\r\\n or \\r into a single \\n in the DOM\n textContent !== clientText.replace(/\\r\\n|\\r/g, \"\\n\")) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${textContent}\n - expected on client: ${clientText}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n if (el.$cls) {\n actual = el.$cls;\n delete el.$cls;\n } else {\n actual = el.getAttribute(\"class\");\n }\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n const value = normalizeCssVarValue(cssVars[key]);\n expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value);\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return list.includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n let patched = false;\n (instance.bu || (instance.bu = [])).push(() => patched = true);\n const performHydrate = () => {\n if (patched) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`\n );\n }\n return;\n }\n hydrate();\n };\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n performHydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : performHydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createInnerComp(\n loadingComponent,\n instance\n );\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n instance2.__keepAliveStorageContainer = storageContainer;\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type\n );\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= -257;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= -257;\n vnode.shapeFlag &= -513;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n let isReadonlySource = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n isReadonlySource = isReadonly(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n const hasProps = Object.keys(props).length > 0;\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n hasProps ? -2 : 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (__VUE_OPTIONS_API__ && data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (hasOwn(props, key)) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n\n\n","\n \n \n \n \n Edit \n \n \n\n\n\n\n","\n \n \n
\n
\n All models\n
\n
\n \n
\n
\n
\n \n\n\n\n\n","\n \n \n\n\n\n\n","\n \n \n
\n \n
\n
\n
INCLUDE \n
\n \n \n \n \n
\n
\n
0\" class=\"section__paths\">\n \n
\n
\n No folders selected\n
\n
\n
\n\n \n
\n
\n
EXCLUDE \n
\n \n \n \n \n
\n
\n
0\" class=\"section__paths\">\n \n
\n
\n No folders selected\n
\n
\n
\n
\n
\n \n\n\n\n\n","\n \n \n
\n \n
\n
\n INCLUDE \n
\n
\n \n + \n
\n
\n
\n
\n {{ useRegex ? 'No regex patterns' : 'No text patterns' }}\n
\n
\n
\n\n \n
\n
\n EXCLUDE \n
\n
\n \n + \n
\n
\n
\n
\n {{ useRegex ? 'No regex patterns' : 'No text patterns' }}\n
\n
\n
\n
\n
\n \n\n\n\n\n","\n \n \n
\n \n No Credit Required \n \n \n \n \n \n\n \n Allow Selling \n \n \n \n \n \n
\n
\n \n\n\n\n\n","\n \n \n\n \n
\n 0\" class=\"preview__tooltip\">\n
\n
\n
\n
\n
{{ item.model_name || item.file_name }} \n
\n
5\" class=\"preview__more\">\n +{{ (matchCount - 5).toLocaleString() }} more\n
\n
\n
\n \n\n
\n No matching LoRAs\n
\n
\n \n\n\n\n\n","\n \n \n
\n \n\n \n\n \n\n \n\n \n
\n\n \n
\n
\n \n\n\n\n\n","\n \n \n \n \n \n \n\n\n\n\n","\n \n \n \n
\n \n \n
\n
\n \n \n \n \n
\n \n\n \n
\n \n \n \n \n \n \n {{ model.name }} \n ({{ model.count }}) \n \n
\n No models found\n
\n
\n \n \n\n\n\n\n","\n \n \n \n
\n \n \n
\n
\n \n \n \n \n
\n \n\n \n \n \n\n\n\n\n","\n \n
\n \n
\n \n \n \n \n
\n\n \n
\n \n \n \n \n \n \n \n\n \n
\n \n \n \n\n \n
{{ node.label }} \n
\n\n \n
\n \n
\n
\n \n\n\n\n\n","\n \n \n \n \n\n \n
0\">\n \n \n
\n No folders found\n
\n
\n \n \n\n\n\n\n","import { ref } from 'vue'\nimport type { BaseModelOption, TagOption, FolderTreeNode, LoraItem } from './types'\n\nexport function useLoraPoolApi() {\n const isLoading = ref(false)\n\n const fetchBaseModels = async (limit = 50): Promise => {\n try {\n const response = await fetch(`/api/lm/loras/base-models?limit=${limit}`)\n const data = await response.json()\n return data.base_models || []\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch base models:', error)\n return []\n }\n }\n\n const fetchTags = async (limit = 0): Promise => {\n try {\n const response = await fetch(`/api/lm/loras/top-tags?limit=${limit}`)\n const data = await response.json()\n return data.tags || []\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch tags:', error)\n return []\n }\n }\n\n const fetchFolderTree = async (): Promise => {\n try {\n const response = await fetch('/api/lm/loras/unified-folder-tree')\n const data = await response.json()\n return transformFolderTree(data.tree || {})\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch folder tree:', error)\n return []\n }\n }\n\n const transformFolderTree = (tree: Record, parentPath = ''): FolderTreeNode[] => {\n if (!tree || typeof tree !== 'object') {\n return []\n }\n\n return Object.entries(tree).map(([name, children]) => {\n const path = parentPath ? `${parentPath}/${name}` : name\n const childNodes = transformFolderTree(children as Record, path)\n\n return {\n key: path,\n label: name,\n children: childNodes.length > 0 ? childNodes : undefined\n }\n })\n }\n\n interface FetchLorasParams {\n baseModels?: string[]\n tagsInclude?: string[]\n tagsExclude?: string[]\n foldersInclude?: string[]\n foldersExclude?: string[]\n noCreditRequired?: boolean\n allowSelling?: boolean\n namePatternsInclude?: string[]\n namePatternsExclude?: string[]\n namePatternsUseRegex?: boolean\n page?: number\n pageSize?: number\n }\n\n const fetchLoras = async (params: FetchLorasParams): Promise<{ items: LoraItem[]; total: number }> => {\n isLoading.value = true\n try {\n const urlParams = new URLSearchParams()\n urlParams.set('page', String(params.page || 1))\n urlParams.set('page_size', String(params.pageSize || 6))\n\n params.baseModels?.forEach(bm => urlParams.append('base_model', bm))\n params.tagsInclude?.forEach(tag => urlParams.append('tag_include', tag))\n params.tagsExclude?.forEach(tag => urlParams.append('tag_exclude', tag))\n\n // Folder filters\n if (params.foldersInclude && params.foldersInclude.length > 0) {\n params.foldersInclude.forEach(folder => urlParams.append('folder_include', folder))\n urlParams.set('recursive', 'true')\n }\n params.foldersExclude?.forEach(folder => urlParams.append('folder_exclude', folder))\n\n if (params.noCreditRequired !== undefined) {\n urlParams.set('credit_required', String(!params.noCreditRequired))\n }\n\n if (params.allowSelling !== undefined) {\n urlParams.set('allow_selling_generated_content', String(params.allowSelling))\n }\n\n // Name pattern filters\n params.namePatternsInclude?.forEach(pattern => urlParams.append('name_pattern_include', pattern))\n params.namePatternsExclude?.forEach(pattern => urlParams.append('name_pattern_exclude', pattern))\n if (params.namePatternsUseRegex !== undefined) {\n urlParams.set('name_pattern_use_regex', String(params.namePatternsUseRegex))\n }\n\n const response = await fetch(`/api/lm/loras/list?${urlParams}`)\n const data = await response.json()\n\n return {\n items: data.items || [],\n total: data.total || 0\n }\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch loras:', error)\n return { items: [], total: 0 }\n } finally {\n isLoading.value = false\n }\n }\n\n return {\n isLoading,\n fetchBaseModels,\n fetchTags,\n fetchFolderTree,\n fetchLoras\n }\n}\n","import { ref, computed, watch } from 'vue'\nimport type {\n LoraPoolConfig,\n BaseModelOption,\n TagOption,\n FolderTreeNode,\n LoraItem,\n ComponentWidget\n} from './types'\nimport { useLoraPoolApi } from './useLoraPoolApi'\n\nexport function useLoraPoolState(widget: ComponentWidget) {\n const api = useLoraPoolApi()\n\n // Flag to prevent infinite loops during config restoration\n // callback → restoreFromConfig → watch → refreshPreview → buildConfig → widget.value = config → callback → ...\n let isRestoring = false\n\n // Filter state\n const selectedBaseModels = ref([])\n const includeTags = ref([])\n const excludeTags = ref([])\n const includeFolders = ref([])\n const excludeFolders = ref([])\n const noCreditRequired = ref(false)\n const allowSelling = ref(false)\n const includePatterns = ref([])\n const excludePatterns = ref([])\n const useRegex = ref(false)\n\n // Available options from API\n const availableBaseModels = ref([])\n const availableTags = ref([])\n const folderTree = ref([])\n\n // Preview state\n const previewItems = ref([])\n const matchCount = ref(0)\n const isLoading = computed(() => api.isLoading.value)\n\n // Build config from current state\n const buildConfig = (): LoraPoolConfig => {\n const config: LoraPoolConfig = {\n version: 2,\n filters: {\n baseModels: selectedBaseModels.value,\n tags: {\n include: includeTags.value,\n exclude: excludeTags.value\n },\n folders: {\n include: includeFolders.value,\n exclude: excludeFolders.value\n },\n license: {\n noCreditRequired: noCreditRequired.value,\n allowSelling: allowSelling.value\n },\n namePatterns: {\n include: includePatterns.value,\n exclude: excludePatterns.value,\n useRegex: useRegex.value\n }\n },\n preview: {\n matchCount: matchCount.value,\n lastUpdated: Date.now()\n }\n }\n\n // Update widget value (this triggers callback for UI sync)\n // Skip during restoration to prevent infinite loops:\n // callback → restoreFromConfig → watch → refreshPreview → buildConfig → widget.value = config → callback → ...\n if (!isRestoring) {\n widget.value = config\n }\n return config\n }\n\n // Restore state from config\n const restoreFromConfig = (config: LoraPoolConfig) => {\n // Set flag to prevent buildConfig from triggering widget.value updates during restoration\n // This breaks the infinite loop: callback → restoreFromConfig → watch → refreshPreview → buildConfig → widget.value = config → callback\n isRestoring = true\n\n try {\n if (!config?.filters) return\n\n const { filters, preview } = config\n\n // Helper to update ref only if value changed\n const updateIfChanged = (refValue: { value: T }, newValue: T) => {\n if (JSON.stringify(refValue.value) !== JSON.stringify(newValue)) {\n refValue.value = newValue\n }\n }\n\n updateIfChanged(selectedBaseModels, filters.baseModels || [])\n updateIfChanged(includeTags, filters.tags?.include || [])\n updateIfChanged(excludeTags, filters.tags?.exclude || [])\n updateIfChanged(includeFolders, filters.folders?.include || [])\n updateIfChanged(excludeFolders, filters.folders?.exclude || [])\n updateIfChanged(noCreditRequired, filters.license?.noCreditRequired ?? false)\n updateIfChanged(allowSelling, filters.license?.allowSelling ?? false)\n updateIfChanged(includePatterns, filters.namePatterns?.include || [])\n updateIfChanged(excludePatterns, filters.namePatterns?.exclude || [])\n updateIfChanged(useRegex, filters.namePatterns?.useRegex ?? false)\n\n // matchCount doesn't trigger watchers, so direct assignment is fine\n matchCount.value = preview?.matchCount || 0\n } finally {\n isRestoring = false\n }\n }\n\n // Fetch filter options from API\n const fetchFilterOptions = async () => {\n const [baseModels, tags, folders] = await Promise.all([\n api.fetchBaseModels(),\n api.fetchTags(),\n api.fetchFolderTree()\n ])\n\n availableBaseModels.value = baseModels\n availableTags.value = tags\n folderTree.value = folders\n }\n\n // Refresh preview with current filters\n const refreshPreview = async () => {\n const result = await api.fetchLoras({\n baseModels: selectedBaseModels.value,\n tagsInclude: includeTags.value,\n tagsExclude: excludeTags.value,\n foldersInclude: includeFolders.value,\n foldersExclude: excludeFolders.value,\n noCreditRequired: noCreditRequired.value || undefined,\n allowSelling: allowSelling.value || undefined,\n namePatternsInclude: includePatterns.value,\n namePatternsExclude: excludePatterns.value,\n namePatternsUseRegex: useRegex.value,\n pageSize: 6\n })\n\n previewItems.value = result.items\n matchCount.value = result.total\n buildConfig()\n }\n\n // Debounced filter change handler\n let filterTimeout: ReturnType | null = null\n const onFilterChange = () => {\n if (filterTimeout) clearTimeout(filterTimeout)\n filterTimeout = setTimeout(() => {\n refreshPreview()\n }, 300)\n }\n\n // Watch all filter changes\n watch([\n selectedBaseModels,\n includeTags,\n excludeTags,\n includeFolders,\n excludeFolders,\n noCreditRequired,\n allowSelling,\n includePatterns,\n excludePatterns,\n useRegex\n ], onFilterChange, { deep: true })\n\n return {\n // Filter state\n selectedBaseModels,\n includeTags,\n excludeTags,\n includeFolders,\n excludeFolders,\n noCreditRequired,\n allowSelling,\n includePatterns,\n excludePatterns,\n useRegex,\n\n // Available options\n availableBaseModels,\n availableTags,\n folderTree,\n\n // Preview state\n previewItems,\n matchCount,\n isLoading,\n\n // Actions\n buildConfig,\n restoreFromConfig,\n fetchFilterOptions,\n refreshPreview\n }\n}\n\nexport type LoraPoolStateReturn = ReturnType\n","import { ref, computed } from 'vue'\n\nexport type ModalType = 'baseModels' | 'includeTags' | 'excludeTags' | 'includeFolders' | 'excludeFolders' | null\n\nexport function useModalState() {\n const activeModal = ref(null)\n\n const isOpen = computed(() => activeModal.value !== null)\n\n const openModal = (modal: ModalType) => {\n activeModal.value = modal\n }\n\n const closeModal = () => {\n activeModal.value = null\n }\n\n const isModalOpen = (modal: ModalType) => {\n return activeModal.value === modal\n }\n\n return {\n activeModal,\n isOpen,\n openModal,\n closeModal,\n isModalOpen\n }\n}\n\nexport type ModalStateReturn = ReturnType\n","\n \n \n \n\n \n \n\n \n\n \n\n \n\n \n
\n \n\n\n\n\n","\n \n
\n
\n
\n
\n
\n {{ lora.name }} \n \n M: {{ lora.strength }}{{ lora.clipStrength !== undefined ? ` / C: ${lora.clipStrength}` : '' }}\n \n
\n
\n
5\" class=\"last-used-preview__more\">\n +{{ (loras.length - 5).toLocaleString() }} more LoRAs\n
\n
\n
\n \n\n\n\n\n","\n \n
\n\n
\n
\n
{{ formatValue(value) }}
\n
\n
\n \n\n\n\n\n","\n 0 }\" data-capture-wheel=\"true\" @wheel=\"onWheel\">\n
\n \n
\n\n \n
0\">\n
\n \n\n \n
\n \n
\n
\n\n \n
\n
\n
{{ formatValue(valueMin) }}
\n
\n\n
\n
\n
{{ formatValue(valueMax) }}
\n
\n
\n \n\n\n\n\n","\n \n \n\n \n
\n
LoRA Count \n
\n \n \n Fixed \n \n \n \n Range \n \n
\n\n
\n \n \n
\n
\n\n \n
\n
Model Strength Range \n
\n \n
\n
\n\n \n
\n\n \n
\n\n \n
\n
\n \n\n\n\n\n","import { ref, computed, watch } from 'vue'\nimport type { ComponentWidget, RandomizerConfig, LoraEntry } from './types'\n\nexport function useLoraRandomizerState(widget: ComponentWidget) {\n // Flag to prevent infinite loops during config restoration\n // callback → restoreFromConfig → watch → widget.value = config → callback → ...\n let isRestoring = false\n\n // State refs\n const countMode = ref<'fixed' | 'range'>('range')\n const countFixed = ref(3)\n const countMin = ref(2)\n const countMax = ref(5)\n const modelStrengthMin = ref(0.0)\n const modelStrengthMax = ref(1.0)\n const useCustomClipRange = ref(false)\n const clipStrengthMin = ref(0.0)\n const clipStrengthMax = ref(1.0)\n const rollMode = ref<'fixed' | 'always'>('fixed')\n const isRolling = ref(false)\n const useRecommendedStrength = ref(false)\n const recommendedStrengthScaleMin = ref(0.5)\n const recommendedStrengthScaleMax = ref(1.0)\n\n // Track last used combination (for backend roll mode)\n const lastUsed = ref(null)\n\n // Dual seed mechanism for batch queue synchronization\n // execution_seed: seed for generating execution_stack (= previous next_seed)\n // next_seed: seed for generating ui_loras (= what will be displayed after execution)\n const executionSeed = ref(null)\n const nextSeed = ref(null)\n\n // Build config object from current state\n const buildConfig = (): RandomizerConfig => {\n // Skip updating widget.value during restoration to prevent infinite loops\n if (isRestoring) {\n return {\n count_mode: countMode.value,\n count_fixed: countFixed.value,\n count_min: countMin.value,\n count_max: countMax.value,\n model_strength_min: modelStrengthMin.value,\n model_strength_max: modelStrengthMax.value,\n use_same_clip_strength: !useCustomClipRange.value,\n clip_strength_min: clipStrengthMin.value,\n clip_strength_max: clipStrengthMax.value,\n roll_mode: rollMode.value,\n last_used: lastUsed.value,\n use_recommended_strength: useRecommendedStrength.value,\n recommended_strength_scale_min: recommendedStrengthScaleMin.value,\n recommended_strength_scale_max: recommendedStrengthScaleMax.value,\n execution_seed: executionSeed.value,\n next_seed: nextSeed.value,\n }\n }\n return {\n count_mode: countMode.value,\n count_fixed: countFixed.value,\n count_min: countMin.value,\n count_max: countMax.value,\n model_strength_min: modelStrengthMin.value,\n model_strength_max: modelStrengthMax.value,\n use_same_clip_strength: !useCustomClipRange.value,\n clip_strength_min: clipStrengthMin.value,\n clip_strength_max: clipStrengthMax.value,\n roll_mode: rollMode.value,\n last_used: lastUsed.value,\n use_recommended_strength: useRecommendedStrength.value,\n recommended_strength_scale_min: recommendedStrengthScaleMin.value,\n recommended_strength_scale_max: recommendedStrengthScaleMax.value,\n execution_seed: executionSeed.value,\n next_seed: nextSeed.value,\n }\n }\n\n // Shift seeds for batch queue synchronization\n // Previous next_seed becomes current execution_seed, and generate a new next_seed\n const generateNewSeed = () => {\n executionSeed.value = nextSeed.value // Previous next becomes current execution\n nextSeed.value = Math.floor(Math.random() * 2147483647)\n }\n\n // Initialize next_seed for first execution (execution_seed stays null)\n const initializeNextSeed = () => {\n if (nextSeed.value === null) {\n nextSeed.value = Math.floor(Math.random() * 2147483647)\n }\n }\n\n // Restore state from config object\n const restoreFromConfig = (config: RandomizerConfig) => {\n // Set flag to prevent buildConfig from triggering widget.value updates during restoration\n isRestoring = true\n\n try {\n countMode.value = config.count_mode || 'range'\n countFixed.value = config.count_fixed || 3\n countMin.value = config.count_min || 2\n countMax.value = config.count_max || 5\n modelStrengthMin.value = config.model_strength_min ?? 0.0\n modelStrengthMax.value = config.model_strength_max ?? 1.0\n useCustomClipRange.value = !(config.use_same_clip_strength ?? true)\n clipStrengthMin.value = config.clip_strength_min ?? 0.0\n clipStrengthMax.value = config.clip_strength_max ?? 1.0\n // Migrate old roll_mode values to new ones\n const rawRollMode = (config as any).roll_mode as string\n if (rawRollMode === 'frontend') {\n rollMode.value = 'fixed'\n } else if (rawRollMode === 'backend') {\n rollMode.value = 'always'\n } else if (rawRollMode === 'fixed' || rawRollMode === 'always') {\n rollMode.value = rawRollMode as 'fixed' | 'always'\n } else {\n rollMode.value = 'fixed'\n }\n lastUsed.value = config.last_used || null\n useRecommendedStrength.value = config.use_recommended_strength ?? false\n recommendedStrengthScaleMin.value = config.recommended_strength_scale_min ?? 0.5\n recommendedStrengthScaleMax.value = config.recommended_strength_scale_max ?? 1.0\n } finally {\n isRestoring = false\n }\n }\n\n // Roll loras - call API to get random selection\n const rollLoras = async (\n poolConfig: any | null,\n lockedLoras: LoraEntry[]\n ): Promise => {\n try {\n isRolling.value = true\n\n const config = buildConfig()\n\n // Build request body\n const requestBody: any = {\n model_strength_min: config.model_strength_min,\n model_strength_max: config.model_strength_max,\n use_same_clip_strength: !useCustomClipRange.value,\n clip_strength_min: config.clip_strength_min,\n clip_strength_max: config.clip_strength_max,\n locked_loras: lockedLoras,\n use_recommended_strength: config.use_recommended_strength,\n recommended_strength_scale_min: config.recommended_strength_scale_min,\n recommended_strength_scale_max: config.recommended_strength_scale_max,\n }\n\n // Add count parameters\n if (config.count_mode === 'fixed') {\n requestBody.count = config.count_fixed\n } else {\n requestBody.count_min = config.count_min\n requestBody.count_max = config.count_max\n }\n\n // Add pool config if provided\n if (poolConfig) {\n requestBody.pool_config = poolConfig.filters || {}\n }\n\n // Call API endpoint\n const response = await fetch('/api/lm/loras/random-sample', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n })\n\n if (!response.ok) {\n const errorData = await response.json()\n throw new Error(errorData.error || 'Failed to fetch random LoRAs')\n }\n\n const data = await response.json()\n\n if (!data.success) {\n throw new Error(data.error || 'Failed to get random LoRAs')\n }\n\n return data.loras || []\n } catch (error) {\n console.error('[LoraRandomizerState] Error rolling LoRAs:', error)\n throw error\n } finally {\n isRolling.value = false\n }\n }\n\n // Restore last used and return it\n const useLastUsed = () => {\n if (lastUsed.value && lastUsed.value.length > 0) {\n return lastUsed.value\n }\n return null\n }\n\n // Computed properties\n const isClipStrengthDisabled = computed(() => !useCustomClipRange.value)\n const isRecommendedStrengthEnabled = computed(() => useRecommendedStrength.value)\n\n // Watch all state changes and update widget value\n watch([\n countMode,\n countFixed,\n countMin,\n countMax,\n modelStrengthMin,\n modelStrengthMax,\n useCustomClipRange,\n clipStrengthMin,\n clipStrengthMax,\n rollMode,\n useRecommendedStrength,\n recommendedStrengthScaleMin,\n recommendedStrengthScaleMax,\n ], () => {\n widget.value = buildConfig()\n }, { deep: true })\n\n return {\n // State refs\n countMode,\n countFixed,\n countMin,\n countMax,\n modelStrengthMin,\n modelStrengthMax,\n useCustomClipRange,\n clipStrengthMin,\n clipStrengthMax,\n rollMode,\n isRolling,\n lastUsed,\n useRecommendedStrength,\n recommendedStrengthScaleMin,\n recommendedStrengthScaleMax,\n executionSeed,\n nextSeed,\n\n // Computed\n isClipStrengthDisabled,\n isRecommendedStrengthEnabled,\n\n // Methods\n buildConfig,\n restoreFromConfig,\n rollLoras,\n useLastUsed,\n generateNewSeed,\n initializeNextSeed,\n }\n}\n","\n \n \n
\n \n\n\n\n\n","\n \n \n\n \n
\n
\n
\n
{{ isWorkflowExecuting ? 'Using LoRA:' : 'Next LoRA:' }} \n
\n {{ currentLoraName || 'None' }}\n \n \n \n \n
\n
\n
{{ currentIndex }} \n
/ \n
{{ totalCount }} \n\n \n
1\" class=\"repeat-progress\">\n
\n
= repeatCount }\"\n >
\n
\n
{{ repeatUsed }}/{{ repeatCount }} \n
\n
\n
\n
\n\n \n
\n
\n \n
\n
Starting Index \n
\n \n / {{ totalCount || 1 }} \n
\n
\n\n \n
\n\n \n
\n
\n
\n\n \n
\n
Model Strength \n
\n \n
\n
\n\n \n
\n\n \n
\n\n \n
\n \n
\n
\n \n\n\n\n\n","\n \n \n \n
\n \n \n
\n
\n \n \n \n \n
\n \n\n \n
\n {{ item.index }} \n {{ item.lora.file_name }} \n Current \n
\n
\n No LoRAs found\n
\n
\n \n \n\n\n\n\n","import { ref, watch, computed } from 'vue'\nimport type { ComponentWidget, CyclerConfig, LoraPoolConfig } from './types'\n\nexport interface CyclerLoraItem {\n file_name: string\n model_name: string\n file_path: string\n}\n\nexport function useLoraCyclerState(widget: ComponentWidget) {\n // Flag to prevent infinite loops during config restoration\n // callback → restoreFromConfig → watch → widget.value = config → callback → ...\n let isRestoring = false\n\n // State refs\n const currentIndex = ref(1) // 1-based\n const totalCount = ref(0)\n const poolConfigHash = ref('')\n const modelStrength = ref(1.0)\n const clipStrength = ref(1.0)\n const useCustomClipRange = ref(false)\n const usePresetStrength = ref(false)\n const presetStrengthScale = ref(1.0)\n const sortBy = ref<'filename' | 'model_name'>('filename')\n const currentLoraName = ref('')\n const currentLoraFilename = ref('')\n const isLoading = ref(false)\n\n // Dual-index mechanism for batch queue synchronization\n // execution_index: index for generating execution_stack (= previous next_index)\n // next_index: index for UI display (= what will be shown after execution)\n const executionIndex = ref(null)\n const nextIndex = ref(null)\n\n // Advanced index control features\n const repeatCount = ref(1) // How many times each LoRA should repeat\n const repeatUsed = ref(0) // How many times current index has been used (internal tracking)\n const displayRepeatUsed = ref(0) // For UI display, deferred updates like currentIndex\n const isPaused = ref(false) // Whether iteration is paused\n const includeNoLora = ref(false) // Whether to include empty LoRA option in cycle\n\n // Execution progress tracking (visual feedback)\n const isWorkflowExecuting = ref(false) // Workflow is currently running\n const executingRepeatStep = ref(0) // Which repeat step (1-based, 0 = not executing)\n\n // Build config object from current state\n const buildConfig = (): CyclerConfig => {\n // Skip updating widget.value during restoration to prevent infinite loops\n if (isRestoring) {\n return {\n current_index: currentIndex.value,\n total_count: totalCount.value,\n pool_config_hash: poolConfigHash.value,\n model_strength: modelStrength.value,\n clip_strength: clipStrength.value,\n use_same_clip_strength: !useCustomClipRange.value,\n use_preset_strength: usePresetStrength.value,\n preset_strength_scale: presetStrengthScale.value,\n sort_by: sortBy.value,\n current_lora_name: currentLoraName.value,\n current_lora_filename: currentLoraFilename.value,\n execution_index: executionIndex.value,\n next_index: nextIndex.value,\n repeat_count: repeatCount.value,\n repeat_used: repeatUsed.value,\n is_paused: isPaused.value,\n include_no_lora: includeNoLora.value,\n }\n }\n return {\n current_index: currentIndex.value,\n total_count: totalCount.value,\n pool_config_hash: poolConfigHash.value,\n model_strength: modelStrength.value,\n clip_strength: clipStrength.value,\n use_same_clip_strength: !useCustomClipRange.value,\n use_preset_strength: usePresetStrength.value,\n preset_strength_scale: presetStrengthScale.value,\n sort_by: sortBy.value,\n current_lora_name: currentLoraName.value,\n current_lora_filename: currentLoraFilename.value,\n execution_index: executionIndex.value,\n next_index: nextIndex.value,\n repeat_count: repeatCount.value,\n repeat_used: repeatUsed.value,\n is_paused: isPaused.value,\n include_no_lora: includeNoLora.value,\n }\n }\n\n // Restore state from config object\n const restoreFromConfig = (config: CyclerConfig) => {\n // Set flag to prevent buildConfig from triggering widget.value updates during restoration\n isRestoring = true\n\n try {\n currentIndex.value = config.current_index || 1\n totalCount.value = config.total_count || 0\n poolConfigHash.value = config.pool_config_hash || ''\n modelStrength.value = config.model_strength ?? 1.0\n clipStrength.value = config.clip_strength ?? 1.0\n useCustomClipRange.value = !(config.use_same_clip_strength ?? true)\n usePresetStrength.value = config.use_preset_strength ?? false\n presetStrengthScale.value = config.preset_strength_scale ?? 1.0\n sortBy.value = config.sort_by || 'filename'\n currentLoraName.value = config.current_lora_name || ''\n currentLoraFilename.value = config.current_lora_filename || ''\n // Advanced index control features\n repeatCount.value = config.repeat_count ?? 1\n repeatUsed.value = config.repeat_used ?? 0\n isPaused.value = config.is_paused ?? false\n includeNoLora.value = config.include_no_lora ?? false\n // Note: execution_index and next_index are not restored from config\n // as they are transient values used only during batch execution\n } finally {\n isRestoring = false\n }\n }\n\n // Shift indices for batch queue synchronization\n // Previous next_index becomes current execution_index, and generate a new next_index\n const generateNextIndex = () => {\n executionIndex.value = nextIndex.value // Previous next becomes current execution\n // Calculate the next index (wrap to 1 if at end)\n const current = executionIndex.value ?? currentIndex.value\n let next = current + 1\n // Total count includes no lora option if enabled\n const effectiveTotalCount = includeNoLora.value ? totalCount.value + 1 : totalCount.value\n if (effectiveTotalCount > 0 && next > effectiveTotalCount) {\n next = 1\n }\n nextIndex.value = next\n }\n\n // Initialize next_index for first execution (execution_index stays null)\n const initializeNextIndex = () => {\n if (nextIndex.value === null) {\n // First execution uses current_index, so next is current + 1\n let next = currentIndex.value + 1\n // Total count includes no lora option if enabled\n const effectiveTotalCount = includeNoLora.value ? totalCount.value + 1 : totalCount.value\n if (effectiveTotalCount > 0 && next > effectiveTotalCount) {\n next = 1\n }\n nextIndex.value = next\n }\n }\n\n // Generate hash from pool config for change detection\n const hashPoolConfig = (poolConfig: LoraPoolConfig | null): string => {\n if (!poolConfig || !poolConfig.filters) {\n return ''\n }\n try {\n return btoa(JSON.stringify(poolConfig.filters))\n } catch {\n return ''\n }\n }\n\n // Fetch cycler list from API\n const fetchCyclerList = async (\n poolConfig: LoraPoolConfig | null\n ): Promise => {\n try {\n isLoading.value = true\n\n const requestBody: Record = {\n sort_by: sortBy.value,\n }\n\n if (poolConfig?.filters) {\n requestBody.pool_config = poolConfig.filters\n }\n\n const response = await fetch('/api/lm/loras/cycler-list', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n })\n\n if (!response.ok) {\n const errorData = await response.json()\n throw new Error(errorData.error || 'Failed to fetch cycler list')\n }\n\n const data = await response.json()\n\n if (!data.success) {\n throw new Error(data.error || 'Failed to get cycler list')\n }\n\n return data.loras || []\n } catch (error) {\n console.error('[LoraCyclerState] Error fetching cycler list:', error)\n throw error\n } finally {\n isLoading.value = false\n }\n }\n\n // Refresh list and update state\n const refreshList = async (poolConfig: LoraPoolConfig | null) => {\n try {\n const newHash = hashPoolConfig(poolConfig)\n const hashChanged = newHash !== poolConfigHash.value\n\n // Fetch the list\n const loraList = await fetchCyclerList(poolConfig)\n\n // Update total count\n totalCount.value = loraList.length\n\n // If pool config changed, reset index to 1\n if (hashChanged) {\n currentIndex.value = 1\n poolConfigHash.value = newHash\n }\n\n // Clamp index to valid range\n if (currentIndex.value > totalCount.value) {\n currentIndex.value = Math.max(1, totalCount.value)\n }\n\n // Update current LoRA info\n if (loraList.length > 0 && currentIndex.value > 0) {\n const currentLora = loraList[currentIndex.value - 1]\n if (currentLora) {\n currentLoraName.value = sortBy.value === 'filename' \n ? currentLora.file_name \n : (currentLora.model_name || currentLora.file_name)\n currentLoraFilename.value = currentLora.file_name\n }\n } else {\n currentLoraName.value = ''\n currentLoraFilename.value = ''\n }\n\n return loraList\n } catch (error) {\n console.error('[LoraCyclerState] Error refreshing list:', error)\n throw error\n }\n }\n\n // Set index manually\n const setIndex = (index: number) => {\n // Total count includes no lora option if enabled\n const effectiveTotalCount = includeNoLora.value ? totalCount.value + 1 : totalCount.value\n if (index >= 1 && index <= effectiveTotalCount) {\n currentIndex.value = index\n }\n }\n\n // Reset index to 1 and clear repeat state\n const resetIndex = () => {\n currentIndex.value = 1\n repeatUsed.value = 0\n displayRepeatUsed.value = 0\n // Note: isPaused is intentionally not reset - user may want to stay paused after reset\n }\n\n // Toggle pause state\n const togglePause = () => {\n isPaused.value = !isPaused.value\n }\n\n // Computed property to check if clip strength is disabled\n const isClipStrengthDisabled = computed(() => !useCustomClipRange.value)\n\n // Watch model strength changes to sync with clip strength when not using custom range\n watch(modelStrength, (newValue) => {\n if (!useCustomClipRange.value) {\n clipStrength.value = newValue\n }\n })\n\n // Watch all state changes and update widget value\n watch([\n currentIndex,\n totalCount,\n poolConfigHash,\n modelStrength,\n clipStrength,\n useCustomClipRange,\n usePresetStrength,\n presetStrengthScale,\n sortBy,\n currentLoraName,\n currentLoraFilename,\n repeatCount,\n repeatUsed,\n isPaused,\n includeNoLora,\n ], () => {\n widget.value = buildConfig()\n }, { deep: true })\n\n return {\n // State refs\n currentIndex,\n totalCount,\n poolConfigHash,\n modelStrength,\n clipStrength,\n useCustomClipRange,\n usePresetStrength,\n presetStrengthScale,\n sortBy,\n currentLoraName,\n currentLoraFilename,\n isLoading,\n executionIndex,\n nextIndex,\n repeatCount,\n repeatUsed,\n displayRepeatUsed,\n isPaused,\n includeNoLora,\n isWorkflowExecuting,\n executingRepeatStep,\n\n // Computed\n isClipStrengthDisabled,\n\n // Methods\n buildConfig,\n restoreFromConfig,\n hashPoolConfig,\n fetchCyclerList,\n refreshList,\n setIndex,\n generateNextIndex,\n initializeNextIndex,\n resetIndex,\n togglePause,\n }\n}\n","\n \n \n\n \n
\n \n\n\n\n\n","\n \n \n\n\n\n\n","import { ref, onMounted, onUnmounted, type Ref } from 'vue'\n\n// Dynamic import type for AutoComplete class\ntype AutoCompleteClass = new (\n inputElement: HTMLTextAreaElement,\n modelType: 'loras' | 'embeddings' | 'custom_words' | 'prompt',\n options?: AutocompleteOptions\n) => AutoCompleteInstance\n\ninterface AutocompleteOptions {\n maxItems?: number\n minChars?: number\n debounceDelay?: number\n showPreview?: boolean\n}\n\ninterface AutoCompleteInstance {\n destroy: () => void\n isValid: () => boolean\n refreshCaretHelper: () => void\n}\n\nexport interface UseAutocompleteOptions {\n showPreview?: boolean\n maxItems?: number\n minChars?: number\n debounceDelay?: number\n}\n\nexport function useAutocomplete(\n textareaRef: Ref,\n modelType: 'loras' | 'embeddings' | 'custom_words' | 'prompt' = 'loras',\n options: UseAutocompleteOptions = {}\n) {\n const autocompleteInstance = ref(null)\n const isInitialized = ref(false)\n\n const defaultOptions: AutocompleteOptions = {\n maxItems: 20,\n minChars: 1,\n debounceDelay: 200,\n showPreview: true,\n ...options\n }\n\n const initAutocomplete = async () => {\n if (!textareaRef.value) {\n console.warn('[useAutocomplete] Textarea ref is null, cannot initialize')\n return\n }\n\n if (autocompleteInstance.value) {\n console.log('[useAutocomplete] Already initialized, skipping')\n return\n }\n\n try {\n // Dynamically import the AutoComplete class\n const module = await import(/* @vite-ignore */ `${'../autocomplete.js'}`)\n const AutoComplete: AutoCompleteClass = module.AutoComplete\n\n autocompleteInstance.value = new AutoComplete(\n textareaRef.value,\n modelType,\n defaultOptions\n )\n isInitialized.value = true\n console.log(`[useAutocomplete] Initialized for ${modelType}`)\n } catch (error) {\n console.error('[useAutocomplete] Failed to initialize:', error)\n }\n }\n\n const destroyAutocomplete = () => {\n if (autocompleteInstance.value) {\n autocompleteInstance.value.destroy()\n autocompleteInstance.value = null\n isInitialized.value = false\n console.log('[useAutocomplete] Destroyed')\n }\n }\n\n const refreshCaretHelper = () => {\n if (autocompleteInstance.value) {\n autocompleteInstance.value.refreshCaretHelper()\n }\n }\n\n onMounted(() => {\n // Initialize autocomplete after component is mounted\n // Use nextTick-like delay to ensure DOM is fully ready\n setTimeout(() => {\n initAutocomplete()\n }, 0)\n })\n\n onUnmounted(() => {\n destroyAutocomplete()\n })\n\n return {\n autocompleteInstance,\n isInitialized,\n initAutocomplete,\n destroyAutocomplete,\n refreshCaretHelper\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType\n","\n \n
\n \n \n \n \n \n \n \n
\n
\n \n\n\n\n\n\n\n\n","\n \n \n\n\n\n","import type { App as VueApp } from 'vue'\n\nexport function createVueWidgetCleanup(vueApp: VueApp, onCleanup?: () => void) {\n let didUnmount = false\n\n return () => {\n if (didUnmount) {\n return\n }\n\n vueApp.unmount()\n didUnmount = true\n onCleanup?.()\n }\n}\n","/**\n * Mode change handler for LoRA provider nodes.\n *\n * Provides common mode change logic for nodes that provide LoRA configurations:\n * - Lora Stacker (LoraManager)\n * - Lora Randomizer (LoraManager)\n * - Lora Cycler (LoraManager)\n */\n\n/**\n * List of node types that act as LoRA providers in the workflow chain.\n * These nodes can be traversed when collecting active LoRAs and can trigger\n * downstream loader updates when their mode or active LoRAs change.\n */\nexport const LORA_PROVIDER_NODE_TYPES = [\n \"Lora Stacker (LoraManager)\",\n \"Lora Randomizer (LoraManager)\",\n \"Lora Cycler (LoraManager)\",\n] as const;\n\n/**\n * Nodes that do not own LoRA state themselves, but merge or forward LORA_STACK\n * inputs so downstream trigger-word updates must traverse through them.\n */\nexport const LORA_STACK_AGGREGATOR_NODE_TYPES = [\n \"Lora Stack Combiner (LoraManager)\",\n] as const;\n\nexport const LORA_CHAIN_NODE_TYPES = [\n ...LORA_PROVIDER_NODE_TYPES,\n ...LORA_STACK_AGGREGATOR_NODE_TYPES,\n] as const;\n\nexport type LoraProviderNodeType = typeof LORA_PROVIDER_NODE_TYPES[number];\nexport type LoraStackAggregatorNodeType = typeof LORA_STACK_AGGREGATOR_NODE_TYPES[number];\nexport type LoraChainNodeType = typeof LORA_CHAIN_NODE_TYPES[number];\n\n/**\n * Check if a node class is a LoRA provider node.\n */\nexport function isLoraProviderNode(comfyClass: string): comfyClass is LoraProviderNodeType {\n return LORA_PROVIDER_NODE_TYPES.includes(comfyClass as LoraProviderNodeType);\n}\n\nexport function isLoraStackAggregatorNode(\n comfyClass: string\n): comfyClass is LoraStackAggregatorNodeType {\n return LORA_STACK_AGGREGATOR_NODE_TYPES.includes(comfyClass as LoraStackAggregatorNodeType);\n}\n\nexport function isLoraChainNode(comfyClass: string): comfyClass is LoraChainNodeType {\n return LORA_CHAIN_NODE_TYPES.includes(comfyClass as LoraChainNodeType);\n}\n\n/**\n * Extract active LoRA filenames from a node based on its type.\n *\n * For Lora Stacker and Lora Randomizer: extracts from lorasWidget (array of loras, filtered by active)\n * For Lora Cycler: extracts from cycler_config widget (single current_lora_filename)\n */\nexport function getActiveLorasFromNodeByType(node: any): Set {\n const comfyClass = node?.comfyClass;\n\n if (comfyClass === \"Lora Cycler (LoraManager)\") {\n return extractFromCyclerConfig(node);\n }\n\n if (isLoraStackAggregatorNode(comfyClass)) {\n return new Set();\n }\n\n // Default: use lorasWidget (works for Stacker and Randomizer)\n return extractFromLorasWidget(node);\n}\n\n/**\n * Extract active LoRAs from a node's lorasWidget.\n * Used by Lora Stacker and Lora Randomizer.\n */\nfunction extractFromLorasWidget(node: any): Set {\n const activeLoraNames = new Set();\n const lorasWidget = node.lorasWidget || node.widgets?.find((w: any) => w.name === 'loras');\n\n if (lorasWidget?.value) {\n lorasWidget.value.forEach((lora: any) => {\n if (lora.active) {\n activeLoraNames.add(lora.name);\n }\n });\n }\n\n return activeLoraNames;\n}\n\n/**\n * Extract the active LoRA from a Lora Cycler node.\n * The Cycler has only one active LoRA at a time, stored in cycler_config.current_lora_filename.\n */\nfunction extractFromCyclerConfig(node: any): Set {\n const activeLoraNames = new Set();\n const cyclerWidget = node.widgets?.find((w: any) => w.name === 'cycler_config');\n\n if (cyclerWidget?.value?.current_lora_filename) {\n activeLoraNames.add(cyclerWidget.value.current_lora_filename);\n }\n\n return activeLoraNames;\n}\n\n/**\n * Check if a mode value represents an active node.\n * Active modes: 0 (Always), 3 (On Trigger)\n * Inactive modes: 2 (Never), 4 (Bypass)\n */\nexport function isNodeActive(mode: number | undefined): boolean {\n return mode === undefined || mode === 0 || mode === 3;\n}\n\n/**\n * Setup a mode change handler for a node.\n *\n * Intercepts the mode property setter to trigger a callback when the mode changes.\n * This is needed because ComfyUI sets the mode property directly without using a setter.\n *\n * @param node - The node to set up the handler for\n * @param onModeChange - Callback function called when mode changes (receives newMode and oldMode)\n */\nexport function setupModeChangeHandler(\n node: any,\n onModeChange: (newMode: number, oldMode: number) => void\n): void {\n let _mode = node.mode;\n\n Object.defineProperty(node, 'mode', {\n get() {\n return _mode;\n },\n set(value: number) {\n const oldValue = _mode;\n _mode = value;\n\n if (oldValue !== value) {\n onModeChange(value, oldValue);\n }\n }\n });\n}\n\n/**\n * Create a mode change callback that updates downstream loaders.\n *\n * This is the standard callback used by all LoRA provider nodes.\n * When mode changes:\n * 1. Determine if the node is active (mode 0 or 3)\n * 2. Get active LoRAs (empty set if inactive)\n * 3. Call the optional node-specific callback (e.g., updateConnectedTriggerWords for Stacker)\n * 4. Update downstream loaders\n *\n * @param node - The node instance\n * @param updateDownstreamLoaders - Function to update downstream loaders (from utils.js)\n * @param nodeSpecificCallback - Optional callback for node-specific behavior\n */\nexport function createModeChangeCallback(\n node: any,\n updateDownstreamLoaders: (node: any) => void,\n nodeSpecificCallback?: (activeLoraNames: Set) => void\n): (newMode: number, oldMode: number) => void {\n return (newMode: number, _oldMode: number) => {\n const isNodeCurrentlyActive = isNodeActive(newMode);\n const activeLoraNames = isNodeCurrentlyActive\n ? getActiveLorasFromNodeByType(node)\n : new Set();\n\n // Node-specific handling (e.g., Lora Stacker's direct trigger toggle updates)\n if (nodeSpecificCallback) {\n nodeSpecificCallback(activeLoraNames);\n }\n\n // Always update downstream loaders\n updateDownstreamLoaders(node);\n };\n}\n","const settingsStore = new Map();\n\nexport const app = {\n canvas: { ds: { scale: 1 } },\n extensionManager: {\n toast: {\n add: () => {},\n },\n setting: {\n get: (id) => (settingsStore.has(id) ? settingsStore.get(id) : undefined),\n set: async (id, value) => {\n settingsStore.set(id, value);\n },\n },\n },\n registerExtension: () => {},\n graphToPrompt: async () => ({ workflow: { nodes: new Map() } }),\n};\n\nexport default app;\n","export const api = {\n fetchApi: (...args) => fetch(...args),\n addEventListener: (eventName, handler) => document.addEventListener(eventName, handler),\n removeEventListener: (eventName, handler) => document.removeEventListener(eventName, handler),\n};\n\nexport default api;\n","import { api } from \"../../scripts/api.js\";\nimport { app } from \"../../scripts/app.js\";\nimport { TextAreaCaretHelper } from \"./textarea_caret_helper.js\";\nimport {\n WILDCARD_COMMANDS,\n createWildcardEmptyStateItem,\n createWildcardNoMatchesItem,\n getWildcardInsertText,\n getWildcardSearchEndpoint,\n isWildcardCommand,\n isWildcardInfoItem,\n} from \"./autocomplete_wildcards.js\";\nimport {\n getAutocompleteAppendCommaPreference,\n getAutocompleteAutoFormatPreference,\n getAutocompleteAcceptKeyPreference,\n getPromptTagAutocompletePreference,\n getTagSpaceReplacementPreference,\n} from \"./settings.js\";\nimport { showToast } from \"./utils.js\";\n\n// Command definitions for category filtering\nconst TAG_COMMANDS = {\n '/character': { categories: [4, 11], label: 'Character' },\n '/artist': { categories: [1, 8], label: 'Artist' },\n '/general': { categories: [0, 7], label: 'General' },\n '/copyright': { categories: [3, 10], label: 'Copyright' },\n '/meta': { categories: [5, 14], label: 'Meta' },\n '/species': { categories: [12], label: 'Species' },\n '/lore': { categories: [15], label: 'Lore' },\n '/emb': { type: 'embedding', label: 'Embeddings' },\n '/embedding': { type: 'embedding', label: 'Embeddings' },\n ...WILDCARD_COMMANDS,\n // Autocomplete toggle commands - only show one based on current state\n '/ac': {\n type: 'toggle_setting',\n settingId: 'loramanager.prompt_tag_autocomplete',\n value: true,\n label: 'Autocomplete: ON',\n condition: () => !getPromptTagAutocompletePreference()\n },\n '/noac': {\n type: 'toggle_setting',\n settingId: 'loramanager.prompt_tag_autocomplete',\n value: false,\n label: 'Autocomplete: OFF',\n condition: () => getPromptTagAutocompletePreference()\n },\n};\n\n// Category display information\nconst CATEGORY_INFO = {\n 0: { bg: 'rgba(0, 155, 230, 0.2)', text: '#4bb4ff', label: 'General' },\n 1: { bg: 'rgba(255, 138, 139, 0.2)', text: '#ffc3c3', label: 'Artist' },\n 3: { bg: 'rgba(199, 151, 255, 0.2)', text: '#ddc9fb', label: 'Copyright' },\n 4: { bg: 'rgba(53, 198, 74, 0.2)', text: '#93e49a', label: 'Character' },\n 5: { bg: 'rgba(234, 208, 132, 0.2)', text: '#f7e7c3', label: 'Meta' },\n 7: { bg: 'rgba(0, 155, 230, 0.2)', text: '#4bb4ff', label: 'General' },\n 8: { bg: 'rgba(255, 138, 139, 0.2)', text: '#ffc3c3', label: 'Artist' },\n 10: { bg: 'rgba(199, 151, 255, 0.2)', text: '#ddc9fb', label: 'Copyright' },\n 11: { bg: 'rgba(53, 198, 74, 0.2)', text: '#93e49a', label: 'Character' },\n 12: { bg: 'rgba(237, 137, 54, 0.2)', text: '#f6ad55', label: 'Species' },\n 14: { bg: 'rgba(234, 208, 132, 0.2)', text: '#f7e7c3', label: 'Meta' },\n 15: { bg: 'rgba(72, 187, 120, 0.2)', text: '#68d391', label: 'Lore' },\n};\n\n// Format post count with K/M suffix\nfunction formatPostCount(count) {\n if (count >= 1000000) {\n return (count / 1000000).toFixed(1).replace(/\\.0$/, '') + 'M';\n } else if (count >= 1000) {\n return (count / 1000).toFixed(1).replace(/\\.0$/, '') + 'K';\n }\n return count.toString();\n}\n\nfunction parseUsageTipNumber(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return null;\n}\n\nfunction splitRelativePath(relativePath = '') {\n const parts = relativePath.split(/[/\\\\]+/).filter(Boolean);\n const fileName = parts.pop() ?? '';\n return {\n directories: parts,\n fileName,\n };\n}\n\nfunction removeGeneralExtension(fileName = '') {\n return fileName.replace(/\\.[^.]+$/, '');\n}\n\nfunction removeLoraExtension(fileName = '') {\n return fileName.replace(/\\.(safetensors|ckpt|pt|bin)$/i, '');\n}\n\nlet _loraSyntaxFormatCache = null;\nlet _loraSyntaxFormatRefreshPromise = null;\n\nfunction _getLoraSyntaxFormat() {\n if (_loraSyntaxFormatCache !== null) {\n return _loraSyntaxFormatCache;\n }\n return 'legacy';\n}\n\nasync function _fetchLoraSyntaxFormat() {\n try {\n const response = await api.fetchApi('/lm/settings');\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.settings) {\n _loraSyntaxFormatCache = data.settings.lora_syntax_format || 'legacy';\n return;\n }\n }\n } catch (e) {\n }\n if (_loraSyntaxFormatCache === null) {\n _loraSyntaxFormatCache = 'legacy';\n }\n}\n\nfunction _triggerBackgroundRefresh() {\n if (_loraSyntaxFormatRefreshPromise) {\n return;\n }\n _loraSyntaxFormatRefreshPromise = _fetchLoraSyntaxFormat().finally(() => {\n _loraSyntaxFormatRefreshPromise = null;\n });\n}\n\nasync function refreshLoraSyntaxFormat() {\n await _fetchLoraSyntaxFormat();\n}\n\nfunction _initLoraSyntaxFormat() {\n _triggerBackgroundRefresh();\n}\n_initLoraSyntaxFormat();\n\nfunction _initLoraSyntaxFormatReactive() {\n window.addEventListener('storage', (e) => {\n if (e.key === 'lm:lora-syntax-format-changed') {\n _triggerBackgroundRefresh();\n }\n });\n\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n _triggerBackgroundRefresh();\n }\n });\n}\n_initLoraSyntaxFormatReactive();\n\nfunction parseSearchTokens(term = '') {\n const include = [];\n const exclude = [];\n\n term.split(/\\s+/).forEach((rawTerm) => {\n const token = rawTerm.trim();\n if (!token) {\n return;\n }\n if (token.startsWith('-') && token.length > 1) {\n exclude.push(token.slice(1).toLowerCase());\n } else {\n include.push(token.toLowerCase());\n }\n });\n\n return { include, exclude };\n}\n\nfunction escapePromptParentheses(text) {\n // In ComfyUI's CLIP text encoder, bare parentheses are weight adjustment syntax.\n // Tags containing literal parentheses must be escaped with backslash to prevent\n // them from being interpreted as weight modifiers. e.g. \"foo (bar)\" → \"foo \\(bar\\)\"\n return text.replace(/\\(/g, '\\\\(').replace(/\\)/g, '\\\\)');\n}\n\nfunction formatAutocompleteInsertion(text = '') {\n const trimmed = typeof text === 'string' ? text.trim() : '';\n if (!trimmed) {\n return '';\n }\n\n return getAutocompleteAppendCommaPreference() ? `${trimmed},` : `${trimmed} `;\n}\n\nfunction normalizeAutocompleteSegment(segment = '') {\n return segment.replace(/\\s+/g, ' ').trim();\n}\n\nexport function formatAutocompleteTextOnBlur(text = '') {\n if (typeof text !== 'string') {\n return '';\n }\n\n return text\n .split('\\n')\n .map((line) => {\n if (!line.trim()) {\n return '';\n }\n\n const cleanedSegments = line\n .split(',')\n .map(normalizeAutocompleteSegment)\n .filter(Boolean);\n\n return cleanedSegments.join(', ');\n })\n .join('\\n');\n}\n\nfunction shouldAcceptAutocompleteKey(key) {\n const mode = getAutocompleteAcceptKeyPreference();\n\n if (mode === 'tab_only') {\n return key === 'Tab';\n }\n\n if (mode === 'enter_only') {\n return key === 'Enter';\n }\n\n return key === 'Tab' || key === 'Enter';\n}\n\nfunction normalizeAutocompleteMatchText(text = '') {\n return text.toLowerCase().replace(/[-_\\s']/g, '');\n}\n\nconst AUTOCOMPLETE_METADATA_VERSION = 1;\n\nfunction createAutocompleteMetadataBase(textWidgetName = 'text') {\n return {\n version: AUTOCOMPLETE_METADATA_VERSION,\n textWidgetName,\n };\n}\n\nfunction createDefaultBehavior(modelType) {\n return {\n enablePreview: false,\n async getInsertText(_instance, relativePath) {\n const trimmed = relativePath?.trim() ?? '';\n if (!trimmed) {\n return '';\n }\n return formatAutocompleteInsertion(escapePromptParentheses(trimmed));\n },\n };\n}\n\nconst MODEL_BEHAVIORS = {\n loras: {\n enablePreview: true,\n init(instance) {\n if (!instance.options.showPreview) {\n return;\n }\n instance.initPreviewTooltip({ modelType: instance.modelType });\n },\n showPreview(instance, relativePath, itemElement) {\n if (!instance.previewTooltip) {\n return;\n }\n instance.showPreviewForItem(relativePath, itemElement);\n },\n hidePreview(instance) {\n if (!instance.previewTooltip) {\n return;\n }\n instance.previewTooltip.hide();\n },\n destroy(instance) {\n if (instance.previewTooltip) {\n instance.previewTooltip.cleanup();\n instance.previewTooltip = null;\n }\n },\n async getInsertText(_instance, relativePath) {\n const { directories, fileName } = splitRelativePath(relativePath);\n const baseName = removeLoraExtension(fileName);\n const folder = directories.length ? directories.join('/') + '/' : '';\n const loraName = folder + baseName;\n\n const resultName = _getLoraSyntaxFormat() === 'legacy'\n ? baseName\n : loraName;\n\n let strength = 1.0;\n let hasStrength = false;\n let clipStrength = null;\n\n try {\n const response = await api.fetchApi(`/lm/loras/usage-tips-by-path?relative_path=${encodeURIComponent(relativePath)}`);\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.usage_tips) {\n try {\n const usageTips = JSON.parse(data.usage_tips);\n const parsedStrength = parseUsageTipNumber(usageTips.strength);\n if (parsedStrength !== null) {\n strength = parsedStrength;\n hasStrength = true;\n }\n const clipSource = usageTips.clip_strength ?? usageTips.clipStrength;\n const parsedClipStrength = parseUsageTipNumber(clipSource);\n if (parsedClipStrength !== null) {\n clipStrength = parsedClipStrength;\n if (!hasStrength) {\n strength = 1.0;\n }\n }\n } catch (parseError) {\n console.warn('Failed to parse usage tips JSON:', parseError);\n }\n }\n }\n } catch (error) {\n console.warn('Failed to fetch usage tips:', error);\n }\n\n if (clipStrength !== null) {\n return formatAutocompleteInsertion(``);\n }\n return formatAutocompleteInsertion(``);\n }\n },\n embeddings: {\n enablePreview: true,\n init(instance) {\n if (!instance.options.showPreview) {\n return;\n }\n instance.initPreviewTooltip({ modelType: instance.modelType });\n },\n async getInsertText(_instance, relativePath) {\n const { directories, fileName } = splitRelativePath(relativePath);\n const trimmedName = removeGeneralExtension(fileName);\n const folder = directories.length ? `${directories.join('/')}/` : '';\n return formatAutocompleteInsertion(`embedding:${folder}${trimmedName}`);\n },\n },\n custom_words: {\n enablePreview: false,\n async getInsertText(_instance, relativePath) {\n return formatAutocompleteInsertion(escapePromptParentheses(relativePath));\n },\n },\n prompt: {\n enablePreview: true,\n init(instance) {\n if (!instance.options.showPreview) {\n return;\n }\n instance.initPreviewTooltip({ modelType: 'embeddings' });\n },\n showPreview(instance, relativePath, itemElement) {\n if (!instance.previewTooltip || instance.searchType !== 'embeddings') {\n return;\n }\n instance.showPreviewForItem(relativePath, itemElement);\n },\n hidePreview(instance) {\n if (!instance.previewTooltip) {\n return;\n }\n instance.previewTooltip.hide();\n },\n destroy(instance) {\n if (instance.previewTooltip) {\n instance.previewTooltip.cleanup();\n instance.previewTooltip = null;\n }\n },\n async getInsertText(instance, relativePath) {\n const rawSearchTerm = instance.getSearchTerm(instance.inputElement.value);\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n\n if (match || instance.searchType === 'embeddings') {\n const { directories, fileName } = splitRelativePath(relativePath);\n const trimmedName = removeGeneralExtension(fileName);\n const folder = directories.length ? `${directories.join('/')}/` : '';\n return formatAutocompleteInsertion(`embedding:${folder}${trimmedName}`);\n } else if (instance.searchType === 'wildcards' || isWildcardCommand(instance.activeCommand)) {\n return formatAutocompleteInsertion(getWildcardInsertText(relativePath));\n } else {\n let tagText = relativePath;\n\n if (getTagSpaceReplacementPreference()) {\n tagText = tagText.replace(/_/g, ' ');\n }\n\n tagText = escapePromptParentheses(tagText);\n\n return formatAutocompleteInsertion(tagText);\n }\n },\n },\n};\n\nfunction getModelBehavior(modelType) {\n return MODEL_BEHAVIORS[modelType] ?? createDefaultBehavior(modelType);\n}\n\nclass AutoComplete {\n constructor(inputElement, modelType = 'loras', options = {}) {\n this.inputElement = inputElement;\n this.modelType = modelType;\n this.behavior = getModelBehavior(modelType);\n this.options = {\n maxItems: 100,\n pageSize: 20,\n visibleItems: 15, // Fixed at 15 items for balanced UX\n itemHeight: 40,\n minChars: 1,\n debounceDelay: 200,\n showPreview: this.behavior.enablePreview ?? false,\n enableVirtualScroll: true,\n ...options\n };\n\n this.dropdown = null;\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n this.items = [];\n this.debounceTimer = null;\n this.isVisible = false;\n this.currentSearchTerm = '';\n this.wildcardMeta = null;\n this.previewTooltip = null;\n this.previewTooltipPromise = null;\n this.searchType = null;\n this.suppressAutocompleteOnce = false;\n\n // Virtual scrolling state\n this.virtualScrollOffset = 0;\n this.hasMoreItems = true;\n this.isLoadingMore = false;\n this.currentPage = 0;\n this.scrollContainer = null;\n this.contentContainer = null;\n this.totalHeight = 0;\n\n // Command mode state\n this.activeCommand = null; // Current active command (e.g., { categories: [4, 11], label: 'Character' })\n this.showingCommands = false; // Whether showing command list dropdown\n\n // Initialize TextAreaCaretHelper\n this.helper = new TextAreaCaretHelper(inputElement, () => app.canvas.ds.scale);\n\n this.onInput = null;\n this.onKeyDown = null;\n this.onBlur = null;\n this.onDocumentClick = null;\n this.onScroll = null;\n\n this.init();\n }\n \n init() {\n this.createDropdown();\n this.bindEvents();\n }\n \n createDropdown() {\n this.dropdown = document.createElement('div');\n this.dropdown.className = 'comfy-autocomplete-dropdown';\n\n // Apply new color scheme\n this.dropdown.style.cssText = `\n position: absolute;\n z-index: 10000;\n overflow: hidden;\n background-color: rgba(40, 44, 52, 0.95);\n border: 1px solid rgba(226, 232, 240, 0.2);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n display: none;\n min-width: 200px;\n width: auto;\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n `;\n\n if (this.options.enableVirtualScroll) {\n // Create scroll container for virtual scrolling\n this.scrollContainer = document.createElement('div');\n this.scrollContainer.className = 'comfy-autocomplete-scroll-container';\n this.scrollContainer.style.cssText = `\n overflow-y: auto;\n max-height: ${this.options.visibleItems * this.options.itemHeight}px;\n position: relative;\n `;\n\n // Create content container for virtual items\n this.contentContainer = document.createElement('div');\n this.contentContainer.className = 'comfy-autocomplete-content';\n this.contentContainer.style.cssText = `\n position: relative;\n width: 100%;\n `;\n\n this.scrollContainer.appendChild(this.contentContainer);\n this.dropdown.appendChild(this.scrollContainer);\n }\n\n // Custom scrollbar styles with new color scheme\n const style = document.createElement('style');\n style.textContent = `\n .comfy-autocomplete-dropdown::-webkit-scrollbar {\n width: 8px;\n }\n .comfy-autocomplete-dropdown::-webkit-scrollbar-track {\n background: rgba(40, 44, 52, 0.3);\n border-radius: 4px;\n }\n .comfy-autocomplete-dropdown::-webkit-scrollbar-thumb {\n background: rgba(226, 232, 240, 0.2);\n border-radius: 4px;\n }\n .comfy-autocomplete-dropdown::-webkit-scrollbar-thumb:hover {\n background: rgba(226, 232, 240, 0.4);\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar {\n width: 8px;\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar-track {\n background: rgba(40, 44, 52, 0.3);\n border-radius: 4px;\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar-thumb {\n background: rgba(226, 232, 240, 0.2);\n border-radius: 4px;\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar-thumb:hover {\n background: rgba(226, 232, 240, 0.4);\n }\n .comfy-autocomplete-loading {\n padding: 12px;\n text-align: center;\n color: rgba(226, 232, 240, 0.5);\n font-size: 12px;\n }\n `;\n document.head.appendChild(style);\n\n // Append to body to avoid overflow issues\n document.body.appendChild(this.dropdown);\n\n if (typeof this.behavior.init === 'function') {\n this.behavior.init(this);\n }\n }\n \n initPreviewTooltip(options = {}) {\n if (this.previewTooltip || this.previewTooltipPromise) {\n return;\n }\n // Dynamically import and create preview tooltip\n this.previewTooltipPromise = import('./preview_tooltip.js').then(module => {\n const config = { modelType: this.modelType, ...options };\n this.previewTooltip = new module.PreviewTooltip(config);\n }).catch(err => {\n console.warn('Failed to load preview tooltip:', err);\n }).finally(() => {\n this.previewTooltipPromise = null;\n });\n }\n \n bindEvents() {\n // Handle input changes\n this.onInput = (e) => {\n if (this.suppressAutocompleteOnce) {\n this.suppressAutocompleteOnce = false;\n this.hide();\n return;\n }\n this.handleInput(e.target.value);\n };\n this.inputElement.addEventListener('input', this.onInput);\n\n // Handle keyboard navigation\n this.onKeyDown = (e) => {\n this.handleKeyDown(e);\n };\n this.inputElement.addEventListener('keydown', this.onKeyDown);\n\n // Handle focus out to hide dropdown\n this.onBlur = () => {\n if (getAutocompleteAutoFormatPreference()) {\n const formattedValue = formatAutocompleteTextOnBlur(this.inputElement.value);\n if (formattedValue !== this.inputElement.value) {\n this.inputElement.value = formattedValue;\n this.suppressAutocompleteOnce = true;\n this.inputElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n\n // Delay hiding to allow for clicks on dropdown items\n setTimeout(() => {\n this.hide();\n }, 150);\n };\n this.inputElement.addEventListener('blur', this.onBlur);\n\n // Handle clicks outside to hide dropdown\n this.onDocumentClick = (e) => {\n if (!this.dropdown) {\n return;\n }\n\n const target = e.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (!this.dropdown.contains(target) && target !== this.inputElement) {\n this.hide();\n }\n };\n document.addEventListener('click', this.onDocumentClick);\n\n // Mark this element as having autocomplete events bound\n this.inputElement._autocompleteEventsBound = true;\n\n // Bind scroll event for virtual scrolling\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n this.onScroll = () => {\n this.handleScroll();\n };\n this.scrollContainer.addEventListener('scroll', this.onScroll);\n }\n }\n\n /**\n * Check if the autocomplete is valid (input element is in DOM and events are bound)\n */\n isValid() {\n return this.inputElement &&\n document.body.contains(this.inputElement) &&\n this.inputElement._autocompleteEventsBound === true;\n }\n\n /**\n * Check if events need to be rebound (element exists but events not bound)\n */\n needsRebind() {\n return this.inputElement &&\n document.body.contains(this.inputElement) &&\n this.inputElement._autocompleteEventsBound !== true;\n }\n\n /**\n * Rebind events to the input element (useful after Vue moves the element)\n */\n rebindEvents() {\n // Remove old listeners if they exist\n if (this.onInput) {\n this.inputElement.removeEventListener('input', this.onInput);\n }\n if (this.onKeyDown) {\n this.inputElement.removeEventListener('keydown', this.onKeyDown);\n }\n if (this.onBlur) {\n this.inputElement.removeEventListener('blur', this.onBlur);\n }\n\n // Rebind all events\n this.bindEvents();\n\n console.log('[Lora Manager] Autocomplete events rebound');\n }\n\n /**\n * Refresh the TextAreaCaretHelper (useful after element properties change)\n */\n refreshHelper() {\n if (this.inputElement && document.body.contains(this.inputElement)) {\n this.helper = new TextAreaCaretHelper(this.inputElement, () => app.canvas.ds.scale);\n }\n }\n \n handleInput(value = '') {\n // Clear previous debounce timer\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n // Get the search term (text after last comma / '>')\n const rawSearchTerm = this.getSearchTerm(value);\n let searchTerm = rawSearchTerm;\n let endpoint = `/lm/${this.modelType}/relative-paths`;\n\n // For embeddings, only trigger autocomplete when the current token\n // starts with the explicit \"emb:\" prefix. This avoids interrupting\n // normal prompt typing while still allowing quick manual triggering.\n if (this.modelType === 'embeddings') {\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n if (!match) {\n this.hide();\n return;\n }\n searchTerm = (match[1] || '').trim();\n }\n\n // For prompt model type, check if we're searching embeddings, commands, or tags\n if (this.modelType === 'prompt') {\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n if (match) {\n // User typed \"emb:\" prefix - always allow embeddings search\n endpoint = '/lm/embeddings/relative-paths';\n searchTerm = (match[1] || '').trim();\n this.searchType = 'embeddings';\n this.activeCommand = null;\n this.showingCommands = false;\n } else {\n // Check for command mode FIRST (always runs, regardless of setting)\n const commandResult = this._parseCommandInput(rawSearchTerm);\n\n if (commandResult.showCommands) {\n // Show command list dropdown\n this.showingCommands = true;\n this.activeCommand = null;\n this.searchType = 'commands';\n this._showCommandList(commandResult.commandFilter);\n return;\n } else if (commandResult.command?.type === 'toggle_setting') {\n // Handle toggle setting command (/ac, /noac)\n this._handleToggleSettingCommand(commandResult.command);\n return;\n } else if (commandResult.command) {\n // Command is active, use filtered search\n this.showingCommands = false;\n this.activeCommand = commandResult.command;\n searchTerm = commandResult.searchTerm;\n\n if (commandResult.command.type === 'embedding') {\n // /emb or /embedding command\n endpoint = '/lm/embeddings/relative-paths';\n this.searchType = 'embeddings';\n } else if (isWildcardCommand(commandResult.command)) {\n endpoint = getWildcardSearchEndpoint();\n this.searchType = 'wildcards';\n } else {\n // Category filter command\n const categories = commandResult.command.categories.join(',');\n endpoint = `/lm/custom-words/search?category=${categories}`;\n this.searchType = 'custom_words';\n }\n } else if (getPromptTagAutocompletePreference()) {\n // No command and setting enabled - regular tag search with enriched results\n this.showingCommands = false;\n this.activeCommand = null;\n endpoint = '/lm/custom-words/search?enriched=true';\n // Use full search term for query variation generation\n // The search() method will generate multiple query variations including:\n // - Original query (for natural language matching)\n // - Underscore version (e.g., \"looking_to_the_side\" for \"looking to the side\")\n // - Last token (for backward compatibility with continuous typing)\n searchTerm = rawSearchTerm;\n this.searchType = 'custom_words';\n } else {\n // No command and setting disabled - no autocomplete for direct typing\n this.hide();\n return;\n }\n }\n }\n\n const allowEmptyWildcardSearch =\n this.modelType === 'prompt' &&\n this.searchType === 'wildcards' &&\n searchTerm.length === 0;\n\n if (!allowEmptyWildcardSearch && searchTerm.length < this.options.minChars) {\n this.hide();\n return;\n }\n\n // Debounce the search\n this.debounceTimer = setTimeout(() => {\n this.search(searchTerm, endpoint);\n }, this.options.debounceDelay);\n }\n \n getSearchTerm(value) {\n return this.getActiveSearchRange(value).text;\n }\n\n getActiveSearchRange(value = null) {\n const currentValue = typeof value === 'string' ? value : this.inputElement.value;\n const caretPos = this.getCaretPosition();\n const beforeCursor = this.helper.getBeforeCursor() ?? currentValue.substring(0, caretPos);\n let start = this._getHardBoundaryStart(beforeCursor);\n\n if (!getAutocompleteAppendCommaPreference()) {\n const persistedBoundaryEnd = this._getPersistedBoundaryEnd(currentValue, caretPos);\n if (persistedBoundaryEnd !== null && persistedBoundaryEnd > start) {\n start = persistedBoundaryEnd;\n }\n }\n\n const rawText = beforeCursor.substring(start);\n const leadingWhitespaceLength = rawText.length - rawText.trimStart().length;\n const trimmedStart = start + leadingWhitespaceLength;\n const text = rawText.trim();\n\n if (this.modelType === 'prompt') {\n const tokenRange = this._getPromptTokenRange(rawText, trimmedStart, caretPos);\n if (tokenRange) {\n return {\n start: tokenRange.start,\n trimmedStart: tokenRange.trimmedStart,\n end: caretPos,\n beforeCursor,\n rawText: tokenRange.rawText,\n text: tokenRange.text,\n tokenType: tokenRange.tokenType,\n };\n }\n }\n\n return {\n start,\n trimmedStart,\n end: caretPos,\n beforeCursor,\n rawText,\n text,\n };\n }\n\n _getPromptTokenRange(rawText = '', trimmedStart = 0, caretPos = 0) {\n const trimmedText = rawText.trim();\n if (!trimmedText) {\n return {\n start: trimmedStart,\n trimmedStart,\n rawText: '',\n text: '',\n tokenType: 'empty',\n };\n }\n\n const commandOffset = trimmedText.startsWith('/')\n ? 0\n : trimmedText.lastIndexOf(' /');\n if (commandOffset !== -1) {\n const normalizedCommandOffset = commandOffset === 0 ? 0 : commandOffset + 1;\n const commandText = trimmedText.slice(normalizedCommandOffset);\n const commandStart = trimmedStart + normalizedCommandOffset;\n return {\n start: commandStart,\n trimmedStart: commandStart,\n rawText: commandText,\n text: commandText,\n tokenType: commandText === '/' ? 'empty_command_trigger' : 'command',\n };\n }\n\n const wildcardMatch = trimmedText.match(/(?:^|\\s)(__[\\w\\s.\\-+/*\\\\]+?__)$/);\n if (wildcardMatch) {\n const wildcardText = wildcardMatch[1];\n const wildcardOffset = trimmedText.lastIndexOf(wildcardText);\n const wildcardStart = trimmedStart + wildcardOffset;\n return {\n start: wildcardStart,\n trimmedStart: wildcardStart,\n rawText: wildcardText,\n text: '',\n tokenType: 'wildcard_literal',\n };\n }\n\n const embeddingOffset = trimmedText.search(/(?:^|\\s)emb:[^\\s]*$/i);\n if (embeddingOffset !== -1) {\n const normalizedEmbeddingOffset = trimmedText.slice(embeddingOffset).startsWith(' ')\n ? embeddingOffset + 1\n : embeddingOffset;\n const embeddingText = trimmedText.slice(normalizedEmbeddingOffset);\n const embeddingStart = trimmedStart + normalizedEmbeddingOffset;\n return {\n start: embeddingStart,\n trimmedStart: embeddingStart,\n rawText: embeddingText,\n text: embeddingText,\n tokenType: 'embedding_literal',\n };\n }\n\n return {\n start: trimmedStart,\n trimmedStart,\n rawText,\n text: trimmedText,\n tokenType: 'tag_text',\n };\n }\n\n _getHardBoundaryStart(beforeCursor = '') {\n const lastComma = beforeCursor.lastIndexOf(',');\n const lastAngle = beforeCursor.lastIndexOf('>');\n const lastNewline = Math.max(beforeCursor.lastIndexOf('\\n'), beforeCursor.lastIndexOf('\\r'));\n return Math.max(lastComma, lastAngle, lastNewline) + 1;\n }\n\n _getMetadataWidget() {\n return this.inputElement?._autocompleteMetadataWidget\n ?? this.inputElement?._autocompleteHostWidget?.metadataWidget\n ?? null;\n }\n\n _getMetadataBase() {\n return createAutocompleteMetadataBase(this.inputElement?._autocompleteTextWidgetName ?? 'text');\n }\n\n _getAutocompleteMetadata() {\n const metadataWidget = this._getMetadataWidget();\n const value = metadataWidget?.value;\n\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return this._getMetadataBase();\n }\n\n return {\n ...this._getMetadataBase(),\n ...value,\n };\n }\n\n _setAutocompleteMetadata(metadata = {}) {\n const metadataWidget = this._getMetadataWidget();\n if (!metadataWidget) {\n return;\n }\n\n metadataWidget.value = {\n ...this._getMetadataBase(),\n ...metadata,\n };\n }\n\n _clearLastAcceptedBoundary() {\n const metadataWidget = this._getMetadataWidget();\n if (!metadataWidget) {\n return;\n }\n\n const metadata = this._getAutocompleteMetadata();\n delete metadata.lastAccepted;\n metadataWidget.value = metadata;\n }\n\n _storeLastAcceptedBoundary(boundary) {\n this._setAutocompleteMetadata({ lastAccepted: boundary });\n }\n\n _getPersistedBoundaryEnd(currentValue, caretPos) {\n const metadata = this._getAutocompleteMetadata();\n const boundary = metadata?.lastAccepted;\n\n if (!boundary || typeof boundary !== 'object') {\n return null;\n }\n\n const { start, end, insertedText, textSnapshot } = boundary;\n\n if (!Number.isInteger(start) || !Number.isInteger(end) || start < 0 || end < start) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (end > currentValue.length || end > caretPos) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (typeof insertedText !== 'string' || insertedText.length === 0) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (currentValue.slice(start, end) !== insertedText) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (typeof textSnapshot !== 'string' || currentValue.slice(0, end) !== textSnapshot) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n return end;\n }\n\n /**\n * Extract the last space-separated token from a search term\n * Tag names don't contain spaces, so for tag autocomplete we only need the last token\n * @param {string} term - The full search term (e.g., \"hello 1gi\")\n * @returns {string} - The last token (e.g., \"1gi\"), or the original term if no spaces\n */\n _getLastSpaceToken(term) {\n const tokens = term.trim().split(/\\s+/);\n return tokens[tokens.length - 1] || term;\n }\n\n /**\n * Generate query variations for better autocomplete matching\n * Includes original query and normalized versions (spaces to underscores, etc.)\n * @param {string} term - Original search term\n * @returns {string[]} - Array of query variations\n */\n _generateQueryVariations(term) {\n if (!term || term.length < this.options.minChars) {\n return [];\n }\n\n const variations = new Set();\n const trimmed = term.trim();\n\n // Always include original query\n variations.add(trimmed);\n variations.add(trimmed.toLowerCase());\n\n // Add underscore version (Danbooru convention: spaces become underscores)\n // e.g., \"looking to the side\" -> \"looking_to_the_side\"\n if (trimmed.includes(' ')) {\n const underscoreVersion = trimmed.replace(/ /g, '_');\n variations.add(underscoreVersion);\n variations.add(underscoreVersion.toLowerCase());\n }\n\n // Add no-space version for flexible matching\n // e.g., \"blue hair\" -> \"bluehair\"\n if (trimmed.includes(' ') || trimmed.includes('_')) {\n const noSpaceVersion = trimmed.replace(/[ _]/g, '');\n variations.add(noSpaceVersion);\n variations.add(noSpaceVersion.toLowerCase());\n }\n\n // Add last token only (legacy behavior for continuous typing)\n const lastToken = this._getLastSpaceToken(trimmed);\n if (lastToken !== trimmed) {\n variations.add(lastToken);\n variations.add(lastToken.toLowerCase());\n }\n\n return Array.from(variations).filter(v => v.length >= this.options.minChars);\n }\n\n _normalizeQueryForRequest(term = '') {\n return term.trim().toLowerCase();\n }\n\n _getQueriesToExecute(term = '') {\n const queryVariations = this._generateQueryVariations(term);\n const uniqueQueries = [];\n const seen = new Set();\n\n for (const query of queryVariations) {\n const normalized = this._normalizeQueryForRequest(query);\n if (!normalized || seen.has(normalized)) {\n continue;\n }\n\n seen.add(normalized);\n uniqueQueries.push(query);\n\n if (uniqueQueries.length >= 4) {\n break;\n }\n }\n\n return uniqueQueries;\n }\n\n _containsInformationalItems() {\n return this.items.some((item) => isWildcardInfoItem(item));\n }\n\n _isSelectableInfoItem(item) {\n return isWildcardInfoItem(item);\n }\n\n /**\n * Get display text for an item (without extension for models)\n * @param {string|Object} item - Item to get display text from\n * @returns {string} - Display text without extension\n */\n _getDisplayText(item) {\n if (isWildcardInfoItem(item)) {\n return item.title || item.description || 'Wildcards';\n }\n\n const itemText = typeof item === 'object' && item.tag_name ? item.tag_name : String(item);\n // Remove extension for models to avoid matching/displaying .safetensors etc.\n if (this.modelType === 'loras' || this.searchType === 'embeddings') {\n return removeLoraExtension(itemText);\n } else if (this.modelType === 'embeddings') {\n return removeGeneralExtension(itemText);\n }\n return itemText;\n }\n\n /**\n * Check if an item matches a search term\n * Supports both string items and enriched items with tag_name property\n * @param {string|Object} item - Item to check\n * @param {string} searchTerm - Search term to match against\n * @returns {Object} - { matched: boolean, isExactMatch: boolean }\n */\n _matchItem(item, searchTerm) {\n const itemText = this._getDisplayText(item);\n const itemTextLower = itemText.toLowerCase();\n const searchTermLower = searchTerm.toLowerCase();\n\n // Exact match (case-insensitive)\n if (itemTextLower === searchTermLower) {\n return { matched: true, isExactMatch: true };\n }\n\n // Partial match (contains)\n if (itemTextLower.includes(searchTermLower)) {\n return { matched: true, isExactMatch: false };\n }\n\n // Symbol-insensitive match: remove common separators and retry\n // e.g., \"blue hair\" can match \"blue_hair\" or \"bluehair\"\n const normalizedItem = itemTextLower.replace(/[-_\\s']/g, '');\n const normalizedSearch = searchTermLower.replace(/[-_\\s']/g, '');\n if (normalizedItem.includes(normalizedSearch)) {\n return { matched: true, isExactMatch: false };\n }\n\n return { matched: false, isExactMatch: false };\n }\n\n _getLiveSearchTermForAcceptance() {\n const rawSearchTerm = this.getSearchTerm(this.inputElement.value);\n\n if (this.modelType === 'embeddings') {\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n return (match?.[1] || '').trim();\n }\n\n if (this.modelType === 'prompt') {\n const embeddingMatch = rawSearchTerm.match(/^emb:(.*)$/i);\n if (embeddingMatch) {\n return (embeddingMatch[1] || '').trim();\n }\n\n const commandResult = this._parseCommandInput(rawSearchTerm);\n return commandResult.searchTerm ?? rawSearchTerm;\n }\n\n return rawSearchTerm;\n }\n\n _getPreferredSelectedIndex(searchTerm = '') {\n if (!this.items?.length) {\n return -1;\n }\n\n if (this.showingCommands) {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n return 0;\n }\n\n const trimmedSearchTerm = searchTerm.trim();\n if (!trimmedSearchTerm) {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n return 0;\n }\n\n const searchLower = trimmedSearchTerm.toLowerCase();\n const normalizedSearch = normalizeAutocompleteMatchText(trimmedSearchTerm);\n let bestIndex = -1;\n let bestScore = -Infinity;\n\n this.items.forEach((item, index) => {\n const displayText = this._getDisplayText(item);\n const textLower = displayText.toLowerCase();\n const normalizedText = normalizeAutocompleteMatchText(displayText);\n let score = -1;\n\n if (textLower === searchLower) {\n score = 5000;\n } else if (normalizedText === normalizedSearch) {\n score = 4500;\n } else if (textLower.startsWith(searchLower)) {\n score = 4000;\n } else if (normalizedText.startsWith(normalizedSearch)) {\n score = 3500;\n } else if (textLower.includes(searchLower)) {\n score = 3000;\n } else if (normalizedText.includes(normalizedSearch)) {\n score = 2500;\n }\n\n if (score > -1) {\n score -= index;\n if (score > bestScore) {\n bestScore = score;\n bestIndex = index;\n }\n }\n });\n\n if (bestIndex !== -1) {\n return bestIndex;\n }\n\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n\n return 0;\n }\n\n _getAcceptSelectionIndex(searchTerm = '') {\n if (this.hasManualSelection && this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n\n return this._getPreferredSelectedIndex(searchTerm);\n }\n\n async search(term = '', endpoint = null) {\n try {\n this.currentSearchTerm = term;\n\n // Save current search type to detect mode changes during async search\n const searchTypeAtStart = this.searchType;\n\n // Clear items before starting new search to avoid stale data\n // This is critical for preventing command suggestions from persisting\n // when switching from command mode to regular tag search\n this.items = [];\n this.wildcardMeta = null;\n\n if (!endpoint) {\n endpoint = `/lm/${this.modelType}/relative-paths`;\n }\n\n // Generate multiple query variations for better matching, but avoid\n // sending duplicate-equivalent requests that normalize to the same\n // backend search term.\n const queriesToExecute =\n this.searchType === 'wildcards' && term.length === 0\n ? ['']\n : this._getQueriesToExecute(term);\n\n if (queriesToExecute.length === 0) {\n this.items = [];\n this.hide();\n return;\n }\n\n // Execute all queries in parallel\n const searchPromises = queriesToExecute.map(async (query) => {\n const url = endpoint.includes('?')\n ? `${endpoint}&search=${encodeURIComponent(query)}&limit=${this.options.maxItems}`\n : `${endpoint}?search=${encodeURIComponent(query)}&limit=${this.options.maxItems}`;\n\n try {\n const response = await api.fetchApi(url);\n const data = await response.json();\n return {\n items: data.success ? (data.relative_paths || data.words || []) : [],\n meta: data?.meta || null,\n };\n } catch (error) {\n console.warn(`Search query failed for \"${query}\":`, error);\n return {\n items: [],\n meta: null,\n };\n }\n });\n\n const resultsArrays = await Promise.all(searchPromises);\n\n // Check if search type changed during async operation\n // If so, skip updating items to prevent stale data from showing\n if (this.searchType !== searchTypeAtStart) {\n console.log('[Lora Manager] Search type changed during search, skipping update');\n return;\n }\n\n // Merge and deduplicate results while preserving order from backend\n // Backend returns results sorted by relevance, so we maintain that order\n const seen = new Set();\n const mergedItems = [];\n\n for (const result of resultsArrays) {\n if (!this.wildcardMeta && result?.meta) {\n this.wildcardMeta = result.meta;\n }\n\n const resultArray = result?.items || [];\n for (const item of resultArray) {\n const itemKey = typeof item === 'object' && item.tag_name\n ? item.tag_name.toLowerCase()\n : String(item).toLowerCase();\n\n if (!seen.has(itemKey)) {\n seen.add(itemKey);\n mergedItems.push(item);\n }\n }\n }\n\n if (this.searchType === 'wildcards' && mergedItems.length === 0) {\n const meta = this.wildcardMeta || {};\n this.items = meta.has_wildcards\n ? [createWildcardNoMatchesItem(term, meta)]\n : [createWildcardEmptyStateItem(meta)];\n this.hasMoreItems = false;\n this.render();\n this.show();\n return;\n }\n\n // Use backend-sorted results directly without re-scoring\n // Backend already ranks by: FTS5 bm25 score + post count + exact prefix boost\n if (mergedItems.length > 0) {\n this.items = mergedItems;\n this.render();\n this.show();\n } else {\n this.items = [];\n this.hide();\n }\n } catch (error) {\n console.error('Autocomplete search error:', error);\n this.items = [];\n this.hide();\n }\n }\n\n /**\n * Parse command input to detect command mode\n * @param {string} rawInput - Raw input text\n * @returns {Object} - { showCommands, commandFilter, command, searchTerm }\n */\n _parseCommandInput(rawInput) {\n const trimmed = rawInput.trim();\n\n // Check if input starts with \"/\"\n if (!trimmed.startsWith('/')) {\n return { showCommands: false, command: null, searchTerm: trimmed };\n }\n\n // Split into potential command and search term\n const spaceIndex = trimmed.indexOf(' ');\n\n if (spaceIndex === -1) {\n // Still typing command (e.g., \"/cha\")\n const partialCommand = trimmed.toLowerCase();\n\n // Check for exact command match\n if (TAG_COMMANDS[partialCommand]) {\n const cmd = TAG_COMMANDS[partialCommand];\n // Filter out toggle commands that don't meet their condition\n if (cmd.type === 'toggle_setting' && cmd.condition && !cmd.condition()) {\n return { showCommands: false, command: null, searchTerm: '' };\n }\n return {\n showCommands: false,\n command: cmd,\n searchTerm: '',\n };\n }\n\n // Show command suggestions\n return {\n showCommands: true,\n commandFilter: partialCommand.slice(1), // Remove leading \"/\"\n command: null,\n searchTerm: '',\n };\n }\n\n // Command with search term (e.g., \"/character miku\")\n const commandPart = trimmed.slice(0, spaceIndex).toLowerCase();\n const searchPart = trimmed.slice(spaceIndex + 1).trim();\n\n if (TAG_COMMANDS[commandPart]) {\n const cmd = TAG_COMMANDS[commandPart];\n // Filter out toggle commands that don't meet their condition\n if (cmd.type === 'toggle_setting' && cmd.condition && !cmd.condition()) {\n return { showCommands: false, command: null, searchTerm: trimmed };\n }\n return {\n showCommands: false,\n command: cmd,\n searchTerm: searchPart,\n };\n }\n\n // Unknown command, treat as regular search\n return { showCommands: false, command: null, searchTerm: trimmed };\n }\n\n /**\n * Show the command list dropdown\n * @param {string} filter - Optional filter for commands\n */\n _showCommandList(filter = '') {\n // Only show command list if we're in command mode\n // This prevents stale command suggestions from appearing after switching to tag search\n if (this.searchType !== 'commands' && this.showingCommands !== true) {\n return;\n }\n \n const filterLower = filter.toLowerCase();\n\n const commands = [];\n\n for (const [cmd, info] of Object.entries(TAG_COMMANDS)) {\n // Filter out toggle commands that don't meet their condition\n if (info.type === 'toggle_setting' && info.condition) {\n if (!info.condition()) continue;\n }\n\n if (!filter || cmd.slice(1).startsWith(filterLower)) {\n commands.push({ command: cmd, ...info });\n }\n }\n\n if (commands.length === 0) {\n this.hide();\n return;\n }\n\n this.items = commands;\n this._renderCommandList();\n this.show();\n }\n\n /**\n * Render the command list dropdown\n */\n _renderCommandList() {\n // Clear command list items properly based on rendering mode\n if (this.contentContainer) {\n // Virtual scrolling mode - clear content container\n this.contentContainer.innerHTML = '';\n } else {\n // Non-virtual scrolling mode - clear dropdown direct children\n this.dropdown.innerHTML = '';\n }\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n\n this.items.forEach((item, index) => {\n const itemEl = document.createElement('div');\n itemEl.className = 'comfy-autocomplete-item comfy-autocomplete-command';\n itemEl.dataset.index = index.toString();\n\n const cmdSpan = document.createElement('span');\n cmdSpan.className = 'lm-autocomplete-command-name';\n cmdSpan.textContent = item.command;\n\n const labelSpan = document.createElement('span');\n labelSpan.className = 'lm-autocomplete-command-label';\n labelSpan.textContent = item.label;\n\n itemEl.appendChild(cmdSpan);\n itemEl.appendChild(labelSpan);\n\n itemEl.style.cssText = `\n padding: 8px 12px;\n cursor: pointer;\n color: rgba(226, 232, 240, 0.8);\n border-bottom: 1px solid rgba(226, 232, 240, 0.1);\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n height: ${this.options.itemHeight}px;\n box-sizing: border-box;\n `;\n\n // Prevent textarea from losing focus - same fix as createItemElement\n itemEl.addEventListener('mousedown', (e) => {\n e.preventDefault();\n });\n\n itemEl.addEventListener('mouseenter', () => {\n this.selectItem(index, { manual: true });\n });\n\n itemEl.addEventListener('click', () => {\n this._insertCommand(item.command);\n });\n\n // Append to correct container based on rendering mode\n if (this.contentContainer) {\n this.contentContainer.appendChild(itemEl);\n } else {\n this.dropdown.appendChild(itemEl);\n }\n });\n\n // Remove border from last item\n const lastChild = this.contentContainer ? this.contentContainer.lastChild : this.dropdown.lastChild;\n if (lastChild) {\n lastChild.style.borderBottom = 'none';\n }\n\n // Auto-select immediately so accept keys remain stable.\n // In virtual-scroll mode, calling selectItem() before the dropdown is\n // visible can see a zero-height container and incorrectly replace the\n // full command list with a partially virtualized slice.\n if (this.items.length > 0) {\n this.selectedIndex = 0;\n this.hasManualSelection = false;\n if (this.contentContainer) {\n this._applyItemSelection(0);\n } else {\n this.selectItem(0);\n }\n }\n \n // Update virtual scroll height for virtual scrolling mode\n if (this.contentContainer) {\n this.updateVirtualScrollHeight();\n }\n }\n\n /**\n * Insert a command into the input\n * @param {string} command - The command to insert (e.g., \"/character\")\n */\n _insertCommand(command) {\n const currentValue = this.inputElement.value;\n const activeRange = this.getActiveSearchRange(currentValue);\n const commandStartPos = activeRange.trimmedStart;\n\n // Insert command with trailing space\n const insertText = command + ' ';\n const newValue = currentValue.substring(0, commandStartPos) + insertText + currentValue.substring(activeRange.end);\n const newCaretPos = commandStartPos + insertText.length;\n\n this.inputElement.value = newValue;\n\n // Trigger input event\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n this.hide();\n\n // Focus and position cursor\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n }\n\n render() {\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n\n // Reset virtual scroll state\n this.virtualScrollOffset = 0;\n this.currentPage = 0;\n this.hasMoreItems = true;\n this.isLoadingMore = false;\n\n // Early return if no items to prevent empty dropdown\n if (!this.items || this.items.length === 0) {\n if (this.contentContainer) {\n this.contentContainer.innerHTML = '';\n } else {\n this.dropdown.innerHTML = '';\n }\n return;\n }\n\n if (this.options.enableVirtualScroll && this.contentContainer) {\n // Use virtual scrolling - always update visible items to ensure content is fresh\n // The dropdown visibility is controlled by show()/hide()\n this.updateVirtualScrollHeight();\n this.updateVisibleItems();\n } else {\n // Traditional rendering (fallback)\n this.dropdown.innerHTML = '';\n\n // Check if items are enriched (have tag_name, category, post_count) or command objects\n const isEnriched = this.items[0] && typeof this.items[0] === 'object' && 'tag_name' in this.items[0];\n const isCommand = this.items[0] && typeof this.items[0] === 'object' && 'command' in this.items[0];\n\n this.items.forEach((itemData, index) => {\n const item = this.createItemElement(itemData, index, isEnriched, isCommand);\n this.dropdown.appendChild(item);\n });\n\n // Remove border from last item\n if (this.dropdown.lastChild) {\n this.dropdown.lastChild.style.borderBottom = 'none';\n }\n }\n\n // Auto-select immediately so accept keys do not fall through\n // to native focus traversal while the dropdown is visible.\n if (this.items.length > 0) {\n this.selectItem(0);\n }\n }\n\n /**\n * Render an enriched autocomplete item with category badge and post count\n * @param {HTMLElement} itemEl - The item element to populate\n * @param {Object} itemData - The enriched item data { tag_name, category, post_count, matched_alias? }\n * @param {string} searchTerm - The current search term for highlighting\n */\n _renderEnrichedItem(itemEl, itemData, searchTerm) {\n // Create name span with highlighted match\n const nameSpan = document.createElement('span');\n nameSpan.className = 'lm-autocomplete-name';\n\n // If matched via alias, show: \"tag_name ← alias\" with alias highlighted\n if (itemData.matched_alias) {\n const tagText = document.createTextNode(itemData.tag_name + ' ');\n nameSpan.appendChild(tagText);\n\n const aliasSpan = document.createElement('span');\n aliasSpan.className = 'lm-matched-alias';\n aliasSpan.innerHTML = '← ' + this.highlightMatch(itemData.matched_alias, searchTerm);\n aliasSpan.style.cssText = `\n font-size: 11px;\n color: rgba(226, 232, 240, 0.5);\n `;\n nameSpan.appendChild(aliasSpan);\n } else {\n nameSpan.innerHTML = this.highlightMatch(itemData.tag_name, searchTerm);\n }\n\n nameSpan.style.cssText = `\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n\n // Create meta container for count and badge\n const metaSpan = document.createElement('span');\n metaSpan.className = 'lm-autocomplete-meta';\n metaSpan.style.cssText = `\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n `;\n\n // Add post count\n if (itemData.post_count > 0) {\n const countSpan = document.createElement('span');\n countSpan.className = 'lm-autocomplete-count';\n countSpan.textContent = formatPostCount(itemData.post_count);\n countSpan.style.cssText = `\n font-size: 11px;\n color: rgba(226, 232, 240, 0.5);\n `;\n metaSpan.appendChild(countSpan);\n }\n\n // Add category badge\n const categoryInfo = CATEGORY_INFO[itemData.category];\n if (categoryInfo) {\n const badgeSpan = document.createElement('span');\n badgeSpan.className = 'lm-autocomplete-category';\n badgeSpan.textContent = categoryInfo.label;\n badgeSpan.style.cssText = `\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 10px;\n background: ${categoryInfo.bg};\n color: ${categoryInfo.text};\n white-space: nowrap;\n `;\n metaSpan.appendChild(badgeSpan);\n }\n\n itemEl.appendChild(nameSpan);\n itemEl.appendChild(metaSpan);\n }\n\n _renderInformationalItem(itemEl, itemData) {\n itemEl.classList.add('comfy-autocomplete-info-item');\n itemEl.style.cssText = `\n padding: 12px;\n color: rgba(226, 232, 240, 0.88);\n border-bottom: none;\n cursor: default;\n display: block;\n white-space: normal;\n height: auto;\n `;\n\n const title = document.createElement('div');\n title.className = 'lm-autocomplete-info-title';\n title.textContent = itemData.title || 'Wildcards';\n title.style.cssText = `\n font-size: 13px;\n font-weight: 600;\n margin-bottom: 6px;\n `;\n itemEl.appendChild(title);\n\n const description = document.createElement('div');\n description.className = 'lm-autocomplete-info-description';\n description.textContent = itemData.description || '';\n description.style.cssText = `\n font-size: 12px;\n line-height: 1.45;\n color: rgba(226, 232, 240, 0.72);\n `;\n itemEl.appendChild(description);\n\n if (itemData.type === 'wildcard_no_matches') {\n return;\n }\n\n const pathBlock = document.createElement('div');\n pathBlock.style.cssText = `\n margin-top: 10px;\n padding: 8px 10px;\n border-radius: 6px;\n background: rgba(15, 23, 42, 0.6);\n font-size: 11px;\n line-height: 1.5;\n `;\n pathBlock.innerHTML = [\n 'Wildcards folder
',\n `${itemData.wildcardsDir || '(unavailable)'}`,\n `Supported formats: ${(itemData.supportedFormats || []).join(', ')}
`,\n ].join('');\n itemEl.appendChild(pathBlock);\n\n const examples = document.createElement('div');\n examples.style.cssText = `\n margin-top: 10px;\n font-size: 11px;\n line-height: 1.55;\n color: rgba(226, 232, 240, 0.72);\n `;\n examples.innerHTML = [\n 'Examples
',\n 'animals/cat.txt -> use __animals/cat__
',\n 'colors.yaml with palette: { warm: [red, orange] } -> use __palette/warm__
',\n 'Text files use one option per line. YAML/JSON use nested keys ending in string arrays.
',\n ].join('');\n itemEl.appendChild(examples);\n\n const actions = document.createElement('div');\n actions.style.cssText = `\n display: flex;\n gap: 8px;\n margin-top: 12px;\n flex-wrap: wrap;\n `;\n\n const openButton = document.createElement('button');\n openButton.type = 'button';\n openButton.dataset.action = 'open-wildcards-folder';\n openButton.textContent = 'Open wildcards folder';\n openButton.style.cssText = `\n border: 1px solid rgba(96, 165, 250, 0.45);\n background: rgba(37, 99, 235, 0.18);\n color: #dbeafe;\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 11px;\n cursor: pointer;\n `;\n openButton.addEventListener('click', async (event) => {\n event.preventDefault();\n event.stopPropagation();\n await this._openWildcardsFolder();\n });\n actions.appendChild(openButton);\n\n const copyButton = document.createElement('button');\n copyButton.type = 'button';\n copyButton.dataset.action = 'copy-wildcards-path';\n copyButton.textContent = 'Copy path';\n copyButton.style.cssText = `\n border: 1px solid rgba(226, 232, 240, 0.2);\n background: rgba(148, 163, 184, 0.12);\n color: rgba(226, 232, 240, 0.88);\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 11px;\n cursor: pointer;\n `;\n copyButton.addEventListener('click', async (event) => {\n event.preventDefault();\n event.stopPropagation();\n await this._copyWildcardPath(itemData.wildcardsDir || '');\n });\n actions.appendChild(copyButton);\n\n itemEl.appendChild(actions);\n }\n \n highlightMatch(text, searchTerm) {\n const { include } = parseSearchTokens(searchTerm);\n const sanitizedTokens = include\n .filter(Boolean)\n .map((token) => token.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n\n if (!sanitizedTokens.length) {\n return text;\n }\n\n const regex = new RegExp(`(${sanitizedTokens.join('|')})`, 'gi');\n return text.replace(\n regex,\n '$1 ',\n );\n }\n\n async _openWildcardsFolder() {\n try {\n const response = await api.fetchApi('/lm/wildcards/open-location', { method: 'POST' });\n const data = await response.json();\n if (!response.ok || data?.success === false) {\n throw new Error(data?.error || 'Failed to open wildcards folder');\n }\n\n if (data?.mode === 'clipboard' && data?.path) {\n await this._copyWildcardPath(data.path);\n return;\n }\n\n showToast({\n severity: 'success',\n summary: 'Wildcards folder',\n detail: 'Opened wildcards folder.',\n life: 2500,\n });\n } catch (error) {\n console.error('[Lora Manager] Failed to open wildcards folder:', error);\n showToast({\n severity: 'error',\n summary: 'Error',\n detail: error?.message || 'Failed to open wildcards folder',\n life: 3000,\n });\n }\n }\n\n async _copyWildcardPath(path) {\n if (!path) {\n return;\n }\n\n try {\n if (navigator?.clipboard?.writeText) {\n await navigator.clipboard.writeText(path);\n }\n showToast({\n severity: 'info',\n summary: 'Wildcards path',\n detail: path,\n life: 3000,\n });\n } catch (error) {\n console.error('[Lora Manager] Failed to copy wildcards path:', error);\n showToast({\n severity: 'warn',\n summary: 'Wildcards path',\n detail: path,\n life: 4000,\n });\n }\n }\n \n showPreviewForItem(relativePath, itemElement) {\n if (!this.options.showPreview || !this.previewTooltip) return;\n \n // Extract filename without extension for preview\n const fileName = relativePath.split(/[/\\\\]/).pop();\n const loraName = fileName.replace(/\\.(safetensors|ckpt|pt|bin)$/i, '');\n \n // Get item position for tooltip positioning\n const rect = itemElement.getBoundingClientRect();\n const x = rect.right + 10;\n const y = rect.top;\n \n this.previewTooltip.show(loraName, x, y, true); // Pass true for fromAutocomplete flag\n }\n \n hidePreview() {\n if (!this.options.showPreview) {\n return;\n }\n if (typeof this.behavior.hidePreview === 'function') {\n this.behavior.hidePreview(this);\n } else if (this.previewTooltip) {\n this.previewTooltip.hide();\n }\n }\n \n /**\n * Handle scroll event for virtual scrolling and loading more items\n */\n handleScroll() {\n if (!this.scrollContainer || this.isLoadingMore) {\n return;\n }\n\n const { scrollTop, scrollHeight, clientHeight } = this.scrollContainer;\n const scrollBottom = scrollTop + clientHeight;\n const threshold = this.options.itemHeight * 2; // Load more when within 2 items of bottom\n\n // Check if we need to load more items\n if (scrollBottom >= scrollHeight - threshold && this.hasMoreItems) {\n this.loadMoreItems();\n }\n\n // Update visible items for virtual scrolling\n if (this.options.enableVirtualScroll) {\n this.updateVisibleItems();\n }\n }\n\n /**\n * Load more items (pagination)\n */\n async loadMoreItems() {\n if (this.isLoadingMore || !this.hasMoreItems || this.showingCommands) {\n return;\n }\n\n this.isLoadingMore = true;\n this.currentPage++;\n\n try {\n // Show loading indicator\n this.showLoadingIndicator();\n\n // Get the current endpoint\n let endpoint = `/lm/${this.modelType}/relative-paths`;\n if (this.modelType === 'prompt') {\n if (this.searchType === 'embeddings') {\n endpoint = '/lm/embeddings/relative-paths';\n } else if (this.searchType === 'wildcards') {\n endpoint = getWildcardSearchEndpoint();\n } else if (this.searchType === 'custom_words') {\n if (this.activeCommand?.categories) {\n const categories = this.activeCommand.categories.join(',');\n endpoint = `/lm/custom-words/search?category=${categories}`;\n } else {\n endpoint = '/lm/custom-words/search?enriched=true';\n }\n }\n }\n\n const queriesToExecute = this._getQueriesToExecute(this.currentSearchTerm);\n const offset = this.items.length;\n\n // Execute all queries in parallel with offset\n const searchPromises = queriesToExecute.map(async (query) => {\n const url = endpoint.includes('?')\n ? `${endpoint}&search=${encodeURIComponent(query)}&limit=${this.options.pageSize}&offset=${offset}`\n : `${endpoint}?search=${encodeURIComponent(query)}&limit=${this.options.pageSize}&offset=${offset}`;\n\n try {\n const response = await api.fetchApi(url);\n const data = await response.json();\n return data.success ? (data.relative_paths || data.words || []) : [];\n } catch (error) {\n console.warn(`Search query failed for \"${query}\":`, error);\n return [];\n }\n });\n\n const resultsArrays = await Promise.all(searchPromises);\n\n // Merge and deduplicate results with existing items\n const seen = new Set(this.items.map(item => {\n const itemKey = typeof item === 'object' && item.tag_name\n ? item.tag_name.toLowerCase()\n : String(item).toLowerCase();\n return itemKey;\n }));\n const newItems = [];\n\n for (const resultArray of resultsArrays) {\n for (const item of resultArray) {\n const itemKey = typeof item === 'object' && item.tag_name\n ? item.tag_name.toLowerCase()\n : String(item).toLowerCase();\n\n if (!seen.has(itemKey)) {\n seen.add(itemKey);\n newItems.push(item);\n }\n }\n }\n\n // If we got fewer items than requested, we've reached the end\n if (newItems.length < this.options.pageSize) {\n this.hasMoreItems = false;\n }\n\n // If we got new items, append them and re-render\n // IMPORTANT: Do NOT re-sort! Backend already returns results sorted by relevance\n if (newItems.length > 0) {\n this.items.push(...newItems);\n\n // Update render\n if (this.options.enableVirtualScroll) {\n this.updateVirtualScrollHeight();\n this.updateVisibleItems();\n } else {\n this.render();\n }\n } else {\n this.hasMoreItems = false;\n }\n } catch (error) {\n console.error('Error loading more items:', error);\n this.hasMoreItems = false;\n } finally {\n this.isLoadingMore = false;\n this.hideLoadingIndicator();\n }\n }\n\n /**\n * Show loading indicator at the bottom of the list\n */\n showLoadingIndicator() {\n if (!this.contentContainer) return;\n\n let loadingEl = this.contentContainer.querySelector('.comfy-autocomplete-loading');\n if (!loadingEl) {\n loadingEl = document.createElement('div');\n loadingEl.className = 'comfy-autocomplete-loading';\n loadingEl.textContent = 'Loading more...';\n loadingEl.style.cssText = `\n padding: 12px;\n text-align: center;\n color: rgba(226, 232, 240, 0.5);\n font-size: 12px;\n `;\n this.contentContainer.appendChild(loadingEl);\n }\n }\n\n /**\n * Hide loading indicator\n */\n hideLoadingIndicator() {\n if (!this.contentContainer) return;\n\n const loadingEl = this.contentContainer.querySelector('.comfy-autocomplete-loading');\n if (loadingEl) {\n loadingEl.remove();\n }\n }\n\n /**\n * Update the total height of the virtual scroll container\n */\n updateVirtualScrollHeight() {\n if (!this.contentContainer || !this.scrollContainer) return;\n\n if (this._containsInformationalItems()) {\n this.totalHeight = 0;\n this.contentContainer.style.height = 'auto';\n this.scrollContainer.style.maxHeight = `${this.options.visibleItems * this.options.itemHeight}px`;\n this.scrollContainer.style.overflowY = 'hidden';\n return;\n }\n\n this.totalHeight = this.items.length * this.options.itemHeight;\n this.contentContainer.style.height = `${this.totalHeight}px`;\n \n // Adjust scroll container max-height based on actual content\n // Only show scrollbar when content exceeds visibleItems limit\n const maxHeight = this.options.visibleItems * this.options.itemHeight;\n const shouldShowScrollbar = this.totalHeight > maxHeight;\n \n this.scrollContainer.style.maxHeight = shouldShowScrollbar ? `${maxHeight}px` : `${this.totalHeight}px`;\n this.scrollContainer.style.overflowY = shouldShowScrollbar ? 'auto' : 'hidden';\n }\n\n /**\n * Update which items are visible based on scroll position\n */\n updateVisibleItems() {\n if (!this.scrollContainer || !this.contentContainer) return;\n\n if (this._containsInformationalItems()) {\n this.contentContainer.innerHTML = '';\n if (this.items[0]) {\n this.contentContainer.appendChild(\n this.createItemElement(this.items[0], 0, false, false)\n );\n }\n return;\n }\n\n const scrollTop = this.scrollContainer.scrollTop;\n const containerHeight = this.scrollContainer.clientHeight;\n\n // Calculate which items should be visible with a larger buffer for smoother rendering\n // Use a fixed buffer of 5 items to ensure selected item is always rendered\n const startIndex = Math.max(0, Math.floor(scrollTop / this.options.itemHeight) - 5);\n const endIndex = Math.min(\n this.items.length - 1,\n Math.ceil((scrollTop + containerHeight) / this.options.itemHeight) + 5\n );\n\n // Clear current content\n this.contentContainer.innerHTML = '';\n\n // Create spacer for items before visible range\n if (startIndex > 0) {\n const topSpacer = document.createElement('div');\n topSpacer.style.height = `${startIndex * this.options.itemHeight}px`;\n this.contentContainer.appendChild(topSpacer);\n }\n\n // Render visible items\n const isEnriched = this.items[0] && typeof this.items[0] === 'object' && 'tag_name' in this.items[0];\n const isCommand = this.items[0] && typeof this.items[0] === 'object' && 'command' in this.items[0];\n\n for (let i = startIndex; i <= endIndex; i++) {\n const itemData = this.items[i];\n const itemEl = this.createItemElement(itemData, i, isEnriched, isCommand);\n this.contentContainer.appendChild(itemEl);\n }\n\n // Create spacer for items after visible range\n if (endIndex < this.items.length - 1) {\n const bottomSpacer = document.createElement('div');\n bottomSpacer.style.height = `${(this.items.length - 1 - endIndex) * this.options.itemHeight}px`;\n this.contentContainer.appendChild(bottomSpacer);\n }\n \n // Re-apply selection styling after re-rendering\n // This ensures the selected item remains highlighted even after DOM updates\n if (this.selectedIndex >= startIndex && this.selectedIndex <= endIndex) {\n const selectedEl = this.contentContainer.querySelector(`.comfy-autocomplete-item[data-index=\"${this.selectedIndex}\"]`);\n if (selectedEl) {\n selectedEl.classList.add('comfy-autocomplete-item-selected');\n selectedEl.style.backgroundColor = 'rgba(66, 153, 225, 0.2)';\n }\n }\n }\n\n /**\n * Create a single item element\n */\n createItemElement(itemData, index, isEnriched, isCommand = false) {\n const item = document.createElement('div');\n item.className = 'comfy-autocomplete-item';\n item.dataset.index = index.toString();\n item.style.cssText = `\n height: ${this.options.itemHeight}px;\n padding: 8px 12px;\n cursor: pointer;\n color: rgba(226, 232, 240, 0.8);\n border-bottom: 1px solid rgba(226, 232, 240, 0.1);\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n box-sizing: border-box;\n `;\n\n // Check if this is a command object (override parameter if needed)\n if (!isCommand && itemData && typeof itemData === 'object' && 'command' in itemData) {\n isCommand = true;\n }\n\n if (isWildcardInfoItem(itemData)) {\n this._renderInformationalItem(item, itemData);\n } else if (isCommand) {\n // Render command item\n const cmdSpan = document.createElement('span');\n cmdSpan.className = 'lm-autocomplete-command-name';\n cmdSpan.textContent = itemData.command;\n\n const labelSpan = document.createElement('span');\n labelSpan.className = 'lm-autocomplete-command-label';\n labelSpan.textContent = itemData.label;\n\n item.appendChild(cmdSpan);\n item.appendChild(labelSpan);\n item.style.gap = '12px';\n } else if (isEnriched) {\n this._renderEnrichedItem(item, itemData, this.currentSearchTerm);\n } else {\n const nameSpan = document.createElement('span');\n nameSpan.className = 'lm-autocomplete-name';\n // Use display text without extension for cleaner UI\n const displayTextWithoutExt = this._getDisplayText(itemData);\n nameSpan.innerHTML = this.highlightMatch(displayTextWithoutExt, this.currentSearchTerm);\n nameSpan.style.cssText = `\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n item.appendChild(nameSpan);\n }\n\n // Prevent textarea from losing focus when clicking dropdown items.\n // Without this, the blur event fires before click, and the blur handler's\n // formatAutocompleteTextOnBlur() modifies the text and triggers hide()\n // via suppressAutocompleteOnce, removing this item from the DOM before\n // the click handler can execute. This specifically breaks the case where\n // the text has a comma not followed by a space (e.g. \",search\").\n item.addEventListener('mousedown', (e) => {\n e.preventDefault();\n });\n\n // Hover and selection handlers\n item.addEventListener('mouseenter', () => {\n this.selectItem(index, { manual: true });\n });\n\n item.addEventListener('mouseleave', () => {\n this.hidePreview();\n });\n\n // Click handler\n item.addEventListener('click', () => {\n if (isWildcardInfoItem(itemData)) {\n return;\n }\n\n if (isCommand) {\n this._insertCommand(itemData.command);\n } else {\n const insertPath = isEnriched ? itemData.tag_name : itemData;\n this.insertSelection(insertPath);\n }\n });\n\n return item;\n }\n\n show() {\n if (!this.items || this.items.length === 0) {\n this.hide();\n return;\n }\n\n // For virtual scrolling, render items first so positionAtCursor can measure width correctly\n if (this.options.enableVirtualScroll && this.contentContainer) {\n this.dropdown.style.display = 'block';\n this.isVisible = true;\n // Skip updateVisibleItems if showing commands (already rendered by _renderCommandList)\n if (!this.showingCommands) {\n this.updateVisibleItems();\n }\n this.positionAtCursor();\n } else {\n // Position dropdown at cursor position using TextAreaCaretHelper\n this.positionAtCursor();\n this.dropdown.style.display = 'block';\n this.isVisible = true;\n }\n }\n \n positionAtCursor() {\n const position = this.helper.getCursorOffset();\n this.dropdown.style.left = (position.left ?? 0) + \"px\";\n this.dropdown.style.top = (position.top ?? 0) + \"px\";\n this.dropdown.style.maxHeight = (window.innerHeight - position.top) + \"px\";\n\n // Adjust width to fit content\n // Temporarily show the dropdown to measure content width\n const originalDisplay = this.dropdown.style.display;\n this.dropdown.style.display = 'block';\n this.dropdown.style.visibility = 'hidden';\n\n // Temporarily remove width constraints to allow content to expand naturally\n // This prevents items.scrollWidth from being limited by a narrow container\n const originalWidth = this.dropdown.style.width;\n this.dropdown.style.width = 'auto';\n this.dropdown.style.minWidth = '200px';\n\n // Measure the content width\n let maxWidth = 200; // minimum width\n // For virtual scrolling, query items from contentContainer; otherwise from dropdown\n const container = this.options.enableVirtualScroll && this.contentContainer\n ? this.contentContainer\n : this.dropdown;\n const items = container.querySelectorAll('.comfy-autocomplete-item');\n items.forEach(item => {\n const itemWidth = item.scrollWidth + 24; // Add padding\n maxWidth = Math.max(maxWidth, itemWidth);\n });\n\n // Set the width and restore visibility\n this.dropdown.style.width = Math.min(maxWidth, 400) + 'px'; // Cap at 400px\n this.dropdown.style.minWidth = '';\n this.dropdown.style.visibility = 'visible';\n this.dropdown.style.display = originalDisplay;\n }\n \n getCaretPosition() {\n return this.inputElement.selectionStart || 0;\n }\n \n hide() {\n if (!this.dropdown) {\n return;\n }\n\n this.dropdown.style.display = 'none';\n this.isVisible = false;\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n this.showingCommands = false;\n \n // Clear items to prevent stale data from being displayed\n // when autocomplete is shown again\n this.items = [];\n this.wildcardMeta = null;\n \n // Clear content container to prevent stale items from showing\n if (this.contentContainer) {\n // Virtual scrolling mode - clear content container\n this.contentContainer.innerHTML = '';\n } else {\n // Non-virtual scrolling mode - clear dropdown direct children\n this.dropdown.innerHTML = '';\n }\n\n // Reset virtual scrolling state\n this.virtualScrollOffset = 0;\n this.currentPage = 0;\n this.hasMoreItems = true;\n this.isLoadingMore = false;\n this.totalHeight = 0;\n\n // Reset scroll position\n if (this.scrollContainer) {\n this.scrollContainer.scrollTop = 0;\n }\n\n // Hide preview tooltip\n this.hidePreview();\n\n // Clear selection styles from all items\n const items = this.dropdown.querySelectorAll('.comfy-autocomplete-item');\n items.forEach(item => {\n item.classList.remove('comfy-autocomplete-item-selected');\n item.style.backgroundColor = '';\n });\n }\n \n selectItem(index, { manual = false } = {}) {\n // Remove previous selection\n const container = this.options.enableVirtualScroll && this.contentContainer\n ? this.contentContainer\n : this.dropdown;\n const prevSelected = container.querySelector('.comfy-autocomplete-item-selected');\n if (prevSelected) {\n prevSelected.classList.remove('comfy-autocomplete-item-selected');\n prevSelected.style.backgroundColor = '';\n }\n\n // Add new selection\n if (index >= 0 && index < this.items.length) {\n this.selectedIndex = index;\n this.hasManualSelection = manual;\n\n // For virtual scrolling, we need to ensure the item is rendered\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n // Calculate if the item is currently visible\n const itemTop = index * this.options.itemHeight;\n const itemBottom = itemTop + this.options.itemHeight;\n const scrollTop = this.scrollContainer.scrollTop;\n const containerHeight = this.scrollContainer.clientHeight;\n const scrollBottom = scrollTop + containerHeight;\n\n // If item is not visible, scroll to make it visible\n if (itemTop < scrollTop || itemBottom > scrollBottom) {\n // Scroll to position the item in the visible area\n // Position item at 1/3 from top for better visibility\n const targetScrollTop = Math.max(0, itemTop - containerHeight / 3);\n this.scrollContainer.scrollTop = targetScrollTop;\n \n // Re-render visible items after scroll\n this.updateVisibleItems();\n \n // Apply selection after DOM is updated\n // Use setTimeout to ensure DOM has been re-rendered\n setTimeout(() => {\n this._applyItemSelection(index);\n }, 0);\n } else {\n // Item is already visible, apply selection immediately\n this._applyItemSelection(index);\n }\n } else {\n // Traditional rendering\n const item = container.children[index];\n if (item) {\n item.classList.add('comfy-autocomplete-item-selected');\n item.style.backgroundColor = 'rgba(66, 153, 225, 0.2)';\n\n // Scroll into view if needed\n item.scrollIntoView({ block: 'nearest' });\n\n // Show preview for selected item\n if (this.options.showPreview && !this._isSelectableInfoItem(this.items[index])) {\n if (typeof this.behavior.showPreview === 'function') {\n this.behavior.showPreview(this, this.items[index], item);\n } else if (this.previewTooltip) {\n this.showPreviewForItem(this.items[index], item);\n }\n }\n }\n }\n }\n }\n\n /**\n * Apply selection styling to an item (used after virtual scroll re-render)\n * @param {number} index - Index of item to select\n */\n _applyItemSelection(index) {\n if (!this.contentContainer) return;\n\n // Find the item element using data-index attribute\n const selectedEl = this.contentContainer.querySelector(`.comfy-autocomplete-item[data-index=\"${index}\"]`);\n\n if (selectedEl) {\n selectedEl.classList.add('comfy-autocomplete-item-selected');\n selectedEl.style.backgroundColor = 'rgba(66, 153, 225, 0.2)';\n\n // Show preview for selected item\n if (this.options.showPreview && !this._isSelectableInfoItem(this.items[index])) {\n if (typeof this.behavior.showPreview === 'function') {\n this.behavior.showPreview(this, this.items[index], selectedEl);\n } else if (this.previewTooltip) {\n this.showPreviewForItem(this.items[index], selectedEl);\n }\n }\n }\n }\n \n handleKeyDown(e) {\n if (!this.isVisible) {\n return;\n }\n \n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n // For virtual scrolling, handle boundary cases\n if (this.selectedIndex >= this.items.length - 1) {\n // Already at last item, try to load more\n if (this.hasMoreItems && !this.isLoadingMore) {\n this.loadMoreItems().then(() => {\n // After loading more, select the next item\n if (this.selectedIndex < this.items.length - 1) {\n this.selectItem(this.selectedIndex + 1, { manual: true });\n }\n });\n }\n } else {\n this.selectItem(this.selectedIndex + 1, { manual: true });\n }\n } else {\n this.selectItem(Math.min(this.selectedIndex + 1, this.items.length - 1), { manual: true });\n }\n break;\n \n case 'ArrowUp':\n e.preventDefault();\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n // For virtual scrolling, handle top boundary\n if (this.selectedIndex <= 0) {\n // Already at first item, ensure it's selected\n this.selectItem(0, { manual: true });\n } else {\n this.selectItem(this.selectedIndex - 1, { manual: true });\n }\n } else {\n this.selectItem(Math.max(this.selectedIndex - 1, 0), { manual: true });\n }\n break;\n \n case 'Enter':\n case 'Tab':\n if (!shouldAcceptAutocompleteKey(e.key)) {\n break;\n }\n\n {\n const liveSearchTerm = this._getLiveSearchTermForAcceptance();\n const acceptIndex = this._getAcceptSelectionIndex(liveSearchTerm);\n if (acceptIndex !== -1 && acceptIndex !== this.selectedIndex) {\n this.selectItem(acceptIndex);\n }\n }\n\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n e.preventDefault();\n if (this.showingCommands) {\n // Insert command\n this._insertCommand(this.items[this.selectedIndex].command);\n } else {\n const selectedItem = this.items[this.selectedIndex];\n if (isWildcardInfoItem(selectedItem)) {\n if (selectedItem.type === 'wildcard_empty_state') {\n this._openWildcardsFolder();\n }\n break;\n }\n\n // Insert selection (handle enriched items)\n const insertPath = typeof selectedItem === 'object' && 'tag_name' in selectedItem\n ? selectedItem.tag_name\n : selectedItem;\n this.insertSelection(insertPath);\n }\n }\n break;\n \n case 'Escape':\n e.preventDefault();\n this.hide();\n break;\n }\n }\n \n async insertSelection(relativePath) {\n const insertText = await this.getInsertText(relativePath);\n if (!insertText) {\n this.hide();\n return;\n }\n\n const currentValue = this.inputElement.value;\n const activeRange = this.getActiveSearchRange(currentValue);\n const caretPos = activeRange.end;\n const fullSearchTerm = activeRange.text;\n let replaceStartPos = activeRange.trimmedStart;\n\n // For regular tag autocomplete (no command), only replace the last space-separated token\n // This allows \"hello 1gi\" + selecting \"1girl\" to become \"hello 1girl, \"\n // However, if the user typed a multi-word phrase that matches a tag (e.g., \"looking to the side\"\n // matching \"looking_to_the_side\"), replace the entire phrase instead of just the last word.\n // Command mode (e.g., \"/character miku\") should replace the entire command+search\n let searchTerm = fullSearchTerm;\n if (this.modelType === 'prompt' && this.searchType === 'custom_words' && !this.activeCommand) {\n // Check if the selectedItem exists and its tag_name matches the full search term\n // when converted to underscore format (Danbooru convention)\n const selectedItem = this.selectedIndex >= 0 ? this.items[this.selectedIndex] : null;\n const selectedTagName = selectedItem && typeof selectedItem === 'object' && 'tag_name' \n ? selectedItem.tag_name \n : null;\n \n // Convert full search term to underscore format and check if it matches selected tag\n // Normalize multiple spaces to single underscore for matching (e.g., \"looking to the side\" -> \"looking_to_the_side\")\n const underscoreVersion = fullSearchTerm.replace(/ +/g, '_').toLowerCase();\n const selectedTagLower = selectedTagName?.toLowerCase() ?? '';\n \n // If multi-word search term is a prefix or suffix of the selected tag,\n // replace the entire phrase. This handles cases where user types partial tag name.\n // Examples:\n // - \"looking to the\" -> \"looking_to_the_side\" (prefix match)\n // - \"to the side\" -> \"looking_to_the_side\" (suffix match)\n // - \"looking to the side\" -> \"looking_to_the_side\" (exact match)\n if (fullSearchTerm.includes(' ') && (\n selectedTagLower.startsWith(underscoreVersion) ||\n selectedTagLower.endsWith(underscoreVersion) ||\n underscoreVersion === selectedTagLower\n )) {\n searchTerm = fullSearchTerm;\n replaceStartPos = activeRange.trimmedStart;\n } else {\n searchTerm = this._getLastSpaceToken(fullSearchTerm);\n replaceStartPos = searchTerm === fullSearchTerm\n ? activeRange.trimmedStart\n : caretPos - searchTerm.length;\n }\n }\n\n // Only replace the search term, not everything after the last comma\n const newValue = currentValue.substring(0, replaceStartPos) + insertText + currentValue.substring(caretPos);\n const newCaretPos = replaceStartPos + insertText.length;\n\n this.inputElement.value = newValue;\n this._storeLastAcceptedBoundary({\n start: replaceStartPos,\n end: newCaretPos,\n insertedText: insertText,\n textSnapshot: newValue.substring(0, newCaretPos),\n });\n\n // Trigger input event to notify about the change\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n this.hide();\n\n // Focus back to input and position cursor\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n }\n\n async getInsertText(relativePath) {\n if (typeof this.behavior.getInsertText === 'function') {\n try {\n const result = await this.behavior.getInsertText(this, relativePath);\n if (typeof result === 'string' && result.length > 0) {\n return result;\n }\n } catch (error) {\n console.warn('Failed to format autocomplete insertion:', error);\n }\n }\n\n const trimmed = typeof relativePath === 'string' ? relativePath.trim() : '';\n if (!trimmed) {\n return '';\n }\n return formatAutocompleteInsertion(trimmed);\n }\n\n /**\n * Check if the autocomplete instance is still valid\n * (input element exists and is in the DOM)\n * @returns {boolean}\n */\n isValid() {\n return this.inputElement && document.body.contains(this.inputElement);\n }\n\n /**\n * Refresh the TextAreaCaretHelper to update cached measurements\n * Useful after element is moved in DOM (e.g., Vue mode switch)\n */\n refreshCaretHelper() {\n if (this.inputElement && document.body.contains(this.inputElement)) {\n this.helper = new TextAreaCaretHelper(this.inputElement, () => app.canvas.ds.scale);\n }\n }\n\n /**\n * Handle toggle setting command (/ac, /noac)\n * @param {Object} command - The toggle command with settingId and value\n */\n async _handleToggleSettingCommand(command) {\n const { settingId, value } = command;\n\n try {\n // Use ComfyUI's setting API to update global setting\n const settingManager = app?.extensionManager?.setting;\n if (settingManager && typeof settingManager.set === 'function') {\n await settingManager.set(settingId, value);\n this._showToggleFeedback(value);\n this._clearCurrentToken();\n } else {\n // Fallback: use legacy settings API\n const setting = app.ui.settings.settingsById?.[settingId];\n if (setting) {\n app.ui.settings.setSettingValue(settingId, value);\n this._showToggleFeedback(value);\n this._clearCurrentToken();\n }\n }\n } catch (error) {\n console.error('[Lora Manager] Failed to toggle setting:', error);\n showToast({\n severity: 'error',\n summary: 'Error',\n detail: 'Failed to toggle autocomplete setting',\n life: 3000\n });\n }\n\n this.hide();\n }\n\n /**\n * Show visual feedback for toggle action using toast\n * @param {boolean} enabled - New autocomplete state\n */\n _showToggleFeedback(enabled) {\n showToast({\n severity: enabled ? 'success' : 'secondary',\n summary: enabled ? 'Autocomplete Enabled' : 'Autocomplete Disabled',\n detail: enabled \n ? 'Tag autocomplete is now ON. Type to see suggestions.' \n : 'Tag autocomplete is now OFF. Use /ac to re-enable.',\n life: 3000\n });\n }\n\n /**\n * Clear the current command token from input\n * Preserves leading spaces after delimiters (e.g., \"1girl, /ac\" -> \"1girl, \")\n */\n _clearCurrentToken() {\n const currentValue = this.inputElement.value;\n const activeRange = this.getActiveSearchRange(currentValue);\n const caretPos = activeRange.end;\n const lastSegment = activeRange.rawText;\n \n // Find the command start position, preserving leading spaces\n // lastSegment includes leading spaces (e.g., \" /ac\"), find where command actually starts\n const commandMatch = lastSegment.match(/^(\\s*)(\\/\\w+)/);\n if (commandMatch) {\n // commandMatch[1] is leading spaces, commandMatch[2] is the command\n const leadingSpaces = commandMatch[1].length;\n // Keep the spaces by starting after them\n const commandStartPos = activeRange.start + leadingSpaces;\n \n // Skip trailing spaces when deleting\n let endPos = caretPos;\n while (endPos < currentValue.length && currentValue[endPos] === ' ') {\n endPos++;\n }\n\n const newValue = currentValue.substring(0, commandStartPos) + currentValue.substring(endPos);\n const newCaretPos = commandStartPos;\n\n this.inputElement.value = newValue;\n\n // Trigger input event to notify about the change\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n // Focus back to input and position cursor\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n } else {\n // Fallback: delete the whole last segment (original behavior)\n const commandStartPos = activeRange.start;\n \n let endPos = caretPos;\n while (endPos < currentValue.length && currentValue[endPos] === ' ') {\n endPos++;\n }\n\n const newValue = currentValue.substring(0, commandStartPos) + currentValue.substring(endPos);\n const newCaretPos = commandStartPos;\n\n this.inputElement.value = newValue;\n\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n }\n }\n\n destroy() {\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n if (this.onInput) {\n this.inputElement.removeEventListener('input', this.onInput);\n this.onInput = null;\n }\n\n if (this.onKeyDown) {\n this.inputElement.removeEventListener('keydown', this.onKeyDown);\n this.onKeyDown = null;\n }\n\n if (this.onBlur) {\n this.inputElement.removeEventListener('blur', this.onBlur);\n this.onBlur = null;\n }\n\n if (this.onDocumentClick) {\n document.removeEventListener('click', this.onDocumentClick);\n this.onDocumentClick = null;\n }\n\n if (this.onScroll && this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.onScroll);\n this.onScroll = null;\n }\n\n if (typeof this.behavior.destroy === 'function') {\n this.behavior.destroy(this);\n } else if (this.previewTooltip) {\n this.previewTooltip.cleanup();\n this.previewTooltip = null;\n }\n this.previewTooltipPromise = null;\n \n if (this.dropdown && this.dropdown.parentNode) {\n this.dropdown.parentNode.removeChild(this.dropdown);\n this.dropdown = null;\n }\n \n }\n}\n\nexport { AutoComplete, refreshLoraSyntaxFormat };\n","export const CONVERTED_TYPE = 'converted-widget';\nimport { app } from \"../../scripts/app.js\";\nimport { AutoComplete } from \"./autocomplete.js\";\n\nconst ROOT_GRAPH_ID = \"root\";\n\nexport const LORA_PROVIDER_NODE_TYPES = [\n \"Lora Stacker (LoraManager)\",\n \"Lora Randomizer (LoraManager)\",\n \"Lora Cycler (LoraManager)\",\n];\n\nexport const LORA_STACK_AGGREGATOR_NODE_TYPES = [\n \"Lora Stack Combiner (LoraManager)\",\n];\n\nexport const LORA_CHAIN_NODE_TYPES = [\n ...LORA_PROVIDER_NODE_TYPES,\n ...LORA_STACK_AGGREGATOR_NODE_TYPES,\n];\n\nexport function isLoraProviderNode(comfyClass) {\n return LORA_PROVIDER_NODE_TYPES.includes(comfyClass);\n}\n\nexport function isLoraStackAggregatorNode(comfyClass) {\n return LORA_STACK_AGGREGATOR_NODE_TYPES.includes(comfyClass);\n}\n\nexport function isLoraChainNode(comfyClass) {\n return LORA_CHAIN_NODE_TYPES.includes(comfyClass);\n}\n\nfunction isMapLike(collection) {\n return collection && typeof collection.entries === \"function\" && typeof collection.values === \"function\";\n}\n\nfunction getChildGraphs(graph) {\n if (!graph || !graph._subgraphs) {\n return [];\n }\n\n const rawSubgraphs = isMapLike(graph._subgraphs)\n ? Array.from(graph._subgraphs.values())\n : Object.values(graph._subgraphs);\n\n return rawSubgraphs\n .map((subgraph) => subgraph?.graph || subgraph?._graph || subgraph)\n .filter((subgraph) => subgraph && subgraph !== graph);\n}\n\nfunction traverseGraphs(rootGraph, visitor, visited = new Set()) {\n const graph = rootGraph || app.graph;\n if (!graph) {\n return;\n }\n\n const graphId = getGraphId(graph);\n if (visited.has(graphId)) {\n return;\n }\n visited.add(graphId);\n visitor(graph);\n\n for (const subgraph of getChildGraphs(graph)) {\n traverseGraphs(subgraph, visitor, visited);\n }\n}\n\nexport function getGraphId(graph) {\n return graph?.id ?? ROOT_GRAPH_ID;\n}\n\nexport function getNodeGraphId(node) {\n if (!node) {\n return ROOT_GRAPH_ID;\n }\n return getGraphId(node.graph || app.graph);\n}\n\nexport function getGraphById(graphId, rootGraph = app.graph) {\n if (!graphId) {\n return rootGraph;\n }\n\n let foundGraph = null;\n traverseGraphs(rootGraph, (graph) => {\n if (!foundGraph && getGraphId(graph) === graphId) {\n foundGraph = graph;\n }\n });\n return foundGraph;\n}\n\nexport function getNodeFromGraph(graphId, nodeId) {\n const graph = getGraphById(graphId) || app.graph;\n if (!graph || typeof graph.getNodeById !== \"function\") {\n return null;\n }\n\n const numericId = typeof nodeId === \"string\" ? Number(nodeId) : nodeId;\n return graph.getNodeById(Number.isNaN(numericId) ? nodeId : numericId) || null;\n}\n\nexport function getAllGraphNodes(rootGraph = app.graph) {\n const nodes = [];\n traverseGraphs(rootGraph, (graph) => {\n if (Array.isArray(graph._nodes)) {\n for (const node of graph._nodes) {\n nodes.push({ graph, node });\n }\n }\n });\n return nodes;\n}\n\nexport function getNodeReference(node) {\n if (!node) {\n return null;\n }\n return {\n node_id: node.id,\n graph_id: getNodeGraphId(node),\n };\n}\n\nexport function getNodeKey(node) {\n if (!node) {\n return null;\n }\n return `${getNodeGraphId(node)}:${node.id}`;\n}\n\nexport function getWidgetByName(node, widgetName) {\n if (!node || !Array.isArray(node.widgets)) {\n return null;\n }\n\n return node.widgets.find((widget) => widget?.name === widgetName) || null;\n}\n\nexport function getWidgetSerializedValue(node, widgetName) {\n if (!node || !Array.isArray(node.widgets) || !Array.isArray(node.widgets_values)) {\n return undefined;\n }\n\n const widgetIndex = node.widgets.findIndex((widget) => widget?.name === widgetName);\n if (widgetIndex === -1) {\n return undefined;\n }\n\n return node.widgets_values[widgetIndex];\n}\n\nexport function getLinkFromGraph(graph, linkId) {\n if (!graph || graph.links == null) {\n return null;\n }\n\n if (isMapLike(graph.links)) {\n return graph.links.get(linkId) || null;\n }\n\n return graph.links[linkId] || null;\n}\n\nexport function chainCallback(object, property, callback) {\n if (object == undefined) {\n //This should not happen.\n console.error(\"Tried to add callback to non-existant object\")\n return;\n }\n if (property in object) {\n const callback_orig = object[property]\n object[property] = function () {\n const r = callback_orig.apply(this, arguments);\n callback.apply(this, arguments);\n return r\n };\n } else {\n object[property] = callback;\n }\n}\n\n/**\n * Show a toast notification\n * @param {Object|string} options - Toast options object or message string for backward compatibility\n * @param {string} [options.severity] - Message severity level (success, info, warn, error, secondary, contrast)\n * @param {string} [options.summary] - Short title for the toast\n * @param {any} [options.detail] - Detailed message content\n * @param {boolean} [options.closable] - Whether user can close the toast (default: true)\n * @param {number} [options.life] - Duration in milliseconds before auto-closing\n * @param {string} [options.group] - Group identifier for managing related toasts\n * @param {any} [options.styleClass] - Style class of the message\n * @param {any} [options.contentStyleClass] - Style class of the content\n * @param {string} [type] - Deprecated: severity type for backward compatibility\n */\nexport function showToast(options, type = 'info') {\n // Handle backward compatibility: showToast(message, type)\n if (typeof options === 'string') {\n options = {\n detail: options,\n severity: type\n };\n }\n \n // Set defaults\n const toastOptions = {\n severity: options.severity || 'info',\n summary: options.summary,\n detail: options.detail,\n closable: options.closable !== false, // default to true\n life: options.life,\n group: options.group,\n styleClass: options.styleClass,\n contentStyleClass: options.contentStyleClass\n };\n \n // Remove undefined properties\n Object.keys(toastOptions).forEach(key => {\n if (toastOptions[key] === undefined) {\n delete toastOptions[key];\n }\n });\n \n if (app && app.extensionManager && app.extensionManager.toast) {\n app.extensionManager.toast.add(toastOptions);\n } else {\n const message = toastOptions.detail || toastOptions.summary || 'No message';\n const severity = toastOptions.severity.toUpperCase();\n console.log(`${severity}: ${message}`);\n // Fallback alert for critical errors only\n if (toastOptions.severity === 'error') {\n alert(message);\n }\n }\n}\n\nexport function hideWidgetForGood(node, widget, suffix = \"\") {\n widget.origType = widget.type;\n widget.origComputeSize = widget.computeSize;\n widget.origSerializeValue = widget.serializeValue;\n widget.computeSize = () => [0, -4]; // -4 is due to the gap litegraph adds between widgets automatically\n widget.type = CONVERTED_TYPE + suffix;\n // widget.serializeValue = () => {\n // // Prevent serializing the widget if we have no input linked\n // const w = node.inputs?.find((i) => i.widget?.name === widget.name);\n // if (w?.link == null) {\n // return undefined;\n // }\n // return widget.origSerializeValue ? widget.origSerializeValue() : widget.value;\n // };\n\n // Hide any linked widgets, e.g. seed+seedControl\n if (widget.linkedWidgets) {\n for (const w of widget.linkedWidgets) {\n hideWidgetForGood(node, w, `:${widget.name}`);\n }\n }\n}\n\n// Update pattern to match both formats: or \nexport const LORA_PATTERN = //g;\n\nfunction isLoraStackInput(input) {\n return input?.type === \"LORA_STACK\";\n}\n\n// Get connected LORA_STACK chain nodes that feed into the current node\nexport function getConnectedInputLoraChainNodes(node) {\n const connectedNodes = [];\n\n if (!node?.inputs) {\n return connectedNodes;\n }\n\n for (const input of node.inputs) {\n if (!isLoraStackInput(input) || !input.link) {\n continue;\n }\n\n const link = getLinkFromGraph(node.graph, input.link);\n if (!link) {\n continue;\n }\n\n const sourceNode = node.graph?.getNodeById?.(link.origin_id);\n if (sourceNode && isLoraChainNode(sourceNode.comfyClass)) {\n connectedNodes.push(sourceNode);\n }\n }\n\n return connectedNodes;\n}\n\n// Get connected TriggerWord Toggle nodes that receive output from the current node\nexport function getConnectedTriggerToggleNodes(node) {\n const connectedNodes = [];\n\n if (!node?.outputs) {\n return connectedNodes;\n }\n\n for (const output of node.outputs) {\n if (!output?.links?.length) {\n continue;\n }\n\n for (const linkId of output.links) {\n const link = getLinkFromGraph(node.graph, linkId);\n if (!link) {\n continue;\n }\n\n const targetNode = node.graph?.getNodeById?.(link.target_id);\n if (targetNode && targetNode.comfyClass === \"TriggerWord Toggle (LoraManager)\") {\n connectedNodes.push(targetNode);\n }\n }\n }\n\n return connectedNodes;\n}\n\n// Extract active lora names from a node's widgets\nexport function getActiveLorasFromNode(node) {\n const activeLoraNames = new Set();\n\n // Handle Lora Cycler (single LoRA from cycler_config widget)\n if (node.comfyClass === \"Lora Cycler (LoraManager)\") {\n const cyclerWidget = node.widgets?.find(w => w.name === 'cycler_config');\n if (cyclerWidget?.value?.current_lora_filename) {\n activeLoraNames.add(cyclerWidget.value.current_lora_filename);\n }\n return activeLoraNames;\n }\n\n // Aggregator nodes do not own LoRA state directly; they only forward upstream stacks.\n if (isLoraStackAggregatorNode(node.comfyClass)) {\n return activeLoraNames;\n }\n\n // Handle Lora Stacker and Lora Randomizer (lorasWidget)\n let lorasWidget = node.lorasWidget;\n if (!lorasWidget && node.widgets) {\n lorasWidget = node.widgets.find(w => w.name === 'loras');\n }\n\n if (lorasWidget && lorasWidget.value) {\n lorasWidget.value.forEach(lora => {\n if (lora.active) {\n activeLoraNames.add(lora.name);\n }\n });\n }\n\n return activeLoraNames;\n}\n\n// Recursively collect all active loras from a node and its input chain\n// A node is considered active only if its mode is 0 (Always) or 3 (On Trigger)\nexport function collectActiveLorasFromChain(node, visited = new Set()) {\n // Prevent infinite loops from circular references\n const nodeKey = getNodeKey(node);\n if (!nodeKey) {\n return new Set();\n }\n if (visited.has(nodeKey)) {\n return new Set();\n }\n visited.add(nodeKey);\n\n // Check if node is active (mode 0 for Always, mode 3 for On Trigger)\n // Mode 2 is Never, Mode 4 is Bypass\n const isNodeActive = node.mode === undefined || node.mode === 0 || node.mode === 3;\n \n if (!isNodeActive) {\n return new Set();\n }\n\n // Get active loras from current node only if node is active\n const allActiveLoraNames = getActiveLorasFromNode(node);\n \n // Get connected input LORA_STACK chain nodes and collect their active loras\n const inputChainNodes = getConnectedInputLoraChainNodes(node);\n for (const chainNode of inputChainNodes) {\n const upstreamLoras = collectActiveLorasFromChain(chainNode, visited);\n upstreamLoras.forEach(name => allActiveLoraNames.add(name));\n }\n \n return allActiveLoraNames;\n}\n\n// Update trigger words for connected toggle nodes\nexport function updateConnectedTriggerWords(node, loraNames) {\n const connectedNodes = getConnectedTriggerToggleNodes(node);\n if (connectedNodes.length > 0) {\n const nodeIds = connectedNodes\n .map((connectedNode) => getNodeReference(connectedNode))\n .filter((reference) => reference !== null);\n\n if (nodeIds.length === 0) {\n return;\n }\n\n fetch(\"/api/lm/loras/get_trigger_words\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n lora_names: Array.from(loraNames),\n node_ids: nodeIds\n })\n }).catch(err => console.error(\"Error fetching trigger words:\", err));\n }\n}\n\nexport function mergeLoras(lorasText, lorasArr) {\n // Parse lorasText into a map: name -> {strength, clipStrength}\n const parsedLoras = {};\n let match;\n LORA_PATTERN.lastIndex = 0;\n while ((match = LORA_PATTERN.exec(lorasText)) !== null) {\n const name = match[1];\n const modelStrength = Number(match[2]);\n const clipStrength = match[3] ? Number(match[3]) : modelStrength;\n parsedLoras[name] = { strength: modelStrength, clipStrength };\n }\n\n // Build result array in the order of lorasArr\n const result = [];\n const usedNames = new Set();\n\n for (const lora of lorasArr) {\n if (parsedLoras[lora.name]) {\n result.push({\n name: lora.name,\n strength: lora.strength !== undefined ? lora.strength : parsedLoras[lora.name].strength,\n active: lora.active !== undefined ? lora.active : true,\n expanded: lora.expanded !== undefined ? lora.expanded : false,\n clipStrength: lora.clipStrength !== undefined ? lora.clipStrength : parsedLoras[lora.name].clipStrength,\n });\n usedNames.add(lora.name);\n }\n }\n\n // Add any new loras from lorasText that are not in lorasArr, in their text order\n for (const name in parsedLoras) {\n if (!usedNames.has(name)) {\n result.push({\n name,\n strength: parsedLoras[name].strength,\n active: true,\n clipStrength: parsedLoras[name].clipStrength,\n });\n }\n }\n\n return result;\n}\n\n/**\n * Find the actual input element for a widget\n * @param {Object} node - The node instance\n * @param {Object} widget - The widget to find input element for\n * @returns {Promise} The input element or null\n */\nasync function findWidgetInputElement(node, widget) {\n if (widget.inputEl && document.body.contains(widget.inputEl)) {\n return widget.inputEl;\n }\n\n const nodeId = node.id;\n const widgetName = widget.name;\n const maxAttempts = 20;\n const searchInterval = 50;\n\n const searchForInput = (attempt = 0) => {\n return new Promise((resolve) => {\n const doSearch = () => {\n let inputElement = null;\n\n // PRIORITY 1: Use data-node-id attribute (most reliable)\n // Always try this first, regardless of mode - Vue elements may still exist after mode switch\n const nodeContainer = document.querySelector(`[data-node-id=\"${nodeId}\"]`);\n if (nodeContainer) {\n // For text widgets, specifically look for textarea (not checkbox/toggle inputs)\n if (widgetName === 'text') {\n const textarea = nodeContainer.querySelector('textarea');\n if (textarea) {\n inputElement = textarea;\n console.log(`[Lora Manager] Found textarea for widget \"${widgetName}\" on node ${nodeId} via data-node-id`);\n }\n } else {\n // For other widgets, find input within widget containers\n const widgetContainers = nodeContainer.querySelectorAll('.lg-node-widget');\n for (const container of widgetContainers) {\n const input = container.querySelector('input:not([type=\"checkbox\"]), textarea');\n if (input) {\n inputElement = input;\n console.log(`[Lora Manager] Found input element for widget \"${widgetName}\" on node ${nodeId} via data-node-id`);\n break;\n }\n }\n }\n }\n\n // PRIORITY 2: Fallback - heuristic search using widget containers\n if (!inputElement) {\n const allWidgetContainers = document.querySelectorAll('.lg-node-widget, .dom-widget');\n\n for (const container of allWidgetContainers) {\n const hasInput = !!container.querySelector('input, textarea');\n if (!hasInput) continue;\n\n const textContent = container.textContent.toLowerCase();\n const containsWidgetName = textContent.includes(widgetName.toLowerCase());\n const containsNodeTitle = textContent.includes(node.title?.toLowerCase() || '');\n\n // For text widgets, check if it's a textarea\n const isTextareaWidget = widgetName === 'text' && container.querySelector('textarea');\n\n if (containsWidgetName || containsNodeTitle || isTextareaWidget) {\n inputElement = container.querySelector('input, textarea');\n console.log(`[Lora Manager] Found input element for widget \"${widgetName}\" on node ${nodeId} via heuristic`);\n break;\n }\n }\n }\n\n if (inputElement) {\n resolve(inputElement);\n } else if (attempt < maxAttempts) {\n setTimeout(() => searchForInput(attempt + 1).then(resolve), searchInterval);\n } else {\n console.warn(`[Lora Manager] Could not find input element for widget \"${widgetName}\" on node ${nodeId} after ${maxAttempts} attempts`);\n resolve(null);\n }\n };\n doSearch();\n });\n };\n\n return searchForInput();\n}\n\n/**\n * Initialize autocomplete for an input widget and setup cleanup\n * @param {Object} node - The node instance\n * @param {Object} inputWidget - The input widget to add autocomplete to\n * @param {Function} originalCallback - The original callback function\n * @param {string} [modelType='loras'] - The model type used by the autocomplete API\n * @param {Object} [autocompleteOptions] - Additional options for the autocomplete instance\n * @returns {Function} Enhanced callback function with autocomplete\n */\nexport function setupInputWidgetWithAutocomplete(node, inputWidget, originalCallback, modelType = 'loras', autocompleteOptions = {}) {\n const defaultOptions = {\n maxItems: 20,\n minChars: 1,\n debounceDelay: 200,\n };\n const mergedOptions = { ...defaultOptions, ...autocompleteOptions };\n\n setupAutocompleteCleanup(node);\n\n // Track rendering mode changes per node\n let lastVueNodesMode = typeof LiteGraph !== 'undefined' ? LiteGraph.vueNodesMode : false;\n\n const initializeAutocomplete = async () => {\n if (node.autocomplete) {\n console.log(`[Lora Manager] Autocomplete already initialized for widget \"${inputWidget.name}\" on node ${node.id}`);\n return;\n }\n\n try {\n let inputElement = null;\n\n // PRIORITY 1: Always prefer widget.inputEl if it exists (even if not yet in DOM)\n // This is the authoritative element created by ComfyUI\n if (inputWidget.inputEl) {\n inputElement = inputWidget.inputEl;\n // If not yet in DOM, wait for it to be added\n if (!document.body.contains(inputElement)) {\n console.log(`[Lora Manager] widget.inputEl exists but not in DOM yet, waiting for node ${node.id}`);\n const maxWait = 1000; // 1 second max\n const checkInterval = 50;\n let waited = 0;\n while (!document.body.contains(inputElement) && waited < maxWait) {\n await new Promise(r => setTimeout(r, checkInterval));\n waited += checkInterval;\n }\n if (!document.body.contains(inputElement)) {\n console.warn(`[Lora Manager] widget.inputEl still not in DOM after ${maxWait}ms for node ${node.id}`);\n inputElement = null; // Fall through to DOM search\n }\n }\n if (inputElement) {\n console.log(`[Lora Manager] Using widget.inputEl for widget \"${inputWidget.name}\" on node ${node.id}`);\n }\n }\n\n // PRIORITY 2: DOM search only if widget.inputEl doesn't exist\n if (!inputElement) {\n console.log(`[Lora Manager] Searching DOM for input element for widget \"${inputWidget.name}\" on node ${node.id}`);\n inputElement = await findWidgetInputElement(node, inputWidget);\n }\n\n if (inputElement) {\n const autocomplete = new AutoComplete(inputElement, modelType, mergedOptions);\n node.autocomplete = autocomplete;\n console.log(`[Lora Manager] Autocomplete initialized for widget \"${inputWidget.name}\" on node ${node.id}`);\n } else {\n console.warn(`[Lora Manager] Could not find input element for widget \"${inputWidget.name}\" on node ${node.id}`);\n }\n } catch (error) {\n console.error('[Lora Manager] Error initializing autocomplete:', error);\n }\n };\n\n const checkAndInvalidateAutocomplete = () => {\n // Check for rendering mode change\n const currentMode = typeof LiteGraph !== 'undefined' ? LiteGraph.vueNodesMode : false;\n if (currentMode !== lastVueNodesMode) {\n lastVueNodesMode = currentMode;\n if (node.autocomplete) {\n console.log(`[Lora Manager] Rendering mode changed, reinitializing autocomplete for node ${node.id}`);\n node.autocomplete.destroy();\n node.autocomplete = null;\n }\n return true;\n }\n\n // Check if existing autocomplete's input element is still valid\n if (node.autocomplete) {\n const currentInputEl = node.autocomplete.inputElement;\n if (!currentInputEl || !document.body.contains(currentInputEl)) {\n console.log(`[Lora Manager] Autocomplete element detached, reinitializing for node ${node.id}`);\n node.autocomplete.destroy();\n node.autocomplete = null;\n return true;\n }\n\n // Check if autocomplete is bound to wrong element (different from widget.inputEl)\n // Only do this check if widget.inputEl is actually in the DOM - it may be stale\n if (inputWidget.inputEl && document.body.contains(inputWidget.inputEl) && currentInputEl !== inputWidget.inputEl) {\n console.log(`[Lora Manager] Autocomplete bound to wrong element, rebinding for node ${node.id}`);\n node.autocomplete.destroy();\n node.autocomplete = null;\n return true;\n }\n\n // Check if events need rebinding (element exists but events not bound)\n // This can happen when Vue moves the element in the DOM\n if (node.autocomplete.needsRebind()) {\n console.log(`[Lora Manager] Autocomplete events need rebinding for node ${node.id}`);\n node.autocomplete.rebindEvents();\n }\n }\n\n return false;\n };\n\n const enhancedCallback = (value) => {\n // Check validity and invalidate if needed\n checkAndInvalidateAutocomplete();\n\n if (!node.autocomplete) {\n initializeAutocomplete();\n }\n\n if (typeof originalCallback === \"function\") {\n originalCallback.call(node, value);\n }\n };\n\n return enhancedCallback;\n}\n\n/**\n * Setup autocomplete cleanup when node is removed\n * @param {Object} node - The node instance\n */\nexport function setupAutocompleteCleanup(node) {\n // Override onRemoved to cleanup autocomplete\n const originalOnRemoved = node.onRemoved;\n node.onRemoved = function() {\n if (this.autocomplete) {\n this.autocomplete.destroy();\n this.autocomplete = null;\n }\n \n if (originalOnRemoved) {\n originalOnRemoved.call(this);\n }\n };\n}\n\n/**\n * Forward middle mouse (button 1) pointer events from a container to the ComfyUI canvas,\n * so that workflow panning works even when the pointer is over a DOM widget.\n * @param {HTMLElement} container - The root DOM element of the widget\n */\nexport function forwardMiddleMouseToCanvas(container) {\n if (!container) return;\n // Forward pointerdown\n container.addEventListener('pointerdown', (event) => {\n if (event.button === 1) {\n app.canvas.processMouseDown(event);\n }\n });\n // Forward pointermove\n container.addEventListener('pointermove', (event) => {\n if ((event.buttons & 4) === 4) {\n app.canvas.processMouseMove(event);\n }\n });\n // Forward pointerup\n container.addEventListener('pointerup', (event) => {\n if (event.button === 1) {\n app.canvas.processMouseUp(event);\n }\n });\n}\n\n/**\n * Forward wheel events from a container to the ComfyUI canvas for zooming,\n * unless the container has scrollable content.\n * This allows canvas zoom to work when hovering over DOM widgets.\n * @param {HTMLElement} container - The root DOM element of the widget\n * @param {Object} options - Configuration options\n * @param {boolean} options.captureWheel - If true, always capture wheel events (default: false)\n */\nexport function forwardWheelToCanvas(container, options = {}) {\n if (!container) return;\n\n const { captureWheel = false } = options;\n\n container.addEventListener('wheel', (event) => {\n // If explicitly capturing wheel (for internal scrolling), stop here\n if (captureWheel) {\n event.stopPropagation();\n return;\n }\n\n // Access ComfyUI app from global window\n const comfyApp = window.app;\n if (!comfyApp || !comfyApp.canvas || typeof comfyApp.canvas.processMouseWheel !== 'function') {\n return;\n }\n\n const deltaX = event.deltaX;\n const deltaY = event.deltaY;\n const isHorizontal = Math.abs(deltaX) > Math.abs(deltaY);\n\n // 1. Handle pinch-to-zoom (ctrlKey is true for pinch-to-zoom on most browsers)\n if (event.ctrlKey) {\n event.preventDefault();\n event.stopPropagation();\n comfyApp.canvas.processMouseWheel(event);\n return;\n }\n\n // 2. Horizontal scroll: pass to canvas (widgets usually don't scroll horizontally)\n if (isHorizontal) {\n event.preventDefault();\n event.stopPropagation();\n comfyApp.canvas.processMouseWheel(event);\n return;\n }\n\n // 3. Vertical scrolling: check if container is scrollable\n const canScrollY = container.scrollHeight > container.clientHeight;\n\n if (canScrollY) {\n // Container is scrollable, let it handle the wheel event but stop propagation\n // to prevent the canvas from zooming while the user is trying to scroll\n event.stopPropagation();\n } else {\n // Container is NOT scrollable, forward the wheel event to the canvas\n // so it can trigger zoom in/out\n event.preventDefault();\n event.stopPropagation();\n comfyApp.canvas.processMouseWheel(event);\n }\n }, { passive: false });\n}\n\n// Marks scrollable containers whose wheel scrolling must win over canvas zoom.\nconst LM_WHEEL_CLASS = 'lm-wheel-scrollable';\nlet lmWheelHookInstalled = false;\n\n/**\n * Keep vertical wheel scrolling inside a scrollable widget container, even in\n * Nodes 2.0 / Vue mode where ComfyUI's wheel→zoom handler runs on the document\n * in the capture phase (outer than any container-level listener).\n * Installs a single capture-phase hook on `window` (the outermost dispatch\n * point). When the wheel is over a marked, scrollable element, we manually\n * scroll it and fully consume the event so canvas zoom never sees it.\n */\nexport function enableListWheelScroll(container) {\n if (!container) return;\n container.classList.add(LM_WHEEL_CLASS);\n\n if (lmWheelHookInstalled) return;\n lmWheelHookInstalled = true;\n\n window.addEventListener('wheel', (event) => {\n // Let pinch/zoom and horizontal gestures pass through.\n if (event.ctrlKey) return;\n if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) return;\n\n const target = event.target;\n if (!target || typeof target.closest !== 'function') return;\n const el = target.closest(`.${LM_WHEEL_CLASS}`);\n if (!el) return;\n\n const canScrollY = el.scrollHeight > el.clientHeight + 1;\n if (!canScrollY) return;\n\n // Translate deltaMode to approximate pixels.\n const unit = event.deltaMode === 1 ? 16\n : event.deltaMode === 2 ? el.clientHeight\n : 1;\n\n el.scrollTop += event.deltaY * unit;\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }, { capture: true, passive: false });\n}\n\n// Get connected Lora Pool node from pool_config input\nexport function getConnectedPoolConfigNode(node) {\n if (!node?.inputs) {\n return null;\n }\n\n for (const input of node.inputs) {\n if (input.name !== \"pool_config\" || !input.link) {\n continue;\n }\n\n const link = getLinkFromGraph(node.graph, input.link);\n if (!link) {\n continue;\n }\n\n const sourceNode = node.graph?.getNodeById?.(link.origin_id);\n if (sourceNode && sourceNode.comfyClass === \"Lora Pool (LoraManager)\") {\n return sourceNode;\n }\n }\n\n return null;\n}\n\n// Get pool config widget value from connected Lora Pool node\nexport function getPoolConfigFromConnectedNode(node) {\n const poolNode = getConnectedPoolConfigNode(node);\n if (!poolNode) {\n return null;\n }\n\n const isNodeActive = poolNode.mode === undefined || poolNode.mode === 0 || poolNode.mode === 3;\n if (!isNodeActive) {\n return null;\n }\n\n const poolWidget = poolNode.widgets?.find(w => w.name === \"pool_config\");\n return poolWidget?.value || null;\n}\n\n// Helper function to find and update downstream Lora Loader nodes\nexport function updateDownstreamLoaders(startNode, visited = new Set()) {\n const nodeKey = getNodeKey(startNode);\n if (!nodeKey || visited.has(nodeKey)) return;\n visited.add(nodeKey);\n\n // Check each output link\n if (startNode.outputs) {\n for (const output of startNode.outputs) {\n if (output.links) {\n for (const linkId of output.links) {\n const link = getLinkFromGraph(startNode.graph, linkId);\n if (link) {\n const targetNode = startNode.graph?.getNodeById?.(link.target_id);\n\n // If target is a Lora Loader, collect all active loras in the chain and update\n if (\n targetNode &&\n targetNode.comfyClass === \"Lora Loader (LoraManager)\"\n ) {\n const allActiveLoraNames =\n collectActiveLorasFromChain(targetNode);\n updateConnectedTriggerWords(targetNode, allActiveLoraNames);\n }\n // If target is another LORA_STACK chain node, recursively check its outputs\n else if (targetNode && isLoraChainNode(targetNode.comfyClass)) {\n updateDownstreamLoaders(targetNode, visited);\n }\n }\n }\n }\n }\n }\n}\n","import { createApp, type App as VueApp } from 'vue'\nimport PrimeVue from 'primevue/config'\nimport LoraPoolWidget from '@/components/LoraPoolWidget.vue'\nimport LoraRandomizerWidget from '@/components/LoraRandomizerWidget.vue'\nimport LoraCyclerWidget from '@/components/LoraCyclerWidget.vue'\nimport JsonDisplayWidget from '@/components/JsonDisplayWidget.vue'\nimport AutocompleteTextWidget from '@/components/AutocompleteTextWidget.vue'\nimport LoraInfoWidget from '@/components/LoraInfoWidget.vue'\nimport { createVueWidgetCleanup } from './vue-widget-cleanup'\nimport type { LoraPoolConfig, RandomizerConfig, CyclerConfig } from './composables/types'\nimport {\n setupModeChangeHandler,\n createModeChangeCallback,\n LORA_CHAIN_NODE_TYPES\n} from './mode-change-handler'\n\nconst LORA_POOL_WIDGET_MIN_WIDTH = 500\nconst LORA_POOL_WIDGET_MIN_HEIGHT = 520\nconst LORA_RANDOMIZER_WIDGET_MIN_WIDTH = 500\nconst LORA_RANDOMIZER_WIDGET_MIN_HEIGHT = 448\nconst LORA_RANDOMIZER_WIDGET_MAX_HEIGHT = LORA_RANDOMIZER_WIDGET_MIN_HEIGHT\nconst LORA_CYCLER_WIDGET_MIN_WIDTH = 380\nconst LORA_CYCLER_WIDGET_MIN_HEIGHT = 408\nconst LORA_CYCLER_WIDGET_MAX_HEIGHT = LORA_CYCLER_WIDGET_MIN_HEIGHT\nconst JSON_DISPLAY_WIDGET_MIN_WIDTH = 300\nconst JSON_DISPLAY_WIDGET_MIN_HEIGHT = 200\nconst LORA_INFO_WIDGET_MIN_WIDTH = 300\nconst LORA_INFO_WIDGET_MIN_HEIGHT = 200\nconst AUTOCOMPLETE_TEXT_WIDGET_MIN_HEIGHT = 60\nconst AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT = 100\n// Per-modelType min size hints for node initial sizing.\n// These are returned from the factory so ComfyUI's _initialMinSize mechanism\n// gives the node a sensible default width (and height for prompt/embeddings).\nconst AUTOCOMPLETE_TEXT_MIN_WIDTH_DEFAULT = 400\nconst AUTOCOMPLETE_TEXT_MIN_HEIGHT_DEFAULT = 300\nconst AUTOCOMPLETE_METADATA_VERSION = 1\nconst LORA_MANAGER_WIDGET_IDS_PROPERTY = '__lm_widget_ids'\n\n// @ts-ignore - ComfyUI external module\nimport { app } from '../../../scripts/app.js'\n// @ts-ignore - ComfyUI external module\nimport { api } from '../../../scripts/api.js'\n// @ts-ignore\nimport { getPoolConfigFromConnectedNode, getActiveLorasFromNode, updateConnectedTriggerWords, updateDownstreamLoaders } from '../../web/comfyui/utils.js'\n\nfunction forwardMiddleMouseToCanvas(container: HTMLElement) {\n if (!container) return\n\n container.addEventListener('pointerdown', (event) => {\n if (event.button === 1) {\n const canvas = app.canvas\n if (canvas && typeof canvas.processMouseDown === 'function') {\n canvas.processMouseDown(event)\n }\n }\n })\n\n container.addEventListener('pointermove', (event) => {\n if ((event.buttons & 4) === 4) {\n const canvas = app.canvas\n if (canvas && typeof canvas.processMouseMove === 'function') {\n canvas.processMouseMove(event)\n }\n }\n })\n\n container.addEventListener('pointerup', (event) => {\n if (event.button === 1) {\n const canvas = app.canvas\n if (canvas && typeof canvas.processMouseUp === 'function') {\n canvas.processMouseUp(event)\n }\n }\n })\n}\n\nconst vueApps = new Map()\nlet autocompleteTextWidgetInstanceId = 0\n\nexport function createAutocompleteTextWidgetInstanceId() {\n autocompleteTextWidgetInstanceId += 1\n return autocompleteTextWidgetInstanceId\n}\n\n// Cache for dynamically loaded addLorasWidget module\nlet addLorasWidgetCache: any = null\n\n// @ts-ignore\nfunction createLoraPoolWidget(node) {\n const container = document.createElement('div')\n container.id = `lora-pool-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n let internalValue: LoraPoolConfig | undefined\n\n const widget = node.addDOMWidget(\n 'pool_config',\n 'LORA_POOL_CONFIG',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: LoraPoolConfig) {\n internalValue = v\n // ComfyUI automatically calls widget.callback after setValue\n // No need for custom onSetValue mechanism\n },\n serialize: true,\n // Per dev guide: providing getMinHeight via options allows the system to\n // skip expensive DOM measurements during rendering loop, improving performance\n getMinHeight() {\n return LORA_POOL_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n const vueApp = createApp(LoraPoolWidget, {\n widget,\n node\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id, vueApp)\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_POOL_WIDGET_MIN_WIDTH\n const minHeight = LORA_POOL_WIDGET_MIN_HEIGHT\n\n return { minHeight, minWidth }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id)\n }\n }\n\n return { widget }\n}\n\n// @ts-ignore\nfunction createLoraRandomizerWidget(node) {\n const container = document.createElement('div')\n container.id = `lora-randomizer-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n // Initialize with default config to avoid sending undefined/empty string to backend\n const defaultConfig: RandomizerConfig = {\n count_mode: 'range',\n count_fixed: 3,\n count_min: 2,\n count_max: 5,\n model_strength_min: 0.0,\n model_strength_max: 1.0,\n use_same_clip_strength: true,\n clip_strength_min: 0.0,\n clip_strength_max: 1.0,\n roll_mode: 'fixed',\n use_recommended_strength: false,\n recommended_strength_scale_min: 0.5,\n recommended_strength_scale_max: 1.0,\n }\n let internalValue: RandomizerConfig = defaultConfig\n\n const widget = node.addDOMWidget(\n 'randomizer_config',\n 'RANDOMIZER_CONFIG',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: RandomizerConfig) {\n internalValue = v\n // ComfyUI automatically calls widget.callback after setValue\n // No need for custom onSetValue mechanism\n },\n serialize: true,\n getMinHeight() {\n return LORA_RANDOMIZER_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n // Add method to get pool config from connected node\n node.getPoolConfig = () => getPoolConfigFromConnectedNode(node)\n\n // Handle roll event from Vue component\n widget.onRoll = (randomLoras: any[]) => {\n // Find the loras widget on this node and update it\n const lorasWidget = node.widgets.find((w: any) => w.name === 'loras')\n if (lorasWidget) {\n lorasWidget.value = randomLoras\n }\n }\n\n const vueApp = createApp(LoraRandomizerWidget, {\n widget,\n node,\n api\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 10000, vueApp) // Offset to avoid collision with pool widget\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_RANDOMIZER_WIDGET_MIN_WIDTH\n const minHeight = LORA_RANDOMIZER_WIDGET_MIN_HEIGHT\n const maxHeight = LORA_RANDOMIZER_WIDGET_MAX_HEIGHT\n\n return { minHeight, minWidth, maxHeight }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 10000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 10000)\n }\n }\n\n return { widget }\n}\n\n// @ts-ignore\nfunction createLoraCyclerWidget(node) {\n const container = document.createElement('div')\n container.id = `lora-cycler-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n const defaultConfig: CyclerConfig = {\n current_index: 1,\n total_count: 0,\n pool_config_hash: '',\n model_strength: 1.0,\n clip_strength: 1.0,\n use_same_clip_strength: true,\n use_preset_strength: false,\n preset_strength_scale: 1.0,\n sort_by: 'filename',\n current_lora_name: '',\n current_lora_filename: '',\n repeat_count: 1,\n repeat_used: 0,\n is_paused: false,\n include_no_lora: false,\n }\n let internalValue: CyclerConfig | undefined = defaultConfig\n\n const widget = node.addDOMWidget(\n 'cycler_config',\n 'CYCLER_CONFIG',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: CyclerConfig) {\n const oldFilename = internalValue?.current_lora_filename\n internalValue = v\n // ComfyUI automatically calls widget.callback after setValue\n // No need for custom onSetValue mechanism\n // Update downstream loaders when the active LoRA filename changes\n if (oldFilename !== v?.current_lora_filename) {\n updateDownstreamLoaders(node)\n }\n },\n serialize: true,\n getMinHeight() {\n return LORA_CYCLER_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n // Add method to get pool config from connected node\n node.getPoolConfig = () => getPoolConfigFromConnectedNode(node)\n\n const vueApp = createApp(LoraCyclerWidget, {\n widget,\n node,\n api\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 30000, vueApp) // Offset to avoid collision with other widgets\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_CYCLER_WIDGET_MIN_WIDTH\n const minHeight = LORA_CYCLER_WIDGET_MIN_HEIGHT\n const maxHeight = LORA_CYCLER_WIDGET_MAX_HEIGHT\n\n return { minHeight, minWidth, maxHeight }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 30000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 30000)\n }\n }\n\n return { widget }\n}\n\n// @ts-ignore\nfunction createJsonDisplayWidget(node) {\n const container = document.createElement('div')\n container.id = `json-display-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n let internalValue: Record | undefined\n\n const widget = node.addDOMWidget(\n 'metadata',\n 'JSON_DISPLAY',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: Record) {\n internalValue = v\n if (typeof widget.onSetValue === 'function') {\n widget.onSetValue(v)\n }\n },\n serialize: false, // Display-only widget - don't save metadata in workflows\n getMinHeight() {\n return JSON_DISPLAY_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n const vueApp = createApp(JsonDisplayWidget, {\n widget,\n node\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 20000, vueApp) // Offset to avoid collision with other widgets\n\n widget.computeLayoutSize = () => {\n const minWidth = JSON_DISPLAY_WIDGET_MIN_WIDTH\n const minHeight = JSON_DISPLAY_WIDGET_MIN_HEIGHT\n\n return { minHeight, minWidth }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 20000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 20000)\n }\n }\n\n return { widget }\n}\n\nconst widgetInputOptions: Map = new Map()\n\nfunction getSerializableWidgetNames(node: any): string[] {\n return (node.widgets || [])\n .filter((widget: any) => widget && widget.serialize !== false)\n .map((widget: any) => widget.name)\n}\n\nfunction createAutocompleteMetadataValue(textWidgetName = 'text') {\n return {\n version: AUTOCOMPLETE_METADATA_VERSION,\n textWidgetName\n }\n}\n\nfunction shouldBypassAutocompleteWidgetMigration(\n node: any,\n widgetValues: unknown[]\n): boolean {\n const inputDefs = node?.constructor?.nodeData?.inputs\n if (!inputDefs || !Array.isArray(widgetValues)) {\n return false\n }\n\n const widgetNames = new Set((node.widgets || []).map((widget: any) => widget?.name))\n const hasAutocompleteMetadataWidget = Array.from(widgetNames).some((name) =>\n typeof name === 'string' && name.startsWith('__lm_autocomplete_meta_')\n )\n\n if (!hasAutocompleteMetadataWidget) {\n return false\n }\n\n const originalWidgetsInputs = Object.values(inputDefs).filter((input: any) =>\n widgetNames.has(input.name) || input.forceInput\n )\n\n const widgetIndexHasForceInput = originalWidgetsInputs.flatMap((input: any) =>\n input.control_after_generate\n ? [!!input.forceInput, false]\n : [!!input.forceInput]\n )\n\n const result = (\n widgetIndexHasForceInput.some(Boolean) &&\n widgetIndexHasForceInput.length === widgetValues.length\n )\n\n return result\n}\n\nfunction remapWidgetValuesByName(\n widgetValues: unknown[],\n savedWidgetNames: string[],\n currentWidgetNames: string[]\n): unknown[] {\n const valueByName = new Map()\n savedWidgetNames.forEach((name, index) => {\n if (index < widgetValues.length) {\n valueByName.set(name, widgetValues[index])\n }\n })\n\n const currentWidgetNameSet = new Set(currentWidgetNames)\n const remappedValues: unknown[] = []\n for (const name of currentWidgetNames) {\n if (valueByName.has(name)) {\n remappedValues.push(valueByName.get(name))\n }\n }\n\n // Append values for saved widget names that are NOT in the current widget\n // list (e.g. forceInput widgets like \"seed\" that haven't been converted\n // back to DOM widgets yet at configure time). Without these, the\n // resulting array may accidentally match the length of ComfyUI's\n // widgetIndexHasForceInput array, causing migrateWidgetsValues to\n // incorrectly filter out the wrong values and drop real widget content.\n for (const name of savedWidgetNames) {\n if (!currentWidgetNameSet.has(name) && valueByName.has(name)) {\n remappedValues.push(valueByName.get(name))\n }\n }\n\n return remappedValues\n}\n\nfunction injectDefaultAutocompleteMetadataValues(\n widgetValues: unknown[],\n currentWidgetNames: string[]\n): unknown[] {\n const repairedValues: unknown[] = []\n let legacyValueIndex = 0\n\n for (const widgetName of currentWidgetNames) {\n if (widgetName.startsWith('__lm_autocomplete_meta_')) {\n const textWidgetName = widgetName.replace('__lm_autocomplete_meta_', '') || 'text'\n repairedValues.push(createAutocompleteMetadataValue(textWidgetName))\n continue\n }\n\n if (legacyValueIndex < widgetValues.length) {\n repairedValues.push(widgetValues[legacyValueIndex])\n legacyValueIndex++\n }\n }\n\n return repairedValues\n}\n\nfunction normalizeAutocompleteWidgetValues(node: any, info: any) {\n if (!info || !Array.isArray(info.widgets_values)) {\n return\n }\n\n const currentWidgetNames = getSerializableWidgetNames(node)\n\n if (currentWidgetNames.length === 0) {\n return\n }\n\n const savedWidgetNames = info.properties?.[LORA_MANAGER_WIDGET_IDS_PROPERTY]\n\n if (Array.isArray(savedWidgetNames) && savedWidgetNames.length > 0) {\n const remappedValues = remapWidgetValuesByName(\n info.widgets_values,\n savedWidgetNames,\n currentWidgetNames\n )\n info.widgets_values = remappedValues\n return\n }\n\n const metadataWidgetCount = currentWidgetNames.filter((name) =>\n name.startsWith('__lm_autocomplete_meta_')\n ).length\n\n if (\n metadataWidgetCount > 0 &&\n info.widgets_values.length === currentWidgetNames.length - metadataWidgetCount\n ) {\n const repairedValues = injectDefaultAutocompleteMetadataValues(\n info.widgets_values,\n currentWidgetNames\n )\n info.widgets_values = repairedValues\n }\n}\n\nfunction applyAutocompleteTextLayoutFix(\n widget: any,\n _container: HTMLElement | undefined,\n isVueMode: boolean\n): void {\n // In Vue rendering mode the WidgetDOM wrapper handles sizing, so we\n // only provide a computeSize hint and leave the container unconstrained.\n // In canvas mode we clear all custom sizing so LiteGraph's default\n // widget-area layout takes over. Neither path sets a hard max-height;\n // the textarea can grow freely (e.g. in app mode where\n // [&_textarea]:resize-y applies).\n if (isVueMode) {\n ;(widget as any).computeLayoutSize = undefined\n widget.computeSize = (width?: number) =>\n [width ?? 200, AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT - 4]\n } else {\n delete (widget as any).computeLayoutSize\n delete (widget as any).computeSize\n }\n}\n\n// Listen for Vue DOM mode setting changes and dispatch custom event\nconst initVueDomModeListener = () => {\n if (app.ui?.settings?.addEventListener) {\n app.ui.settings.addEventListener('Comfy.VueNodes.Enabled.change', () => {\n // Use requestAnimationFrame to ensure the setting value has been updated\n // before we read it (the event may fire before internal state updates)\n requestAnimationFrame(() => {\n const isVueDomMode = app.ui?.settings?.getSettingValue?.('Comfy.VueNodes.Enabled') ?? false\n\n if (app.graph?.nodes) {\n for (const node of app.graph.nodes) {\n const textWidget = node.widgets?.find(\n (w: any) => w.type === 'AUTOCOMPLETE_TEXT_LORAS'\n )\n if (!textWidget) continue\n const container = (textWidget as any).element as HTMLElement | undefined\n applyAutocompleteTextLayoutFix(textWidget, container, isVueDomMode)\n }\n }\n\n requestAnimationFrame(() => {\n for (const nodeEl of document.querySelectorAll('[data-node-id]')) {\n const grid = nodeEl.querySelector('[data-testid=\"node-widgets\"]') as HTMLElement | null\n if (!grid) continue\n const nodeId = nodeEl.getAttribute('data-node-id')\n const node = app.graph?.getNodeById(nodeId as any)\n if (!node) continue\n const rows: string[] = []\n let needsFix = false\n for (const w of node.widgets ?? []) {\n if (w.type === 'LORA_MANAGER_AUTOCOMPLETE_METADATA') {\n rows.push('min-content')\n } else if (w.name === 'loras') {\n rows.push('auto')\n } else if (w.name === 'text' && w.type === 'AUTOCOMPLETE_TEXT_LORAS') {\n rows.push(isVueDomMode ? 'min-content' : 'auto')\n needsFix = true\n } else {\n rows.push('auto')\n }\n }\n if (needsFix) {\n grid.style.gridTemplateRows = rows.join(' ')\n }\n }\n })\n\n app.canvas?.setDirty(true, true)\n\n document.dispatchEvent(new CustomEvent('lora-manager:vue-mode-change', {\n detail: { isVueDomMode }\n }))\n })\n })\n }\n}\n\n// Initialize listener when app is ready\nif (app.ui?.settings) {\n initVueDomModeListener()\n} else {\n // Defer until app is ready\n const checkAppReady = setInterval(() => {\n if (app.ui?.settings) {\n initVueDomModeListener()\n clearInterval(checkAppReady)\n }\n }, 100)\n}\n\n// @ts-ignore\nfunction createLoraInfoWidget(node: any) {\n const container = document.createElement('div')\n container.id = `lora-info-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n let internalValue: { name?: string; notes?: string; filePath?: string } | undefined\n\n const widget = node.addDOMWidget(\n 'lora_info_display',\n 'LORA_INFO_DISPLAY',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: { name?: string; notes?: string; filePath?: string }) {\n internalValue = v\n if (typeof widget.onSetValue === 'function') {\n widget.onSetValue(v)\n }\n },\n serialize: false, // Display-only widget\n getMinHeight() {\n return LORA_INFO_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n const vueApp = createApp(LoraInfoWidget, {\n widget,\n node,\n api,\n app,\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 40000, vueApp) // Offset to avoid collision\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_INFO_WIDGET_MIN_WIDTH\n const minHeight = LORA_INFO_WIDGET_MIN_HEIGHT\n\n return { minHeight, minWidth }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 40000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 40000)\n }\n }\n\n return { widget }\n}\n\n// Factory function for creating autocomplete text widgets\n// @ts-ignore\nfunction createAutocompleteTextWidgetFactory(\n node: any,\n widgetName: string,\n modelType: 'loras' | 'embeddings' | 'prompt',\n inputOptions: { placeholder?: string } = {}\n) {\n const metadataWidgetName = `__lm_autocomplete_meta_${widgetName}`\n\n let container: HTMLElement | null = null\n\n const existingContainers = document.querySelectorAll(\n '[id^=\"autocomplete-text-widget-\"]'\n )\n for (const el of existingContainers) {\n if (el.children.length === 0) {\n container = el\n break\n }\n }\n\n if (!container) {\n const instanceId = String(createAutocompleteTextWidgetInstanceId())\n container = document.createElement('div')\n container.id = `autocomplete-text-widget-${instanceId}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n forwardMiddleMouseToCanvas(container)\n }\n\n // Store textarea reference on the container element so cloned widgets can access it\n // This is necessary because when widgets are promoted to subgraph nodes,\n // the cloned widget shares the same element but needs access to inputEl\n const widgetElementRef = { inputEl: undefined as HTMLTextAreaElement | undefined }\n ;(container as any).__widgetInputEl = widgetElementRef\n\n const metadataWidget = node.addWidget('text', metadataWidgetName, {\n version: AUTOCOMPLETE_METADATA_VERSION,\n textWidgetName: widgetName\n })\n metadataWidget.value = createAutocompleteMetadataValue(widgetName)\n metadataWidget.type = 'LORA_MANAGER_AUTOCOMPLETE_METADATA'\n metadataWidget.hidden = true\n metadataWidget.computeSize = () => [0, -4]\n metadataWidget.serializeValue = () => metadataWidget.value\n\n const widget = node.addDOMWidget(\n widgetName,\n `AUTOCOMPLETE_TEXT_${modelType.toUpperCase()}`,\n container,\n {\n getValue() {\n // Access inputEl from widget or from the shared element reference\n const inputEl = widget.inputEl ?? (container as any).__widgetInputEl?.inputEl\n return inputEl?.value ?? ''\n },\n setValue(v: string) {\n // Access inputEl from widget or from the shared element reference\n const inputEl = widget.inputEl ?? (container as any).__widgetInputEl?.inputEl\n if (inputEl) {\n inputEl.value = v ?? ''\n // Notify Vue component of value change via custom event\n inputEl.dispatchEvent(new CustomEvent('lora-manager:autocomplete-value-changed', {\n detail: { value: v ?? '' }\n }))\n } else {\n ;(widget as any)._pendingValue = v ?? ''\n }\n // Also call onSetValue if defined (for Vue component integration)\n if (typeof widget.onSetValue === 'function') {\n widget.onSetValue(v ?? '')\n }\n },\n serialize: true,\n getMinHeight() {\n return AUTOCOMPLETE_TEXT_WIDGET_MIN_HEIGHT\n },\n ...(modelType === 'loras' && {\n getMaxHeight() {\n return AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT\n }\n })\n }\n )\n widget.metadataWidget = metadataWidget\n\n // Get spellcheck setting from ComfyUI settings (default: false)\n const spellcheck = app.ui?.settings?.getSettingValue?.('Comfy.TextareaWidget.Spellcheck') ?? false\n\n const maxHeight = modelType === 'loras' ? AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT : undefined\n\n const vueApp = createApp(AutocompleteTextWidget, {\n widget,\n node,\n modelType,\n placeholder: inputOptions.placeholder || widgetName,\n showPreview: true,\n spellcheck,\n maxHeight\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n const appKey = container.id\n vueApps.set(appKey, vueApp)\n\n if (maxHeight) {\n container.style.minHeight = `${AUTOCOMPLETE_TEXT_WIDGET_MIN_HEIGHT}px`\n }\n\n if (modelType === 'loras') {\n applyAutocompleteTextLayoutFix(\n widget,\n container,\n typeof LiteGraph !== 'undefined' && LiteGraph.vueNodesMode\n )\n }\n\n const vueCleanup = createVueWidgetCleanup(vueApp, () => {\n vueApps.delete(appKey)\n })\n\n widget.onRemove = () => {\n vueCleanup()\n }\n\n // Return minWidth/minHeight hints so ComfyUI's _initialMinSize mechanism\n // sets a sensible initial node width (and height for prompt/embeddings).\n // loras modelType retains its existing height constraints (getMaxHeight: 100).\n const minWidth = AUTOCOMPLETE_TEXT_MIN_WIDTH_DEFAULT\n const minHeight = modelType === 'loras' ? undefined : AUTOCOMPLETE_TEXT_MIN_HEIGHT_DEFAULT\n\n return { widget, minWidth, minHeight }\n}\n\napp.registerExtension({\n name: 'LoraManager.VueWidgets',\n\n getCustomWidgets() {\n return {\n // @ts-ignore\n LORA_POOL_CONFIG(node) {\n return createLoraPoolWidget(node)\n },\n // @ts-ignore\n RANDOMIZER_CONFIG(node) {\n return createLoraRandomizerWidget(node)\n },\n // @ts-ignore\n CYCLER_CONFIG(node) {\n return createLoraCyclerWidget(node)\n },\n // @ts-ignore\n async LORAS(node: any) {\n if (!addLorasWidgetCache) {\n // @ts-ignore\n const module = await import(/* @vite-ignore */ '../loras_widget.js')\n addLorasWidgetCache = module.addLorasWidget\n }\n // Check if this is a randomizer node to enable lock buttons\n const isRandomizerNode = node.comfyClass === 'Lora Randomizer (LoraManager)'\n\n // For randomizer nodes, add a callback to update connected trigger words\n const callback = isRandomizerNode ? () => {\n updateDownstreamLoaders(node)\n } : null\n\n const opts: { isRandomizerNode?: boolean; onSelectionChange?: (selection: any) => void } = {\n isRandomizerNode,\n }\n if (isRandomizerNode) {\n opts.onSelectionChange = async (selection: any) => {\n if (!selection?.name || !selection?.active) return\n\n // Walk outputs to find directly connected Lora Info nodes\n const infoNodes: any[] = []\n if (node.outputs) {\n for (const output of node.outputs) {\n if (!output?.links?.length) continue\n for (const linkId of output.links) {\n const links = node.graph?.links\n if (!links) continue\n const link = Array.isArray(links) ? links[linkId] : links.get?.(linkId)\n if (!link) continue\n const targetNode = node.graph?.getNodeById?.(link.target_id)\n if (targetNode?.comfyClass === 'Lora Info (LoraManager)') {\n infoNodes.push(targetNode)\n }\n }\n }\n }\n\n if (infoNodes.length === 0) return\n\n // Bump request token to guard against stale async responses\n for (const infoNode of infoNodes) {\n infoNode.__loraInfoReqId = (infoNode.__loraInfoReqId || 0) + 1\n }\n const reqIdSnapshot = new Map()\n for (const infoNode of infoNodes) {\n reqIdSnapshot.set(infoNode, infoNode.__loraInfoReqId)\n }\n\n // Fetch notes via the real ComfyUI api\n let infoData: any\n try {\n const response = await api.fetchApi(\n `/lm/loras/get-notes?name=${encodeURIComponent(selection.name)}`,\n { method: 'GET' }\n )\n if (response?.ok) {\n const data = await response.json()\n infoData = {\n name: selection.name,\n notes: data?.notes || '',\n filePath: data?.file_path || '',\n }\n } else {\n infoData = { name: selection.name, notes: '[Error loading notes]', filePath: '' }\n }\n } catch {\n infoData = { name: selection.name, notes: '[Error loading notes]', filePath: '' }\n }\n\n for (const infoNode of infoNodes) {\n if (infoNode.__loraInfoReqId !== reqIdSnapshot.get(infoNode)) {\n continue\n }\n if (typeof infoNode._setLoraInfo === 'function') {\n infoNode._setLoraInfo(infoData)\n }\n }\n }\n }\n\n return addLorasWidgetCache(node, 'loras', opts, callback)\n },\n // Autocomplete text widget for LoRAs (used by Lora Loader, Lora Stacker, WanVideo Lora Select)\n // @ts-ignore\n AUTOCOMPLETE_TEXT_LORAS(node) {\n const options = widgetInputOptions.get(`${node.comfyClass}:text`) || {}\n return createAutocompleteTextWidgetFactory(node, 'text', 'loras', options)\n },\n // Autocomplete text widget for embeddings (used by Prompt node)\n // @ts-ignore\n AUTOCOMPLETE_TEXT_EMBEDDINGS(node) {\n const options = widgetInputOptions.get(`${node.comfyClass}:text`) || {}\n return createAutocompleteTextWidgetFactory(node, 'text', 'embeddings', options)\n },\n // Autocomplete text widget for prompt (supports both embeddings and custom words)\n // @ts-ignore\n AUTOCOMPLETE_TEXT_PROMPT(node) {\n const options = widgetInputOptions.get(`${node.comfyClass}:text`) || {}\n return createAutocompleteTextWidgetFactory(node, 'text', 'prompt', options)\n },\n }\n },\n\n // Add display-only widget to Debug Metadata node\n // Register mode change handlers for LoRA provider nodes\n // Extract and store input options for autocomplete widgets\n // @ts-ignore\n async beforeRegisterNodeDef(nodeType, nodeData) {\n const comfyClass = nodeType.comfyClass\n const inputs = { ...nodeData.input?.required, ...nodeData.input?.optional }\n let hasAutocompleteWidget = false\n\n // Extract and store input options for autocomplete widgets\n for (const [inputName, inputDef] of Object.entries(inputs)) {\n // @ts-ignore\n if (Array.isArray(inputDef) && typeof inputDef[0] === 'string' && inputDef[0].startsWith('AUTOCOMPLETE_TEXT_')) {\n // @ts-ignore\n const options = inputDef[1] || {}\n widgetInputOptions.set(`${nodeData.name}:${inputName}`, options)\n hasAutocompleteWidget = true\n }\n }\n\n if (hasAutocompleteWidget) {\n const originalOnSerialize = nodeType.prototype.onSerialize\n const originalConfigure = nodeType.prototype.configure\n\n nodeType.prototype.onSerialize = function (serialized: any) {\n originalOnSerialize?.apply(this, arguments)\n\n serialized.properties = serialized.properties || {}\n const widgetIds = getSerializableWidgetNames(this)\n serialized.properties[LORA_MANAGER_WIDGET_IDS_PROPERTY] = widgetIds\n }\n\n nodeType.prototype.configure = function (info: any) {\n normalizeAutocompleteWidgetValues(this, info)\n\n const bypassResult = shouldBypassAutocompleteWidgetMigration(this, info?.widgets_values ?? [])\n\n if (bypassResult) {\n info.widgets_values = [...(info.widgets_values ?? []), null]\n }\n\n return originalConfigure?.apply(this, arguments)\n }\n }\n\n // Register mode change handlers for LORA_STACK chain nodes\n if (LORA_CHAIN_NODE_TYPES.includes(comfyClass)) {\n const originalOnNodeCreated = nodeType.prototype.onNodeCreated\n\n nodeType.prototype.onNodeCreated = function () {\n originalOnNodeCreated?.apply(this, arguments)\n\n // Create node-specific callback for Lora Stacker (updates direct trigger toggles)\n const nodeSpecificCallback = comfyClass === \"Lora Stacker (LoraManager)\"\n ? (activeLoraNames: Set) => updateConnectedTriggerWords(this, activeLoraNames)\n : undefined\n\n // Create and set up the mode change handler\n const onModeChange = createModeChangeCallback(this, updateDownstreamLoaders, nodeSpecificCallback)\n setupModeChangeHandler(this, onModeChange)\n }\n }\n\n // Add the JSON display widget to Debug Metadata node\n if (nodeData.name === 'Debug Metadata (LoraManager)') {\n const onNodeCreated = nodeType.prototype.onNodeCreated\n\n nodeType.prototype.onNodeCreated = function () {\n onNodeCreated?.apply(this, [])\n\n // Add the JSON display widget\n createJsonDisplayWidget(this)\n }\n }\n\n // Add the Lora Info display widget\n if (nodeData.name === 'Lora Info (LoraManager)') {\n const onNodeCreated = nodeType.prototype.onNodeCreated\n\n nodeType.prototype.onNodeCreated = function () {\n onNodeCreated?.apply(this, [])\n\n // Create the lora info display widget\n createLoraInfoWidget(this)\n }\n }\n }\n})\n"],"names":["i","hasOwnProperty","c","s","isRef","v","_a","l","computed","self","readonly","watch","effect","a","p","b","callHook","remove","ref","h","m","createApp","app","isModelListener","emit","remove2","style","setup","tt","resolve","d","camelize$1","k","ie","ae","N","$","Y","ot","P","$e","J","ut","mt","se","St","yt","Ee","xt","bt","_t","y","T","z","_","re","K","A","G","H","ee","he","Oe","kt","we","_typeof","o","ownKeys","r","_objectSpread","_defineProperty","_toPropertyKey","_toPrimitive","css","isClient","document","stop","load","_id","setAttributes","setAttribute","unload","isExist","dt","css$1","isNotEmpty","minifyCSS","Theme","extend","EventBus","PrimeVue","ThemeService","loadCommonTheme","global","mergeKeys","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString","_openBlock","_hoisted_2","$emit","_createVNode","_hoisted_3","_hoisted_4","_hoisted_5","_Fragment","_renderList","_createBlock","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_hoisted_15","_Transition","_Teleport","$slots","_renderSlot","_withModifiers","_e","api","_unref","percent","_normalizeStyle","_hoisted_13","_hoisted_16","_hoisted_17","_hoisted_18","w","lorasWidget","_createTextVNode","defaultOptions","LORA_PROVIDER_NODE_TYPES","LORA_STACK_AGGREGATOR_NODE_TYPES","LORA_CHAIN_NODE_TYPES","isLoraStackAggregatorNode","updateDownstreamLoaders","isNodeActive","vueApp"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
\ No newline at end of file
+{"version":3,"file":"lora-manager-widgets.js","sources":["../../../vue-widgets/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../vue-widgets/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../vue-widgets/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../vue-widgets/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../vue-widgets/node_modules/@primeuix/utils/dist/object/index.mjs","../../../vue-widgets/node_modules/@primeuix/utils/dist/eventbus/index.mjs","../../../vue-widgets/node_modules/@primeuix/utils/dist/dom/index.mjs","../../../vue-widgets/node_modules/@primeuix/styled/dist/index.mjs","../../../vue-widgets/node_modules/@primevue/core/api/index.mjs","../../../vue-widgets/node_modules/@primeuix/styles/dist/base/index.mjs","../../../vue-widgets/node_modules/@primevue/core/usestyle/index.mjs","../../../vue-widgets/node_modules/@primevue/core/base/style/index.mjs","../../../vue-widgets/node_modules/@primevue/core/service/index.mjs","../../../vue-widgets/node_modules/@primevue/core/config/index.mjs","../../../vue-widgets/src/components/lora-pool/shared/FilterChip.vue","../../../vue-widgets/src/components/lora-pool/shared/EditButton.vue","../../../vue-widgets/src/components/lora-pool/sections/BaseModelSection.vue","../../../vue-widgets/src/components/lora-pool/sections/TagsSection.vue","../../../vue-widgets/src/components/lora-pool/sections/FoldersSection.vue","../../../vue-widgets/src/components/lora-pool/sections/NamePatternsSection.vue","../../../vue-widgets/src/components/lora-pool/sections/LicenseSection.vue","../../../vue-widgets/src/components/lora-pool/LoraPoolPreview.vue","../../../vue-widgets/src/components/lora-pool/LoraPoolSummaryView.vue","../../../vue-widgets/src/components/lora-pool/modals/ModalWrapper.vue","../../../vue-widgets/src/components/lora-pool/modals/BaseModelModal.vue","../../../vue-widgets/src/components/lora-pool/modals/TagsModal.vue","../../../vue-widgets/src/components/lora-pool/modals/FolderTreeNode.vue","../../../vue-widgets/src/components/lora-pool/modals/FoldersModal.vue","../../../vue-widgets/src/composables/useLoraPoolApi.ts","../../../vue-widgets/src/composables/useLoraPoolState.ts","../../../vue-widgets/src/composables/useModalState.ts","../../../vue-widgets/src/components/LoraPoolWidget.vue","../../../vue-widgets/src/components/lora-randomizer/LastUsedPreview.vue","../../../vue-widgets/src/components/shared/SingleSlider.vue","../../../vue-widgets/src/components/shared/DualRangeSlider.vue","../../../vue-widgets/src/components/lora-randomizer/LoraRandomizerSettingsView.vue","../../../vue-widgets/src/composables/useLoraRandomizerState.ts","../../../vue-widgets/src/components/LoraRandomizerWidget.vue","../../../vue-widgets/src/components/lora-cycler/LoraCyclerSettingsView.vue","../../../vue-widgets/src/components/lora-cycler/LoraListModal.vue","../../../vue-widgets/src/composables/useLoraCyclerState.ts","../../../vue-widgets/src/components/LoraCyclerWidget.vue","../../../vue-widgets/src/components/JsonDisplayWidget.vue","../../../vue-widgets/src/composables/useAutocomplete.ts","../../../vue-widgets/src/components/AutocompleteTextWidget.vue","../../../vue-widgets/src/components/LoraInfoWidget.vue","../../../vue-widgets/src/vue-widget-cleanup.ts","../../../vue-widgets/src/mode-change-handler.ts","../../../scripts/app.js","../../../scripts/api.js","../autocomplete.js","../utils.js","../../../vue-widgets/src/main.ts"],"sourcesContent":["/**\n* @vue/shared v3.5.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `CACHED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>|?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nfunction normalizeCssVarValue(value) {\n if (value == null) {\n return \"initial\";\n }\n if (typeof value === \"string\") {\n return value === \"\" ? \" \" : value;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\n \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n value\n );\n }\n }\n return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, makeMap, isObject, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n activeEffectScope = this.prevScope;\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope && activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nfunction toWrapped(target, item) {\n if (isReadonly(target)) {\n return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);\n }\n return toReactive(item);\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toWrapped(this, value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(\n this,\n \"filter\",\n fn,\n thisArg,\n (v) => v.map((item) => toWrapped(this, item)),\n arguments\n );\n },\n find(fn, thisArg) {\n return apply(\n this,\n \"find\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(\n this,\n \"findLast\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", (item) => toWrapped(this, item));\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (!result.done) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n let wrappedFn = fn;\n if (arr !== self) {\n if (!isShallow(self)) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n const value = targetIsArray && isIntegerKey(key) ? res : res.value;\n return isReadonly2 && isObject(value) ? readonly(value) : value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n this._raw = toRaw(_object);\n let shallow = true;\n let obj = _object;\n if (!isArray(_object) || !isIntegerKey(String(_key))) {\n do {\n shallow = !isProxy(obj) || isShallow(obj);\n } while (shallow && (obj = obj[\"__v_raw\"]));\n }\n this._shallow = shallow;\n }\n get value() {\n let val = this._object[this._key];\n if (this._shallow) {\n val = unref(val);\n }\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n if (this._shallow && isRef(this._raw[this._key])) {\n const nestedRef = this._object[this._key];\n if (isRef(nestedRef)) {\n nestedRef.value = newVal;\n return;\n }\n }\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(this._raw, this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n return new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Map();\n if ((seen.get(value) || 0) >= depth) {\n return value;\n }\n seen.set(value, depth);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, watch as watch$1, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, customRef, shallowReactive, trigger, ReactiveEffect, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, EMPTY_ARR, makeMap, toRawType, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= -2;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= -2;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= -2;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n if (!(instance.job.flags & 8)) {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n }\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nfunction provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!currentInstance || currentInstance.isMounted) {\n warn$1(`provide() can only be used inside setup().`);\n }\n }\n if (currentInstance) {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = getCurrentInstance();\n if (instance || currentApp) {\n let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(getCurrentInstance() || currentApp);\n}\n\nconst ssrContextKey = /* @__PURE__ */ Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, flush, once } = options;\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const baseWatchOptions = extend({}, options);\n if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else if (!runsImmediately) {\n const watchStopHandle = () => {\n };\n watchStopHandle.stop = NOOP;\n watchStopHandle.resume = NOOP;\n watchStopHandle.pause = NOOP;\n return watchStopHandle;\n }\n }\n const instance = currentInstance;\n baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n let isPre = false;\n if (flush === \"post\") {\n baseWatchOptions.scheduler = (job) => {\n queuePostRenderEffect(job, instance && instance.suspense);\n };\n } else if (flush !== \"sync\") {\n isPre = true;\n baseWatchOptions.scheduler = (job, isFirstRun) => {\n if (isFirstRun) {\n job();\n } else {\n queueJob(job);\n }\n };\n }\n baseWatchOptions.augmentJob = (job) => {\n if (cb) {\n job.flags |= 4;\n }\n if (isPre) {\n job.flags |= 2;\n if (instance) {\n job.id = instance.uid;\n job.i = instance;\n }\n }\n };\n const watchHandle = watch$1(source, cb, baseWatchOptions);\n if (isInSSRComponentSetup) {\n if (ssrCleanup) {\n ssrCleanup.push(watchHandle);\n } else if (runsImmediately) {\n watchHandle();\n }\n }\n return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\n\nconst TeleportEndKey = /* @__PURE__ */ Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = () => {\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = prepareAnchor(target, n2, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (parentComponent && parentComponent.isCE) {\n (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target);\n }\n if (!disabled) {\n mount(target, targetAnchor);\n updateCssVars(n2, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\n \"Invalid Teleport target on mount:\",\n target,\n `(${typeof target})`\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n updateCssVars(n2, true);\n }\n if (isTeleportDeferred(n2.props)) {\n n2.el.__isMounted = false;\n queuePostRenderEffect(() => {\n mountToTarget();\n delete n2.el.__isMounted;\n }, parentSuspense);\n } else {\n mountToTarget();\n }\n } else {\n if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {\n queuePostRenderEffect(() => {\n TeleportImpl.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n }, parentSuspense);\n return;\n }\n n2.el = n1.el;\n n2.targetStart = n1.targetStart;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, !!!(process.env.NODE_ENV !== \"production\"));\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {\n vnode2.anchor = hydrateChildren(\n nextSibling(node2),\n vnode2,\n parentNode(node2),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode2.targetStart = targetStart;\n vnode2.targetAnchor = targetAnchor;\n }\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n const disabled = isTeleportDisabled(vnode.props);\n if (target) {\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n hydrateDisabledTeleport(\n node,\n vnode,\n targetNode,\n targetNode && nextSibling(targetNode)\n );\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n } else if (disabled) {\n if (vnode.shapeFlag & 16) {\n hydrateDisabledTeleport(node, vnode, node, nextSibling(node));\n }\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target);\n insert(targetAnchor, target);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = /* @__PURE__ */ Symbol(\"_leaveCb\");\nconst enterCbKey = /* @__PURE__ */ Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n const child = findNonCommentChild(children);\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n let desc;\n if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\n\nconst pendingSetRefMap = /* @__PURE__ */ new WeakMap();\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n return hasOwn(rawSetupState, key);\n };\n const canSetRef = (ref2) => {\n return !!!(process.env.NODE_ENV !== \"production\") || !knownTemplateRefs.has(ref2);\n };\n if (oldRef != null && oldRef !== ref) {\n invalidatePendingSetRef(oldRawRef);\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n if (canSetRef(oldRef)) {\n oldRef.value = null;\n }\n const oldRawRefAtom = oldRawRef;\n if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n const newVal = [refValue];\n if (canSetRef(ref)) {\n ref.value = newVal;\n }\n if (rawRef.k) refs[rawRef.k] = newVal;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n if (canSetRef(ref)) {\n ref.value = value;\n }\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n const job = () => {\n doSet();\n pendingSetRefMap.delete(rawRef);\n };\n job.id = -1;\n pendingSetRefMap.set(rawRef, job);\n queuePostRenderEffect(job, parentSuspense);\n } else {\n invalidatePendingSetRef(rawRef);\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\nfunction invalidatePendingSetRef(rawRef) {\n const pendingSetRef = pendingSetRefMap.get(rawRef);\n if (pendingSetRef) {\n pendingSetRef.flags |= 8;\n pendingSetRefMap.delete(rawRef);\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n const cls = content.getAttribute(\"class\");\n if (cls) content.$cls = cls;\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n const { textContent } = el;\n if (textContent !== clientText && // innerHTML normalize \\r\\n or \\r into a single \\n in the DOM\n textContent !== clientText.replace(/\\r\\n|\\r/g, \"\\n\")) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${textContent}\n - expected on client: ${clientText}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n if (el.$cls) {\n actual = el.$cls;\n delete el.$cls;\n } else {\n actual = el.getAttribute(\"class\");\n }\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n const value = normalizeCssVarValue(cssVars[key]);\n expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value);\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return list.includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n let patched = false;\n (instance.bu || (instance.bu = [])).push(() => patched = true);\n const performHydrate = () => {\n if (patched) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`\n );\n }\n return;\n }\n hydrate();\n };\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n performHydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : performHydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createInnerComp(\n loadingComponent,\n instance\n );\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n instance2.__keepAliveStorageContainer = storageContainer;\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type\n );\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= -257;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= -257;\n vnode.shapeFlag &= -513;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n let isReadonlySource = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n isReadonlySource = isReadonly(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n const hasProps = Object.keys(props).length > 0;\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n hasProps ? -2 : 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (__VUE_OPTIONS_API__ && data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (hasOwn(props, key)) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n\n\n","\n \n \n \n \n Edit \n \n \n\n\n\n\n","\n \n \n
\n
\n All models\n
\n
\n \n
\n
\n
\n \n\n\n\n\n","\n \n \n\n\n\n\n","\n \n \n
\n \n
\n
\n
INCLUDE \n
\n \n \n \n \n
\n
\n
0\" class=\"section__paths\">\n \n
\n
\n No folders selected\n
\n
\n
\n\n \n
\n
\n
EXCLUDE \n
\n \n \n \n \n
\n
\n
0\" class=\"section__paths\">\n \n
\n
\n No folders selected\n
\n
\n
\n
\n
\n \n\n\n\n\n","\n \n \n
\n \n
\n
\n INCLUDE \n
\n
\n \n + \n
\n
\n
\n
\n {{ useRegex ? 'No regex patterns' : 'No text patterns' }}\n
\n
\n
\n\n \n
\n
\n EXCLUDE \n
\n
\n \n + \n
\n
\n
\n
\n {{ useRegex ? 'No regex patterns' : 'No text patterns' }}\n
\n
\n
\n
\n
\n \n\n\n\n\n","\n \n \n
\n \n No Credit Required \n \n \n \n \n \n\n \n Allow Selling \n \n \n \n \n \n
\n
\n \n\n\n\n\n","\n \n \n\n \n
\n 0\" class=\"preview__tooltip\">\n
\n
\n
\n
\n
{{ item.model_name || item.file_name }} \n
\n
5\" class=\"preview__more\">\n +{{ (matchCount - 5).toLocaleString() }} more\n
\n
\n
\n \n\n
\n No matching LoRAs\n
\n
\n \n\n\n\n\n","\n \n \n
\n \n\n \n\n \n\n \n\n \n
\n\n \n
\n
\n \n\n\n\n\n","\n \n \n \n \n \n \n\n\n\n\n","\n \n \n \n
\n \n \n
\n
\n \n \n \n \n
\n \n\n \n
\n \n \n \n \n \n \n {{ model.name }} \n ({{ model.count }}) \n \n
\n No models found\n
\n
\n \n \n\n\n\n\n","\n \n \n \n
\n \n \n
\n
\n \n \n \n \n
\n \n\n \n \n \n\n\n\n\n","\n \n
\n \n
\n \n \n \n \n
\n\n \n
\n \n \n \n \n \n \n \n\n \n
\n \n \n \n\n \n
{{ node.label }} \n
\n\n \n
\n \n
\n
\n \n\n\n\n\n","\n \n \n \n \n\n \n
0\">\n \n \n
\n No folders found\n
\n
\n \n \n\n\n\n\n","import { ref } from 'vue'\nimport type { BaseModelOption, TagOption, FolderTreeNode, LoraItem } from './types'\n\nexport function useLoraPoolApi() {\n const isLoading = ref(false)\n\n const fetchBaseModels = async (limit = 50): Promise => {\n try {\n const response = await fetch(`/api/lm/loras/base-models?limit=${limit}`)\n const data = await response.json()\n return data.base_models || []\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch base models:', error)\n return []\n }\n }\n\n const fetchTags = async (limit = 0): Promise => {\n try {\n const response = await fetch(`/api/lm/loras/top-tags?limit=${limit}`)\n const data = await response.json()\n return data.tags || []\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch tags:', error)\n return []\n }\n }\n\n const fetchFolderTree = async (): Promise => {\n try {\n const response = await fetch('/api/lm/loras/unified-folder-tree')\n const data = await response.json()\n return transformFolderTree(data.tree || {})\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch folder tree:', error)\n return []\n }\n }\n\n const transformFolderTree = (tree: Record, parentPath = ''): FolderTreeNode[] => {\n if (!tree || typeof tree !== 'object') {\n return []\n }\n\n return Object.entries(tree).map(([name, children]) => {\n const path = parentPath ? `${parentPath}/${name}` : name\n const childNodes = transformFolderTree(children as Record, path)\n\n return {\n key: path,\n label: name,\n children: childNodes.length > 0 ? childNodes : undefined\n }\n })\n }\n\n interface FetchLorasParams {\n baseModels?: string[]\n tagsInclude?: string[]\n tagsExclude?: string[]\n foldersInclude?: string[]\n foldersExclude?: string[]\n noCreditRequired?: boolean\n allowSelling?: boolean\n namePatternsInclude?: string[]\n namePatternsExclude?: string[]\n namePatternsUseRegex?: boolean\n page?: number\n pageSize?: number\n }\n\n const fetchLoras = async (params: FetchLorasParams): Promise<{ items: LoraItem[]; total: number }> => {\n isLoading.value = true\n try {\n const urlParams = new URLSearchParams()\n urlParams.set('page', String(params.page || 1))\n urlParams.set('page_size', String(params.pageSize || 6))\n\n params.baseModels?.forEach(bm => urlParams.append('base_model', bm))\n params.tagsInclude?.forEach(tag => urlParams.append('tag_include', tag))\n params.tagsExclude?.forEach(tag => urlParams.append('tag_exclude', tag))\n\n // Folder filters\n if (params.foldersInclude && params.foldersInclude.length > 0) {\n params.foldersInclude.forEach(folder => urlParams.append('folder_include', folder))\n urlParams.set('recursive', 'true')\n }\n params.foldersExclude?.forEach(folder => urlParams.append('folder_exclude', folder))\n\n if (params.noCreditRequired !== undefined) {\n urlParams.set('credit_required', String(!params.noCreditRequired))\n }\n\n if (params.allowSelling !== undefined) {\n urlParams.set('allow_selling_generated_content', String(params.allowSelling))\n }\n\n // Name pattern filters\n params.namePatternsInclude?.forEach(pattern => urlParams.append('name_pattern_include', pattern))\n params.namePatternsExclude?.forEach(pattern => urlParams.append('name_pattern_exclude', pattern))\n if (params.namePatternsUseRegex !== undefined) {\n urlParams.set('name_pattern_use_regex', String(params.namePatternsUseRegex))\n }\n\n const response = await fetch(`/api/lm/loras/list?${urlParams}`)\n const data = await response.json()\n\n return {\n items: data.items || [],\n total: data.total || 0\n }\n } catch (error) {\n console.error('[LoraPoolApi] Failed to fetch loras:', error)\n return { items: [], total: 0 }\n } finally {\n isLoading.value = false\n }\n }\n\n return {\n isLoading,\n fetchBaseModels,\n fetchTags,\n fetchFolderTree,\n fetchLoras\n }\n}\n","import { ref, computed, watch } from 'vue'\nimport type {\n LoraPoolConfig,\n BaseModelOption,\n TagOption,\n FolderTreeNode,\n LoraItem,\n ComponentWidget\n} from './types'\nimport { useLoraPoolApi } from './useLoraPoolApi'\n\nexport function useLoraPoolState(widget: ComponentWidget) {\n const api = useLoraPoolApi()\n\n // Flag to prevent infinite loops during config restoration\n // callback → restoreFromConfig → watch → refreshPreview → buildConfig → widget.value = config → callback → ...\n let isRestoring = false\n\n // Filter state\n const selectedBaseModels = ref([])\n const includeTags = ref([])\n const excludeTags = ref([])\n const includeFolders = ref([])\n const excludeFolders = ref([])\n const noCreditRequired = ref(false)\n const allowSelling = ref(false)\n const includePatterns = ref([])\n const excludePatterns = ref([])\n const useRegex = ref(false)\n\n // Available options from API\n const availableBaseModels = ref([])\n const availableTags = ref([])\n const folderTree = ref([])\n\n // Preview state\n const previewItems = ref([])\n const matchCount = ref(0)\n const isLoading = computed(() => api.isLoading.value)\n\n // Build config from current state\n const buildConfig = (): LoraPoolConfig => {\n const config: LoraPoolConfig = {\n version: 2,\n filters: {\n baseModels: selectedBaseModels.value,\n tags: {\n include: includeTags.value,\n exclude: excludeTags.value\n },\n folders: {\n include: includeFolders.value,\n exclude: excludeFolders.value\n },\n license: {\n noCreditRequired: noCreditRequired.value,\n allowSelling: allowSelling.value\n },\n namePatterns: {\n include: includePatterns.value,\n exclude: excludePatterns.value,\n useRegex: useRegex.value\n }\n },\n preview: {\n matchCount: matchCount.value,\n lastUpdated: Date.now()\n }\n }\n\n // Update widget value (this triggers callback for UI sync)\n // Skip during restoration to prevent infinite loops:\n // callback → restoreFromConfig → watch → refreshPreview → buildConfig → widget.value = config → callback → ...\n if (!isRestoring) {\n widget.value = config\n }\n return config\n }\n\n // Restore state from config\n const restoreFromConfig = (config: LoraPoolConfig) => {\n // Set flag to prevent buildConfig from triggering widget.value updates during restoration\n // This breaks the infinite loop: callback → restoreFromConfig → watch → refreshPreview → buildConfig → widget.value = config → callback\n isRestoring = true\n\n try {\n if (!config?.filters) return\n\n const { filters, preview } = config\n\n // Helper to update ref only if value changed\n const updateIfChanged = (refValue: { value: T }, newValue: T) => {\n if (JSON.stringify(refValue.value) !== JSON.stringify(newValue)) {\n refValue.value = newValue\n }\n }\n\n updateIfChanged(selectedBaseModels, filters.baseModels || [])\n updateIfChanged(includeTags, filters.tags?.include || [])\n updateIfChanged(excludeTags, filters.tags?.exclude || [])\n updateIfChanged(includeFolders, filters.folders?.include || [])\n updateIfChanged(excludeFolders, filters.folders?.exclude || [])\n updateIfChanged(noCreditRequired, filters.license?.noCreditRequired ?? false)\n updateIfChanged(allowSelling, filters.license?.allowSelling ?? false)\n updateIfChanged(includePatterns, filters.namePatterns?.include || [])\n updateIfChanged(excludePatterns, filters.namePatterns?.exclude || [])\n updateIfChanged(useRegex, filters.namePatterns?.useRegex ?? false)\n\n // matchCount doesn't trigger watchers, so direct assignment is fine\n matchCount.value = preview?.matchCount || 0\n } finally {\n isRestoring = false\n }\n }\n\n // Fetch filter options from API\n const fetchFilterOptions = async () => {\n const [baseModels, tags, folders] = await Promise.all([\n api.fetchBaseModels(),\n api.fetchTags(),\n api.fetchFolderTree()\n ])\n\n availableBaseModels.value = baseModels\n availableTags.value = tags\n folderTree.value = folders\n }\n\n // Refresh preview with current filters\n const refreshPreview = async () => {\n const result = await api.fetchLoras({\n baseModels: selectedBaseModels.value,\n tagsInclude: includeTags.value,\n tagsExclude: excludeTags.value,\n foldersInclude: includeFolders.value,\n foldersExclude: excludeFolders.value,\n noCreditRequired: noCreditRequired.value || undefined,\n allowSelling: allowSelling.value || undefined,\n namePatternsInclude: includePatterns.value,\n namePatternsExclude: excludePatterns.value,\n namePatternsUseRegex: useRegex.value,\n pageSize: 6\n })\n\n previewItems.value = result.items\n matchCount.value = result.total\n buildConfig()\n }\n\n // Debounced filter change handler\n let filterTimeout: ReturnType | null = null\n const onFilterChange = () => {\n if (filterTimeout) clearTimeout(filterTimeout)\n filterTimeout = setTimeout(() => {\n refreshPreview()\n }, 300)\n }\n\n // Watch all filter changes\n watch([\n selectedBaseModels,\n includeTags,\n excludeTags,\n includeFolders,\n excludeFolders,\n noCreditRequired,\n allowSelling,\n includePatterns,\n excludePatterns,\n useRegex\n ], onFilterChange, { deep: true })\n\n return {\n // Filter state\n selectedBaseModels,\n includeTags,\n excludeTags,\n includeFolders,\n excludeFolders,\n noCreditRequired,\n allowSelling,\n includePatterns,\n excludePatterns,\n useRegex,\n\n // Available options\n availableBaseModels,\n availableTags,\n folderTree,\n\n // Preview state\n previewItems,\n matchCount,\n isLoading,\n\n // Actions\n buildConfig,\n restoreFromConfig,\n fetchFilterOptions,\n refreshPreview\n }\n}\n\nexport type LoraPoolStateReturn = ReturnType\n","import { ref, computed } from 'vue'\n\nexport type ModalType = 'baseModels' | 'includeTags' | 'excludeTags' | 'includeFolders' | 'excludeFolders' | null\n\nexport function useModalState() {\n const activeModal = ref(null)\n\n const isOpen = computed(() => activeModal.value !== null)\n\n const openModal = (modal: ModalType) => {\n activeModal.value = modal\n }\n\n const closeModal = () => {\n activeModal.value = null\n }\n\n const isModalOpen = (modal: ModalType) => {\n return activeModal.value === modal\n }\n\n return {\n activeModal,\n isOpen,\n openModal,\n closeModal,\n isModalOpen\n }\n}\n\nexport type ModalStateReturn = ReturnType\n","\n \n \n \n\n \n \n\n \n\n \n\n \n\n \n
\n \n\n\n\n\n","\n \n
\n
\n
\n
\n
\n {{ lora.name }} \n \n M: {{ lora.strength }}{{ lora.clipStrength !== undefined ? ` / C: ${lora.clipStrength}` : '' }}\n \n
\n
\n
5\" class=\"last-used-preview__more\">\n +{{ (loras.length - 5).toLocaleString() }} more LoRAs\n
\n
\n
\n \n\n\n\n\n","\n \n
\n\n
\n
\n
{{ formatValue(value) }}
\n
\n
\n \n\n\n\n\n","\n 0 }\" data-capture-wheel=\"true\" @wheel=\"onWheel\">\n
\n \n
\n\n \n
0\">\n
\n \n\n \n
\n \n
\n
\n\n \n
\n
\n
{{ formatValue(valueMin) }}
\n
\n\n
\n
\n
{{ formatValue(valueMax) }}
\n
\n
\n \n\n\n\n\n","\n \n \n\n \n
\n
LoRA Count \n
\n \n \n Fixed \n \n \n \n Range \n \n
\n\n
\n \n \n
\n
\n\n \n
\n
Model Strength Range \n
\n \n
\n
\n\n \n
\n\n \n
\n\n \n
\n
\n \n\n\n\n\n","import { ref, computed, watch } from 'vue'\nimport type { ComponentWidget, RandomizerConfig, LoraEntry } from './types'\n\nexport function useLoraRandomizerState(widget: ComponentWidget) {\n // Flag to prevent infinite loops during config restoration\n // callback → restoreFromConfig → watch → widget.value = config → callback → ...\n let isRestoring = false\n\n // State refs\n const countMode = ref<'fixed' | 'range'>('range')\n const countFixed = ref(3)\n const countMin = ref(2)\n const countMax = ref(5)\n const modelStrengthMin = ref(0.0)\n const modelStrengthMax = ref(1.0)\n const useCustomClipRange = ref(false)\n const clipStrengthMin = ref(0.0)\n const clipStrengthMax = ref(1.0)\n const rollMode = ref<'fixed' | 'always'>('fixed')\n const isRolling = ref(false)\n const useRecommendedStrength = ref(false)\n const recommendedStrengthScaleMin = ref(0.5)\n const recommendedStrengthScaleMax = ref(1.0)\n\n // Track last used combination (for backend roll mode)\n const lastUsed = ref(null)\n\n // Dual seed mechanism for batch queue synchronization\n // execution_seed: seed for generating execution_stack (= previous next_seed)\n // next_seed: seed for generating ui_loras (= what will be displayed after execution)\n const executionSeed = ref(null)\n const nextSeed = ref(null)\n\n // Build config object from current state\n const buildConfig = (): RandomizerConfig => {\n // Skip updating widget.value during restoration to prevent infinite loops\n if (isRestoring) {\n return {\n count_mode: countMode.value,\n count_fixed: countFixed.value,\n count_min: countMin.value,\n count_max: countMax.value,\n model_strength_min: modelStrengthMin.value,\n model_strength_max: modelStrengthMax.value,\n use_same_clip_strength: !useCustomClipRange.value,\n clip_strength_min: clipStrengthMin.value,\n clip_strength_max: clipStrengthMax.value,\n roll_mode: rollMode.value,\n last_used: lastUsed.value,\n use_recommended_strength: useRecommendedStrength.value,\n recommended_strength_scale_min: recommendedStrengthScaleMin.value,\n recommended_strength_scale_max: recommendedStrengthScaleMax.value,\n execution_seed: executionSeed.value,\n next_seed: nextSeed.value,\n }\n }\n return {\n count_mode: countMode.value,\n count_fixed: countFixed.value,\n count_min: countMin.value,\n count_max: countMax.value,\n model_strength_min: modelStrengthMin.value,\n model_strength_max: modelStrengthMax.value,\n use_same_clip_strength: !useCustomClipRange.value,\n clip_strength_min: clipStrengthMin.value,\n clip_strength_max: clipStrengthMax.value,\n roll_mode: rollMode.value,\n last_used: lastUsed.value,\n use_recommended_strength: useRecommendedStrength.value,\n recommended_strength_scale_min: recommendedStrengthScaleMin.value,\n recommended_strength_scale_max: recommendedStrengthScaleMax.value,\n execution_seed: executionSeed.value,\n next_seed: nextSeed.value,\n }\n }\n\n // Shift seeds for batch queue synchronization\n // Previous next_seed becomes current execution_seed, and generate a new next_seed\n const generateNewSeed = () => {\n executionSeed.value = nextSeed.value // Previous next becomes current execution\n nextSeed.value = Math.floor(Math.random() * 2147483647)\n }\n\n // Initialize next_seed for first execution (execution_seed stays null)\n const initializeNextSeed = () => {\n if (nextSeed.value === null) {\n nextSeed.value = Math.floor(Math.random() * 2147483647)\n }\n }\n\n // Restore state from config object\n const restoreFromConfig = (config: RandomizerConfig) => {\n // Set flag to prevent buildConfig from triggering widget.value updates during restoration\n isRestoring = true\n\n try {\n countMode.value = config.count_mode || 'range'\n countFixed.value = config.count_fixed || 3\n countMin.value = config.count_min || 2\n countMax.value = config.count_max || 5\n modelStrengthMin.value = config.model_strength_min ?? 0.0\n modelStrengthMax.value = config.model_strength_max ?? 1.0\n useCustomClipRange.value = !(config.use_same_clip_strength ?? true)\n clipStrengthMin.value = config.clip_strength_min ?? 0.0\n clipStrengthMax.value = config.clip_strength_max ?? 1.0\n // Migrate old roll_mode values to new ones\n const rawRollMode = (config as any).roll_mode as string\n if (rawRollMode === 'frontend') {\n rollMode.value = 'fixed'\n } else if (rawRollMode === 'backend') {\n rollMode.value = 'always'\n } else if (rawRollMode === 'fixed' || rawRollMode === 'always') {\n rollMode.value = rawRollMode as 'fixed' | 'always'\n } else {\n rollMode.value = 'fixed'\n }\n lastUsed.value = config.last_used || null\n useRecommendedStrength.value = config.use_recommended_strength ?? false\n recommendedStrengthScaleMin.value = config.recommended_strength_scale_min ?? 0.5\n recommendedStrengthScaleMax.value = config.recommended_strength_scale_max ?? 1.0\n } finally {\n isRestoring = false\n }\n }\n\n // Roll loras - call API to get random selection\n const rollLoras = async (\n poolConfig: any | null,\n lockedLoras: LoraEntry[]\n ): Promise => {\n try {\n isRolling.value = true\n\n const config = buildConfig()\n\n // Build request body\n const requestBody: any = {\n model_strength_min: config.model_strength_min,\n model_strength_max: config.model_strength_max,\n use_same_clip_strength: !useCustomClipRange.value,\n clip_strength_min: config.clip_strength_min,\n clip_strength_max: config.clip_strength_max,\n locked_loras: lockedLoras,\n use_recommended_strength: config.use_recommended_strength,\n recommended_strength_scale_min: config.recommended_strength_scale_min,\n recommended_strength_scale_max: config.recommended_strength_scale_max,\n }\n\n // Add count parameters\n if (config.count_mode === 'fixed') {\n requestBody.count = config.count_fixed\n } else {\n requestBody.count_min = config.count_min\n requestBody.count_max = config.count_max\n }\n\n // Add pool config if provided\n if (poolConfig) {\n requestBody.pool_config = poolConfig.filters || {}\n }\n\n // Call API endpoint\n const response = await fetch('/api/lm/loras/random-sample', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n })\n\n if (!response.ok) {\n const errorData = await response.json()\n throw new Error(errorData.error || 'Failed to fetch random LoRAs')\n }\n\n const data = await response.json()\n\n if (!data.success) {\n throw new Error(data.error || 'Failed to get random LoRAs')\n }\n\n return data.loras || []\n } catch (error) {\n console.error('[LoraRandomizerState] Error rolling LoRAs:', error)\n throw error\n } finally {\n isRolling.value = false\n }\n }\n\n // Restore last used and return it\n const useLastUsed = () => {\n if (lastUsed.value && lastUsed.value.length > 0) {\n return lastUsed.value\n }\n return null\n }\n\n // Computed properties\n const isClipStrengthDisabled = computed(() => !useCustomClipRange.value)\n const isRecommendedStrengthEnabled = computed(() => useRecommendedStrength.value)\n\n // Watch all state changes and update widget value\n watch([\n countMode,\n countFixed,\n countMin,\n countMax,\n modelStrengthMin,\n modelStrengthMax,\n useCustomClipRange,\n clipStrengthMin,\n clipStrengthMax,\n rollMode,\n useRecommendedStrength,\n recommendedStrengthScaleMin,\n recommendedStrengthScaleMax,\n ], () => {\n widget.value = buildConfig()\n }, { deep: true })\n\n return {\n // State refs\n countMode,\n countFixed,\n countMin,\n countMax,\n modelStrengthMin,\n modelStrengthMax,\n useCustomClipRange,\n clipStrengthMin,\n clipStrengthMax,\n rollMode,\n isRolling,\n lastUsed,\n useRecommendedStrength,\n recommendedStrengthScaleMin,\n recommendedStrengthScaleMax,\n executionSeed,\n nextSeed,\n\n // Computed\n isClipStrengthDisabled,\n isRecommendedStrengthEnabled,\n\n // Methods\n buildConfig,\n restoreFromConfig,\n rollLoras,\n useLastUsed,\n generateNewSeed,\n initializeNextSeed,\n }\n}\n","\n \n \n
\n \n\n\n\n\n","\n \n \n\n \n
\n
\n
\n
{{ isWorkflowExecuting ? 'Using LoRA:' : 'Next LoRA:' }} \n
\n {{ currentLoraName || 'None' }}\n \n \n \n \n
\n
\n
{{ currentIndex }} \n
/ \n
{{ totalCount }} \n\n \n
1\" class=\"repeat-progress\">\n
\n
= repeatCount }\"\n >
\n
\n
{{ repeatUsed }}/{{ repeatCount }} \n
\n
\n
\n
\n\n \n
\n
\n \n
\n
Starting Index \n
\n \n / {{ totalCount || 1 }} \n
\n
\n\n \n
\n\n \n
\n
\n
\n\n \n
\n
Model Strength \n
\n \n
\n
\n\n \n
\n\n \n
\n\n \n
\n \n
\n
\n \n\n\n\n\n","\n \n \n \n
\n \n \n
\n
\n \n \n \n \n
\n \n\n \n
\n {{ item.index }} \n {{ item.lora.file_name }} \n Current \n
\n
\n No LoRAs found\n
\n
\n \n \n\n\n\n\n","import { ref, watch, computed } from 'vue'\nimport type { ComponentWidget, CyclerConfig, LoraPoolConfig } from './types'\n\nexport interface CyclerLoraItem {\n file_name: string\n model_name: string\n file_path: string\n}\n\nexport function useLoraCyclerState(widget: ComponentWidget) {\n // Flag to prevent infinite loops during config restoration\n // callback → restoreFromConfig → watch → widget.value = config → callback → ...\n let isRestoring = false\n\n // State refs\n const currentIndex = ref(1) // 1-based\n const totalCount = ref(0)\n const poolConfigHash = ref('')\n const modelStrength = ref(1.0)\n const clipStrength = ref(1.0)\n const useCustomClipRange = ref(false)\n const usePresetStrength = ref(false)\n const presetStrengthScale = ref(1.0)\n const sortBy = ref<'filename' | 'model_name'>('filename')\n const currentLoraName = ref('')\n const currentLoraFilename = ref('')\n const isLoading = ref(false)\n\n // Dual-index mechanism for batch queue synchronization\n // execution_index: index for generating execution_stack (= previous next_index)\n // next_index: index for UI display (= what will be shown after execution)\n const executionIndex = ref(null)\n const nextIndex = ref(null)\n\n // Advanced index control features\n const repeatCount = ref(1) // How many times each LoRA should repeat\n const repeatUsed = ref(0) // How many times current index has been used (internal tracking)\n const displayRepeatUsed = ref(0) // For UI display, deferred updates like currentIndex\n const isPaused = ref(false) // Whether iteration is paused\n const includeNoLora = ref(false) // Whether to include empty LoRA option in cycle\n\n // Execution progress tracking (visual feedback)\n const isWorkflowExecuting = ref(false) // Workflow is currently running\n const executingRepeatStep = ref(0) // Which repeat step (1-based, 0 = not executing)\n\n // Build config object from current state\n const buildConfig = (): CyclerConfig => {\n // Skip updating widget.value during restoration to prevent infinite loops\n if (isRestoring) {\n return {\n current_index: currentIndex.value,\n total_count: totalCount.value,\n pool_config_hash: poolConfigHash.value,\n model_strength: modelStrength.value,\n clip_strength: clipStrength.value,\n use_same_clip_strength: !useCustomClipRange.value,\n use_preset_strength: usePresetStrength.value,\n preset_strength_scale: presetStrengthScale.value,\n sort_by: sortBy.value,\n current_lora_name: currentLoraName.value,\n current_lora_filename: currentLoraFilename.value,\n execution_index: executionIndex.value,\n next_index: nextIndex.value,\n repeat_count: repeatCount.value,\n repeat_used: repeatUsed.value,\n is_paused: isPaused.value,\n include_no_lora: includeNoLora.value,\n }\n }\n return {\n current_index: currentIndex.value,\n total_count: totalCount.value,\n pool_config_hash: poolConfigHash.value,\n model_strength: modelStrength.value,\n clip_strength: clipStrength.value,\n use_same_clip_strength: !useCustomClipRange.value,\n use_preset_strength: usePresetStrength.value,\n preset_strength_scale: presetStrengthScale.value,\n sort_by: sortBy.value,\n current_lora_name: currentLoraName.value,\n current_lora_filename: currentLoraFilename.value,\n execution_index: executionIndex.value,\n next_index: nextIndex.value,\n repeat_count: repeatCount.value,\n repeat_used: repeatUsed.value,\n is_paused: isPaused.value,\n include_no_lora: includeNoLora.value,\n }\n }\n\n // Restore state from config object\n const restoreFromConfig = (config: CyclerConfig) => {\n // Set flag to prevent buildConfig from triggering widget.value updates during restoration\n isRestoring = true\n\n try {\n currentIndex.value = config.current_index || 1\n totalCount.value = config.total_count || 0\n poolConfigHash.value = config.pool_config_hash || ''\n modelStrength.value = config.model_strength ?? 1.0\n clipStrength.value = config.clip_strength ?? 1.0\n useCustomClipRange.value = !(config.use_same_clip_strength ?? true)\n usePresetStrength.value = config.use_preset_strength ?? false\n presetStrengthScale.value = config.preset_strength_scale ?? 1.0\n sortBy.value = config.sort_by || 'filename'\n currentLoraName.value = config.current_lora_name || ''\n currentLoraFilename.value = config.current_lora_filename || ''\n // Advanced index control features\n repeatCount.value = config.repeat_count ?? 1\n repeatUsed.value = config.repeat_used ?? 0\n isPaused.value = config.is_paused ?? false\n includeNoLora.value = config.include_no_lora ?? false\n // Note: execution_index and next_index are not restored from config\n // as they are transient values used only during batch execution\n } finally {\n isRestoring = false\n }\n }\n\n // Shift indices for batch queue synchronization\n // Previous next_index becomes current execution_index, and generate a new next_index\n const generateNextIndex = () => {\n executionIndex.value = nextIndex.value // Previous next becomes current execution\n // Calculate the next index (wrap to 1 if at end)\n const current = executionIndex.value ?? currentIndex.value\n let next = current + 1\n // Total count includes no lora option if enabled\n const effectiveTotalCount = includeNoLora.value ? totalCount.value + 1 : totalCount.value\n if (effectiveTotalCount > 0 && next > effectiveTotalCount) {\n next = 1\n }\n nextIndex.value = next\n }\n\n // Initialize next_index for first execution (execution_index stays null)\n const initializeNextIndex = () => {\n if (nextIndex.value === null) {\n // First execution uses current_index, so next is current + 1\n let next = currentIndex.value + 1\n // Total count includes no lora option if enabled\n const effectiveTotalCount = includeNoLora.value ? totalCount.value + 1 : totalCount.value\n if (effectiveTotalCount > 0 && next > effectiveTotalCount) {\n next = 1\n }\n nextIndex.value = next\n }\n }\n\n // Generate hash from pool config for change detection\n const hashPoolConfig = (poolConfig: LoraPoolConfig | null): string => {\n if (!poolConfig || !poolConfig.filters) {\n return ''\n }\n try {\n return btoa(JSON.stringify(poolConfig.filters))\n } catch {\n return ''\n }\n }\n\n // Fetch cycler list from API\n const fetchCyclerList = async (\n poolConfig: LoraPoolConfig | null\n ): Promise => {\n try {\n isLoading.value = true\n\n const requestBody: Record = {\n sort_by: sortBy.value,\n }\n\n if (poolConfig?.filters) {\n requestBody.pool_config = poolConfig.filters\n }\n\n const response = await fetch('/api/lm/loras/cycler-list', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n })\n\n if (!response.ok) {\n const errorData = await response.json()\n throw new Error(errorData.error || 'Failed to fetch cycler list')\n }\n\n const data = await response.json()\n\n if (!data.success) {\n throw new Error(data.error || 'Failed to get cycler list')\n }\n\n return data.loras || []\n } catch (error) {\n console.error('[LoraCyclerState] Error fetching cycler list:', error)\n throw error\n } finally {\n isLoading.value = false\n }\n }\n\n // Refresh list and update state\n const refreshList = async (poolConfig: LoraPoolConfig | null) => {\n try {\n const newHash = hashPoolConfig(poolConfig)\n const hashChanged = newHash !== poolConfigHash.value\n\n // Fetch the list\n const loraList = await fetchCyclerList(poolConfig)\n\n // Update total count\n totalCount.value = loraList.length\n\n // If pool config changed, reset index to 1\n if (hashChanged) {\n currentIndex.value = 1\n poolConfigHash.value = newHash\n }\n\n // Clamp index to valid range\n if (currentIndex.value > totalCount.value) {\n currentIndex.value = Math.max(1, totalCount.value)\n }\n\n // Update current LoRA info\n if (loraList.length > 0 && currentIndex.value > 0) {\n const currentLora = loraList[currentIndex.value - 1]\n if (currentLora) {\n currentLoraName.value = sortBy.value === 'filename' \n ? currentLora.file_name \n : (currentLora.model_name || currentLora.file_name)\n currentLoraFilename.value = currentLora.file_name\n }\n } else {\n currentLoraName.value = ''\n currentLoraFilename.value = ''\n }\n\n return loraList\n } catch (error) {\n console.error('[LoraCyclerState] Error refreshing list:', error)\n throw error\n }\n }\n\n // Set index manually\n const setIndex = (index: number) => {\n // Total count includes no lora option if enabled\n const effectiveTotalCount = includeNoLora.value ? totalCount.value + 1 : totalCount.value\n if (index >= 1 && index <= effectiveTotalCount) {\n currentIndex.value = index\n }\n }\n\n // Reset index to 1 and clear repeat state\n const resetIndex = () => {\n currentIndex.value = 1\n repeatUsed.value = 0\n displayRepeatUsed.value = 0\n // Note: isPaused is intentionally not reset - user may want to stay paused after reset\n }\n\n // Toggle pause state\n const togglePause = () => {\n isPaused.value = !isPaused.value\n }\n\n // Computed property to check if clip strength is disabled\n const isClipStrengthDisabled = computed(() => !useCustomClipRange.value)\n\n // Watch model strength changes to sync with clip strength when not using custom range\n watch(modelStrength, (newValue) => {\n if (!useCustomClipRange.value) {\n clipStrength.value = newValue\n }\n })\n\n // Watch all state changes and update widget value\n watch([\n currentIndex,\n totalCount,\n poolConfigHash,\n modelStrength,\n clipStrength,\n useCustomClipRange,\n usePresetStrength,\n presetStrengthScale,\n sortBy,\n currentLoraName,\n currentLoraFilename,\n repeatCount,\n repeatUsed,\n isPaused,\n includeNoLora,\n ], () => {\n widget.value = buildConfig()\n }, { deep: true })\n\n return {\n // State refs\n currentIndex,\n totalCount,\n poolConfigHash,\n modelStrength,\n clipStrength,\n useCustomClipRange,\n usePresetStrength,\n presetStrengthScale,\n sortBy,\n currentLoraName,\n currentLoraFilename,\n isLoading,\n executionIndex,\n nextIndex,\n repeatCount,\n repeatUsed,\n displayRepeatUsed,\n isPaused,\n includeNoLora,\n isWorkflowExecuting,\n executingRepeatStep,\n\n // Computed\n isClipStrengthDisabled,\n\n // Methods\n buildConfig,\n restoreFromConfig,\n hashPoolConfig,\n fetchCyclerList,\n refreshList,\n setIndex,\n generateNextIndex,\n initializeNextIndex,\n resetIndex,\n togglePause,\n }\n}\n","\n \n \n\n \n
\n \n\n\n\n\n","\n \n \n\n\n\n\n","import { ref, onMounted, onUnmounted, type Ref } from 'vue'\n\n// Dynamic import type for AutoComplete class\ntype AutoCompleteClass = new (\n inputElement: HTMLTextAreaElement,\n modelType: 'loras' | 'embeddings' | 'custom_words' | 'prompt',\n options?: AutocompleteOptions\n) => AutoCompleteInstance\n\ninterface AutocompleteOptions {\n maxItems?: number\n minChars?: number\n debounceDelay?: number\n showPreview?: boolean\n}\n\ninterface AutoCompleteInstance {\n destroy: () => void\n isValid: () => boolean\n refreshCaretHelper: () => void\n}\n\nexport interface UseAutocompleteOptions {\n showPreview?: boolean\n maxItems?: number\n minChars?: number\n debounceDelay?: number\n}\n\nexport function useAutocomplete(\n textareaRef: Ref,\n modelType: 'loras' | 'embeddings' | 'custom_words' | 'prompt' = 'loras',\n options: UseAutocompleteOptions = {}\n) {\n const autocompleteInstance = ref(null)\n const isInitialized = ref(false)\n\n const defaultOptions: AutocompleteOptions = {\n maxItems: 20,\n minChars: 1,\n debounceDelay: 200,\n showPreview: true,\n ...options\n }\n\n const initAutocomplete = async () => {\n if (!textareaRef.value) {\n console.warn('[useAutocomplete] Textarea ref is null, cannot initialize')\n return\n }\n\n if (autocompleteInstance.value) {\n console.log('[useAutocomplete] Already initialized, skipping')\n return\n }\n\n try {\n // Dynamically import the AutoComplete class\n const module = await import(/* @vite-ignore */ `${'../autocomplete.js'}`)\n const AutoComplete: AutoCompleteClass = module.AutoComplete\n\n autocompleteInstance.value = new AutoComplete(\n textareaRef.value,\n modelType,\n defaultOptions\n )\n isInitialized.value = true\n console.log(`[useAutocomplete] Initialized for ${modelType}`)\n } catch (error) {\n console.error('[useAutocomplete] Failed to initialize:', error)\n }\n }\n\n const destroyAutocomplete = () => {\n if (autocompleteInstance.value) {\n autocompleteInstance.value.destroy()\n autocompleteInstance.value = null\n isInitialized.value = false\n console.log('[useAutocomplete] Destroyed')\n }\n }\n\n const refreshCaretHelper = () => {\n if (autocompleteInstance.value) {\n autocompleteInstance.value.refreshCaretHelper()\n }\n }\n\n onMounted(() => {\n // Initialize autocomplete after component is mounted\n // Use nextTick-like delay to ensure DOM is fully ready\n setTimeout(() => {\n initAutocomplete()\n }, 0)\n })\n\n onUnmounted(() => {\n destroyAutocomplete()\n })\n\n return {\n autocompleteInstance,\n isInitialized,\n initAutocomplete,\n destroyAutocomplete,\n refreshCaretHelper\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType\n","\n \n
\n \n \n \n \n \n \n \n
\n
\n \n\n\n\n\n\n\n\n","\n \n \n\n\n\n","import type { App as VueApp } from 'vue'\n\nexport function createVueWidgetCleanup(vueApp: VueApp, onCleanup?: () => void) {\n let didUnmount = false\n\n return () => {\n if (didUnmount) {\n return\n }\n\n vueApp.unmount()\n didUnmount = true\n onCleanup?.()\n }\n}\n","/**\n * Mode change handler for LoRA provider nodes.\n *\n * Provides common mode change logic for nodes that provide LoRA configurations:\n * - Lora Stacker (LoraManager)\n * - Lora Randomizer (LoraManager)\n * - Lora Cycler (LoraManager)\n */\n\n/**\n * List of node types that act as LoRA providers in the workflow chain.\n * These nodes can be traversed when collecting active LoRAs and can trigger\n * downstream loader updates when their mode or active LoRAs change.\n */\nexport const LORA_PROVIDER_NODE_TYPES = [\n \"Lora Stacker (LoraManager)\",\n \"Lora Randomizer (LoraManager)\",\n \"Lora Cycler (LoraManager)\",\n] as const;\n\n/**\n * Nodes that do not own LoRA state themselves, but merge or forward LORA_STACK\n * inputs so downstream trigger-word updates must traverse through them.\n */\nexport const LORA_STACK_AGGREGATOR_NODE_TYPES = [\n \"Lora Stack Combiner (LoraManager)\",\n] as const;\n\nexport const LORA_CHAIN_NODE_TYPES = [\n ...LORA_PROVIDER_NODE_TYPES,\n ...LORA_STACK_AGGREGATOR_NODE_TYPES,\n] as const;\n\nexport type LoraProviderNodeType = typeof LORA_PROVIDER_NODE_TYPES[number];\nexport type LoraStackAggregatorNodeType = typeof LORA_STACK_AGGREGATOR_NODE_TYPES[number];\nexport type LoraChainNodeType = typeof LORA_CHAIN_NODE_TYPES[number];\n\n/**\n * Check if a node class is a LoRA provider node.\n */\nexport function isLoraProviderNode(comfyClass: string): comfyClass is LoraProviderNodeType {\n return LORA_PROVIDER_NODE_TYPES.includes(comfyClass as LoraProviderNodeType);\n}\n\nexport function isLoraStackAggregatorNode(\n comfyClass: string\n): comfyClass is LoraStackAggregatorNodeType {\n return LORA_STACK_AGGREGATOR_NODE_TYPES.includes(comfyClass as LoraStackAggregatorNodeType);\n}\n\nexport function isLoraChainNode(comfyClass: string): comfyClass is LoraChainNodeType {\n return LORA_CHAIN_NODE_TYPES.includes(comfyClass as LoraChainNodeType);\n}\n\n/**\n * Extract active LoRA filenames from a node based on its type.\n *\n * For Lora Stacker and Lora Randomizer: extracts from lorasWidget (array of loras, filtered by active)\n * For Lora Cycler: extracts from cycler_config widget (single current_lora_filename)\n */\nexport function getActiveLorasFromNodeByType(node: any): Set {\n const comfyClass = node?.comfyClass;\n\n if (comfyClass === \"Lora Cycler (LoraManager)\") {\n return extractFromCyclerConfig(node);\n }\n\n if (isLoraStackAggregatorNode(comfyClass)) {\n return new Set();\n }\n\n // Default: use lorasWidget (works for Stacker and Randomizer)\n return extractFromLorasWidget(node);\n}\n\n/**\n * Extract active LoRAs from a node's lorasWidget.\n * Used by Lora Stacker and Lora Randomizer.\n */\nfunction extractFromLorasWidget(node: any): Set {\n const activeLoraNames = new Set();\n const lorasWidget = node.lorasWidget || node.widgets?.find((w: any) => w.name === 'loras');\n\n if (lorasWidget?.value) {\n lorasWidget.value.forEach((lora: any) => {\n if (lora.active) {\n activeLoraNames.add(lora.name);\n }\n });\n }\n\n return activeLoraNames;\n}\n\n/**\n * Extract the active LoRA from a Lora Cycler node.\n * The Cycler has only one active LoRA at a time, stored in cycler_config.current_lora_filename.\n */\nfunction extractFromCyclerConfig(node: any): Set {\n const activeLoraNames = new Set();\n const cyclerWidget = node.widgets?.find((w: any) => w.name === 'cycler_config');\n\n if (cyclerWidget?.value?.current_lora_filename) {\n activeLoraNames.add(cyclerWidget.value.current_lora_filename);\n }\n\n return activeLoraNames;\n}\n\n/**\n * Check if a mode value represents an active node.\n * Active modes: 0 (Always), 3 (On Trigger)\n * Inactive modes: 2 (Never), 4 (Bypass)\n */\nexport function isNodeActive(mode: number | undefined): boolean {\n return mode === undefined || mode === 0 || mode === 3;\n}\n\n/**\n * Setup a mode change handler for a node.\n *\n * Intercepts the mode property setter to trigger a callback when the mode changes.\n * This is needed because ComfyUI sets the mode property directly without using a setter.\n *\n * @param node - The node to set up the handler for\n * @param onModeChange - Callback function called when mode changes (receives newMode and oldMode)\n */\nexport function setupModeChangeHandler(\n node: any,\n onModeChange: (newMode: number, oldMode: number) => void\n): void {\n let _mode = node.mode;\n\n Object.defineProperty(node, 'mode', {\n get() {\n return _mode;\n },\n set(value: number) {\n const oldValue = _mode;\n _mode = value;\n\n if (oldValue !== value) {\n onModeChange(value, oldValue);\n }\n }\n });\n}\n\n/**\n * Create a mode change callback that updates downstream loaders.\n *\n * This is the standard callback used by all LoRA provider nodes.\n * When mode changes:\n * 1. Determine if the node is active (mode 0 or 3)\n * 2. Get active LoRAs (empty set if inactive)\n * 3. Call the optional node-specific callback (e.g., updateConnectedTriggerWords for Stacker)\n * 4. Update downstream loaders\n *\n * @param node - The node instance\n * @param updateDownstreamLoaders - Function to update downstream loaders (from utils.js)\n * @param nodeSpecificCallback - Optional callback for node-specific behavior\n */\nexport function createModeChangeCallback(\n node: any,\n updateDownstreamLoaders: (node: any) => void,\n nodeSpecificCallback?: (activeLoraNames: Set) => void\n): (newMode: number, oldMode: number) => void {\n return (newMode: number, _oldMode: number) => {\n const isNodeCurrentlyActive = isNodeActive(newMode);\n const activeLoraNames = isNodeCurrentlyActive\n ? getActiveLorasFromNodeByType(node)\n : new Set();\n\n // Node-specific handling (e.g., Lora Stacker's direct trigger toggle updates)\n if (nodeSpecificCallback) {\n nodeSpecificCallback(activeLoraNames);\n }\n\n // Always update downstream loaders\n updateDownstreamLoaders(node);\n };\n}\n","const settingsStore = new Map();\n\nexport const app = {\n canvas: { ds: { scale: 1 } },\n extensionManager: {\n toast: {\n add: () => {},\n },\n setting: {\n get: (id) => (settingsStore.has(id) ? settingsStore.get(id) : undefined),\n set: async (id, value) => {\n settingsStore.set(id, value);\n },\n },\n },\n registerExtension: () => {},\n graphToPrompt: async () => ({ workflow: { nodes: new Map() } }),\n};\n\nexport default app;\n","export const api = {\n fetchApi: (...args) => fetch(...args),\n addEventListener: (eventName, handler) => document.addEventListener(eventName, handler),\n removeEventListener: (eventName, handler) => document.removeEventListener(eventName, handler),\n};\n\nexport default api;\n","import { api } from \"../../scripts/api.js\";\nimport { app } from \"../../scripts/app.js\";\nimport { TextAreaCaretHelper } from \"./textarea_caret_helper.js\";\nimport {\n WILDCARD_COMMANDS,\n createWildcardEmptyStateItem,\n createWildcardNoMatchesItem,\n getWildcardInsertText,\n getWildcardSearchEndpoint,\n isWildcardCommand,\n isWildcardInfoItem,\n} from \"./autocomplete_wildcards.js\";\nimport {\n getAutocompleteAppendCommaPreference,\n getAutocompleteAutoFormatPreference,\n getAutocompleteAcceptKeyPreference,\n getPromptTagAutocompletePreference,\n getTagSpaceReplacementPreference,\n} from \"./settings.js\";\nimport { showToast } from \"./utils.js\";\n\n// Command definitions for category filtering\nconst TAG_COMMANDS = {\n '/character': { categories: [4, 11], label: 'Character' },\n '/artist': { categories: [1, 8], label: 'Artist' },\n '/general': { categories: [0, 7], label: 'General' },\n '/copyright': { categories: [3, 10], label: 'Copyright' },\n '/meta': { categories: [5, 14], label: 'Meta' },\n '/species': { categories: [12], label: 'Species' },\n '/lore': { categories: [15], label: 'Lore' },\n '/emb': { type: 'embedding', label: 'Embeddings' },\n '/embedding': { type: 'embedding', label: 'Embeddings' },\n ...WILDCARD_COMMANDS,\n // Autocomplete toggle commands - only show one based on current state\n '/ac': {\n type: 'toggle_setting',\n settingId: 'loramanager.prompt_tag_autocomplete',\n value: true,\n label: 'Autocomplete: ON',\n condition: () => !getPromptTagAutocompletePreference()\n },\n '/noac': {\n type: 'toggle_setting',\n settingId: 'loramanager.prompt_tag_autocomplete',\n value: false,\n label: 'Autocomplete: OFF',\n condition: () => getPromptTagAutocompletePreference()\n },\n};\n\n// Category display information\nconst CATEGORY_INFO = {\n 0: { bg: 'rgba(0, 155, 230, 0.2)', text: '#4bb4ff', label: 'General' },\n 1: { bg: 'rgba(255, 138, 139, 0.2)', text: '#ffc3c3', label: 'Artist' },\n 3: { bg: 'rgba(199, 151, 255, 0.2)', text: '#ddc9fb', label: 'Copyright' },\n 4: { bg: 'rgba(53, 198, 74, 0.2)', text: '#93e49a', label: 'Character' },\n 5: { bg: 'rgba(234, 208, 132, 0.2)', text: '#f7e7c3', label: 'Meta' },\n 7: { bg: 'rgba(0, 155, 230, 0.2)', text: '#4bb4ff', label: 'General' },\n 8: { bg: 'rgba(255, 138, 139, 0.2)', text: '#ffc3c3', label: 'Artist' },\n 10: { bg: 'rgba(199, 151, 255, 0.2)', text: '#ddc9fb', label: 'Copyright' },\n 11: { bg: 'rgba(53, 198, 74, 0.2)', text: '#93e49a', label: 'Character' },\n 12: { bg: 'rgba(237, 137, 54, 0.2)', text: '#f6ad55', label: 'Species' },\n 14: { bg: 'rgba(234, 208, 132, 0.2)', text: '#f7e7c3', label: 'Meta' },\n 15: { bg: 'rgba(72, 187, 120, 0.2)', text: '#68d391', label: 'Lore' },\n};\n\n// Format post count with K/M suffix\nfunction formatPostCount(count) {\n if (count >= 1000000) {\n return (count / 1000000).toFixed(1).replace(/\\.0$/, '') + 'M';\n } else if (count >= 1000) {\n return (count / 1000).toFixed(1).replace(/\\.0$/, '') + 'K';\n }\n return count.toString();\n}\n\nfunction parseUsageTipNumber(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return null;\n}\n\nfunction splitRelativePath(relativePath = '') {\n const parts = relativePath.split(/[/\\\\]+/).filter(Boolean);\n const fileName = parts.pop() ?? '';\n return {\n directories: parts,\n fileName,\n };\n}\n\nfunction removeGeneralExtension(fileName = '') {\n return fileName.replace(/\\.[^.]+$/, '');\n}\n\nfunction removeLoraExtension(fileName = '') {\n return fileName.replace(/\\.(safetensors|ckpt|pt|bin)$/i, '');\n}\n\nlet _loraSyntaxFormatCache = null;\nlet _loraSyntaxFormatRefreshPromise = null;\n\nfunction _getLoraSyntaxFormat() {\n if (_loraSyntaxFormatCache !== null) {\n return _loraSyntaxFormatCache;\n }\n return 'legacy';\n}\n\nasync function _fetchLoraSyntaxFormat() {\n try {\n const response = await api.fetchApi('/lm/settings');\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.settings) {\n _loraSyntaxFormatCache = data.settings.lora_syntax_format || 'legacy';\n return;\n }\n }\n } catch (e) {\n }\n if (_loraSyntaxFormatCache === null) {\n _loraSyntaxFormatCache = 'legacy';\n }\n}\n\nfunction _triggerBackgroundRefresh() {\n if (_loraSyntaxFormatRefreshPromise) {\n return;\n }\n _loraSyntaxFormatRefreshPromise = _fetchLoraSyntaxFormat().finally(() => {\n _loraSyntaxFormatRefreshPromise = null;\n });\n}\n\nasync function refreshLoraSyntaxFormat() {\n await _fetchLoraSyntaxFormat();\n}\n\nfunction _initLoraSyntaxFormat() {\n _triggerBackgroundRefresh();\n}\n_initLoraSyntaxFormat();\n\nfunction _initLoraSyntaxFormatReactive() {\n window.addEventListener('storage', (e) => {\n if (e.key === 'lm:lora-syntax-format-changed') {\n _triggerBackgroundRefresh();\n }\n });\n\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n _triggerBackgroundRefresh();\n }\n });\n}\n_initLoraSyntaxFormatReactive();\n\nfunction parseSearchTokens(term = '') {\n const include = [];\n const exclude = [];\n\n term.split(/\\s+/).forEach((rawTerm) => {\n const token = rawTerm.trim();\n if (!token) {\n return;\n }\n if (token.startsWith('-') && token.length > 1) {\n exclude.push(token.slice(1).toLowerCase());\n } else {\n include.push(token.toLowerCase());\n }\n });\n\n return { include, exclude };\n}\n\nfunction escapePromptParentheses(text) {\n // In ComfyUI's CLIP text encoder, bare parentheses are weight adjustment syntax.\n // Tags containing literal parentheses must be escaped with backslash to prevent\n // them from being interpreted as weight modifiers. e.g. \"foo (bar)\" → \"foo \\(bar\\)\"\n return text.replace(/\\(/g, '\\\\(').replace(/\\)/g, '\\\\)');\n}\n\nfunction formatAutocompleteInsertion(text = '') {\n const trimmed = typeof text === 'string' ? text.trim() : '';\n if (!trimmed) {\n return '';\n }\n\n return getAutocompleteAppendCommaPreference() ? `${trimmed},` : `${trimmed} `;\n}\n\nfunction normalizeAutocompleteSegment(segment = '') {\n return segment.replace(/\\s+/g, ' ').trim();\n}\n\nexport function formatAutocompleteTextOnBlur(text = '') {\n if (typeof text !== 'string') {\n return '';\n }\n\n return text\n .split('\\n')\n .map((line) => {\n if (!line.trim()) {\n return '';\n }\n\n const cleanedSegments = line\n .split(',')\n .map(normalizeAutocompleteSegment)\n .filter(Boolean);\n\n return cleanedSegments.join(', ');\n })\n .join('\\n');\n}\n\nfunction shouldAcceptAutocompleteKey(key) {\n const mode = getAutocompleteAcceptKeyPreference();\n\n if (mode === 'tab_only') {\n return key === 'Tab';\n }\n\n if (mode === 'enter_only') {\n return key === 'Enter';\n }\n\n return key === 'Tab' || key === 'Enter';\n}\n\nfunction normalizeAutocompleteMatchText(text = '') {\n return text.toLowerCase().replace(/[-_\\s']/g, '');\n}\n\nconst AUTOCOMPLETE_METADATA_VERSION = 1;\n\nfunction createAutocompleteMetadataBase(textWidgetName = 'text') {\n return {\n version: AUTOCOMPLETE_METADATA_VERSION,\n textWidgetName,\n };\n}\n\nfunction createDefaultBehavior(modelType) {\n return {\n enablePreview: false,\n async getInsertText(_instance, relativePath) {\n const trimmed = relativePath?.trim() ?? '';\n if (!trimmed) {\n return '';\n }\n return formatAutocompleteInsertion(escapePromptParentheses(trimmed));\n },\n };\n}\n\nconst MODEL_BEHAVIORS = {\n loras: {\n enablePreview: true,\n init(instance) {\n if (!instance.options.showPreview) {\n return;\n }\n instance.initPreviewTooltip({ modelType: instance.modelType });\n },\n showPreview(instance, relativePath, itemElement) {\n if (!instance.previewTooltip) {\n return;\n }\n instance.showPreviewForItem(relativePath, itemElement);\n },\n hidePreview(instance) {\n if (!instance.previewTooltip) {\n return;\n }\n instance.previewTooltip.hide();\n },\n destroy(instance) {\n if (instance.previewTooltip) {\n instance.previewTooltip.cleanup();\n instance.previewTooltip = null;\n }\n },\n async getInsertText(_instance, relativePath) {\n const { directories, fileName } = splitRelativePath(relativePath);\n const baseName = removeLoraExtension(fileName);\n const folder = directories.length ? directories.join('/') + '/' : '';\n const loraName = folder + baseName;\n\n const resultName = _getLoraSyntaxFormat() === 'legacy'\n ? baseName\n : loraName;\n\n let strength = 1.0;\n let hasStrength = false;\n let clipStrength = null;\n\n try {\n const response = await api.fetchApi(`/lm/loras/usage-tips-by-path?relative_path=${encodeURIComponent(relativePath)}`);\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.usage_tips) {\n try {\n const usageTips = JSON.parse(data.usage_tips);\n const parsedStrength = parseUsageTipNumber(usageTips.strength);\n if (parsedStrength !== null) {\n strength = parsedStrength;\n hasStrength = true;\n }\n const clipSource = usageTips.clip_strength ?? usageTips.clipStrength;\n const parsedClipStrength = parseUsageTipNumber(clipSource);\n if (parsedClipStrength !== null) {\n clipStrength = parsedClipStrength;\n if (!hasStrength) {\n strength = 1.0;\n }\n }\n } catch (parseError) {\n console.warn('Failed to parse usage tips JSON:', parseError);\n }\n }\n }\n } catch (error) {\n console.warn('Failed to fetch usage tips:', error);\n }\n\n if (clipStrength !== null) {\n return formatAutocompleteInsertion(``);\n }\n return formatAutocompleteInsertion(``);\n }\n },\n embeddings: {\n enablePreview: true,\n init(instance) {\n if (!instance.options.showPreview) {\n return;\n }\n instance.initPreviewTooltip({ modelType: instance.modelType });\n },\n async getInsertText(_instance, relativePath) {\n const { directories, fileName } = splitRelativePath(relativePath);\n const trimmedName = removeGeneralExtension(fileName);\n const folder = directories.length ? `${directories.join('/')}/` : '';\n return formatAutocompleteInsertion(`embedding:${folder}${trimmedName}`);\n },\n },\n custom_words: {\n enablePreview: false,\n async getInsertText(_instance, relativePath) {\n return formatAutocompleteInsertion(escapePromptParentheses(relativePath));\n },\n },\n prompt: {\n enablePreview: true,\n init(instance) {\n if (!instance.options.showPreview) {\n return;\n }\n instance.initPreviewTooltip({ modelType: 'embeddings' });\n },\n showPreview(instance, relativePath, itemElement) {\n if (!instance.previewTooltip || instance.searchType !== 'embeddings') {\n return;\n }\n instance.showPreviewForItem(relativePath, itemElement);\n },\n hidePreview(instance) {\n if (!instance.previewTooltip) {\n return;\n }\n instance.previewTooltip.hide();\n },\n destroy(instance) {\n if (instance.previewTooltip) {\n instance.previewTooltip.cleanup();\n instance.previewTooltip = null;\n }\n },\n async getInsertText(instance, relativePath) {\n const rawSearchTerm = instance.getSearchTerm(instance.inputElement.value);\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n\n if (match || instance.searchType === 'embeddings') {\n const { directories, fileName } = splitRelativePath(relativePath);\n const trimmedName = removeGeneralExtension(fileName);\n const folder = directories.length ? `${directories.join('/')}/` : '';\n return formatAutocompleteInsertion(`embedding:${folder}${trimmedName}`);\n } else if (instance.searchType === 'wildcards' || isWildcardCommand(instance.activeCommand)) {\n return formatAutocompleteInsertion(getWildcardInsertText(relativePath));\n } else {\n let tagText = relativePath;\n\n if (getTagSpaceReplacementPreference()) {\n tagText = tagText.replace(/_/g, ' ');\n }\n\n tagText = escapePromptParentheses(tagText);\n\n return formatAutocompleteInsertion(tagText);\n }\n },\n },\n};\n\nfunction getModelBehavior(modelType) {\n return MODEL_BEHAVIORS[modelType] ?? createDefaultBehavior(modelType);\n}\n\nclass AutoComplete {\n constructor(inputElement, modelType = 'loras', options = {}) {\n this.inputElement = inputElement;\n this.modelType = modelType;\n this.behavior = getModelBehavior(modelType);\n this.options = {\n maxItems: 100,\n pageSize: 20,\n visibleItems: 15, // Fixed at 15 items for balanced UX\n itemHeight: 40,\n minChars: 1,\n debounceDelay: 200,\n showPreview: this.behavior.enablePreview ?? false,\n enableVirtualScroll: true,\n ...options\n };\n\n this.dropdown = null;\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n this.items = [];\n this.debounceTimer = null;\n this.isVisible = false;\n this.currentSearchTerm = '';\n this.wildcardMeta = null;\n this.previewTooltip = null;\n this.previewTooltipPromise = null;\n this.searchType = null;\n this.suppressAutocompleteOnce = false;\n\n // Virtual scrolling state\n this.virtualScrollOffset = 0;\n this.hasMoreItems = true;\n this.isLoadingMore = false;\n this.currentPage = 0;\n this.scrollContainer = null;\n this.contentContainer = null;\n this.totalHeight = 0;\n\n // Command mode state\n this.activeCommand = null; // Current active command (e.g., { categories: [4, 11], label: 'Character' })\n this.showingCommands = false; // Whether showing command list dropdown\n\n // Initialize TextAreaCaretHelper\n this.helper = new TextAreaCaretHelper(inputElement, () => app.canvas.ds.scale);\n\n this.onInput = null;\n this.onKeyDown = null;\n this.onBlur = null;\n this.onDocumentClick = null;\n this.onScroll = null;\n\n this.init();\n }\n \n init() {\n this.createDropdown();\n this.bindEvents();\n }\n \n createDropdown() {\n this.dropdown = document.createElement('div');\n this.dropdown.className = 'comfy-autocomplete-dropdown';\n\n // Apply new color scheme\n this.dropdown.style.cssText = `\n position: absolute;\n z-index: 10000;\n overflow: hidden;\n background-color: rgba(40, 44, 52, 0.95);\n border: 1px solid rgba(226, 232, 240, 0.2);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n display: none;\n min-width: 200px;\n width: auto;\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n `;\n\n if (this.options.enableVirtualScroll) {\n // Create scroll container for virtual scrolling\n this.scrollContainer = document.createElement('div');\n this.scrollContainer.className = 'comfy-autocomplete-scroll-container';\n this.scrollContainer.style.cssText = `\n overflow-y: auto;\n max-height: ${this.options.visibleItems * this.options.itemHeight}px;\n position: relative;\n `;\n\n // Create content container for virtual items\n this.contentContainer = document.createElement('div');\n this.contentContainer.className = 'comfy-autocomplete-content';\n this.contentContainer.style.cssText = `\n position: relative;\n width: 100%;\n `;\n\n this.scrollContainer.appendChild(this.contentContainer);\n this.dropdown.appendChild(this.scrollContainer);\n }\n\n // Custom scrollbar styles with new color scheme\n const style = document.createElement('style');\n style.textContent = `\n .comfy-autocomplete-dropdown::-webkit-scrollbar {\n width: 8px;\n }\n .comfy-autocomplete-dropdown::-webkit-scrollbar-track {\n background: rgba(40, 44, 52, 0.3);\n border-radius: 4px;\n }\n .comfy-autocomplete-dropdown::-webkit-scrollbar-thumb {\n background: rgba(226, 232, 240, 0.2);\n border-radius: 4px;\n }\n .comfy-autocomplete-dropdown::-webkit-scrollbar-thumb:hover {\n background: rgba(226, 232, 240, 0.4);\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar {\n width: 8px;\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar-track {\n background: rgba(40, 44, 52, 0.3);\n border-radius: 4px;\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar-thumb {\n background: rgba(226, 232, 240, 0.2);\n border-radius: 4px;\n }\n .comfy-autocomplete-scroll-container::-webkit-scrollbar-thumb:hover {\n background: rgba(226, 232, 240, 0.4);\n }\n .comfy-autocomplete-loading {\n padding: 12px;\n text-align: center;\n color: rgba(226, 232, 240, 0.5);\n font-size: 12px;\n }\n `;\n document.head.appendChild(style);\n\n // Append to body to avoid overflow issues\n document.body.appendChild(this.dropdown);\n\n if (typeof this.behavior.init === 'function') {\n this.behavior.init(this);\n }\n }\n \n initPreviewTooltip(options = {}) {\n if (this.previewTooltip || this.previewTooltipPromise) {\n return;\n }\n // Dynamically import and create preview tooltip\n this.previewTooltipPromise = import('./preview_tooltip.js').then(module => {\n const config = { modelType: this.modelType, ...options };\n this.previewTooltip = new module.PreviewTooltip(config);\n }).catch(err => {\n console.warn('Failed to load preview tooltip:', err);\n }).finally(() => {\n this.previewTooltipPromise = null;\n });\n }\n \n bindEvents() {\n // Handle input changes\n this.onInput = (e) => {\n if (this.suppressAutocompleteOnce) {\n this.suppressAutocompleteOnce = false;\n this.hide();\n return;\n }\n this.handleInput(e.target.value);\n };\n this.inputElement.addEventListener('input', this.onInput);\n\n // Handle keyboard navigation\n this.onKeyDown = (e) => {\n this.handleKeyDown(e);\n };\n this.inputElement.addEventListener('keydown', this.onKeyDown);\n\n // Handle focus out to hide dropdown\n this.onBlur = () => {\n if (getAutocompleteAutoFormatPreference()) {\n const formattedValue = formatAutocompleteTextOnBlur(this.inputElement.value);\n if (formattedValue !== this.inputElement.value) {\n this.inputElement.value = formattedValue;\n this.suppressAutocompleteOnce = true;\n this.inputElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n\n // Delay hiding to allow for clicks on dropdown items\n setTimeout(() => {\n this.hide();\n }, 150);\n };\n this.inputElement.addEventListener('blur', this.onBlur);\n\n // Handle clicks outside to hide dropdown\n this.onDocumentClick = (e) => {\n if (!this.dropdown) {\n return;\n }\n\n const target = e.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (!this.dropdown.contains(target) && target !== this.inputElement) {\n this.hide();\n }\n };\n document.addEventListener('click', this.onDocumentClick);\n\n // Mark this element as having autocomplete events bound\n this.inputElement._autocompleteEventsBound = true;\n\n // Bind scroll event for virtual scrolling\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n this.onScroll = () => {\n this.handleScroll();\n };\n this.scrollContainer.addEventListener('scroll', this.onScroll);\n }\n }\n\n /**\n * Check if the autocomplete is valid (input element is in DOM and events are bound)\n */\n isValid() {\n return this.inputElement &&\n document.body.contains(this.inputElement) &&\n this.inputElement._autocompleteEventsBound === true;\n }\n\n /**\n * Check if events need to be rebound (element exists but events not bound)\n */\n needsRebind() {\n return this.inputElement &&\n document.body.contains(this.inputElement) &&\n this.inputElement._autocompleteEventsBound !== true;\n }\n\n /**\n * Rebind events to the input element (useful after Vue moves the element)\n */\n rebindEvents() {\n // Remove old listeners if they exist\n if (this.onInput) {\n this.inputElement.removeEventListener('input', this.onInput);\n }\n if (this.onKeyDown) {\n this.inputElement.removeEventListener('keydown', this.onKeyDown);\n }\n if (this.onBlur) {\n this.inputElement.removeEventListener('blur', this.onBlur);\n }\n\n // Rebind all events\n this.bindEvents();\n\n console.log('[Lora Manager] Autocomplete events rebound');\n }\n\n /**\n * Refresh the TextAreaCaretHelper (useful after element properties change)\n */\n refreshHelper() {\n if (this.inputElement && document.body.contains(this.inputElement)) {\n this.helper = new TextAreaCaretHelper(this.inputElement, () => app.canvas.ds.scale);\n }\n }\n \n handleInput(value = '') {\n // Clear previous debounce timer\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n // Get the search term (text after last comma / '>')\n const rawSearchTerm = this.getSearchTerm(value);\n let searchTerm = rawSearchTerm;\n let endpoint = `/lm/${this.modelType}/relative-paths`;\n\n // For embeddings, only trigger autocomplete when the current token\n // starts with the explicit \"emb:\" prefix. This avoids interrupting\n // normal prompt typing while still allowing quick manual triggering.\n if (this.modelType === 'embeddings') {\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n if (!match) {\n this.hide();\n return;\n }\n searchTerm = (match[1] || '').trim();\n }\n\n // For prompt model type, check if we're searching embeddings, commands, or tags\n if (this.modelType === 'prompt') {\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n if (match) {\n // User typed \"emb:\" prefix - always allow embeddings search\n endpoint = '/lm/embeddings/relative-paths';\n searchTerm = (match[1] || '').trim();\n this.searchType = 'embeddings';\n this.activeCommand = null;\n this.showingCommands = false;\n } else {\n // Check for command mode FIRST (always runs, regardless of setting)\n const commandResult = this._parseCommandInput(rawSearchTerm);\n\n if (commandResult.showCommands) {\n // Show command list dropdown\n this.showingCommands = true;\n this.activeCommand = null;\n this.searchType = 'commands';\n this._showCommandList(commandResult.commandFilter);\n return;\n } else if (commandResult.command?.type === 'toggle_setting') {\n // Handle toggle setting command (/ac, /noac)\n this._handleToggleSettingCommand(commandResult.command);\n return;\n } else if (commandResult.command) {\n // Command is active, use filtered search\n this.showingCommands = false;\n this.activeCommand = commandResult.command;\n searchTerm = commandResult.searchTerm;\n\n if (commandResult.command.type === 'embedding') {\n // /emb or /embedding command\n endpoint = '/lm/embeddings/relative-paths';\n this.searchType = 'embeddings';\n } else if (isWildcardCommand(commandResult.command)) {\n endpoint = getWildcardSearchEndpoint();\n this.searchType = 'wildcards';\n } else {\n // Category filter command\n const categories = commandResult.command.categories.join(',');\n endpoint = `/lm/custom-words/search?category=${categories}`;\n this.searchType = 'custom_words';\n }\n } else if (getPromptTagAutocompletePreference()) {\n // No command and setting enabled - regular tag search with enriched results\n this.showingCommands = false;\n this.activeCommand = null;\n endpoint = '/lm/custom-words/search?enriched=true';\n // Use full search term for query variation generation\n // The search() method will generate multiple query variations including:\n // - Original query (for natural language matching)\n // - Underscore version (e.g., \"looking_to_the_side\" for \"looking to the side\")\n // - Last token (for backward compatibility with continuous typing)\n searchTerm = rawSearchTerm;\n this.searchType = 'custom_words';\n } else {\n // No command and setting disabled - no autocomplete for direct typing\n this.hide();\n return;\n }\n }\n }\n\n const allowEmptyWildcardSearch =\n this.modelType === 'prompt' &&\n this.searchType === 'wildcards' &&\n searchTerm.length === 0;\n\n if (!allowEmptyWildcardSearch && searchTerm.length < this.options.minChars) {\n this.hide();\n return;\n }\n\n // Debounce the search\n this.debounceTimer = setTimeout(() => {\n this.search(searchTerm, endpoint);\n }, this.options.debounceDelay);\n }\n \n getSearchTerm(value) {\n return this.getActiveSearchRange(value).text;\n }\n\n getActiveSearchRange(value = null) {\n const currentValue = typeof value === 'string' ? value : this.inputElement.value;\n const caretPos = this.getCaretPosition();\n const beforeCursor = this.helper.getBeforeCursor() ?? currentValue.substring(0, caretPos);\n let start = this._getHardBoundaryStart(beforeCursor);\n\n if (!getAutocompleteAppendCommaPreference()) {\n const persistedBoundaryEnd = this._getPersistedBoundaryEnd(currentValue, caretPos);\n if (persistedBoundaryEnd !== null && persistedBoundaryEnd > start) {\n start = persistedBoundaryEnd;\n }\n }\n\n const rawText = beforeCursor.substring(start);\n const leadingWhitespaceLength = rawText.length - rawText.trimStart().length;\n const trimmedStart = start + leadingWhitespaceLength;\n const text = rawText.trim();\n\n if (this.modelType === 'prompt') {\n const tokenRange = this._getPromptTokenRange(rawText, trimmedStart, caretPos);\n if (tokenRange) {\n return {\n start: tokenRange.start,\n trimmedStart: tokenRange.trimmedStart,\n end: caretPos,\n beforeCursor,\n rawText: tokenRange.rawText,\n text: tokenRange.text,\n tokenType: tokenRange.tokenType,\n };\n }\n }\n\n return {\n start,\n trimmedStart,\n end: caretPos,\n beforeCursor,\n rawText,\n text,\n };\n }\n\n _getPromptTokenRange(rawText = '', trimmedStart = 0, caretPos = 0) {\n const trimmedText = rawText.trim();\n if (!trimmedText) {\n return {\n start: trimmedStart,\n trimmedStart,\n rawText: '',\n text: '',\n tokenType: 'empty',\n };\n }\n\n const commandOffset = trimmedText.startsWith('/')\n ? 0\n : trimmedText.lastIndexOf(' /');\n if (commandOffset !== -1) {\n const normalizedCommandOffset = commandOffset === 0 ? 0 : commandOffset + 1;\n const commandText = trimmedText.slice(normalizedCommandOffset);\n const commandStart = trimmedStart + normalizedCommandOffset;\n return {\n start: commandStart,\n trimmedStart: commandStart,\n rawText: commandText,\n text: commandText,\n tokenType: commandText === '/' ? 'empty_command_trigger' : 'command',\n };\n }\n\n const wildcardMatch = trimmedText.match(/(?:^|\\s)(__[\\w\\s.\\-+/*\\\\]+?__)$/);\n if (wildcardMatch) {\n const wildcardText = wildcardMatch[1];\n const wildcardOffset = trimmedText.lastIndexOf(wildcardText);\n const wildcardStart = trimmedStart + wildcardOffset;\n return {\n start: wildcardStart,\n trimmedStart: wildcardStart,\n rawText: wildcardText,\n text: '',\n tokenType: 'wildcard_literal',\n };\n }\n\n const embeddingOffset = trimmedText.search(/(?:^|\\s)emb:[^\\s]*$/i);\n if (embeddingOffset !== -1) {\n const normalizedEmbeddingOffset = trimmedText.slice(embeddingOffset).startsWith(' ')\n ? embeddingOffset + 1\n : embeddingOffset;\n const embeddingText = trimmedText.slice(normalizedEmbeddingOffset);\n const embeddingStart = trimmedStart + normalizedEmbeddingOffset;\n return {\n start: embeddingStart,\n trimmedStart: embeddingStart,\n rawText: embeddingText,\n text: embeddingText,\n tokenType: 'embedding_literal',\n };\n }\n\n return {\n start: trimmedStart,\n trimmedStart,\n rawText,\n text: trimmedText,\n tokenType: 'tag_text',\n };\n }\n\n _getHardBoundaryStart(beforeCursor = '') {\n const lastComma = beforeCursor.lastIndexOf(',');\n const lastAngle = beforeCursor.lastIndexOf('>');\n const lastNewline = Math.max(beforeCursor.lastIndexOf('\\n'), beforeCursor.lastIndexOf('\\r'));\n return Math.max(lastComma, lastAngle, lastNewline) + 1;\n }\n\n _getMetadataWidget() {\n return this.inputElement?._autocompleteMetadataWidget\n ?? this.inputElement?._autocompleteHostWidget?.metadataWidget\n ?? null;\n }\n\n _getMetadataBase() {\n return createAutocompleteMetadataBase(this.inputElement?._autocompleteTextWidgetName ?? 'text');\n }\n\n _getAutocompleteMetadata() {\n const metadataWidget = this._getMetadataWidget();\n const value = metadataWidget?.value;\n\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return this._getMetadataBase();\n }\n\n return {\n ...this._getMetadataBase(),\n ...value,\n };\n }\n\n _setAutocompleteMetadata(metadata = {}) {\n const metadataWidget = this._getMetadataWidget();\n if (!metadataWidget) {\n return;\n }\n\n metadataWidget.value = {\n ...this._getMetadataBase(),\n ...metadata,\n };\n }\n\n _clearLastAcceptedBoundary() {\n const metadataWidget = this._getMetadataWidget();\n if (!metadataWidget) {\n return;\n }\n\n const metadata = this._getAutocompleteMetadata();\n delete metadata.lastAccepted;\n metadataWidget.value = metadata;\n }\n\n _storeLastAcceptedBoundary(boundary) {\n this._setAutocompleteMetadata({ lastAccepted: boundary });\n }\n\n _getPersistedBoundaryEnd(currentValue, caretPos) {\n const metadata = this._getAutocompleteMetadata();\n const boundary = metadata?.lastAccepted;\n\n if (!boundary || typeof boundary !== 'object') {\n return null;\n }\n\n const { start, end, insertedText, textSnapshot } = boundary;\n\n if (!Number.isInteger(start) || !Number.isInteger(end) || start < 0 || end < start) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (end > currentValue.length || end > caretPos) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (typeof insertedText !== 'string' || insertedText.length === 0) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (currentValue.slice(start, end) !== insertedText) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n if (typeof textSnapshot !== 'string' || currentValue.slice(0, end) !== textSnapshot) {\n this._clearLastAcceptedBoundary();\n return null;\n }\n\n return end;\n }\n\n /**\n * Extract the last space-separated token from a search term\n * Tag names don't contain spaces, so for tag autocomplete we only need the last token\n * @param {string} term - The full search term (e.g., \"hello 1gi\")\n * @returns {string} - The last token (e.g., \"1gi\"), or the original term if no spaces\n */\n _getLastSpaceToken(term) {\n const tokens = term.trim().split(/\\s+/);\n return tokens[tokens.length - 1] || term;\n }\n\n /**\n * Generate query variations for better autocomplete matching\n * Includes original query and normalized versions (spaces to underscores, etc.)\n * @param {string} term - Original search term\n * @returns {string[]} - Array of query variations\n */\n _generateQueryVariations(term) {\n if (!term || term.length < this.options.minChars) {\n return [];\n }\n\n const variations = new Set();\n const trimmed = term.trim();\n\n // Always include original query\n variations.add(trimmed);\n variations.add(trimmed.toLowerCase());\n\n // Add underscore version (Danbooru convention: spaces become underscores)\n // e.g., \"looking to the side\" -> \"looking_to_the_side\"\n if (trimmed.includes(' ')) {\n const underscoreVersion = trimmed.replace(/ /g, '_');\n variations.add(underscoreVersion);\n variations.add(underscoreVersion.toLowerCase());\n }\n\n // Add no-space version for flexible matching\n // e.g., \"blue hair\" -> \"bluehair\"\n if (trimmed.includes(' ') || trimmed.includes('_')) {\n const noSpaceVersion = trimmed.replace(/[ _]/g, '');\n variations.add(noSpaceVersion);\n variations.add(noSpaceVersion.toLowerCase());\n }\n\n // Add last token only (legacy behavior for continuous typing)\n const lastToken = this._getLastSpaceToken(trimmed);\n if (lastToken !== trimmed) {\n variations.add(lastToken);\n variations.add(lastToken.toLowerCase());\n }\n\n return Array.from(variations).filter(v => v.length >= this.options.minChars);\n }\n\n _normalizeQueryForRequest(term = '') {\n return term.trim().toLowerCase();\n }\n\n _getQueriesToExecute(term = '') {\n const queryVariations = this._generateQueryVariations(term);\n const uniqueQueries = [];\n const seen = new Set();\n\n for (const query of queryVariations) {\n const normalized = this._normalizeQueryForRequest(query);\n if (!normalized || seen.has(normalized)) {\n continue;\n }\n\n seen.add(normalized);\n uniqueQueries.push(query);\n\n if (uniqueQueries.length >= 4) {\n break;\n }\n }\n\n return uniqueQueries;\n }\n\n _containsInformationalItems() {\n return this.items.some((item) => isWildcardInfoItem(item));\n }\n\n _isSelectableInfoItem(item) {\n return isWildcardInfoItem(item);\n }\n\n /**\n * Get display text for an item (without extension for models)\n * @param {string|Object} item - Item to get display text from\n * @returns {string} - Display text without extension\n */\n _getDisplayText(item) {\n if (isWildcardInfoItem(item)) {\n return item.title || item.description || 'Wildcards';\n }\n\n const itemText = typeof item === 'object' && item.tag_name ? item.tag_name : String(item);\n // Remove extension for models to avoid matching/displaying .safetensors etc.\n if (this.modelType === 'loras' || this.searchType === 'embeddings') {\n return removeLoraExtension(itemText);\n } else if (this.modelType === 'embeddings') {\n return removeGeneralExtension(itemText);\n }\n return itemText;\n }\n\n /**\n * Check if an item matches a search term\n * Supports both string items and enriched items with tag_name property\n * @param {string|Object} item - Item to check\n * @param {string} searchTerm - Search term to match against\n * @returns {Object} - { matched: boolean, isExactMatch: boolean }\n */\n _matchItem(item, searchTerm) {\n const itemText = this._getDisplayText(item);\n const itemTextLower = itemText.toLowerCase();\n const searchTermLower = searchTerm.toLowerCase();\n\n // Exact match (case-insensitive)\n if (itemTextLower === searchTermLower) {\n return { matched: true, isExactMatch: true };\n }\n\n // Partial match (contains)\n if (itemTextLower.includes(searchTermLower)) {\n return { matched: true, isExactMatch: false };\n }\n\n // Symbol-insensitive match: remove common separators and retry\n // e.g., \"blue hair\" can match \"blue_hair\" or \"bluehair\"\n const normalizedItem = itemTextLower.replace(/[-_\\s']/g, '');\n const normalizedSearch = searchTermLower.replace(/[-_\\s']/g, '');\n if (normalizedItem.includes(normalizedSearch)) {\n return { matched: true, isExactMatch: false };\n }\n\n return { matched: false, isExactMatch: false };\n }\n\n _getLiveSearchTermForAcceptance() {\n const rawSearchTerm = this.getSearchTerm(this.inputElement.value);\n\n if (this.modelType === 'embeddings') {\n const match = rawSearchTerm.match(/^emb:(.*)$/i);\n return (match?.[1] || '').trim();\n }\n\n if (this.modelType === 'prompt') {\n const embeddingMatch = rawSearchTerm.match(/^emb:(.*)$/i);\n if (embeddingMatch) {\n return (embeddingMatch[1] || '').trim();\n }\n\n const commandResult = this._parseCommandInput(rawSearchTerm);\n return commandResult.searchTerm ?? rawSearchTerm;\n }\n\n return rawSearchTerm;\n }\n\n _getPreferredSelectedIndex(searchTerm = '') {\n if (!this.items?.length) {\n return -1;\n }\n\n if (this.showingCommands) {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n return 0;\n }\n\n const trimmedSearchTerm = searchTerm.trim();\n if (!trimmedSearchTerm) {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n return 0;\n }\n\n const searchLower = trimmedSearchTerm.toLowerCase();\n const normalizedSearch = normalizeAutocompleteMatchText(trimmedSearchTerm);\n let bestIndex = -1;\n let bestScore = -Infinity;\n\n this.items.forEach((item, index) => {\n const displayText = this._getDisplayText(item);\n const textLower = displayText.toLowerCase();\n const normalizedText = normalizeAutocompleteMatchText(displayText);\n let score = -1;\n\n if (textLower === searchLower) {\n score = 5000;\n } else if (normalizedText === normalizedSearch) {\n score = 4500;\n } else if (textLower.startsWith(searchLower)) {\n score = 4000;\n } else if (normalizedText.startsWith(normalizedSearch)) {\n score = 3500;\n } else if (textLower.includes(searchLower)) {\n score = 3000;\n } else if (normalizedText.includes(normalizedSearch)) {\n score = 2500;\n }\n\n if (score > -1) {\n score -= index;\n if (score > bestScore) {\n bestScore = score;\n bestIndex = index;\n }\n }\n });\n\n if (bestIndex !== -1) {\n return bestIndex;\n }\n\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n\n return 0;\n }\n\n _getAcceptSelectionIndex(searchTerm = '') {\n if (this.hasManualSelection && this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n return this.selectedIndex;\n }\n\n return this._getPreferredSelectedIndex(searchTerm);\n }\n\n async search(term = '', endpoint = null) {\n try {\n this.currentSearchTerm = term;\n\n // Save current search type to detect mode changes during async search\n const searchTypeAtStart = this.searchType;\n\n // Clear items before starting new search to avoid stale data\n // This is critical for preventing command suggestions from persisting\n // when switching from command mode to regular tag search\n this.items = [];\n this.wildcardMeta = null;\n\n if (!endpoint) {\n endpoint = `/lm/${this.modelType}/relative-paths`;\n }\n\n // Generate multiple query variations for better matching, but avoid\n // sending duplicate-equivalent requests that normalize to the same\n // backend search term.\n const queriesToExecute =\n this.searchType === 'wildcards' && term.length === 0\n ? ['']\n : this._getQueriesToExecute(term);\n\n if (queriesToExecute.length === 0) {\n this.items = [];\n this.hide();\n return;\n }\n\n // Execute all queries in parallel\n const searchPromises = queriesToExecute.map(async (query) => {\n const url = endpoint.includes('?')\n ? `${endpoint}&search=${encodeURIComponent(query)}&limit=${this.options.maxItems}`\n : `${endpoint}?search=${encodeURIComponent(query)}&limit=${this.options.maxItems}`;\n\n try {\n const response = await api.fetchApi(url);\n const data = await response.json();\n return {\n items: data.success ? (data.relative_paths || data.words || []) : [],\n meta: data?.meta || null,\n };\n } catch (error) {\n console.warn(`Search query failed for \"${query}\":`, error);\n return {\n items: [],\n meta: null,\n };\n }\n });\n\n const resultsArrays = await Promise.all(searchPromises);\n\n // Check if search type changed during async operation\n // If so, skip updating items to prevent stale data from showing\n if (this.searchType !== searchTypeAtStart) {\n console.log('[Lora Manager] Search type changed during search, skipping update');\n return;\n }\n\n // Merge and deduplicate results while preserving order from backend\n // Backend returns results sorted by relevance, so we maintain that order\n const seen = new Set();\n const mergedItems = [];\n\n for (const result of resultsArrays) {\n if (!this.wildcardMeta && result?.meta) {\n this.wildcardMeta = result.meta;\n }\n\n const resultArray = result?.items || [];\n for (const item of resultArray) {\n const itemKey = typeof item === 'object' && item.tag_name\n ? item.tag_name.toLowerCase()\n : String(item).toLowerCase();\n\n if (!seen.has(itemKey)) {\n seen.add(itemKey);\n mergedItems.push(item);\n }\n }\n }\n\n if (this.searchType === 'wildcards' && mergedItems.length === 0) {\n const meta = this.wildcardMeta || {};\n this.items = meta.has_wildcards\n ? [createWildcardNoMatchesItem(term, meta)]\n : [createWildcardEmptyStateItem(meta)];\n this.hasMoreItems = false;\n this.render();\n this.show();\n return;\n }\n\n // Use backend-sorted results directly without re-scoring\n // Backend already ranks by: FTS5 bm25 score + post count + exact prefix boost\n if (mergedItems.length > 0) {\n this.items = mergedItems;\n this.render();\n this.show();\n } else {\n this.items = [];\n this.hide();\n }\n } catch (error) {\n console.error('Autocomplete search error:', error);\n this.items = [];\n this.hide();\n }\n }\n\n /**\n * Parse command input to detect command mode\n * @param {string} rawInput - Raw input text\n * @returns {Object} - { showCommands, commandFilter, command, searchTerm }\n */\n _parseCommandInput(rawInput) {\n const trimmed = rawInput.trim();\n\n // Check if input starts with \"/\"\n if (!trimmed.startsWith('/')) {\n return { showCommands: false, command: null, searchTerm: trimmed };\n }\n\n // Split into potential command and search term\n const spaceIndex = trimmed.indexOf(' ');\n\n if (spaceIndex === -1) {\n // Still typing command (e.g., \"/cha\")\n const partialCommand = trimmed.toLowerCase();\n\n // Check for exact command match\n if (TAG_COMMANDS[partialCommand]) {\n const cmd = TAG_COMMANDS[partialCommand];\n // Filter out toggle commands that don't meet their condition\n if (cmd.type === 'toggle_setting' && cmd.condition && !cmd.condition()) {\n return { showCommands: false, command: null, searchTerm: '' };\n }\n return {\n showCommands: false,\n command: cmd,\n searchTerm: '',\n };\n }\n\n // Show command suggestions\n return {\n showCommands: true,\n commandFilter: partialCommand.slice(1), // Remove leading \"/\"\n command: null,\n searchTerm: '',\n };\n }\n\n // Command with search term (e.g., \"/character miku\")\n const commandPart = trimmed.slice(0, spaceIndex).toLowerCase();\n const searchPart = trimmed.slice(spaceIndex + 1).trim();\n\n if (TAG_COMMANDS[commandPart]) {\n const cmd = TAG_COMMANDS[commandPart];\n // Filter out toggle commands that don't meet their condition\n if (cmd.type === 'toggle_setting' && cmd.condition && !cmd.condition()) {\n return { showCommands: false, command: null, searchTerm: trimmed };\n }\n return {\n showCommands: false,\n command: cmd,\n searchTerm: searchPart,\n };\n }\n\n // Unknown command, treat as regular search\n return { showCommands: false, command: null, searchTerm: trimmed };\n }\n\n /**\n * Show the command list dropdown\n * @param {string} filter - Optional filter for commands\n */\n _showCommandList(filter = '') {\n // Only show command list if we're in command mode\n // This prevents stale command suggestions from appearing after switching to tag search\n if (this.searchType !== 'commands' && this.showingCommands !== true) {\n return;\n }\n \n const filterLower = filter.toLowerCase();\n\n const commands = [];\n\n for (const [cmd, info] of Object.entries(TAG_COMMANDS)) {\n // Filter out toggle commands that don't meet their condition\n if (info.type === 'toggle_setting' && info.condition) {\n if (!info.condition()) continue;\n }\n\n if (!filter || cmd.slice(1).startsWith(filterLower)) {\n commands.push({ command: cmd, ...info });\n }\n }\n\n if (commands.length === 0) {\n this.hide();\n return;\n }\n\n this.items = commands;\n this._renderCommandList();\n this.show();\n }\n\n /**\n * Render the command list dropdown\n */\n _renderCommandList() {\n // Clear command list items properly based on rendering mode\n if (this.contentContainer) {\n // Virtual scrolling mode - clear content container\n this.contentContainer.innerHTML = '';\n } else {\n // Non-virtual scrolling mode - clear dropdown direct children\n this.dropdown.innerHTML = '';\n }\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n\n this.items.forEach((item, index) => {\n const itemEl = document.createElement('div');\n itemEl.className = 'comfy-autocomplete-item comfy-autocomplete-command';\n itemEl.dataset.index = index.toString();\n\n const cmdSpan = document.createElement('span');\n cmdSpan.className = 'lm-autocomplete-command-name';\n cmdSpan.textContent = item.command;\n\n const labelSpan = document.createElement('span');\n labelSpan.className = 'lm-autocomplete-command-label';\n labelSpan.textContent = item.label;\n\n itemEl.appendChild(cmdSpan);\n itemEl.appendChild(labelSpan);\n\n itemEl.style.cssText = `\n padding: 8px 12px;\n cursor: pointer;\n color: rgba(226, 232, 240, 0.8);\n border-bottom: 1px solid rgba(226, 232, 240, 0.1);\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n height: ${this.options.itemHeight}px;\n box-sizing: border-box;\n `;\n\n // Prevent textarea from losing focus - same fix as createItemElement\n itemEl.addEventListener('mousedown', (e) => {\n e.preventDefault();\n });\n\n itemEl.addEventListener('mouseenter', () => {\n this.selectItem(index, { manual: true });\n });\n\n itemEl.addEventListener('click', () => {\n this._insertCommand(item.command);\n });\n\n // Append to correct container based on rendering mode\n if (this.contentContainer) {\n this.contentContainer.appendChild(itemEl);\n } else {\n this.dropdown.appendChild(itemEl);\n }\n });\n\n // Remove border from last item\n const lastChild = this.contentContainer ? this.contentContainer.lastChild : this.dropdown.lastChild;\n if (lastChild) {\n lastChild.style.borderBottom = 'none';\n }\n\n // Auto-select immediately so accept keys remain stable.\n // In virtual-scroll mode, calling selectItem() before the dropdown is\n // visible can see a zero-height container and incorrectly replace the\n // full command list with a partially virtualized slice.\n if (this.items.length > 0) {\n this.selectedIndex = 0;\n this.hasManualSelection = false;\n if (this.contentContainer) {\n this._applyItemSelection(0);\n } else {\n this.selectItem(0);\n }\n }\n \n // Update virtual scroll height for virtual scrolling mode\n if (this.contentContainer) {\n this.updateVirtualScrollHeight();\n }\n }\n\n /**\n * Insert a command into the input\n * @param {string} command - The command to insert (e.g., \"/character\")\n */\n _insertCommand(command) {\n const currentValue = this.inputElement.value;\n const activeRange = this.getActiveSearchRange(currentValue);\n const commandStartPos = activeRange.trimmedStart;\n\n // Insert command with trailing space\n const insertText = command + ' ';\n const newValue = currentValue.substring(0, commandStartPos) + insertText + currentValue.substring(activeRange.end);\n const newCaretPos = commandStartPos + insertText.length;\n\n this.inputElement.value = newValue;\n\n // Trigger input event\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n this.hide();\n\n // Focus and position cursor\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n }\n\n render() {\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n\n // Reset virtual scroll state\n this.virtualScrollOffset = 0;\n this.currentPage = 0;\n this.hasMoreItems = true;\n this.isLoadingMore = false;\n\n // Early return if no items to prevent empty dropdown\n if (!this.items || this.items.length === 0) {\n if (this.contentContainer) {\n this.contentContainer.innerHTML = '';\n } else {\n this.dropdown.innerHTML = '';\n }\n return;\n }\n\n if (this.options.enableVirtualScroll && this.contentContainer) {\n // Use virtual scrolling - always update visible items to ensure content is fresh\n // The dropdown visibility is controlled by show()/hide()\n this.updateVirtualScrollHeight();\n this.updateVisibleItems();\n } else {\n // Traditional rendering (fallback)\n this.dropdown.innerHTML = '';\n\n // Check if items are enriched (have tag_name, category, post_count) or command objects\n const isEnriched = this.items[0] && typeof this.items[0] === 'object' && 'tag_name' in this.items[0];\n const isCommand = this.items[0] && typeof this.items[0] === 'object' && 'command' in this.items[0];\n\n this.items.forEach((itemData, index) => {\n const item = this.createItemElement(itemData, index, isEnriched, isCommand);\n this.dropdown.appendChild(item);\n });\n\n // Remove border from last item\n if (this.dropdown.lastChild) {\n this.dropdown.lastChild.style.borderBottom = 'none';\n }\n }\n\n // Auto-select immediately so accept keys do not fall through\n // to native focus traversal while the dropdown is visible.\n if (this.items.length > 0) {\n this.selectItem(0);\n }\n }\n\n /**\n * Render an enriched autocomplete item with category badge and post count\n * @param {HTMLElement} itemEl - The item element to populate\n * @param {Object} itemData - The enriched item data { tag_name, category, post_count, matched_alias? }\n * @param {string} searchTerm - The current search term for highlighting\n */\n _renderEnrichedItem(itemEl, itemData, searchTerm) {\n // Create name span with highlighted match\n const nameSpan = document.createElement('span');\n nameSpan.className = 'lm-autocomplete-name';\n\n // If matched via alias, show: \"tag_name ← alias\" with alias highlighted\n if (itemData.matched_alias) {\n const tagText = document.createTextNode(itemData.tag_name + ' ');\n nameSpan.appendChild(tagText);\n\n const aliasSpan = document.createElement('span');\n aliasSpan.className = 'lm-matched-alias';\n aliasSpan.innerHTML = '← ' + this.highlightMatch(itemData.matched_alias, searchTerm);\n aliasSpan.style.cssText = `\n font-size: 11px;\n color: rgba(226, 232, 240, 0.5);\n `;\n nameSpan.appendChild(aliasSpan);\n } else {\n nameSpan.innerHTML = this.highlightMatch(itemData.tag_name, searchTerm);\n }\n\n nameSpan.style.cssText = `\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n\n // Create meta container for count and badge\n const metaSpan = document.createElement('span');\n metaSpan.className = 'lm-autocomplete-meta';\n metaSpan.style.cssText = `\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n `;\n\n // Add post count\n if (itemData.post_count > 0) {\n const countSpan = document.createElement('span');\n countSpan.className = 'lm-autocomplete-count';\n countSpan.textContent = formatPostCount(itemData.post_count);\n countSpan.style.cssText = `\n font-size: 11px;\n color: rgba(226, 232, 240, 0.5);\n `;\n metaSpan.appendChild(countSpan);\n }\n\n // Add category badge\n const categoryInfo = CATEGORY_INFO[itemData.category];\n if (categoryInfo) {\n const badgeSpan = document.createElement('span');\n badgeSpan.className = 'lm-autocomplete-category';\n badgeSpan.textContent = categoryInfo.label;\n badgeSpan.style.cssText = `\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 10px;\n background: ${categoryInfo.bg};\n color: ${categoryInfo.text};\n white-space: nowrap;\n `;\n metaSpan.appendChild(badgeSpan);\n }\n\n itemEl.appendChild(nameSpan);\n itemEl.appendChild(metaSpan);\n }\n\n _renderInformationalItem(itemEl, itemData) {\n itemEl.classList.add('comfy-autocomplete-info-item');\n itemEl.style.cssText = `\n padding: 12px;\n color: rgba(226, 232, 240, 0.88);\n border-bottom: none;\n cursor: default;\n display: block;\n white-space: normal;\n height: auto;\n `;\n\n const title = document.createElement('div');\n title.className = 'lm-autocomplete-info-title';\n title.textContent = itemData.title || 'Wildcards';\n title.style.cssText = `\n font-size: 13px;\n font-weight: 600;\n margin-bottom: 6px;\n `;\n itemEl.appendChild(title);\n\n const description = document.createElement('div');\n description.className = 'lm-autocomplete-info-description';\n description.textContent = itemData.description || '';\n description.style.cssText = `\n font-size: 12px;\n line-height: 1.45;\n color: rgba(226, 232, 240, 0.72);\n `;\n itemEl.appendChild(description);\n\n if (itemData.type === 'wildcard_no_matches') {\n return;\n }\n\n const pathBlock = document.createElement('div');\n pathBlock.style.cssText = `\n margin-top: 10px;\n padding: 8px 10px;\n border-radius: 6px;\n background: rgba(15, 23, 42, 0.6);\n font-size: 11px;\n line-height: 1.5;\n `;\n pathBlock.innerHTML = [\n 'Wildcards folder
',\n `${itemData.wildcardsDir || '(unavailable)'}`,\n `Supported formats: ${(itemData.supportedFormats || []).join(', ')}
`,\n ].join('');\n itemEl.appendChild(pathBlock);\n\n const examples = document.createElement('div');\n examples.style.cssText = `\n margin-top: 10px;\n font-size: 11px;\n line-height: 1.55;\n color: rgba(226, 232, 240, 0.72);\n `;\n examples.innerHTML = [\n 'Examples
',\n 'animals/cat.txt -> use __animals/cat__
',\n 'colors.yaml with palette: { warm: [red, orange] } -> use __palette/warm__
',\n 'Text files use one option per line. YAML/JSON use nested keys ending in string arrays.
',\n ].join('');\n itemEl.appendChild(examples);\n\n const actions = document.createElement('div');\n actions.style.cssText = `\n display: flex;\n gap: 8px;\n margin-top: 12px;\n flex-wrap: wrap;\n `;\n\n const openButton = document.createElement('button');\n openButton.type = 'button';\n openButton.dataset.action = 'open-wildcards-folder';\n openButton.textContent = 'Open wildcards folder';\n openButton.style.cssText = `\n border: 1px solid rgba(96, 165, 250, 0.45);\n background: rgba(37, 99, 235, 0.18);\n color: #dbeafe;\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 11px;\n cursor: pointer;\n `;\n openButton.addEventListener('click', async (event) => {\n event.preventDefault();\n event.stopPropagation();\n await this._openWildcardsFolder();\n });\n actions.appendChild(openButton);\n\n const copyButton = document.createElement('button');\n copyButton.type = 'button';\n copyButton.dataset.action = 'copy-wildcards-path';\n copyButton.textContent = 'Copy path';\n copyButton.style.cssText = `\n border: 1px solid rgba(226, 232, 240, 0.2);\n background: rgba(148, 163, 184, 0.12);\n color: rgba(226, 232, 240, 0.88);\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 11px;\n cursor: pointer;\n `;\n copyButton.addEventListener('click', async (event) => {\n event.preventDefault();\n event.stopPropagation();\n await this._copyWildcardPath(itemData.wildcardsDir || '');\n });\n actions.appendChild(copyButton);\n\n itemEl.appendChild(actions);\n }\n \n highlightMatch(text, searchTerm) {\n const { include } = parseSearchTokens(searchTerm);\n const sanitizedTokens = include\n .filter(Boolean)\n .map((token) => token.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n\n if (!sanitizedTokens.length) {\n return text;\n }\n\n const regex = new RegExp(`(${sanitizedTokens.join('|')})`, 'gi');\n return text.replace(\n regex,\n '$1 ',\n );\n }\n\n async _openWildcardsFolder() {\n try {\n const response = await api.fetchApi('/lm/wildcards/open-location', { method: 'POST' });\n const data = await response.json();\n if (!response.ok || data?.success === false) {\n throw new Error(data?.error || 'Failed to open wildcards folder');\n }\n\n if (data?.mode === 'clipboard' && data?.path) {\n await this._copyWildcardPath(data.path);\n return;\n }\n\n showToast({\n severity: 'success',\n summary: 'Wildcards folder',\n detail: 'Opened wildcards folder.',\n life: 2500,\n });\n } catch (error) {\n console.error('[Lora Manager] Failed to open wildcards folder:', error);\n showToast({\n severity: 'error',\n summary: 'Error',\n detail: error?.message || 'Failed to open wildcards folder',\n life: 3000,\n });\n }\n }\n\n async _copyWildcardPath(path) {\n if (!path) {\n return;\n }\n\n try {\n if (navigator?.clipboard?.writeText) {\n await navigator.clipboard.writeText(path);\n }\n showToast({\n severity: 'info',\n summary: 'Wildcards path',\n detail: path,\n life: 3000,\n });\n } catch (error) {\n console.error('[Lora Manager] Failed to copy wildcards path:', error);\n showToast({\n severity: 'warn',\n summary: 'Wildcards path',\n detail: path,\n life: 4000,\n });\n }\n }\n \n showPreviewForItem(relativePath, itemElement) {\n if (!this.options.showPreview || !this.previewTooltip) return;\n \n // Extract filename without extension for preview\n const fileName = relativePath.split(/[/\\\\]/).pop();\n const loraName = fileName.replace(/\\.(safetensors|ckpt|pt|bin)$/i, '');\n \n // Get item position for tooltip positioning\n const rect = itemElement.getBoundingClientRect();\n const x = rect.right + 10;\n const y = rect.top;\n \n this.previewTooltip.show(loraName, x, y, true); // Pass true for fromAutocomplete flag\n }\n \n hidePreview() {\n if (!this.options.showPreview) {\n return;\n }\n if (typeof this.behavior.hidePreview === 'function') {\n this.behavior.hidePreview(this);\n } else if (this.previewTooltip) {\n this.previewTooltip.hide();\n }\n }\n \n /**\n * Handle scroll event for virtual scrolling and loading more items\n */\n handleScroll() {\n if (!this.scrollContainer || this.isLoadingMore) {\n return;\n }\n\n const { scrollTop, scrollHeight, clientHeight } = this.scrollContainer;\n const scrollBottom = scrollTop + clientHeight;\n const threshold = this.options.itemHeight * 2; // Load more when within 2 items of bottom\n\n // Check if we need to load more items\n if (scrollBottom >= scrollHeight - threshold && this.hasMoreItems) {\n this.loadMoreItems();\n }\n\n // Update visible items for virtual scrolling\n if (this.options.enableVirtualScroll) {\n this.updateVisibleItems();\n }\n }\n\n /**\n * Load more items (pagination)\n */\n async loadMoreItems() {\n if (this.isLoadingMore || !this.hasMoreItems || this.showingCommands) {\n return;\n }\n\n this.isLoadingMore = true;\n this.currentPage++;\n\n try {\n // Show loading indicator\n this.showLoadingIndicator();\n\n // Get the current endpoint\n let endpoint = `/lm/${this.modelType}/relative-paths`;\n if (this.modelType === 'prompt') {\n if (this.searchType === 'embeddings') {\n endpoint = '/lm/embeddings/relative-paths';\n } else if (this.searchType === 'wildcards') {\n endpoint = getWildcardSearchEndpoint();\n } else if (this.searchType === 'custom_words') {\n if (this.activeCommand?.categories) {\n const categories = this.activeCommand.categories.join(',');\n endpoint = `/lm/custom-words/search?category=${categories}`;\n } else {\n endpoint = '/lm/custom-words/search?enriched=true';\n }\n }\n }\n\n const queriesToExecute = this._getQueriesToExecute(this.currentSearchTerm);\n const offset = this.items.length;\n\n // Execute all queries in parallel with offset\n const searchPromises = queriesToExecute.map(async (query) => {\n const url = endpoint.includes('?')\n ? `${endpoint}&search=${encodeURIComponent(query)}&limit=${this.options.pageSize}&offset=${offset}`\n : `${endpoint}?search=${encodeURIComponent(query)}&limit=${this.options.pageSize}&offset=${offset}`;\n\n try {\n const response = await api.fetchApi(url);\n const data = await response.json();\n return data.success ? (data.relative_paths || data.words || []) : [];\n } catch (error) {\n console.warn(`Search query failed for \"${query}\":`, error);\n return [];\n }\n });\n\n const resultsArrays = await Promise.all(searchPromises);\n\n // Merge and deduplicate results with existing items\n const seen = new Set(this.items.map(item => {\n const itemKey = typeof item === 'object' && item.tag_name\n ? item.tag_name.toLowerCase()\n : String(item).toLowerCase();\n return itemKey;\n }));\n const newItems = [];\n\n for (const resultArray of resultsArrays) {\n for (const item of resultArray) {\n const itemKey = typeof item === 'object' && item.tag_name\n ? item.tag_name.toLowerCase()\n : String(item).toLowerCase();\n\n if (!seen.has(itemKey)) {\n seen.add(itemKey);\n newItems.push(item);\n }\n }\n }\n\n // If we got fewer items than requested, we've reached the end\n if (newItems.length < this.options.pageSize) {\n this.hasMoreItems = false;\n }\n\n // If we got new items, append them and re-render\n // IMPORTANT: Do NOT re-sort! Backend already returns results sorted by relevance\n if (newItems.length > 0) {\n this.items.push(...newItems);\n\n // Update render\n if (this.options.enableVirtualScroll) {\n this.updateVirtualScrollHeight();\n this.updateVisibleItems();\n } else {\n this.render();\n }\n } else {\n this.hasMoreItems = false;\n }\n } catch (error) {\n console.error('Error loading more items:', error);\n this.hasMoreItems = false;\n } finally {\n this.isLoadingMore = false;\n this.hideLoadingIndicator();\n }\n }\n\n /**\n * Show loading indicator at the bottom of the list\n */\n showLoadingIndicator() {\n if (!this.contentContainer) return;\n\n let loadingEl = this.contentContainer.querySelector('.comfy-autocomplete-loading');\n if (!loadingEl) {\n loadingEl = document.createElement('div');\n loadingEl.className = 'comfy-autocomplete-loading';\n loadingEl.textContent = 'Loading more...';\n loadingEl.style.cssText = `\n padding: 12px;\n text-align: center;\n color: rgba(226, 232, 240, 0.5);\n font-size: 12px;\n `;\n this.contentContainer.appendChild(loadingEl);\n }\n }\n\n /**\n * Hide loading indicator\n */\n hideLoadingIndicator() {\n if (!this.contentContainer) return;\n\n const loadingEl = this.contentContainer.querySelector('.comfy-autocomplete-loading');\n if (loadingEl) {\n loadingEl.remove();\n }\n }\n\n /**\n * Update the total height of the virtual scroll container\n */\n updateVirtualScrollHeight() {\n if (!this.contentContainer || !this.scrollContainer) return;\n\n if (this._containsInformationalItems()) {\n this.totalHeight = 0;\n this.contentContainer.style.height = 'auto';\n this.scrollContainer.style.maxHeight = `${this.options.visibleItems * this.options.itemHeight}px`;\n this.scrollContainer.style.overflowY = 'hidden';\n return;\n }\n\n this.totalHeight = this.items.length * this.options.itemHeight;\n this.contentContainer.style.height = `${this.totalHeight}px`;\n \n // Adjust scroll container max-height based on actual content\n // Only show scrollbar when content exceeds visibleItems limit\n const maxHeight = this.options.visibleItems * this.options.itemHeight;\n const shouldShowScrollbar = this.totalHeight > maxHeight;\n \n this.scrollContainer.style.maxHeight = shouldShowScrollbar ? `${maxHeight}px` : `${this.totalHeight}px`;\n this.scrollContainer.style.overflowY = shouldShowScrollbar ? 'auto' : 'hidden';\n }\n\n /**\n * Update which items are visible based on scroll position\n */\n updateVisibleItems() {\n if (!this.scrollContainer || !this.contentContainer) return;\n\n if (this._containsInformationalItems()) {\n this.contentContainer.innerHTML = '';\n if (this.items[0]) {\n this.contentContainer.appendChild(\n this.createItemElement(this.items[0], 0, false, false)\n );\n }\n return;\n }\n\n const scrollTop = this.scrollContainer.scrollTop;\n const containerHeight = this.scrollContainer.clientHeight;\n\n // Calculate which items should be visible with a larger buffer for smoother rendering\n // Use a fixed buffer of 5 items to ensure selected item is always rendered\n const startIndex = Math.max(0, Math.floor(scrollTop / this.options.itemHeight) - 5);\n const endIndex = Math.min(\n this.items.length - 1,\n Math.ceil((scrollTop + containerHeight) / this.options.itemHeight) + 5\n );\n\n // Clear current content\n this.contentContainer.innerHTML = '';\n\n // Create spacer for items before visible range\n if (startIndex > 0) {\n const topSpacer = document.createElement('div');\n topSpacer.style.height = `${startIndex * this.options.itemHeight}px`;\n this.contentContainer.appendChild(topSpacer);\n }\n\n // Render visible items\n const isEnriched = this.items[0] && typeof this.items[0] === 'object' && 'tag_name' in this.items[0];\n const isCommand = this.items[0] && typeof this.items[0] === 'object' && 'command' in this.items[0];\n\n for (let i = startIndex; i <= endIndex; i++) {\n const itemData = this.items[i];\n const itemEl = this.createItemElement(itemData, i, isEnriched, isCommand);\n this.contentContainer.appendChild(itemEl);\n }\n\n // Create spacer for items after visible range\n if (endIndex < this.items.length - 1) {\n const bottomSpacer = document.createElement('div');\n bottomSpacer.style.height = `${(this.items.length - 1 - endIndex) * this.options.itemHeight}px`;\n this.contentContainer.appendChild(bottomSpacer);\n }\n \n // Re-apply selection styling after re-rendering\n // This ensures the selected item remains highlighted even after DOM updates\n if (this.selectedIndex >= startIndex && this.selectedIndex <= endIndex) {\n const selectedEl = this.contentContainer.querySelector(`.comfy-autocomplete-item[data-index=\"${this.selectedIndex}\"]`);\n if (selectedEl) {\n selectedEl.classList.add('comfy-autocomplete-item-selected');\n selectedEl.style.backgroundColor = 'rgba(66, 153, 225, 0.2)';\n }\n }\n }\n\n /**\n * Create a single item element\n */\n createItemElement(itemData, index, isEnriched, isCommand = false) {\n const item = document.createElement('div');\n item.className = 'comfy-autocomplete-item';\n item.dataset.index = index.toString();\n item.style.cssText = `\n height: ${this.options.itemHeight}px;\n padding: 8px 12px;\n cursor: pointer;\n color: rgba(226, 232, 240, 0.8);\n border-bottom: 1px solid rgba(226, 232, 240, 0.1);\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n box-sizing: border-box;\n `;\n\n // Check if this is a command object (override parameter if needed)\n if (!isCommand && itemData && typeof itemData === 'object' && 'command' in itemData) {\n isCommand = true;\n }\n\n if (isWildcardInfoItem(itemData)) {\n this._renderInformationalItem(item, itemData);\n } else if (isCommand) {\n // Render command item\n const cmdSpan = document.createElement('span');\n cmdSpan.className = 'lm-autocomplete-command-name';\n cmdSpan.textContent = itemData.command;\n\n const labelSpan = document.createElement('span');\n labelSpan.className = 'lm-autocomplete-command-label';\n labelSpan.textContent = itemData.label;\n\n item.appendChild(cmdSpan);\n item.appendChild(labelSpan);\n item.style.gap = '12px';\n } else if (isEnriched) {\n this._renderEnrichedItem(item, itemData, this.currentSearchTerm);\n } else {\n const nameSpan = document.createElement('span');\n nameSpan.className = 'lm-autocomplete-name';\n // Use display text without extension for cleaner UI\n const displayTextWithoutExt = this._getDisplayText(itemData);\n nameSpan.innerHTML = this.highlightMatch(displayTextWithoutExt, this.currentSearchTerm);\n nameSpan.style.cssText = `\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n item.appendChild(nameSpan);\n }\n\n // Prevent textarea from losing focus when clicking dropdown items.\n // Without this, the blur event fires before click, and the blur handler's\n // formatAutocompleteTextOnBlur() modifies the text and triggers hide()\n // via suppressAutocompleteOnce, removing this item from the DOM before\n // the click handler can execute. This specifically breaks the case where\n // the text has a comma not followed by a space (e.g. \",search\").\n item.addEventListener('mousedown', (e) => {\n e.preventDefault();\n });\n\n // Hover and selection handlers\n item.addEventListener('mouseenter', () => {\n this.selectItem(index, { manual: true });\n });\n\n item.addEventListener('mouseleave', () => {\n this.hidePreview();\n });\n\n // Click handler\n item.addEventListener('click', () => {\n if (isWildcardInfoItem(itemData)) {\n return;\n }\n\n if (isCommand) {\n this._insertCommand(itemData.command);\n } else {\n const insertPath = isEnriched ? itemData.tag_name : itemData;\n this.insertSelection(insertPath);\n }\n });\n\n return item;\n }\n\n show() {\n if (!this.items || this.items.length === 0) {\n this.hide();\n return;\n }\n\n // For virtual scrolling, render items first so positionAtCursor can measure width correctly\n if (this.options.enableVirtualScroll && this.contentContainer) {\n this.dropdown.style.display = 'block';\n this.isVisible = true;\n // Skip updateVisibleItems if showing commands (already rendered by _renderCommandList)\n if (!this.showingCommands) {\n this.updateVisibleItems();\n }\n this.positionAtCursor();\n } else {\n // Position dropdown at cursor position using TextAreaCaretHelper\n this.positionAtCursor();\n this.dropdown.style.display = 'block';\n this.isVisible = true;\n }\n }\n \n positionAtCursor() {\n const position = this.helper.getCursorOffset();\n this.dropdown.style.left = (position.left ?? 0) + \"px\";\n this.dropdown.style.top = (position.top ?? 0) + \"px\";\n this.dropdown.style.maxHeight = (window.innerHeight - position.top) + \"px\";\n\n // Adjust width to fit content\n // Temporarily show the dropdown to measure content width\n const originalDisplay = this.dropdown.style.display;\n this.dropdown.style.display = 'block';\n this.dropdown.style.visibility = 'hidden';\n\n // Temporarily remove width constraints to allow content to expand naturally\n // This prevents items.scrollWidth from being limited by a narrow container\n const originalWidth = this.dropdown.style.width;\n this.dropdown.style.width = 'auto';\n this.dropdown.style.minWidth = '200px';\n\n // Measure the content width\n let maxWidth = 200; // minimum width\n // For virtual scrolling, query items from contentContainer; otherwise from dropdown\n const container = this.options.enableVirtualScroll && this.contentContainer\n ? this.contentContainer\n : this.dropdown;\n const items = container.querySelectorAll('.comfy-autocomplete-item');\n items.forEach(item => {\n const itemWidth = item.scrollWidth + 24; // Add padding\n maxWidth = Math.max(maxWidth, itemWidth);\n });\n\n // Set the width and restore visibility\n this.dropdown.style.width = Math.min(maxWidth, 400) + 'px'; // Cap at 400px\n this.dropdown.style.minWidth = '';\n this.dropdown.style.visibility = 'visible';\n this.dropdown.style.display = originalDisplay;\n }\n \n getCaretPosition() {\n return this.inputElement.selectionStart || 0;\n }\n \n hide() {\n if (!this.dropdown) {\n return;\n }\n\n this.dropdown.style.display = 'none';\n this.isVisible = false;\n this.selectedIndex = -1;\n this.hasManualSelection = false;\n this.showingCommands = false;\n \n // Clear items to prevent stale data from being displayed\n // when autocomplete is shown again\n this.items = [];\n this.wildcardMeta = null;\n \n // Clear content container to prevent stale items from showing\n if (this.contentContainer) {\n // Virtual scrolling mode - clear content container\n this.contentContainer.innerHTML = '';\n } else {\n // Non-virtual scrolling mode - clear dropdown direct children\n this.dropdown.innerHTML = '';\n }\n\n // Reset virtual scrolling state\n this.virtualScrollOffset = 0;\n this.currentPage = 0;\n this.hasMoreItems = true;\n this.isLoadingMore = false;\n this.totalHeight = 0;\n\n // Reset scroll position\n if (this.scrollContainer) {\n this.scrollContainer.scrollTop = 0;\n }\n\n // Hide preview tooltip\n this.hidePreview();\n\n // Clear selection styles from all items\n const items = this.dropdown.querySelectorAll('.comfy-autocomplete-item');\n items.forEach(item => {\n item.classList.remove('comfy-autocomplete-item-selected');\n item.style.backgroundColor = '';\n });\n }\n \n selectItem(index, { manual = false } = {}) {\n // Remove previous selection\n const container = this.options.enableVirtualScroll && this.contentContainer\n ? this.contentContainer\n : this.dropdown;\n const prevSelected = container.querySelector('.comfy-autocomplete-item-selected');\n if (prevSelected) {\n prevSelected.classList.remove('comfy-autocomplete-item-selected');\n prevSelected.style.backgroundColor = '';\n }\n\n // Add new selection\n if (index >= 0 && index < this.items.length) {\n this.selectedIndex = index;\n this.hasManualSelection = manual;\n\n // For virtual scrolling, we need to ensure the item is rendered\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n // Calculate if the item is currently visible\n const itemTop = index * this.options.itemHeight;\n const itemBottom = itemTop + this.options.itemHeight;\n const scrollTop = this.scrollContainer.scrollTop;\n const containerHeight = this.scrollContainer.clientHeight;\n const scrollBottom = scrollTop + containerHeight;\n\n // If item is not visible, scroll to make it visible\n if (itemTop < scrollTop || itemBottom > scrollBottom) {\n // Scroll to position the item in the visible area\n // Position item at 1/3 from top for better visibility\n const targetScrollTop = Math.max(0, itemTop - containerHeight / 3);\n this.scrollContainer.scrollTop = targetScrollTop;\n \n // Re-render visible items after scroll\n this.updateVisibleItems();\n \n // Apply selection after DOM is updated\n // Use setTimeout to ensure DOM has been re-rendered\n setTimeout(() => {\n this._applyItemSelection(index);\n }, 0);\n } else {\n // Item is already visible, apply selection immediately\n this._applyItemSelection(index);\n }\n } else {\n // Traditional rendering\n const item = container.children[index];\n if (item) {\n item.classList.add('comfy-autocomplete-item-selected');\n item.style.backgroundColor = 'rgba(66, 153, 225, 0.2)';\n\n // Scroll into view if needed\n item.scrollIntoView({ block: 'nearest' });\n\n // Show preview for selected item\n if (this.options.showPreview && !this._isSelectableInfoItem(this.items[index])) {\n if (typeof this.behavior.showPreview === 'function') {\n this.behavior.showPreview(this, this.items[index], item);\n } else if (this.previewTooltip) {\n this.showPreviewForItem(this.items[index], item);\n }\n }\n }\n }\n }\n }\n\n /**\n * Apply selection styling to an item (used after virtual scroll re-render)\n * @param {number} index - Index of item to select\n */\n _applyItemSelection(index) {\n if (!this.contentContainer) return;\n\n // Find the item element using data-index attribute\n const selectedEl = this.contentContainer.querySelector(`.comfy-autocomplete-item[data-index=\"${index}\"]`);\n\n if (selectedEl) {\n selectedEl.classList.add('comfy-autocomplete-item-selected');\n selectedEl.style.backgroundColor = 'rgba(66, 153, 225, 0.2)';\n\n // Show preview for selected item\n if (this.options.showPreview && !this._isSelectableInfoItem(this.items[index])) {\n if (typeof this.behavior.showPreview === 'function') {\n this.behavior.showPreview(this, this.items[index], selectedEl);\n } else if (this.previewTooltip) {\n this.showPreviewForItem(this.items[index], selectedEl);\n }\n }\n }\n }\n \n handleKeyDown(e) {\n if (!this.isVisible) {\n return;\n }\n \n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n // For virtual scrolling, handle boundary cases\n if (this.selectedIndex >= this.items.length - 1) {\n // Already at last item, try to load more\n if (this.hasMoreItems && !this.isLoadingMore) {\n this.loadMoreItems().then(() => {\n // After loading more, select the next item\n if (this.selectedIndex < this.items.length - 1) {\n this.selectItem(this.selectedIndex + 1, { manual: true });\n }\n });\n }\n } else {\n this.selectItem(this.selectedIndex + 1, { manual: true });\n }\n } else {\n this.selectItem(Math.min(this.selectedIndex + 1, this.items.length - 1), { manual: true });\n }\n break;\n \n case 'ArrowUp':\n e.preventDefault();\n if (this.options.enableVirtualScroll && this.scrollContainer) {\n // For virtual scrolling, handle top boundary\n if (this.selectedIndex <= 0) {\n // Already at first item, ensure it's selected\n this.selectItem(0, { manual: true });\n } else {\n this.selectItem(this.selectedIndex - 1, { manual: true });\n }\n } else {\n this.selectItem(Math.max(this.selectedIndex - 1, 0), { manual: true });\n }\n break;\n \n case 'Enter':\n case 'Tab':\n if (!shouldAcceptAutocompleteKey(e.key)) {\n break;\n }\n\n {\n const liveSearchTerm = this._getLiveSearchTermForAcceptance();\n const acceptIndex = this._getAcceptSelectionIndex(liveSearchTerm);\n if (acceptIndex !== -1 && acceptIndex !== this.selectedIndex) {\n this.selectItem(acceptIndex);\n }\n }\n\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n e.preventDefault();\n if (this.showingCommands) {\n // Insert command\n this._insertCommand(this.items[this.selectedIndex].command);\n } else {\n const selectedItem = this.items[this.selectedIndex];\n if (isWildcardInfoItem(selectedItem)) {\n if (selectedItem.type === 'wildcard_empty_state') {\n this._openWildcardsFolder();\n }\n break;\n }\n\n // Insert selection (handle enriched items)\n const insertPath = typeof selectedItem === 'object' && 'tag_name' in selectedItem\n ? selectedItem.tag_name\n : selectedItem;\n this.insertSelection(insertPath);\n }\n }\n break;\n \n case 'Escape':\n e.preventDefault();\n this.hide();\n break;\n }\n }\n \n async insertSelection(relativePath) {\n const insertText = await this.getInsertText(relativePath);\n if (!insertText) {\n this.hide();\n return;\n }\n\n const currentValue = this.inputElement.value;\n const activeRange = this.getActiveSearchRange(currentValue);\n const caretPos = activeRange.end;\n const fullSearchTerm = activeRange.text;\n let replaceStartPos = activeRange.trimmedStart;\n\n // For regular tag autocomplete (no command), only replace the last space-separated token\n // This allows \"hello 1gi\" + selecting \"1girl\" to become \"hello 1girl, \"\n // However, if the user typed a multi-word phrase that matches a tag (e.g., \"looking to the side\"\n // matching \"looking_to_the_side\"), replace the entire phrase instead of just the last word.\n // Command mode (e.g., \"/character miku\") should replace the entire command+search\n let searchTerm = fullSearchTerm;\n if (this.modelType === 'prompt' && this.searchType === 'custom_words' && !this.activeCommand) {\n // Check if the selectedItem exists and its tag_name matches the full search term\n // when converted to underscore format (Danbooru convention)\n const selectedItem = this.selectedIndex >= 0 ? this.items[this.selectedIndex] : null;\n const selectedTagName = selectedItem && typeof selectedItem === 'object' && 'tag_name' \n ? selectedItem.tag_name \n : null;\n \n // Convert full search term to underscore format and check if it matches selected tag\n // Normalize multiple spaces to single underscore for matching (e.g., \"looking to the side\" -> \"looking_to_the_side\")\n const underscoreVersion = fullSearchTerm.replace(/ +/g, '_').toLowerCase();\n const selectedTagLower = selectedTagName?.toLowerCase() ?? '';\n \n // If multi-word search term is a prefix or suffix of the selected tag,\n // replace the entire phrase. This handles cases where user types partial tag name.\n // Examples:\n // - \"looking to the\" -> \"looking_to_the_side\" (prefix match)\n // - \"to the side\" -> \"looking_to_the_side\" (suffix match)\n // - \"looking to the side\" -> \"looking_to_the_side\" (exact match)\n if (fullSearchTerm.includes(' ') && (\n selectedTagLower.startsWith(underscoreVersion) ||\n selectedTagLower.endsWith(underscoreVersion) ||\n underscoreVersion === selectedTagLower\n )) {\n searchTerm = fullSearchTerm;\n replaceStartPos = activeRange.trimmedStart;\n } else {\n searchTerm = this._getLastSpaceToken(fullSearchTerm);\n replaceStartPos = searchTerm === fullSearchTerm\n ? activeRange.trimmedStart\n : caretPos - searchTerm.length;\n }\n }\n\n // Only replace the search term, not everything after the last comma\n const newValue = currentValue.substring(0, replaceStartPos) + insertText + currentValue.substring(caretPos);\n const newCaretPos = replaceStartPos + insertText.length;\n\n this.inputElement.value = newValue;\n this._storeLastAcceptedBoundary({\n start: replaceStartPos,\n end: newCaretPos,\n insertedText: insertText,\n textSnapshot: newValue.substring(0, newCaretPos),\n });\n\n // Trigger input event to notify about the change\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n this.hide();\n\n // Focus back to input and position cursor\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n }\n\n async getInsertText(relativePath) {\n if (typeof this.behavior.getInsertText === 'function') {\n try {\n const result = await this.behavior.getInsertText(this, relativePath);\n if (typeof result === 'string' && result.length > 0) {\n return result;\n }\n } catch (error) {\n console.warn('Failed to format autocomplete insertion:', error);\n }\n }\n\n const trimmed = typeof relativePath === 'string' ? relativePath.trim() : '';\n if (!trimmed) {\n return '';\n }\n return formatAutocompleteInsertion(trimmed);\n }\n\n /**\n * Check if the autocomplete instance is still valid\n * (input element exists and is in the DOM)\n * @returns {boolean}\n */\n isValid() {\n return this.inputElement && document.body.contains(this.inputElement);\n }\n\n /**\n * Refresh the TextAreaCaretHelper to update cached measurements\n * Useful after element is moved in DOM (e.g., Vue mode switch)\n */\n refreshCaretHelper() {\n if (this.inputElement && document.body.contains(this.inputElement)) {\n this.helper = new TextAreaCaretHelper(this.inputElement, () => app.canvas.ds.scale);\n }\n }\n\n /**\n * Handle toggle setting command (/ac, /noac)\n * @param {Object} command - The toggle command with settingId and value\n */\n async _handleToggleSettingCommand(command) {\n const { settingId, value } = command;\n\n try {\n // Use ComfyUI's setting API to update global setting\n const settingManager = app?.extensionManager?.setting;\n if (settingManager && typeof settingManager.set === 'function') {\n await settingManager.set(settingId, value);\n this._showToggleFeedback(value);\n this._clearCurrentToken();\n } else {\n // Fallback: use legacy settings API\n const setting = app.ui.settings.settingsById?.[settingId];\n if (setting) {\n app.ui.settings.setSettingValue(settingId, value);\n this._showToggleFeedback(value);\n this._clearCurrentToken();\n }\n }\n } catch (error) {\n console.error('[Lora Manager] Failed to toggle setting:', error);\n showToast({\n severity: 'error',\n summary: 'Error',\n detail: 'Failed to toggle autocomplete setting',\n life: 3000\n });\n }\n\n this.hide();\n }\n\n /**\n * Show visual feedback for toggle action using toast\n * @param {boolean} enabled - New autocomplete state\n */\n _showToggleFeedback(enabled) {\n showToast({\n severity: enabled ? 'success' : 'secondary',\n summary: enabled ? 'Autocomplete Enabled' : 'Autocomplete Disabled',\n detail: enabled \n ? 'Tag autocomplete is now ON. Type to see suggestions.' \n : 'Tag autocomplete is now OFF. Use /ac to re-enable.',\n life: 3000\n });\n }\n\n /**\n * Clear the current command token from input\n * Preserves leading spaces after delimiters (e.g., \"1girl, /ac\" -> \"1girl, \")\n */\n _clearCurrentToken() {\n const currentValue = this.inputElement.value;\n const activeRange = this.getActiveSearchRange(currentValue);\n const caretPos = activeRange.end;\n const lastSegment = activeRange.rawText;\n \n // Find the command start position, preserving leading spaces\n // lastSegment includes leading spaces (e.g., \" /ac\"), find where command actually starts\n const commandMatch = lastSegment.match(/^(\\s*)(\\/\\w+)/);\n if (commandMatch) {\n // commandMatch[1] is leading spaces, commandMatch[2] is the command\n const leadingSpaces = commandMatch[1].length;\n // Keep the spaces by starting after them\n const commandStartPos = activeRange.start + leadingSpaces;\n \n // Skip trailing spaces when deleting\n let endPos = caretPos;\n while (endPos < currentValue.length && currentValue[endPos] === ' ') {\n endPos++;\n }\n\n const newValue = currentValue.substring(0, commandStartPos) + currentValue.substring(endPos);\n const newCaretPos = commandStartPos;\n\n this.inputElement.value = newValue;\n\n // Trigger input event to notify about the change\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n // Focus back to input and position cursor\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n } else {\n // Fallback: delete the whole last segment (original behavior)\n const commandStartPos = activeRange.start;\n \n let endPos = caretPos;\n while (endPos < currentValue.length && currentValue[endPos] === ' ') {\n endPos++;\n }\n\n const newValue = currentValue.substring(0, commandStartPos) + currentValue.substring(endPos);\n const newCaretPos = commandStartPos;\n\n this.inputElement.value = newValue;\n\n const event = new Event('input', { bubbles: true });\n this.inputElement.dispatchEvent(event);\n\n this.inputElement.focus();\n this.inputElement.setSelectionRange(newCaretPos, newCaretPos);\n }\n }\n\n destroy() {\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n if (this.onInput) {\n this.inputElement.removeEventListener('input', this.onInput);\n this.onInput = null;\n }\n\n if (this.onKeyDown) {\n this.inputElement.removeEventListener('keydown', this.onKeyDown);\n this.onKeyDown = null;\n }\n\n if (this.onBlur) {\n this.inputElement.removeEventListener('blur', this.onBlur);\n this.onBlur = null;\n }\n\n if (this.onDocumentClick) {\n document.removeEventListener('click', this.onDocumentClick);\n this.onDocumentClick = null;\n }\n\n if (this.onScroll && this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.onScroll);\n this.onScroll = null;\n }\n\n if (typeof this.behavior.destroy === 'function') {\n this.behavior.destroy(this);\n } else if (this.previewTooltip) {\n this.previewTooltip.cleanup();\n this.previewTooltip = null;\n }\n this.previewTooltipPromise = null;\n \n if (this.dropdown && this.dropdown.parentNode) {\n this.dropdown.parentNode.removeChild(this.dropdown);\n this.dropdown = null;\n }\n \n }\n}\n\nexport { AutoComplete, refreshLoraSyntaxFormat };\n","export const CONVERTED_TYPE = 'converted-widget';\nimport { app } from \"../../scripts/app.js\";\nimport { AutoComplete } from \"./autocomplete.js\";\n\nconst ROOT_GRAPH_ID = \"root\";\n\nexport const LORA_PROVIDER_NODE_TYPES = [\n \"Lora Stacker (LoraManager)\",\n \"Lora Randomizer (LoraManager)\",\n \"Lora Cycler (LoraManager)\",\n];\n\nexport const LORA_STACK_AGGREGATOR_NODE_TYPES = [\n \"Lora Stack Combiner (LoraManager)\",\n];\n\nexport const LORA_CHAIN_NODE_TYPES = [\n ...LORA_PROVIDER_NODE_TYPES,\n ...LORA_STACK_AGGREGATOR_NODE_TYPES,\n];\n\nexport function isLoraProviderNode(comfyClass) {\n return LORA_PROVIDER_NODE_TYPES.includes(comfyClass);\n}\n\nexport function isLoraStackAggregatorNode(comfyClass) {\n return LORA_STACK_AGGREGATOR_NODE_TYPES.includes(comfyClass);\n}\n\nexport function isLoraChainNode(comfyClass) {\n return LORA_CHAIN_NODE_TYPES.includes(comfyClass);\n}\n\nfunction isMapLike(collection) {\n return collection && typeof collection.entries === \"function\" && typeof collection.values === \"function\";\n}\n\nfunction getChildGraphs(graph) {\n if (!graph || !graph._subgraphs) {\n return [];\n }\n\n const rawSubgraphs = isMapLike(graph._subgraphs)\n ? Array.from(graph._subgraphs.values())\n : Object.values(graph._subgraphs);\n\n return rawSubgraphs\n .map((subgraph) => subgraph?.graph || subgraph?._graph || subgraph)\n .filter((subgraph) => subgraph && subgraph !== graph);\n}\n\nfunction traverseGraphs(rootGraph, visitor, visited = new Set()) {\n const graph = rootGraph || app.graph;\n if (!graph) {\n return;\n }\n\n const graphId = getGraphId(graph);\n if (visited.has(graphId)) {\n return;\n }\n visited.add(graphId);\n visitor(graph);\n\n for (const subgraph of getChildGraphs(graph)) {\n traverseGraphs(subgraph, visitor, visited);\n }\n}\n\nexport function getGraphId(graph) {\n return graph?.id ?? ROOT_GRAPH_ID;\n}\n\nexport function getNodeGraphId(node) {\n if (!node) {\n return ROOT_GRAPH_ID;\n }\n return getGraphId(node.graph || app.graph);\n}\n\nexport function getGraphById(graphId, rootGraph = app.graph) {\n if (!graphId) {\n return rootGraph;\n }\n\n let foundGraph = null;\n traverseGraphs(rootGraph, (graph) => {\n if (!foundGraph && getGraphId(graph) === graphId) {\n foundGraph = graph;\n }\n });\n return foundGraph;\n}\n\nexport function getNodeFromGraph(graphId, nodeId) {\n const graph = getGraphById(graphId) || app.graph;\n if (!graph || typeof graph.getNodeById !== \"function\") {\n return null;\n }\n\n const numericId = typeof nodeId === \"string\" ? Number(nodeId) : nodeId;\n return graph.getNodeById(Number.isNaN(numericId) ? nodeId : numericId) || null;\n}\n\nexport function getAllGraphNodes(rootGraph = app.graph) {\n const nodes = [];\n traverseGraphs(rootGraph, (graph) => {\n if (Array.isArray(graph._nodes)) {\n for (const node of graph._nodes) {\n nodes.push({ graph, node });\n }\n }\n });\n return nodes;\n}\n\nexport function getNodeReference(node) {\n if (!node) {\n return null;\n }\n return {\n node_id: node.id,\n graph_id: getNodeGraphId(node),\n };\n}\n\nexport function getNodeKey(node) {\n if (!node) {\n return null;\n }\n return `${getNodeGraphId(node)}:${node.id}`;\n}\n\nexport function getWidgetByName(node, widgetName) {\n if (!node || !Array.isArray(node.widgets)) {\n return null;\n }\n\n return node.widgets.find((widget) => widget?.name === widgetName) || null;\n}\n\nexport function getWidgetSerializedValue(node, widgetName) {\n if (!node || !Array.isArray(node.widgets) || !Array.isArray(node.widgets_values)) {\n return undefined;\n }\n\n const widgetIndex = node.widgets.findIndex((widget) => widget?.name === widgetName);\n if (widgetIndex === -1) {\n return undefined;\n }\n\n return node.widgets_values[widgetIndex];\n}\n\nexport function getLinkFromGraph(graph, linkId) {\n if (!graph || graph.links == null) {\n return null;\n }\n\n if (isMapLike(graph.links)) {\n return graph.links.get(linkId) || null;\n }\n\n return graph.links[linkId] || null;\n}\n\nexport function chainCallback(object, property, callback) {\n if (object == undefined) {\n //This should not happen.\n console.error(\"Tried to add callback to non-existant object\")\n return;\n }\n if (property in object) {\n const callback_orig = object[property]\n object[property] = function () {\n const r = callback_orig.apply(this, arguments);\n callback.apply(this, arguments);\n return r\n };\n } else {\n object[property] = callback;\n }\n}\n\n/**\n * Show a toast notification\n * @param {Object|string} options - Toast options object or message string for backward compatibility\n * @param {string} [options.severity] - Message severity level (success, info, warn, error, secondary, contrast)\n * @param {string} [options.summary] - Short title for the toast\n * @param {any} [options.detail] - Detailed message content\n * @param {boolean} [options.closable] - Whether user can close the toast (default: true)\n * @param {number} [options.life] - Duration in milliseconds before auto-closing\n * @param {string} [options.group] - Group identifier for managing related toasts\n * @param {any} [options.styleClass] - Style class of the message\n * @param {any} [options.contentStyleClass] - Style class of the content\n * @param {string} [type] - Deprecated: severity type for backward compatibility\n */\nexport function showToast(options, type = 'info') {\n // Handle backward compatibility: showToast(message, type)\n if (typeof options === 'string') {\n options = {\n detail: options,\n severity: type\n };\n }\n \n // Set defaults\n const toastOptions = {\n severity: options.severity || 'info',\n summary: options.summary,\n detail: options.detail,\n closable: options.closable !== false, // default to true\n life: options.life,\n group: options.group,\n styleClass: options.styleClass,\n contentStyleClass: options.contentStyleClass\n };\n \n // Remove undefined properties\n Object.keys(toastOptions).forEach(key => {\n if (toastOptions[key] === undefined) {\n delete toastOptions[key];\n }\n });\n \n if (app && app.extensionManager && app.extensionManager.toast) {\n app.extensionManager.toast.add(toastOptions);\n } else {\n const message = toastOptions.detail || toastOptions.summary || 'No message';\n const severity = toastOptions.severity.toUpperCase();\n console.log(`${severity}: ${message}`);\n // Fallback alert for critical errors only\n if (toastOptions.severity === 'error') {\n alert(message);\n }\n }\n}\n\nexport function hideWidgetForGood(node, widget, suffix = \"\") {\n widget.origType = widget.type;\n widget.origComputeSize = widget.computeSize;\n widget.origSerializeValue = widget.serializeValue;\n widget.computeSize = () => [0, -4]; // -4 is due to the gap litegraph adds between widgets automatically\n widget.type = CONVERTED_TYPE + suffix;\n // widget.serializeValue = () => {\n // // Prevent serializing the widget if we have no input linked\n // const w = node.inputs?.find((i) => i.widget?.name === widget.name);\n // if (w?.link == null) {\n // return undefined;\n // }\n // return widget.origSerializeValue ? widget.origSerializeValue() : widget.value;\n // };\n\n // Hide any linked widgets, e.g. seed+seedControl\n if (widget.linkedWidgets) {\n for (const w of widget.linkedWidgets) {\n hideWidgetForGood(node, w, `:${widget.name}`);\n }\n }\n}\n\n// Update pattern to match both formats: or \nexport const LORA_PATTERN = //g;\n\nfunction isLoraStackInput(input) {\n return input?.type === \"LORA_STACK\";\n}\n\n// Get connected LORA_STACK chain nodes that feed into the current node\nexport function getConnectedInputLoraChainNodes(node) {\n const connectedNodes = [];\n\n if (!node?.inputs) {\n return connectedNodes;\n }\n\n for (const input of node.inputs) {\n if (!isLoraStackInput(input) || !input.link) {\n continue;\n }\n\n const link = getLinkFromGraph(node.graph, input.link);\n if (!link) {\n continue;\n }\n\n const sourceNode = node.graph?.getNodeById?.(link.origin_id);\n if (sourceNode && isLoraChainNode(sourceNode.comfyClass)) {\n connectedNodes.push(sourceNode);\n }\n }\n\n return connectedNodes;\n}\n\n// Get connected TriggerWord Toggle nodes that receive output from the current node\nexport function getConnectedTriggerToggleNodes(node) {\n const connectedNodes = [];\n\n if (!node?.outputs) {\n return connectedNodes;\n }\n\n for (const output of node.outputs) {\n if (!output?.links?.length) {\n continue;\n }\n\n for (const linkId of output.links) {\n const link = getLinkFromGraph(node.graph, linkId);\n if (!link) {\n continue;\n }\n\n const targetNode = node.graph?.getNodeById?.(link.target_id);\n if (targetNode && targetNode.comfyClass === \"TriggerWord Toggle (LoraManager)\") {\n connectedNodes.push(targetNode);\n }\n }\n }\n\n return connectedNodes;\n}\n\n// Extract active lora names from a node's widgets\nexport function getActiveLorasFromNode(node) {\n const activeLoraNames = new Set();\n\n // Handle Lora Cycler (single LoRA from cycler_config widget)\n if (node.comfyClass === \"Lora Cycler (LoraManager)\") {\n const cyclerWidget = node.widgets?.find(w => w.name === 'cycler_config');\n if (cyclerWidget?.value?.current_lora_filename) {\n activeLoraNames.add(cyclerWidget.value.current_lora_filename);\n }\n return activeLoraNames;\n }\n\n // Aggregator nodes do not own LoRA state directly; they only forward upstream stacks.\n if (isLoraStackAggregatorNode(node.comfyClass)) {\n return activeLoraNames;\n }\n\n // Handle Lora Stacker and Lora Randomizer (lorasWidget)\n let lorasWidget = node.lorasWidget;\n if (!lorasWidget && node.widgets) {\n lorasWidget = node.widgets.find(w => w.name === 'loras');\n }\n\n if (lorasWidget && lorasWidget.value) {\n lorasWidget.value.forEach(lora => {\n if (lora.active) {\n activeLoraNames.add(lora.name);\n }\n });\n }\n\n return activeLoraNames;\n}\n\n// Recursively collect all active loras from a node and its input chain\n// A node is considered active only if its mode is 0 (Always) or 3 (On Trigger)\nexport function collectActiveLorasFromChain(node, visited = new Set()) {\n // Prevent infinite loops from circular references\n const nodeKey = getNodeKey(node);\n if (!nodeKey) {\n return new Set();\n }\n if (visited.has(nodeKey)) {\n return new Set();\n }\n visited.add(nodeKey);\n\n // Check if node is active (mode 0 for Always, mode 3 for On Trigger)\n // Mode 2 is Never, Mode 4 is Bypass\n const isNodeActive = node.mode === undefined || node.mode === 0 || node.mode === 3;\n \n if (!isNodeActive) {\n return new Set();\n }\n\n // Get active loras from current node only if node is active\n const allActiveLoraNames = getActiveLorasFromNode(node);\n \n // Get connected input LORA_STACK chain nodes and collect their active loras\n const inputChainNodes = getConnectedInputLoraChainNodes(node);\n for (const chainNode of inputChainNodes) {\n const upstreamLoras = collectActiveLorasFromChain(chainNode, visited);\n upstreamLoras.forEach(name => allActiveLoraNames.add(name));\n }\n \n return allActiveLoraNames;\n}\n\n// Update trigger words for connected toggle nodes\nexport function updateConnectedTriggerWords(node, loraNames) {\n const connectedNodes = getConnectedTriggerToggleNodes(node);\n if (connectedNodes.length > 0) {\n const nodeIds = connectedNodes\n .map((connectedNode) => getNodeReference(connectedNode))\n .filter((reference) => reference !== null);\n\n if (nodeIds.length === 0) {\n return;\n }\n\n fetch(\"/api/lm/loras/get_trigger_words\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n lora_names: Array.from(loraNames),\n node_ids: nodeIds\n })\n }).catch(err => console.error(\"Error fetching trigger words:\", err));\n }\n}\n\nexport function mergeLoras(lorasText, lorasArr) {\n // Parse lorasText into a map: name -> {strength, clipStrength}\n const parsedLoras = {};\n let match;\n LORA_PATTERN.lastIndex = 0;\n while ((match = LORA_PATTERN.exec(lorasText)) !== null) {\n const name = match[1];\n const modelStrength = Number(match[2]);\n const clipStrength = match[3] ? Number(match[3]) : modelStrength;\n parsedLoras[name] = { strength: modelStrength, clipStrength };\n }\n\n // Build result array in the order of lorasArr\n const result = [];\n const usedNames = new Set();\n\n for (const lora of lorasArr) {\n if (parsedLoras[lora.name]) {\n result.push({\n name: lora.name,\n strength: lora.strength !== undefined ? lora.strength : parsedLoras[lora.name].strength,\n active: lora.active !== undefined ? lora.active : true,\n expanded: lora.expanded !== undefined ? lora.expanded : false,\n clipStrength: lora.clipStrength !== undefined ? lora.clipStrength : parsedLoras[lora.name].clipStrength,\n });\n usedNames.add(lora.name);\n }\n }\n\n // Add any new loras from lorasText that are not in lorasArr, in their text order\n for (const name in parsedLoras) {\n if (!usedNames.has(name)) {\n result.push({\n name,\n strength: parsedLoras[name].strength,\n active: true,\n clipStrength: parsedLoras[name].clipStrength,\n });\n }\n }\n\n return result;\n}\n\n/**\n * Find the actual input element for a widget\n * @param {Object} node - The node instance\n * @param {Object} widget - The widget to find input element for\n * @returns {Promise} The input element or null\n */\nasync function findWidgetInputElement(node, widget) {\n if (widget.inputEl && document.body.contains(widget.inputEl)) {\n return widget.inputEl;\n }\n\n const nodeId = node.id;\n const widgetName = widget.name;\n const maxAttempts = 20;\n const searchInterval = 50;\n\n const searchForInput = (attempt = 0) => {\n return new Promise((resolve) => {\n const doSearch = () => {\n let inputElement = null;\n\n // PRIORITY 1: Use data-node-id attribute (most reliable)\n // Always try this first, regardless of mode - Vue elements may still exist after mode switch\n const nodeContainer = document.querySelector(`[data-node-id=\"${nodeId}\"]`);\n if (nodeContainer) {\n // For text widgets, specifically look for textarea (not checkbox/toggle inputs)\n if (widgetName === 'text') {\n const textarea = nodeContainer.querySelector('textarea');\n if (textarea) {\n inputElement = textarea;\n console.log(`[Lora Manager] Found textarea for widget \"${widgetName}\" on node ${nodeId} via data-node-id`);\n }\n } else {\n // For other widgets, find input within widget containers\n const widgetContainers = nodeContainer.querySelectorAll('.lg-node-widget');\n for (const container of widgetContainers) {\n const input = container.querySelector('input:not([type=\"checkbox\"]), textarea');\n if (input) {\n inputElement = input;\n console.log(`[Lora Manager] Found input element for widget \"${widgetName}\" on node ${nodeId} via data-node-id`);\n break;\n }\n }\n }\n }\n\n // PRIORITY 2: Fallback - heuristic search using widget containers\n if (!inputElement) {\n const allWidgetContainers = document.querySelectorAll('.lg-node-widget, .dom-widget');\n\n for (const container of allWidgetContainers) {\n const hasInput = !!container.querySelector('input, textarea');\n if (!hasInput) continue;\n\n const textContent = container.textContent.toLowerCase();\n const containsWidgetName = textContent.includes(widgetName.toLowerCase());\n const containsNodeTitle = textContent.includes(node.title?.toLowerCase() || '');\n\n // For text widgets, check if it's a textarea\n const isTextareaWidget = widgetName === 'text' && container.querySelector('textarea');\n\n if (containsWidgetName || containsNodeTitle || isTextareaWidget) {\n inputElement = container.querySelector('input, textarea');\n console.log(`[Lora Manager] Found input element for widget \"${widgetName}\" on node ${nodeId} via heuristic`);\n break;\n }\n }\n }\n\n if (inputElement) {\n resolve(inputElement);\n } else if (attempt < maxAttempts) {\n setTimeout(() => searchForInput(attempt + 1).then(resolve), searchInterval);\n } else {\n console.warn(`[Lora Manager] Could not find input element for widget \"${widgetName}\" on node ${nodeId} after ${maxAttempts} attempts`);\n resolve(null);\n }\n };\n doSearch();\n });\n };\n\n return searchForInput();\n}\n\n/**\n * Initialize autocomplete for an input widget and setup cleanup\n * @param {Object} node - The node instance\n * @param {Object} inputWidget - The input widget to add autocomplete to\n * @param {Function} originalCallback - The original callback function\n * @param {string} [modelType='loras'] - The model type used by the autocomplete API\n * @param {Object} [autocompleteOptions] - Additional options for the autocomplete instance\n * @returns {Function} Enhanced callback function with autocomplete\n */\nexport function setupInputWidgetWithAutocomplete(node, inputWidget, originalCallback, modelType = 'loras', autocompleteOptions = {}) {\n const defaultOptions = {\n maxItems: 20,\n minChars: 1,\n debounceDelay: 200,\n };\n const mergedOptions = { ...defaultOptions, ...autocompleteOptions };\n\n setupAutocompleteCleanup(node);\n\n // Track rendering mode changes per node\n let lastVueNodesMode = typeof LiteGraph !== 'undefined' ? LiteGraph.vueNodesMode : false;\n\n const initializeAutocomplete = async () => {\n if (node.autocomplete) {\n console.log(`[Lora Manager] Autocomplete already initialized for widget \"${inputWidget.name}\" on node ${node.id}`);\n return;\n }\n\n try {\n let inputElement = null;\n\n // PRIORITY 1: Always prefer widget.inputEl if it exists (even if not yet in DOM)\n // This is the authoritative element created by ComfyUI\n if (inputWidget.inputEl) {\n inputElement = inputWidget.inputEl;\n // If not yet in DOM, wait for it to be added\n if (!document.body.contains(inputElement)) {\n console.log(`[Lora Manager] widget.inputEl exists but not in DOM yet, waiting for node ${node.id}`);\n const maxWait = 1000; // 1 second max\n const checkInterval = 50;\n let waited = 0;\n while (!document.body.contains(inputElement) && waited < maxWait) {\n await new Promise(r => setTimeout(r, checkInterval));\n waited += checkInterval;\n }\n if (!document.body.contains(inputElement)) {\n console.warn(`[Lora Manager] widget.inputEl still not in DOM after ${maxWait}ms for node ${node.id}`);\n inputElement = null; // Fall through to DOM search\n }\n }\n if (inputElement) {\n console.log(`[Lora Manager] Using widget.inputEl for widget \"${inputWidget.name}\" on node ${node.id}`);\n }\n }\n\n // PRIORITY 2: DOM search only if widget.inputEl doesn't exist\n if (!inputElement) {\n console.log(`[Lora Manager] Searching DOM for input element for widget \"${inputWidget.name}\" on node ${node.id}`);\n inputElement = await findWidgetInputElement(node, inputWidget);\n }\n\n if (inputElement) {\n const autocomplete = new AutoComplete(inputElement, modelType, mergedOptions);\n node.autocomplete = autocomplete;\n console.log(`[Lora Manager] Autocomplete initialized for widget \"${inputWidget.name}\" on node ${node.id}`);\n } else {\n console.warn(`[Lora Manager] Could not find input element for widget \"${inputWidget.name}\" on node ${node.id}`);\n }\n } catch (error) {\n console.error('[Lora Manager] Error initializing autocomplete:', error);\n }\n };\n\n const checkAndInvalidateAutocomplete = () => {\n // Check for rendering mode change\n const currentMode = typeof LiteGraph !== 'undefined' ? LiteGraph.vueNodesMode : false;\n if (currentMode !== lastVueNodesMode) {\n lastVueNodesMode = currentMode;\n if (node.autocomplete) {\n console.log(`[Lora Manager] Rendering mode changed, reinitializing autocomplete for node ${node.id}`);\n node.autocomplete.destroy();\n node.autocomplete = null;\n }\n return true;\n }\n\n // Check if existing autocomplete's input element is still valid\n if (node.autocomplete) {\n const currentInputEl = node.autocomplete.inputElement;\n if (!currentInputEl || !document.body.contains(currentInputEl)) {\n console.log(`[Lora Manager] Autocomplete element detached, reinitializing for node ${node.id}`);\n node.autocomplete.destroy();\n node.autocomplete = null;\n return true;\n }\n\n // Check if autocomplete is bound to wrong element (different from widget.inputEl)\n // Only do this check if widget.inputEl is actually in the DOM - it may be stale\n if (inputWidget.inputEl && document.body.contains(inputWidget.inputEl) && currentInputEl !== inputWidget.inputEl) {\n console.log(`[Lora Manager] Autocomplete bound to wrong element, rebinding for node ${node.id}`);\n node.autocomplete.destroy();\n node.autocomplete = null;\n return true;\n }\n\n // Check if events need rebinding (element exists but events not bound)\n // This can happen when Vue moves the element in the DOM\n if (node.autocomplete.needsRebind()) {\n console.log(`[Lora Manager] Autocomplete events need rebinding for node ${node.id}`);\n node.autocomplete.rebindEvents();\n }\n }\n\n return false;\n };\n\n const enhancedCallback = (value) => {\n // Check validity and invalidate if needed\n checkAndInvalidateAutocomplete();\n\n if (!node.autocomplete) {\n initializeAutocomplete();\n }\n\n if (typeof originalCallback === \"function\") {\n originalCallback.call(node, value);\n }\n };\n\n return enhancedCallback;\n}\n\n/**\n * Setup autocomplete cleanup when node is removed\n * @param {Object} node - The node instance\n */\nexport function setupAutocompleteCleanup(node) {\n // Override onRemoved to cleanup autocomplete\n const originalOnRemoved = node.onRemoved;\n node.onRemoved = function() {\n if (this.autocomplete) {\n this.autocomplete.destroy();\n this.autocomplete = null;\n }\n \n if (originalOnRemoved) {\n originalOnRemoved.call(this);\n }\n };\n}\n\n/**\n * Forward middle mouse (button 1) pointer events from a container to the ComfyUI canvas,\n * so that workflow panning works even when the pointer is over a DOM widget.\n * @param {HTMLElement} container - The root DOM element of the widget\n */\nexport function forwardMiddleMouseToCanvas(container) {\n if (!container) return;\n // Forward pointerdown\n container.addEventListener('pointerdown', (event) => {\n if (event.button === 1) {\n app.canvas.processMouseDown(event);\n }\n });\n // Forward pointermove\n container.addEventListener('pointermove', (event) => {\n if ((event.buttons & 4) === 4) {\n app.canvas.processMouseMove(event);\n }\n });\n // Forward pointerup\n container.addEventListener('pointerup', (event) => {\n if (event.button === 1) {\n app.canvas.processMouseUp(event);\n }\n });\n}\n\n/**\n * Forward wheel events from a container to the ComfyUI canvas for zooming,\n * unless the container has scrollable content.\n * This allows canvas zoom to work when hovering over DOM widgets.\n * @param {HTMLElement} container - The root DOM element of the widget\n * @param {Object} options - Configuration options\n * @param {boolean} options.captureWheel - If true, always capture wheel events (default: false)\n */\nexport function forwardWheelToCanvas(container, options = {}) {\n if (!container) return;\n\n const { captureWheel = false } = options;\n\n container.addEventListener('wheel', (event) => {\n // If explicitly capturing wheel (for internal scrolling), stop here\n if (captureWheel) {\n event.stopPropagation();\n return;\n }\n\n // Access ComfyUI app from global window\n const comfyApp = window.app;\n if (!comfyApp || !comfyApp.canvas || typeof comfyApp.canvas.processMouseWheel !== 'function') {\n return;\n }\n\n const deltaX = event.deltaX;\n const deltaY = event.deltaY;\n const isHorizontal = Math.abs(deltaX) > Math.abs(deltaY);\n\n // 1. Handle pinch-to-zoom (ctrlKey is true for pinch-to-zoom on most browsers)\n if (event.ctrlKey) {\n event.preventDefault();\n event.stopPropagation();\n comfyApp.canvas.processMouseWheel(event);\n return;\n }\n\n // 2. Horizontal scroll: pass to canvas (widgets usually don't scroll horizontally)\n if (isHorizontal) {\n event.preventDefault();\n event.stopPropagation();\n comfyApp.canvas.processMouseWheel(event);\n return;\n }\n\n // 3. Vertical scrolling: check if container is scrollable\n const canScrollY = container.scrollHeight > container.clientHeight;\n\n if (canScrollY) {\n // Container is scrollable, let it handle the wheel event but stop propagation\n // to prevent the canvas from zooming while the user is trying to scroll\n event.stopPropagation();\n } else {\n // Container is NOT scrollable, forward the wheel event to the canvas\n // so it can trigger zoom in/out\n event.preventDefault();\n event.stopPropagation();\n comfyApp.canvas.processMouseWheel(event);\n }\n }, { passive: false });\n}\n\n// Marks scrollable containers whose wheel scrolling must win over canvas zoom.\nconst LM_WHEEL_CLASS = 'lm-wheel-scrollable';\nlet lmWheelHookInstalled = false;\n\n/**\n * Keep vertical wheel scrolling inside a scrollable widget container, even in\n * Nodes 2.0 / Vue mode where ComfyUI's wheel→zoom handler runs on the document\n * in the capture phase (outer than any container-level listener).\n * Installs a single capture-phase hook on `window` (the outermost dispatch\n * point). When the wheel is over a marked, scrollable element, we manually\n * scroll it and fully consume the event so canvas zoom never sees it.\n */\nexport function enableListWheelScroll(container) {\n if (!container) return;\n container.classList.add(LM_WHEEL_CLASS);\n\n if (lmWheelHookInstalled) return;\n lmWheelHookInstalled = true;\n\n window.addEventListener('wheel', (event) => {\n // Let pinch/zoom and horizontal gestures pass through.\n if (event.ctrlKey) return;\n if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) return;\n\n const target = event.target;\n if (!target || typeof target.closest !== 'function') return;\n const el = target.closest(`.${LM_WHEEL_CLASS}`);\n if (!el) return;\n\n const canScrollY = el.scrollHeight > el.clientHeight + 1;\n if (!canScrollY) return;\n\n // Translate deltaMode to approximate pixels.\n const unit = event.deltaMode === 1 ? 16\n : event.deltaMode === 2 ? el.clientHeight\n : 1;\n\n el.scrollTop += event.deltaY * unit;\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }, { capture: true, passive: false });\n}\n\n// Get connected Lora Pool node from pool_config input\nexport function getConnectedPoolConfigNode(node) {\n if (!node?.inputs) {\n return null;\n }\n\n for (const input of node.inputs) {\n if (input.name !== \"pool_config\" || !input.link) {\n continue;\n }\n\n const link = getLinkFromGraph(node.graph, input.link);\n if (!link) {\n continue;\n }\n\n const sourceNode = node.graph?.getNodeById?.(link.origin_id);\n if (sourceNode && sourceNode.comfyClass === \"Lora Pool (LoraManager)\") {\n return sourceNode;\n }\n }\n\n return null;\n}\n\n// Get pool config widget value from connected Lora Pool node\nexport function getPoolConfigFromConnectedNode(node) {\n const poolNode = getConnectedPoolConfigNode(node);\n if (!poolNode) {\n return null;\n }\n\n const isNodeActive = poolNode.mode === undefined || poolNode.mode === 0 || poolNode.mode === 3;\n if (!isNodeActive) {\n return null;\n }\n\n const poolWidget = poolNode.widgets?.find(w => w.name === \"pool_config\");\n return poolWidget?.value || null;\n}\n\n// Helper function to find and update downstream Lora Loader nodes\nexport function updateDownstreamLoaders(startNode, visited = new Set()) {\n const nodeKey = getNodeKey(startNode);\n if (!nodeKey || visited.has(nodeKey)) return;\n visited.add(nodeKey);\n\n // Check each output link\n if (startNode.outputs) {\n for (const output of startNode.outputs) {\n if (output.links) {\n for (const linkId of output.links) {\n const link = getLinkFromGraph(startNode.graph, linkId);\n if (link) {\n const targetNode = startNode.graph?.getNodeById?.(link.target_id);\n\n // If target is a Lora Loader, collect all active loras in the chain and update\n if (\n targetNode &&\n targetNode.comfyClass === \"Lora Loader (LoraManager)\"\n ) {\n const allActiveLoraNames =\n collectActiveLorasFromChain(targetNode);\n updateConnectedTriggerWords(targetNode, allActiveLoraNames);\n }\n // If target is another LORA_STACK chain node, recursively check its outputs\n else if (targetNode && isLoraChainNode(targetNode.comfyClass)) {\n updateDownstreamLoaders(targetNode, visited);\n }\n }\n }\n }\n }\n }\n}\n","import { createApp, type App as VueApp } from 'vue'\nimport PrimeVue from 'primevue/config'\nimport LoraPoolWidget from '@/components/LoraPoolWidget.vue'\nimport LoraRandomizerWidget from '@/components/LoraRandomizerWidget.vue'\nimport LoraCyclerWidget from '@/components/LoraCyclerWidget.vue'\nimport JsonDisplayWidget from '@/components/JsonDisplayWidget.vue'\nimport AutocompleteTextWidget from '@/components/AutocompleteTextWidget.vue'\nimport LoraInfoWidget from '@/components/LoraInfoWidget.vue'\nimport { createVueWidgetCleanup } from './vue-widget-cleanup'\nimport type { LoraPoolConfig, RandomizerConfig, CyclerConfig } from './composables/types'\nimport {\n setupModeChangeHandler,\n createModeChangeCallback,\n LORA_CHAIN_NODE_TYPES\n} from './mode-change-handler'\n\nconst LORA_POOL_WIDGET_MIN_WIDTH = 500\nconst LORA_POOL_WIDGET_MIN_HEIGHT = 520\nconst LORA_RANDOMIZER_WIDGET_MIN_WIDTH = 500\nconst LORA_RANDOMIZER_WIDGET_MIN_HEIGHT = 448\nconst LORA_RANDOMIZER_WIDGET_MAX_HEIGHT = LORA_RANDOMIZER_WIDGET_MIN_HEIGHT\nconst LORA_CYCLER_WIDGET_MIN_WIDTH = 380\nconst LORA_CYCLER_WIDGET_MIN_HEIGHT = 408\nconst LORA_CYCLER_WIDGET_MAX_HEIGHT = LORA_CYCLER_WIDGET_MIN_HEIGHT\nconst JSON_DISPLAY_WIDGET_MIN_WIDTH = 300\nconst JSON_DISPLAY_WIDGET_MIN_HEIGHT = 200\nconst LORA_INFO_WIDGET_MIN_WIDTH = 300\nconst LORA_INFO_WIDGET_MIN_HEIGHT = 200\nconst AUTOCOMPLETE_TEXT_WIDGET_MIN_HEIGHT = 60\nconst AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT = 100\n// Per-modelType min size hints for node initial sizing.\n// These are returned from the factory so ComfyUI's _initialMinSize mechanism\n// gives the node a sensible default width (and height for prompt/embeddings).\nconst AUTOCOMPLETE_TEXT_MIN_WIDTH_DEFAULT = 400\nconst AUTOCOMPLETE_TEXT_MIN_HEIGHT_DEFAULT = 300\nconst AUTOCOMPLETE_METADATA_VERSION = 1\nconst LORA_MANAGER_WIDGET_IDS_PROPERTY = '__lm_widget_ids'\n\n// @ts-ignore - ComfyUI external module\nimport { app } from '../../../scripts/app.js'\n// @ts-ignore - ComfyUI external module\nimport { api } from '../../../scripts/api.js'\n// @ts-ignore\nimport { getPoolConfigFromConnectedNode, getActiveLorasFromNode, updateConnectedTriggerWords, updateDownstreamLoaders } from '../../web/comfyui/utils.js'\n\nfunction forwardMiddleMouseToCanvas(container: HTMLElement) {\n if (!container) return\n\n container.addEventListener('pointerdown', (event) => {\n if (event.button === 1) {\n const canvas = app.canvas\n if (canvas && typeof canvas.processMouseDown === 'function') {\n canvas.processMouseDown(event)\n }\n }\n })\n\n container.addEventListener('pointermove', (event) => {\n if ((event.buttons & 4) === 4) {\n const canvas = app.canvas\n if (canvas && typeof canvas.processMouseMove === 'function') {\n canvas.processMouseMove(event)\n }\n }\n })\n\n container.addEventListener('pointerup', (event) => {\n if (event.button === 1) {\n const canvas = app.canvas\n if (canvas && typeof canvas.processMouseUp === 'function') {\n canvas.processMouseUp(event)\n }\n }\n })\n}\n\nconst vueApps = new Map()\nlet autocompleteTextWidgetInstanceId = 0\n\nexport function createAutocompleteTextWidgetInstanceId() {\n autocompleteTextWidgetInstanceId += 1\n return autocompleteTextWidgetInstanceId\n}\n\n// Cache for dynamically loaded addLorasWidget module\nlet addLorasWidgetCache: any = null\n\n// @ts-ignore\nfunction createLoraPoolWidget(node) {\n const container = document.createElement('div')\n container.id = `lora-pool-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n let internalValue: LoraPoolConfig | undefined\n\n const widget = node.addDOMWidget(\n 'pool_config',\n 'LORA_POOL_CONFIG',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: LoraPoolConfig) {\n internalValue = v\n // ComfyUI automatically calls widget.callback after setValue\n // No need for custom onSetValue mechanism\n },\n serialize: true,\n // Per dev guide: providing getMinHeight via options allows the system to\n // skip expensive DOM measurements during rendering loop, improving performance\n getMinHeight() {\n return LORA_POOL_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n const vueApp = createApp(LoraPoolWidget, {\n widget,\n node\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id, vueApp)\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_POOL_WIDGET_MIN_WIDTH\n const minHeight = LORA_POOL_WIDGET_MIN_HEIGHT\n\n return { minHeight, minWidth }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id)\n }\n }\n\n return { widget }\n}\n\n// @ts-ignore\nfunction createLoraRandomizerWidget(node) {\n const container = document.createElement('div')\n container.id = `lora-randomizer-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n // Initialize with default config to avoid sending undefined/empty string to backend\n const defaultConfig: RandomizerConfig = {\n count_mode: 'range',\n count_fixed: 3,\n count_min: 2,\n count_max: 5,\n model_strength_min: 0.0,\n model_strength_max: 1.0,\n use_same_clip_strength: true,\n clip_strength_min: 0.0,\n clip_strength_max: 1.0,\n roll_mode: 'fixed',\n use_recommended_strength: false,\n recommended_strength_scale_min: 0.5,\n recommended_strength_scale_max: 1.0,\n }\n let internalValue: RandomizerConfig = defaultConfig\n\n const widget = node.addDOMWidget(\n 'randomizer_config',\n 'RANDOMIZER_CONFIG',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: RandomizerConfig) {\n internalValue = v\n // ComfyUI automatically calls widget.callback after setValue\n // No need for custom onSetValue mechanism\n },\n serialize: true,\n getMinHeight() {\n return LORA_RANDOMIZER_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n // Add method to get pool config from connected node\n node.getPoolConfig = () => getPoolConfigFromConnectedNode(node)\n\n // Handle roll event from Vue component\n widget.onRoll = (randomLoras: any[]) => {\n // Find the loras widget on this node and update it\n const lorasWidget = node.widgets.find((w: any) => w.name === 'loras')\n if (lorasWidget) {\n lorasWidget.value = randomLoras\n }\n }\n\n const vueApp = createApp(LoraRandomizerWidget, {\n widget,\n node,\n api\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 10000, vueApp) // Offset to avoid collision with pool widget\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_RANDOMIZER_WIDGET_MIN_WIDTH\n const minHeight = LORA_RANDOMIZER_WIDGET_MIN_HEIGHT\n const maxHeight = LORA_RANDOMIZER_WIDGET_MAX_HEIGHT\n\n return { minHeight, minWidth, maxHeight }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 10000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 10000)\n }\n }\n\n return { widget }\n}\n\n// @ts-ignore\nfunction createLoraCyclerWidget(node) {\n const container = document.createElement('div')\n container.id = `lora-cycler-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n const defaultConfig: CyclerConfig = {\n current_index: 1,\n total_count: 0,\n pool_config_hash: '',\n model_strength: 1.0,\n clip_strength: 1.0,\n use_same_clip_strength: true,\n use_preset_strength: false,\n preset_strength_scale: 1.0,\n sort_by: 'filename',\n current_lora_name: '',\n current_lora_filename: '',\n repeat_count: 1,\n repeat_used: 0,\n is_paused: false,\n include_no_lora: false,\n }\n let internalValue: CyclerConfig | undefined = defaultConfig\n\n const widget = node.addDOMWidget(\n 'cycler_config',\n 'CYCLER_CONFIG',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: CyclerConfig) {\n const oldFilename = internalValue?.current_lora_filename\n internalValue = v\n // ComfyUI automatically calls widget.callback after setValue\n // No need for custom onSetValue mechanism\n // Update downstream loaders when the active LoRA filename changes\n if (oldFilename !== v?.current_lora_filename) {\n updateDownstreamLoaders(node)\n }\n },\n serialize: true,\n getMinHeight() {\n return LORA_CYCLER_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n // Add method to get pool config from connected node\n node.getPoolConfig = () => getPoolConfigFromConnectedNode(node)\n\n const vueApp = createApp(LoraCyclerWidget, {\n widget,\n node,\n api\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 30000, vueApp) // Offset to avoid collision with other widgets\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_CYCLER_WIDGET_MIN_WIDTH\n const minHeight = LORA_CYCLER_WIDGET_MIN_HEIGHT\n const maxHeight = LORA_CYCLER_WIDGET_MAX_HEIGHT\n\n return { minHeight, minWidth, maxHeight }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 30000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 30000)\n }\n }\n\n return { widget }\n}\n\n// @ts-ignore\nfunction createJsonDisplayWidget(node) {\n const container = document.createElement('div')\n container.id = `json-display-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n let internalValue: Record | undefined\n\n const widget = node.addDOMWidget(\n 'metadata',\n 'JSON_DISPLAY',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: Record) {\n internalValue = v\n if (typeof widget.onSetValue === 'function') {\n widget.onSetValue(v)\n }\n },\n serialize: false, // Display-only widget - don't save metadata in workflows\n getMinHeight() {\n return JSON_DISPLAY_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n const vueApp = createApp(JsonDisplayWidget, {\n widget,\n node\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 20000, vueApp) // Offset to avoid collision with other widgets\n\n widget.computeLayoutSize = () => {\n const minWidth = JSON_DISPLAY_WIDGET_MIN_WIDTH\n const minHeight = JSON_DISPLAY_WIDGET_MIN_HEIGHT\n\n return { minHeight, minWidth }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 20000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 20000)\n }\n }\n\n return { widget }\n}\n\nconst widgetInputOptions: Map = new Map()\n\nfunction getSerializableWidgetNames(node: any): string[] {\n return (node.widgets || [])\n .filter((widget: any) => widget && widget.serialize !== false)\n .map((widget: any) => widget.name)\n}\n\nfunction createAutocompleteMetadataValue(textWidgetName = 'text') {\n return {\n version: AUTOCOMPLETE_METADATA_VERSION,\n textWidgetName\n }\n}\n\nfunction shouldBypassAutocompleteWidgetMigration(\n node: any,\n widgetValues: unknown[]\n): boolean {\n const inputDefs = node?.constructor?.nodeData?.inputs\n if (!inputDefs || !Array.isArray(widgetValues)) {\n return false\n }\n\n const widgetNames = new Set((node.widgets || []).map((widget: any) => widget?.name))\n const hasAutocompleteMetadataWidget = Array.from(widgetNames).some((name) =>\n typeof name === 'string' && name.startsWith('__lm_autocomplete_meta_')\n )\n\n if (!hasAutocompleteMetadataWidget) {\n return false\n }\n\n const originalWidgetsInputs = Object.values(inputDefs).filter((input: any) =>\n widgetNames.has(input.name) || input.forceInput\n )\n\n const widgetIndexHasForceInput = originalWidgetsInputs.flatMap((input: any) =>\n input.control_after_generate\n ? [!!input.forceInput, false]\n : [!!input.forceInput]\n )\n\n const result = (\n widgetIndexHasForceInput.some(Boolean) &&\n widgetIndexHasForceInput.length === widgetValues.length\n )\n\n return result\n}\n\nfunction remapWidgetValuesByName(\n widgetValues: unknown[],\n savedWidgetNames: string[],\n currentWidgetNames: string[]\n): unknown[] {\n const valueByName = new Map()\n savedWidgetNames.forEach((name, index) => {\n if (index < widgetValues.length) {\n valueByName.set(name, widgetValues[index])\n }\n })\n\n const currentWidgetNameSet = new Set(currentWidgetNames)\n const remappedValues: unknown[] = []\n for (const name of currentWidgetNames) {\n if (valueByName.has(name)) {\n remappedValues.push(valueByName.get(name))\n }\n }\n\n // Append values for saved widget names that are NOT in the current widget\n // list (e.g. forceInput widgets like \"seed\" that haven't been converted\n // back to DOM widgets yet at configure time). Without these, the\n // resulting array may accidentally match the length of ComfyUI's\n // widgetIndexHasForceInput array, causing migrateWidgetsValues to\n // incorrectly filter out the wrong values and drop real widget content.\n for (const name of savedWidgetNames) {\n if (!currentWidgetNameSet.has(name) && valueByName.has(name)) {\n remappedValues.push(valueByName.get(name))\n }\n }\n\n return remappedValues\n}\n\nfunction injectDefaultAutocompleteMetadataValues(\n widgetValues: unknown[],\n currentWidgetNames: string[]\n): unknown[] {\n const repairedValues: unknown[] = []\n let legacyValueIndex = 0\n\n for (const widgetName of currentWidgetNames) {\n if (widgetName.startsWith('__lm_autocomplete_meta_')) {\n const textWidgetName = widgetName.replace('__lm_autocomplete_meta_', '') || 'text'\n repairedValues.push(createAutocompleteMetadataValue(textWidgetName))\n continue\n }\n\n if (legacyValueIndex < widgetValues.length) {\n repairedValues.push(widgetValues[legacyValueIndex])\n legacyValueIndex++\n }\n }\n\n return repairedValues\n}\n\nfunction normalizeAutocompleteWidgetValues(node: any, info: any) {\n if (!info || !Array.isArray(info.widgets_values)) {\n return\n }\n\n const currentWidgetNames = getSerializableWidgetNames(node)\n\n if (currentWidgetNames.length === 0) {\n return\n }\n\n const savedWidgetNames = info.properties?.[LORA_MANAGER_WIDGET_IDS_PROPERTY]\n\n if (Array.isArray(savedWidgetNames) && savedWidgetNames.length > 0) {\n const remappedValues = remapWidgetValuesByName(\n info.widgets_values,\n savedWidgetNames,\n currentWidgetNames\n )\n info.widgets_values = remappedValues\n return\n }\n\n const metadataWidgetCount = currentWidgetNames.filter((name) =>\n name.startsWith('__lm_autocomplete_meta_')\n ).length\n\n if (\n metadataWidgetCount > 0 &&\n info.widgets_values.length === currentWidgetNames.length - metadataWidgetCount\n ) {\n const repairedValues = injectDefaultAutocompleteMetadataValues(\n info.widgets_values,\n currentWidgetNames\n )\n info.widgets_values = repairedValues\n }\n}\n\nfunction applyAutocompleteTextLayoutFix(\n widget: any,\n _container: HTMLElement | undefined,\n isVueMode: boolean\n): void {\n // In Vue rendering mode the WidgetDOM wrapper handles sizing, so we\n // only provide a computeSize hint and leave the container unconstrained.\n // In canvas mode we clear all custom sizing so LiteGraph's default\n // widget-area layout takes over. Neither path sets a hard max-height;\n // the textarea can grow freely (e.g. in app mode where\n // [&_textarea]:resize-y applies).\n if (isVueMode) {\n ;(widget as any).computeLayoutSize = undefined\n widget.computeSize = (width?: number) =>\n [width ?? 200, AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT - 4]\n } else {\n delete (widget as any).computeLayoutSize\n delete (widget as any).computeSize\n }\n}\n\n// Listen for Vue DOM mode setting changes and dispatch custom event\nconst initVueDomModeListener = () => {\n if (app.ui?.settings?.addEventListener) {\n app.ui.settings.addEventListener('Comfy.VueNodes.Enabled.change', () => {\n // Use requestAnimationFrame to ensure the setting value has been updated\n // before we read it (the event may fire before internal state updates)\n requestAnimationFrame(() => {\n const isVueDomMode = app.ui?.settings?.getSettingValue?.('Comfy.VueNodes.Enabled') ?? false\n\n if (app.graph?.nodes) {\n for (const node of app.graph.nodes) {\n const textWidget = node.widgets?.find(\n (w: any) => w.type === 'AUTOCOMPLETE_TEXT_LORAS'\n )\n if (!textWidget) continue\n const container = (textWidget as any).element as HTMLElement | undefined\n applyAutocompleteTextLayoutFix(textWidget, container, isVueDomMode)\n }\n }\n\n requestAnimationFrame(() => {\n for (const nodeEl of document.querySelectorAll('[data-node-id]')) {\n const grid = nodeEl.querySelector('[data-testid=\"node-widgets\"]') as HTMLElement | null\n if (!grid) continue\n const nodeId = nodeEl.getAttribute('data-node-id')\n const node = app.graph?.getNodeById(nodeId as any)\n if (!node) continue\n const rows: string[] = []\n let needsFix = false\n for (const w of node.widgets ?? []) {\n if (w.type === 'LORA_MANAGER_AUTOCOMPLETE_METADATA') {\n rows.push('min-content')\n } else if (w.name === 'loras') {\n rows.push('auto')\n } else if (w.name === 'text' && w.type === 'AUTOCOMPLETE_TEXT_LORAS') {\n rows.push(isVueDomMode ? 'min-content' : 'auto')\n needsFix = true\n } else {\n rows.push('auto')\n }\n }\n if (needsFix) {\n grid.style.gridTemplateRows = rows.join(' ')\n }\n }\n })\n\n app.canvas?.setDirty(true, true)\n\n document.dispatchEvent(new CustomEvent('lora-manager:vue-mode-change', {\n detail: { isVueDomMode }\n }))\n })\n })\n }\n}\n\n// Initialize listener when app is ready\nif (app.ui?.settings) {\n initVueDomModeListener()\n} else {\n // Defer until app is ready\n const checkAppReady = setInterval(() => {\n if (app.ui?.settings) {\n initVueDomModeListener()\n clearInterval(checkAppReady)\n }\n }, 100)\n}\n\n// @ts-ignore\nfunction createLoraInfoWidget(node: any) {\n const container = document.createElement('div')\n container.id = `lora-info-widget-${node.id}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n\n forwardMiddleMouseToCanvas(container)\n\n let internalValue: { name?: string; notes?: string; filePath?: string; activeTab?: string } | undefined\n\n const widget = node.addDOMWidget(\n 'lora_info_display',\n 'LORA_INFO_DISPLAY',\n container,\n {\n getValue() {\n return internalValue\n },\n setValue(v: { name?: string; notes?: string; filePath?: string; activeTab?: string }) {\n internalValue = v\n if (typeof widget.onSetValue === 'function') {\n widget.onSetValue(v)\n }\n },\n serialize: true,\n getMinHeight() {\n return LORA_INFO_WIDGET_MIN_HEIGHT\n }\n }\n )\n\n const vueApp = createApp(LoraInfoWidget, {\n widget,\n node,\n api,\n app,\n isVueMode: typeof LiteGraph !== 'undefined' && LiteGraph.vueNodesMode,\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n vueApps.set(node.id + 40000, vueApp) // Offset to avoid collision\n\n widget.computeLayoutSize = () => {\n const minWidth = LORA_INFO_WIDGET_MIN_WIDTH\n const minHeight = LORA_INFO_WIDGET_MIN_HEIGHT\n\n return { minHeight, minWidth }\n }\n\n widget.onRemove = () => {\n const vueApp = vueApps.get(node.id + 40000)\n if (vueApp) {\n vueApp.unmount()\n vueApps.delete(node.id + 40000)\n }\n }\n\n return { widget }\n}\n\n// Factory function for creating autocomplete text widgets\n// @ts-ignore\nfunction createAutocompleteTextWidgetFactory(\n node: any,\n widgetName: string,\n modelType: 'loras' | 'embeddings' | 'prompt',\n inputOptions: { placeholder?: string } = {}\n) {\n const metadataWidgetName = `__lm_autocomplete_meta_${widgetName}`\n\n let container: HTMLElement | null = null\n\n const existingContainers = document.querySelectorAll(\n '[id^=\"autocomplete-text-widget-\"]'\n )\n for (const el of existingContainers) {\n if (el.children.length === 0) {\n container = el\n break\n }\n }\n\n if (!container) {\n const instanceId = String(createAutocompleteTextWidgetInstanceId())\n container = document.createElement('div')\n container.id = `autocomplete-text-widget-${instanceId}`\n container.style.width = '100%'\n container.style.height = '100%'\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n container.style.overflow = 'hidden'\n forwardMiddleMouseToCanvas(container)\n }\n\n // Store textarea reference on the container element so cloned widgets can access it\n // This is necessary because when widgets are promoted to subgraph nodes,\n // the cloned widget shares the same element but needs access to inputEl\n const widgetElementRef = { inputEl: undefined as HTMLTextAreaElement | undefined }\n ;(container as any).__widgetInputEl = widgetElementRef\n\n const metadataWidget = node.addWidget('text', metadataWidgetName, {\n version: AUTOCOMPLETE_METADATA_VERSION,\n textWidgetName: widgetName\n })\n metadataWidget.value = createAutocompleteMetadataValue(widgetName)\n metadataWidget.type = 'LORA_MANAGER_AUTOCOMPLETE_METADATA'\n metadataWidget.hidden = true\n metadataWidget.computeSize = () => [0, -4]\n metadataWidget.serializeValue = () => metadataWidget.value\n\n const widget = node.addDOMWidget(\n widgetName,\n `AUTOCOMPLETE_TEXT_${modelType.toUpperCase()}`,\n container,\n {\n getValue() {\n // Access inputEl from widget or from the shared element reference\n const inputEl = widget.inputEl ?? (container as any).__widgetInputEl?.inputEl\n return inputEl?.value ?? ''\n },\n setValue(v: string) {\n // Access inputEl from widget or from the shared element reference\n const inputEl = widget.inputEl ?? (container as any).__widgetInputEl?.inputEl\n if (inputEl) {\n inputEl.value = v ?? ''\n // Notify Vue component of value change via custom event\n inputEl.dispatchEvent(new CustomEvent('lora-manager:autocomplete-value-changed', {\n detail: { value: v ?? '' }\n }))\n } else {\n ;(widget as any)._pendingValue = v ?? ''\n }\n // Also call onSetValue if defined (for Vue component integration)\n if (typeof widget.onSetValue === 'function') {\n widget.onSetValue(v ?? '')\n }\n },\n serialize: true,\n getMinHeight() {\n return AUTOCOMPLETE_TEXT_WIDGET_MIN_HEIGHT\n },\n ...(modelType === 'loras' && {\n getMaxHeight() {\n return AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT\n }\n })\n }\n )\n widget.metadataWidget = metadataWidget\n\n // Get spellcheck setting from ComfyUI settings (default: false)\n const spellcheck = app.ui?.settings?.getSettingValue?.('Comfy.TextareaWidget.Spellcheck') ?? false\n\n const maxHeight = modelType === 'loras' ? AUTOCOMPLETE_TEXT_WIDGET_MAX_HEIGHT : undefined\n\n const vueApp = createApp(AutocompleteTextWidget, {\n widget,\n node,\n modelType,\n placeholder: inputOptions.placeholder || widgetName,\n showPreview: true,\n spellcheck,\n maxHeight\n })\n\n vueApp.use(PrimeVue, {\n unstyled: true,\n ripple: false\n })\n\n vueApp.mount(container)\n const appKey = container.id\n vueApps.set(appKey, vueApp)\n\n if (maxHeight) {\n container.style.minHeight = `${AUTOCOMPLETE_TEXT_WIDGET_MIN_HEIGHT}px`\n }\n\n if (modelType === 'loras') {\n applyAutocompleteTextLayoutFix(\n widget,\n container,\n typeof LiteGraph !== 'undefined' && LiteGraph.vueNodesMode\n )\n }\n\n const vueCleanup = createVueWidgetCleanup(vueApp, () => {\n vueApps.delete(appKey)\n })\n\n widget.onRemove = () => {\n vueCleanup()\n }\n\n // Return minWidth/minHeight hints so ComfyUI's _initialMinSize mechanism\n // sets a sensible initial node width (and height for prompt/embeddings).\n // loras modelType retains its existing height constraints (getMaxHeight: 100).\n const minWidth = AUTOCOMPLETE_TEXT_MIN_WIDTH_DEFAULT\n const minHeight = modelType === 'loras' ? undefined : AUTOCOMPLETE_TEXT_MIN_HEIGHT_DEFAULT\n\n return { widget, minWidth, minHeight }\n}\n\napp.registerExtension({\n name: 'LoraManager.VueWidgets',\n\n getCustomWidgets() {\n return {\n // @ts-ignore\n LORA_POOL_CONFIG(node) {\n return createLoraPoolWidget(node)\n },\n // @ts-ignore\n RANDOMIZER_CONFIG(node) {\n return createLoraRandomizerWidget(node)\n },\n // @ts-ignore\n CYCLER_CONFIG(node) {\n return createLoraCyclerWidget(node)\n },\n // @ts-ignore\n async LORAS(node: any) {\n if (!addLorasWidgetCache) {\n // @ts-ignore\n const module = await import(/* @vite-ignore */ '../loras_widget.js')\n addLorasWidgetCache = module.addLorasWidget\n }\n // Check if this is a randomizer node to enable lock buttons\n const isRandomizerNode = node.comfyClass === 'Lora Randomizer (LoraManager)'\n\n // For randomizer nodes, add a callback to update connected trigger words\n const callback = isRandomizerNode ? () => {\n updateDownstreamLoaders(node)\n } : null\n\n const opts: { isRandomizerNode?: boolean; onSelectionChange?: (selection: any) => void } = {\n isRandomizerNode,\n }\n if (isRandomizerNode) {\n opts.onSelectionChange = async (selection: any) => {\n if (!selection?.name || !selection?.active) return\n\n // Walk outputs to find directly connected Lora Info nodes\n const infoNodes: any[] = []\n if (node.outputs) {\n for (const output of node.outputs) {\n if (!output?.links?.length) continue\n for (const linkId of output.links) {\n const links = node.graph?.links\n if (!links) continue\n const link = Array.isArray(links) ? links[linkId] : links.get?.(linkId)\n if (!link) continue\n const targetNode = node.graph?.getNodeById?.(link.target_id)\n if (targetNode?.comfyClass === 'Lora Info (LoraManager)') {\n infoNodes.push(targetNode)\n }\n }\n }\n }\n\n if (infoNodes.length === 0) return\n\n // Bump request token to guard against stale async responses\n for (const infoNode of infoNodes) {\n infoNode.__loraInfoReqId = (infoNode.__loraInfoReqId || 0) + 1\n }\n const reqIdSnapshot = new Map()\n for (const infoNode of infoNodes) {\n reqIdSnapshot.set(infoNode, infoNode.__loraInfoReqId)\n }\n\n // Fetch notes via the real ComfyUI api\n let infoData: any\n try {\n const response = await api.fetchApi(\n `/lm/loras/get-notes?name=${encodeURIComponent(selection.name)}`,\n { method: 'GET' }\n )\n if (response?.ok) {\n const data = await response.json()\n infoData = {\n name: selection.name,\n notes: data?.notes || '',\n filePath: data?.file_path || '',\n }\n } else {\n infoData = { name: selection.name, notes: '[Error loading notes]', filePath: '' }\n }\n } catch {\n infoData = { name: selection.name, notes: '[Error loading notes]', filePath: '' }\n }\n\n for (const infoNode of infoNodes) {\n if (infoNode.__loraInfoReqId !== reqIdSnapshot.get(infoNode)) {\n continue\n }\n if (typeof infoNode._setLoraInfo === 'function') {\n infoNode._setLoraInfo(infoData)\n }\n }\n }\n }\n\n return addLorasWidgetCache(node, 'loras', opts, callback)\n },\n // Autocomplete text widget for LoRAs (used by Lora Loader, Lora Stacker, WanVideo Lora Select)\n // @ts-ignore\n AUTOCOMPLETE_TEXT_LORAS(node) {\n const options = widgetInputOptions.get(`${node.comfyClass}:text`) || {}\n return createAutocompleteTextWidgetFactory(node, 'text', 'loras', options)\n },\n // Autocomplete text widget for embeddings (used by Prompt node)\n // @ts-ignore\n AUTOCOMPLETE_TEXT_EMBEDDINGS(node) {\n const options = widgetInputOptions.get(`${node.comfyClass}:text`) || {}\n return createAutocompleteTextWidgetFactory(node, 'text', 'embeddings', options)\n },\n // Autocomplete text widget for prompt (supports both embeddings and custom words)\n // @ts-ignore\n AUTOCOMPLETE_TEXT_PROMPT(node) {\n const options = widgetInputOptions.get(`${node.comfyClass}:text`) || {}\n return createAutocompleteTextWidgetFactory(node, 'text', 'prompt', options)\n },\n }\n },\n\n // Add display-only widget to Debug Metadata node\n // Register mode change handlers for LoRA provider nodes\n // Extract and store input options for autocomplete widgets\n // @ts-ignore\n async beforeRegisterNodeDef(nodeType, nodeData) {\n const comfyClass = nodeType.comfyClass\n const inputs = { ...nodeData.input?.required, ...nodeData.input?.optional }\n let hasAutocompleteWidget = false\n\n // Extract and store input options for autocomplete widgets\n for (const [inputName, inputDef] of Object.entries(inputs)) {\n // @ts-ignore\n if (Array.isArray(inputDef) && typeof inputDef[0] === 'string' && inputDef[0].startsWith('AUTOCOMPLETE_TEXT_')) {\n // @ts-ignore\n const options = inputDef[1] || {}\n widgetInputOptions.set(`${nodeData.name}:${inputName}`, options)\n hasAutocompleteWidget = true\n }\n }\n\n if (hasAutocompleteWidget) {\n const originalOnSerialize = nodeType.prototype.onSerialize\n const originalConfigure = nodeType.prototype.configure\n\n nodeType.prototype.onSerialize = function (serialized: any) {\n originalOnSerialize?.apply(this, arguments)\n\n serialized.properties = serialized.properties || {}\n const widgetIds = getSerializableWidgetNames(this)\n serialized.properties[LORA_MANAGER_WIDGET_IDS_PROPERTY] = widgetIds\n }\n\n nodeType.prototype.configure = function (info: any) {\n normalizeAutocompleteWidgetValues(this, info)\n\n const bypassResult = shouldBypassAutocompleteWidgetMigration(this, info?.widgets_values ?? [])\n\n if (bypassResult) {\n info.widgets_values = [...(info.widgets_values ?? []), null]\n }\n\n return originalConfigure?.apply(this, arguments)\n }\n }\n\n // Register mode change handlers for LORA_STACK chain nodes\n if (LORA_CHAIN_NODE_TYPES.includes(comfyClass)) {\n const originalOnNodeCreated = nodeType.prototype.onNodeCreated\n\n nodeType.prototype.onNodeCreated = function () {\n originalOnNodeCreated?.apply(this, arguments)\n\n // Create node-specific callback for Lora Stacker (updates direct trigger toggles)\n const nodeSpecificCallback = comfyClass === \"Lora Stacker (LoraManager)\"\n ? (activeLoraNames: Set) => updateConnectedTriggerWords(this, activeLoraNames)\n : undefined\n\n // Create and set up the mode change handler\n const onModeChange = createModeChangeCallback(this, updateDownstreamLoaders, nodeSpecificCallback)\n setupModeChangeHandler(this, onModeChange)\n }\n }\n\n // Add the JSON display widget to Debug Metadata node\n if (nodeData.name === 'Debug Metadata (LoraManager)') {\n const onNodeCreated = nodeType.prototype.onNodeCreated\n\n nodeType.prototype.onNodeCreated = function () {\n onNodeCreated?.apply(this, [])\n\n // Add the JSON display widget\n createJsonDisplayWidget(this)\n }\n }\n\n // Add the Lora Info display widget\n if (nodeData.name === 'Lora Info (LoraManager)') {\n const onNodeCreated = nodeType.prototype.onNodeCreated\n\n nodeType.prototype.onNodeCreated = function () {\n onNodeCreated?.apply(this, [])\n\n // Create the lora info display widget\n createLoraInfoWidget(this)\n }\n }\n }\n})\n"],"names":["i","hasOwnProperty","c","s","a","b","isRef","v","_a","l","computed","self","readonly","watch","effect","p","callHook","remove","ref","h","m","createApp","app","isModelListener","emit","remove2","style","setup","tt","resolve","d","camelize$1","k","ie","ae","N","$","Y","ot","P","$e","J","ut","mt","se","St","yt","Ee","xt","bt","_t","y","T","z","_","re","K","A","G","H","ee","he","Oe","kt","we","_typeof","o","ownKeys","r","_objectSpread","_defineProperty","_toPropertyKey","_toPrimitive","css","isClient","document","stop","load","_id","setAttributes","setAttribute","unload","isExist","dt","css$1","isNotEmpty","minifyCSS","Theme","extend","EventBus","PrimeVue","ThemeService","loadCommonTheme","global","mergeKeys","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString","_openBlock","_hoisted_2","$emit","_createVNode","_hoisted_3","_hoisted_4","_hoisted_5","_Fragment","_renderList","_createBlock","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_hoisted_15","_Transition","_Teleport","$slots","_renderSlot","_withModifiers","_e","api","_unref","percent","_normalizeStyle","_hoisted_13","_hoisted_16","_hoisted_17","_hoisted_18","w","lorasWidget","_createTextVNode","defaultOptions","_withDirectives","LORA_PROVIDER_NODE_TYPES","LORA_STACK_AGGREGATOR_NODE_TYPES","LORA_CHAIN_NODE_TYPES","isLoraStackAggregatorNode","updateDownstreamLoaders","isNodeActive","vueApp"],"mappings":";;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,QAAQ,KAAK;AACpB,QAAM,MAAsB,uBAAO,OAAO,IAAI;AAC9C,aAAW,OAAO,IAAI,MAAM,GAAG,EAAG,KAAI,GAAG,IAAI;AAC7C,SAAO,CAAC,QAAQ,OAAO;AACzB;AAEA,MAAM,YAA4E,CAAA;AAClF,MAAM,YAA4E,CAAA;AAClF,MAAM,OAAO,MAAM;AACnB;AACA,MAAM,KAAK,MAAM;AACjB,MAAM,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,CACxE,IAAI,WAAW,CAAC,IAAI,OAAO,IAAI,WAAW,CAAC,IAAI;AAChD,MAAM,kBAAkB,CAAC,QAAQ,IAAI,WAAW,WAAW;AAC3D,MAAM,SAAS,OAAO;AACtB,MAAM,SAAS,CAAC,KAAK,OAAO;AAC1B,QAAMA,KAAI,IAAI,QAAQ,EAAE;AACxB,MAAIA,KAAI,IAAI;AACV,QAAI,OAAOA,IAAG,CAAC;AAAA,EACjB;AACF;AACA,MAAMC,mBAAiB,OAAO,UAAU;AACxC,MAAM,SAAS,CAAC,KAAK,QAAQA,iBAAe,KAAK,KAAK,GAAG;AACzD,MAAM,UAAU,MAAM;AACtB,MAAM,QAAQ,CAAC,QAAQ,aAAa,GAAG,MAAM;AAC7C,MAAM,QAAQ,CAAC,QAAQ,aAAa,GAAG,MAAM;AAC7C,MAAM,SAAS,CAAC,QAAQ,aAAa,GAAG,MAAM;AAE9C,MAAM,aAAa,CAAC,QAAQ,OAAO,QAAQ;AAC3C,MAAM,WAAW,CAAC,QAAQ,OAAO,QAAQ;AACzC,MAAM,WAAW,CAAC,QAAQ,OAAO,QAAQ;AACzC,MAAM,WAAW,CAAC,QAAQ,QAAQ,QAAQ,OAAO,QAAQ;AACzD,MAAM,YAAY,CAAC,QAAQ;AACzB,UAAQ,SAAS,GAAG,KAAK,WAAW,GAAG,MAAM,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK;AAC3F;AACA,MAAM,iBAAiB,OAAO,UAAU;AACxC,MAAM,eAAe,CAAC,UAAU,eAAe,KAAK,KAAK;AACzD,MAAM,YAAY,CAAC,UAAU;AAC3B,SAAO,aAAa,KAAK,EAAE,MAAM,GAAG,EAAE;AACxC;AACA,MAAM,gBAAgB,CAAC,QAAQ,aAAa,GAAG,MAAM;AACrD,MAAM,eAAe,CAAC,QAAQ,SAAS,GAAG,KAAK,QAAQ,SAAS,IAAI,CAAC,MAAM,OAAO,KAAK,SAAS,KAAK,EAAE,MAAM;AAC7G,MAAM,iBAAiC;AAAA;AAAA,EAErC;AACF;AAIA,MAAM,sBAAsB,CAAC,OAAO;AAClC,QAAM,QAAwB,uBAAO,OAAO,IAAI;AAChD,UAAQ,CAAC,QAAQ;AACf,UAAM,MAAM,MAAM,GAAG;AACrB,WAAO,QAAQ,MAAM,GAAG,IAAI,GAAG,GAAG;AAAA,EACpC;AACF;AACA,MAAM,aAAa;AACnB,MAAM,WAAW;AAAA,EACf,CAAC,QAAQ;AACP,WAAO,IAAI,QAAQ,YAAY,CAACC,OAAMA,GAAE,MAAM,CAAC,EAAE,aAAa;AAAA,EAChE;AACF;AACA,MAAM,cAAc;AACpB,MAAM,YAAY;AAAA,EAChB,CAAC,QAAQ,IAAI,QAAQ,aAAa,KAAK,EAAE,YAAA;AAC3C;AACA,MAAM,aAAa,oBAAoB,CAAC,QAAQ;AAC9C,SAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAClD,CAAC;AACD,MAAM,eAAe;AAAA,EACnB,CAAC,QAAQ;AACP,UAAMC,KAAI,MAAM,KAAK,WAAW,GAAG,CAAC,KAAK;AACzC,WAAOA;AAAA,EACT;AACF;AACA,MAAM,aAAa,CAAC,OAAO,aAAa,CAAC,OAAO,GAAG,OAAO,QAAQ;AAClE,MAAM,iBAAiB,CAAC,QAAQ,QAAQ;AACtC,WAASH,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,QAAIA,EAAC,EAAE,GAAG,GAAG;AAAA,EACf;AACF;AACA,MAAM,MAAM,CAAC,KAAK,KAAK,OAAO,WAAW,UAAU;AACjD,SAAO,eAAe,KAAK,KAAK;AAAA,IAC9B,cAAc;AAAA,IACd,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EAAA,CACD;AACH;AACA,MAAM,gBAAgB,CAAC,QAAQ;AAC7B,QAAM,IAAI,WAAW,GAAG;AACxB,SAAO,MAAM,CAAC,IAAI,MAAM;AAC1B;AACA,MAAM,WAAW,CAAC,QAAQ;AACxB,QAAM,IAAI,SAAS,GAAG,IAAI,OAAO,GAAG,IAAI;AACxC,SAAO,MAAM,CAAC,IAAI,MAAM;AAC1B;AACA,IAAI;AACJ,MAAM,gBAAgB,MAAM;AAC1B,SAAO,gBAAgB,cAAc,OAAO,eAAe,cAAc,aAAa,OAAO,SAAS,cAAc,OAAO,OAAO,WAAW,cAAc,SAAS,OAAO,WAAW,cAAc,SAAS;AAC/M;AAgJA,SAAS,eAAe,OAAO;AAC7B,MAAI,QAAQ,KAAK,GAAG;AAClB,UAAM,MAAM,CAAA;AACZ,aAASA,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,YAAM,OAAO,MAAMA,EAAC;AACpB,YAAM,aAAa,SAAS,IAAI,IAAI,iBAAiB,IAAI,IAAI,eAAe,IAAI;AAChF,UAAI,YAAY;AACd,mBAAW,OAAO,YAAY;AAC5B,cAAI,GAAG,IAAI,WAAW,GAAG;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,WAAW,SAAS,KAAK,KAAK,SAAS,KAAK,GAAG;AAC7C,WAAO;AAAA,EACT;AACF;AACA,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAC5B,MAAM,iBAAiB;AACvB,SAAS,iBAAiB,SAAS;AACjC,QAAM,MAAM,CAAA;AACZ,UAAQ,QAAQ,gBAAgB,EAAE,EAAE,MAAM,eAAe,EAAE,QAAQ,CAAC,SAAS;AAC3E,QAAI,MAAM;AACR,YAAM,MAAM,KAAK,MAAM,mBAAmB;AAC1C,UAAI,SAAS,MAAM,IAAI,IAAI,CAAC,EAAE,KAAA,CAAM,IAAI,IAAI,CAAC,EAAE,KAAA;AAAA,IACjD;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAcA,SAAS,eAAe,OAAO;AAC7B,MAAI,MAAM;AACV,MAAI,SAAS,KAAK,GAAG;AACnB,UAAM;AAAA,EACR,WAAW,QAAQ,KAAK,GAAG;AACzB,aAASA,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,YAAM,aAAa,eAAe,MAAMA,EAAC,CAAC;AAC1C,UAAI,YAAY;AACd,eAAO,aAAa;AAAA,MACtB;AAAA,IACF;AAAA,EACF,WAAW,SAAS,KAAK,GAAG;AAC1B,eAAW,QAAQ,OAAO;AACxB,UAAI,MAAM,IAAI,GAAG;AACf,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACA,SAAO,IAAI,KAAA;AACb;AAsBA,MAAM,sBAAsB;AAC5B,MAAM,+CAA+C,mBAAmB;AAIxE,SAAS,mBAAmB,OAAO;AACjC,SAAO,CAAC,CAAC,SAAS,UAAU;AAC9B;AAuFA,SAAS,mBAAmBI,IAAGC,IAAG;AAChC,MAAID,GAAE,WAAWC,GAAE,OAAQ,QAAO;AAClC,MAAI,QAAQ;AACZ,WAASL,KAAI,GAAG,SAASA,KAAII,GAAE,QAAQJ,MAAK;AAC1C,YAAQ,WAAWI,GAAEJ,EAAC,GAAGK,GAAEL,EAAC,CAAC;AAAA,EAC/B;AACA,SAAO;AACT;AACA,SAAS,WAAWI,IAAGC,IAAG;AACxB,MAAID,OAAMC,GAAG,QAAO;AACpB,MAAI,aAAa,OAAOD,EAAC;AACzB,MAAI,aAAa,OAAOC,EAAC;AACzB,MAAI,cAAc,YAAY;AAC5B,WAAO,cAAc,aAAaD,GAAE,cAAcC,GAAE,YAAY;AAAA,EAClE;AACA,eAAa,SAASD,EAAC;AACvB,eAAa,SAASC,EAAC;AACvB,MAAI,cAAc,YAAY;AAC5B,WAAOD,OAAMC;AAAA,EACf;AACA,eAAa,QAAQD,EAAC;AACtB,eAAa,QAAQC,EAAC;AACtB,MAAI,cAAc,YAAY;AAC5B,WAAO,cAAc,aAAa,mBAAmBD,IAAGC,EAAC,IAAI;AAAA,EAC/D;AACA,eAAa,SAASD,EAAC;AACvB,eAAa,SAASC,EAAC;AACvB,MAAI,cAAc,YAAY;AAC5B,QAAI,CAAC,cAAc,CAAC,YAAY;AAC9B,aAAO;AAAA,IACT;AACA,UAAM,aAAa,OAAO,KAAKD,EAAC,EAAE;AAClC,UAAM,aAAa,OAAO,KAAKC,EAAC,EAAE;AAClC,QAAI,eAAe,YAAY;AAC7B,aAAO;AAAA,IACT;AACA,eAAW,OAAOD,IAAG;AACnB,YAAM,UAAUA,GAAE,eAAe,GAAG;AACpC,YAAM,UAAUC,GAAE,eAAe,GAAG;AACpC,UAAI,WAAW,CAAC,WAAW,CAAC,WAAW,WAAW,CAAC,WAAWD,GAAE,GAAG,GAAGC,GAAE,GAAG,CAAC,GAAG;AAC7E,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO,OAAOD,EAAC,MAAM,OAAOC,EAAC;AAC/B;AAKA,MAAMC,UAAQ,CAAC,QAAQ;AACrB,SAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM;AACxC;AACA,MAAM,kBAAkB,CAAC,QAAQ;AAC/B,SAAO,SAAS,GAAG,IAAI,MAAM,OAAO,OAAO,KAAK,QAAQ,GAAG,KAAK,SAAS,GAAG,MAAM,IAAI,aAAa,kBAAkB,CAAC,WAAW,IAAI,QAAQ,KAAKA,QAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,IAAI,KAAK,UAAU,KAAK,UAAU,CAAC,IAAI,OAAO,GAAG;AAC3O;AACA,MAAM,WAAW,CAAC,MAAM,QAAQ;AAC9B,MAAIA,QAAM,GAAG,GAAG;AACd,WAAO,SAAS,MAAM,IAAI,KAAK;AAAA,EACjC,WAAW,MAAM,GAAG,GAAG;AACrB,WAAO;AAAA,MACL,CAAC,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,QAAA,CAAS,EAAE;AAAA,QACvC,CAAC,SAAS,CAAC,KAAK,IAAI,GAAGN,OAAM;AAC3B,kBAAQ,gBAAgB,KAAKA,EAAC,IAAI,KAAK,IAAI;AAC3C,iBAAO;AAAA,QACT;AAAA,QACA,CAAA;AAAA,MAAC;AAAA,IACH;AAAA,EAEJ,WAAW,MAAM,GAAG,GAAG;AACrB,WAAO;AAAA,MACL,CAAC,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,OAAA,CAAQ,EAAE,IAAI,CAACO,OAAM,gBAAgBA,EAAC,CAAC;AAAA,IAAA;AAAA,EAEzE,WAAW,SAAS,GAAG,GAAG;AACxB,WAAO,gBAAgB,GAAG;AAAA,EAC5B,WAAW,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,GAAG,GAAG;AAChE,WAAO,OAAO,GAAG;AAAA,EACnB;AACA,SAAO;AACT;AACA,MAAM,kBAAkB,CAACA,IAAGP,KAAI,OAAO;AACrC,MAAIQ;AACJ;AAAA;AAAA;AAAA,IAGE,SAASD,EAAC,IAAI,WAAWC,MAAKD,GAAE,gBAAgB,OAAOC,MAAKR,EAAC,MAAMO;AAAA;AAEvE;ACngBA;AAAA;AAAA;AAAA;AAAA;AAWA,IAAI;AACJ,MAAM,YAAY;AAAA,EAChB,YAAY,WAAW,OAAO;AAC5B,SAAK,WAAW;AAIhB,SAAK,UAAU;AAIf,SAAK,MAAM;AAIX,SAAK,UAAU,CAAA;AAIf,SAAK,WAAW,CAAA;AAChB,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,QAAI,CAAC,YAAY,mBAAmB;AAClC,WAAK,SAAS,kBAAkB,WAAW,kBAAkB,SAAS,CAAA,IAAK;AAAA,QACzE;AAAA,MAAA,IACE;AAAA,IACN;AAAA,EACF;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACA,QAAQ;AACN,QAAI,KAAK,SAAS;AAChB,WAAK,YAAY;AACjB,UAAIP,IAAGS;AACP,UAAI,KAAK,QAAQ;AACf,aAAKT,KAAI,GAAGS,KAAI,KAAK,OAAO,QAAQT,KAAIS,IAAGT,MAAK;AAC9C,eAAK,OAAOA,EAAC,EAAE,MAAA;AAAA,QACjB;AAAA,MACF;AACA,WAAKA,KAAI,GAAGS,KAAI,KAAK,QAAQ,QAAQT,KAAIS,IAAGT,MAAK;AAC/C,aAAK,QAAQA,EAAC,EAAE,MAAA;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACP,QAAI,KAAK,SAAS;AAChB,UAAI,KAAK,WAAW;AAClB,aAAK,YAAY;AACjB,YAAIA,IAAGS;AACP,YAAI,KAAK,QAAQ;AACf,eAAKT,KAAI,GAAGS,KAAI,KAAK,OAAO,QAAQT,KAAIS,IAAGT,MAAK;AAC9C,iBAAK,OAAOA,EAAC,EAAE,OAAA;AAAA,UACjB;AAAA,QACF;AACA,aAAKA,KAAI,GAAGS,KAAI,KAAK,QAAQ,QAAQT,KAAIS,IAAGT,MAAK;AAC/C,eAAK,QAAQA,EAAC,EAAE,OAAA;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,IAAI;AACN,QAAI,KAAK,SAAS;AAChB,YAAM,qBAAqB;AAC3B,UAAI;AACF,4BAAoB;AACpB,eAAO,GAAA;AAAA,MACT,UAAA;AACE,4BAAoB;AAAA,MACtB;AAAA,IACF;AAAA,EAGF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK;AACH,QAAI,EAAE,KAAK,QAAQ,GAAG;AACpB,WAAK,YAAY;AACjB,0BAAoB;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AACJ,QAAI,KAAK,MAAM,KAAK,EAAE,KAAK,QAAQ,GAAG;AACpC,0BAAoB,KAAK;AACzB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EACA,KAAK,YAAY;AACf,QAAI,KAAK,SAAS;AAChB,WAAK,UAAU;AACf,UAAIA,IAAGS;AACP,WAAKT,KAAI,GAAGS,KAAI,KAAK,QAAQ,QAAQT,KAAIS,IAAGT,MAAK;AAC/C,aAAK,QAAQA,EAAC,EAAE,KAAA;AAAA,MAClB;AACA,WAAK,QAAQ,SAAS;AACtB,WAAKA,KAAI,GAAGS,KAAI,KAAK,SAAS,QAAQT,KAAIS,IAAGT,MAAK;AAChD,aAAK,SAASA,EAAC,EAAA;AAAA,MACjB;AACA,WAAK,SAAS,SAAS;AACvB,UAAI,KAAK,QAAQ;AACf,aAAKA,KAAI,GAAGS,KAAI,KAAK,OAAO,QAAQT,KAAIS,IAAGT,MAAK;AAC9C,eAAK,OAAOA,EAAC,EAAE,KAAK,IAAI;AAAA,QAC1B;AACA,aAAK,OAAO,SAAS;AAAA,MACvB;AACA,UAAI,CAAC,KAAK,YAAY,KAAK,UAAU,CAAC,YAAY;AAChD,cAAM,OAAO,KAAK,OAAO,OAAO,IAAA;AAChC,YAAI,QAAQ,SAAS,MAAM;AACzB,eAAK,OAAO,OAAO,KAAK,KAAK,IAAI;AACjC,eAAK,QAAQ,KAAK;AAAA,QACpB;AAAA,MACF;AACA,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AACF;AAIA,SAAS,kBAAkB;AACzB,SAAO;AACT;AAWA,IAAI;AAmBJ,MAAM,yCAAyC,QAAA;AAC/C,MAAM,eAAe;AAAA,EACnB,YAAY,IAAI;AACd,SAAK,KAAK;AAIV,SAAK,OAAO;AAIZ,SAAK,WAAW;AAIhB,SAAK,QAAQ,IAAI;AAIjB,SAAK,OAAO;AAIZ,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,QAAI,qBAAqB,kBAAkB,QAAQ;AACjD,wBAAkB,QAAQ,KAAK,IAAI;AAAA,IACrC;AAAA,EACF;AAAA,EACA,QAAQ;AACN,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,SAAS;AACP,QAAI,KAAK,QAAQ,IAAI;AACnB,WAAK,SAAS;AACd,UAAI,mBAAmB,IAAI,IAAI,GAAG;AAChC,2BAAmB,OAAO,IAAI;AAC9B,aAAK,QAAA;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACP,QAAI,KAAK,QAAQ,KAAK,EAAE,KAAK,QAAQ,KAAK;AACxC;AAAA,IACF;AACA,QAAI,EAAE,KAAK,QAAQ,IAAI;AACrB,YAAM,IAAI;AAAA,IACZ;AAAA,EACF;AAAA,EACA,MAAM;AACJ,QAAI,EAAE,KAAK,QAAQ,IAAI;AACrB,aAAO,KAAK,GAAA;AAAA,IACd;AACA,SAAK,SAAS;AACd,kBAAc,IAAI;AAClB,gBAAY,IAAI;AAChB,UAAM,aAAa;AACnB,UAAM,kBAAkB;AACxB,gBAAY;AACZ,kBAAc;AACd,QAAI;AACF,aAAO,KAAK,GAAA;AAAA,IACd,UAAA;AAME,kBAAY,IAAI;AAChB,kBAAY;AACZ,oBAAc;AACd,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AAAA,EACA,OAAO;AACL,QAAI,KAAK,QAAQ,GAAG;AAClB,eAAS,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,SAAS;AACpD,kBAAU,IAAI;AAAA,MAChB;AACA,WAAK,OAAO,KAAK,WAAW;AAC5B,oBAAc,IAAI;AAClB,WAAK,UAAU,KAAK,OAAA;AACpB,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AAAA,EACA,UAAU;AACR,QAAI,KAAK,QAAQ,IAAI;AACnB,yBAAmB,IAAI,IAAI;AAAA,IAC7B,WAAW,KAAK,WAAW;AACzB,WAAK,UAAA;AAAA,IACP,OAAO;AACL,WAAK,WAAA;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,QAAI,QAAQ,IAAI,GAAG;AACjB,WAAK,IAAA;AAAA,IACP;AAAA,EACF;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,QAAQ,IAAI;AAAA,EACrB;AACF;AACA,IAAI,aAAa;AACjB,IAAI;AACJ,IAAI;AACJ,SAAS,MAAM,KAAK,aAAa,OAAO;AACtC,MAAI,SAAS;AACb,MAAI,YAAY;AACd,QAAI,OAAO;AACX,sBAAkB;AAClB;AAAA,EACF;AACA,MAAI,OAAO;AACX,eAAa;AACf;AACA,SAAS,aAAa;AACpB;AACF;AACA,SAAS,WAAW;AAClB,MAAI,EAAE,aAAa,GAAG;AACpB;AAAA,EACF;AACA,MAAI,iBAAiB;AACnB,QAAI,IAAI;AACR,sBAAkB;AAClB,WAAO,GAAG;AACR,YAAM,OAAO,EAAE;AACf,QAAE,OAAO;AACT,QAAE,SAAS;AACX,UAAI;AAAA,IACN;AAAA,EACF;AACA,MAAI;AACJ,SAAO,YAAY;AACjB,QAAI,IAAI;AACR,iBAAa;AACb,WAAO,GAAG;AACR,YAAM,OAAO,EAAE;AACf,QAAE,OAAO;AACT,QAAE,SAAS;AACX,UAAI,EAAE,QAAQ,GAAG;AACf,YAAI;AACF;AACA,YAAE,QAAA;AAAA,QACJ,SAAS,KAAK;AACZ,cAAI,CAAC,MAAO,SAAQ;AAAA,QACtB;AAAA,MACF;AACA,UAAI;AAAA,IACN;AAAA,EACF;AACA,MAAI,MAAO,OAAM;AACnB;AACA,SAAS,YAAY,KAAK;AACxB,WAAS,OAAO,IAAI,MAAM,MAAM,OAAO,KAAK,SAAS;AACnD,SAAK,UAAU;AACf,SAAK,iBAAiB,KAAK,IAAI;AAC/B,SAAK,IAAI,aAAa;AAAA,EACxB;AACF;AACA,SAAS,YAAY,KAAK;AACxB,MAAI;AACJ,MAAI,OAAO,IAAI;AACf,MAAI,OAAO;AACX,SAAO,MAAM;AACX,UAAM,OAAO,KAAK;AAClB,QAAI,KAAK,YAAY,IAAI;AACvB,UAAI,SAAS,KAAM,QAAO;AAC1B,gBAAU,IAAI;AACd,gBAAU,IAAI;AAAA,IAChB,OAAO;AACL,aAAO;AAAA,IACT;AACA,SAAK,IAAI,aAAa,KAAK;AAC3B,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AACA,MAAI,OAAO;AACX,MAAI,WAAW;AACjB;AACA,SAAS,QAAQ,KAAK;AACpB,WAAS,OAAO,IAAI,MAAM,MAAM,OAAO,KAAK,SAAS;AACnD,QAAI,KAAK,IAAI,YAAY,KAAK,WAAW,KAAK,IAAI,aAAa,gBAAgB,KAAK,IAAI,QAAQ,KAAK,KAAK,IAAI,YAAY,KAAK,UAAU;AACvI,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,IAAI,QAAQ;AACd,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,gBAAgBU,WAAU;AACjC,MAAIA,UAAS,QAAQ,KAAK,EAAEA,UAAS,QAAQ,KAAK;AAChD;AAAA,EACF;AACAA,YAAS,SAAS;AAClB,MAAIA,UAAS,kBAAkB,eAAe;AAC5C;AAAA,EACF;AACAA,YAAS,gBAAgB;AACzB,MAAI,CAACA,UAAS,SAASA,UAAS,QAAQ,QAAQ,CAACA,UAAS,QAAQ,CAACA,UAAS,UAAU,CAAC,QAAQA,SAAQ,IAAI;AACzG;AAAA,EACF;AACAA,YAAS,SAAS;AAClB,QAAM,MAAMA,UAAS;AACrB,QAAM,UAAU;AAChB,QAAM,kBAAkB;AACxB,cAAYA;AACZ,gBAAc;AACd,MAAI;AACF,gBAAYA,SAAQ;AACpB,UAAM,QAAQA,UAAS,GAAGA,UAAS,MAAM;AACzC,QAAI,IAAI,YAAY,KAAK,WAAW,OAAOA,UAAS,MAAM,GAAG;AAC3DA,gBAAS,SAAS;AAClBA,gBAAS,SAAS;AAClB,UAAI;AAAA,IACN;AAAA,EACF,SAAS,KAAK;AACZ,QAAI;AACJ,UAAM;AAAA,EACR,UAAA;AACE,gBAAY;AACZ,kBAAc;AACd,gBAAYA,SAAQ;AACpBA,cAAS,SAAS;AAAA,EACpB;AACF;AACA,SAAS,UAAU,MAAM,OAAO,OAAO;AACrC,QAAM,EAAE,KAAK,SAAS,QAAA,IAAY;AAClC,MAAI,SAAS;AACX,YAAQ,UAAU;AAClB,SAAK,UAAU;AAAA,EACjB;AACA,MAAI,SAAS;AACX,YAAQ,UAAU;AAClB,SAAK,UAAU;AAAA,EACjB;AAIA,MAAI,IAAI,SAAS,MAAM;AACrB,QAAI,OAAO;AACX,QAAI,CAAC,WAAW,IAAI,UAAU;AAC5B,UAAI,SAAS,SAAS;AACtB,eAASD,KAAI,IAAI,SAAS,MAAMA,IAAGA,KAAIA,GAAE,SAAS;AAChD,kBAAUA,IAAG,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,MAAM,IAAI,KAAK;AACjC,QAAI,IAAI,OAAO,IAAI,GAAG;AAAA,EACxB;AACF;AACA,SAAS,UAAU,MAAM;AACvB,QAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,MAAI,SAAS;AACX,YAAQ,UAAU;AAClB,SAAK,UAAU;AAAA,EACjB;AACA,MAAI,SAAS;AACX,YAAQ,UAAU;AAClB,SAAK,UAAU;AAAA,EACjB;AACF;AAsBA,IAAI,cAAc;AAClB,MAAM,aAAa,CAAA;AACnB,SAAS,gBAAgB;AACvB,aAAW,KAAK,WAAW;AAC3B,gBAAc;AAChB;AAKA,SAAS,gBAAgB;AACvB,QAAM,OAAO,WAAW,IAAA;AACxB,gBAAc,SAAS,SAAS,OAAO;AACzC;AAUA,SAAS,cAAc,GAAG;AACxB,QAAM,EAAE,YAAY;AACpB,IAAE,UAAU;AACZ,MAAI,SAAS;AACX,UAAM,UAAU;AAChB,gBAAY;AACZ,QAAI;AACF,cAAA;AAAA,IACF,UAAA;AACE,kBAAY;AAAA,IACd;AAAA,EACF;AACF;AAEA,IAAI,gBAAgB;AACpB,MAAM,KAAK;AAAA,EACT,YAAY,KAAK,KAAK;AACpB,SAAK,MAAM;AACX,SAAK,MAAM;AACX,SAAK,UAAU,IAAI;AACnB,SAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,iBAAiB;AAAA,EACpF;AACF;AACA,MAAM,IAAI;AAAA;AAAA,EAER,YAAYC,WAAU;AACpB,SAAK,WAAWA;AAChB,SAAK,UAAU;AAIf,SAAK,aAAa;AAIlB,SAAK,OAAO;AAIZ,SAAK,MAAM;AACX,SAAK,MAAM;AAIX,SAAK,KAAK;AAIV,SAAK,WAAW;AAAA,EAIlB;AAAA,EACA,MAAM,WAAW;AACf,QAAI,CAAC,aAAa,CAAC,eAAe,cAAc,KAAK,UAAU;AAC7D;AAAA,IACF;AACA,QAAI,OAAO,KAAK;AAChB,QAAI,SAAS,UAAU,KAAK,QAAQ,WAAW;AAC7C,aAAO,KAAK,aAAa,IAAI,KAAK,WAAW,IAAI;AACjD,UAAI,CAAC,UAAU,MAAM;AACnB,kBAAU,OAAO,UAAU,WAAW;AAAA,MACxC,OAAO;AACL,aAAK,UAAU,UAAU;AACzB,kBAAU,SAAS,UAAU;AAC7B,kBAAU,WAAW;AAAA,MACvB;AACA,aAAO,IAAI;AAAA,IACb,WAAW,KAAK,YAAY,IAAI;AAC9B,WAAK,UAAU,KAAK;AACpB,UAAI,KAAK,SAAS;AAChB,cAAM,OAAO,KAAK;AAClB,aAAK,UAAU,KAAK;AACpB,YAAI,KAAK,SAAS;AAChB,eAAK,QAAQ,UAAU;AAAA,QACzB;AACA,aAAK,UAAU,UAAU;AACzB,aAAK,UAAU;AACf,kBAAU,SAAS,UAAU;AAC7B,kBAAU,WAAW;AACrB,YAAI,UAAU,SAAS,MAAM;AAC3B,oBAAU,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAWA,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,WAAW;AACjB,SAAK;AACL;AACA,SAAK,OAAO,SAAS;AAAA,EACvB;AAAA,EACA,OAAO,WAAW;AAChB,eAAA;AACA,QAAI;AACF,UAAI,MAA2C;AAc/C,eAAS,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,SAAS;AACpD,YAAI,KAAK,IAAI,UAAU;AACrB;AACA,eAAK,IAAI,IAAI,OAAA;AAAA,QACf;AAAA,MACF;AAAA,IACF,UAAA;AACE,eAAA;AAAA,IACF;AAAA,EACF;AACF;AACA,SAAS,OAAO,MAAM;AACpB,OAAK,IAAI;AACT,MAAI,KAAK,IAAI,QAAQ,GAAG;AACtB,UAAMA,YAAW,KAAK,IAAI;AAC1B,QAAIA,aAAY,CAAC,KAAK,IAAI,MAAM;AAC9BA,gBAAS,SAAS,IAAI;AACtB,eAASD,KAAIC,UAAS,MAAMD,IAAGA,KAAIA,GAAE,SAAS;AAC5C,eAAOA,EAAC;AAAA,MACV;AAAA,IACF;AACA,UAAM,cAAc,KAAK,IAAI;AAC7B,QAAI,gBAAgB,MAAM;AACxB,WAAK,UAAU;AACf,UAAI,yBAAyB,UAAU;AAAA,IACzC;AAIA,SAAK,IAAI,OAAO;AAAA,EAClB;AACF;AACA,MAAM,gCAAgC,QAAA;AACtC,MAAM,cAA8B;AAAA,EAC6B;AACjE;AACA,MAAM,sBAAsC;AAAA,EACuB;AACnE;AACA,MAAM,oBAAoC;AAAA,EACsB;AAChE;AACA,SAAS,MAAM,QAAQ,MAAM,KAAK;AAChC,MAAI,eAAe,WAAW;AAC5B,QAAI,UAAU,UAAU,IAAI,MAAM;AAClC,QAAI,CAAC,SAAS;AACZ,gBAAU,IAAI,QAAQ,UAA0B,oBAAI,KAAK;AAAA,IAC3D;AACA,QAAI,MAAM,QAAQ,IAAI,GAAG;AACzB,QAAI,CAAC,KAAK;AACR,cAAQ,IAAI,KAAK,MAAM,IAAI,KAAK;AAChC,UAAI,MAAM;AACV,UAAI,MAAM;AAAA,IACZ;AAOO;AACL,UAAI,MAAA;AAAA,IACN;AAAA,EACF;AACF;AACA,SAAS,QAAQ,QAAQ,MAAM,KAAK,UAAU,UAAU,WAAW;AACjE,QAAM,UAAU,UAAU,IAAI,MAAM;AACpC,MAAI,CAAC,SAAS;AACZ;AACA;AAAA,EACF;AACA,QAAM,MAAM,CAAC,QAAQ;AACnB,QAAI,KAAK;AAUA;AACL,YAAI,QAAA;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACA,aAAA;AACA,MAAI,SAAS,SAAS;AACpB,YAAQ,QAAQ,GAAG;AAAA,EACrB,OAAO;AACL,UAAM,gBAAgB,QAAQ,MAAM;AACpC,UAAM,eAAe,iBAAiB,aAAa,GAAG;AACtD,QAAI,iBAAiB,QAAQ,UAAU;AACrC,YAAM,YAAY,OAAO,QAAQ;AACjC,cAAQ,QAAQ,CAAC,KAAK,SAAS;AAC7B,YAAI,SAAS,YAAY,SAAS,qBAAqB,CAAC,SAAS,IAAI,KAAK,QAAQ,WAAW;AAC3F,cAAI,GAAG;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,UAAI,QAAQ,UAAU,QAAQ,IAAI,MAAM,GAAG;AACzC,YAAI,QAAQ,IAAI,GAAG,CAAC;AAAA,MACtB;AACA,UAAI,cAAc;AAChB,YAAI,QAAQ,IAAI,iBAAiB,CAAC;AAAA,MACpC;AACA,cAAQ,MAAA;AAAA,QACN,KAAK;AACH,cAAI,CAAC,eAAe;AAClB,gBAAI,QAAQ,IAAI,WAAW,CAAC;AAC5B,gBAAI,MAAM,MAAM,GAAG;AACjB,kBAAI,QAAQ,IAAI,mBAAmB,CAAC;AAAA,YACtC;AAAA,UACF,WAAW,cAAc;AACvB,gBAAI,QAAQ,IAAI,QAAQ,CAAC;AAAA,UAC3B;AACA;AAAA,QACF,KAAK;AACH,cAAI,CAAC,eAAe;AAClB,gBAAI,QAAQ,IAAI,WAAW,CAAC;AAC5B,gBAAI,MAAM,MAAM,GAAG;AACjB,kBAAI,QAAQ,IAAI,mBAAmB,CAAC;AAAA,YACtC;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,cAAI,MAAM,MAAM,GAAG;AACjB,gBAAI,QAAQ,IAAI,WAAW,CAAC;AAAA,UAC9B;AACA;AAAA,MAAA;AAAA,IAEN;AAAA,EACF;AACA,WAAA;AACF;AAMA,SAAS,kBAAkB,OAAO;AAChC,QAAM,MAAM,MAAM,KAAK;AACvB,MAAI,QAAQ,MAAO,QAAO;AAC1B,QAAM,KAAK,WAAW,iBAAiB;AACvC,SAAO,UAAU,KAAK,IAAI,MAAM,IAAI,IAAI,UAAU;AACpD;AACA,SAAS,iBAAiB,KAAK;AAC7B,QAAM,MAAM,MAAM,GAAG,GAAG,WAAW,iBAAiB;AACpD,SAAO;AACT;AACA,SAAS,UAAU,QAAQ,MAAM;AAC/B,MAAI,WAAW,MAAM,GAAG;AACtB,WAAO,WAAW,MAAM,IAAI,WAAW,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI;AAAA,EAC5E;AACA,SAAO,WAAW,IAAI;AACxB;AACA,MAAM,wBAAwB;AAAA,EAC5B,WAAW;AAAA,EACX,CAAC,OAAO,QAAQ,IAAI;AAClB,WAAO,SAAS,MAAM,OAAO,UAAU,CAAC,SAAS,UAAU,MAAM,IAAI,CAAC;AAAA,EACxE;AAAA,EACA,UAAU,MAAM;AACd,WAAO,kBAAkB,IAAI,EAAE;AAAA,MAC7B,GAAG,KAAK,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC;AAAA,IAAA;AAAA,EAE5D;AAAA,EACA,UAAU;AACR,WAAO,SAAS,MAAM,WAAW,CAAC,UAAU;AAC1C,YAAM,CAAC,IAAI,UAAU,MAAM,MAAM,CAAC,CAAC;AACnC,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EACA,MAAM,IAAI,SAAS;AACjB,WAAO,MAAM,MAAM,SAAS,IAAI,SAAS,QAAQ,SAAS;AAAA,EAC5D;AAAA,EACA,OAAO,IAAI,SAAS;AAClB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACF,OAAMA,GAAE,IAAI,CAAC,SAAS,UAAU,MAAM,IAAI,CAAC;AAAA,MAC5C;AAAA,IAAA;AAAA,EAEJ;AAAA,EACA,KAAK,IAAI,SAAS;AAChB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,SAAS,UAAU,MAAM,IAAI;AAAA,MAC9B;AAAA,IAAA;AAAA,EAEJ;AAAA,EACA,UAAU,IAAI,SAAS;AACrB,WAAO,MAAM,MAAM,aAAa,IAAI,SAAS,QAAQ,SAAS;AAAA,EAChE;AAAA,EACA,SAAS,IAAI,SAAS;AACpB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,SAAS,UAAU,MAAM,IAAI;AAAA,MAC9B;AAAA,IAAA;AAAA,EAEJ;AAAA,EACA,cAAc,IAAI,SAAS;AACzB,WAAO,MAAM,MAAM,iBAAiB,IAAI,SAAS,QAAQ,SAAS;AAAA,EACpE;AAAA;AAAA,EAEA,QAAQ,IAAI,SAAS;AACnB,WAAO,MAAM,MAAM,WAAW,IAAI,SAAS,QAAQ,SAAS;AAAA,EAC9D;AAAA,EACA,YAAY,MAAM;AAChB,WAAO,YAAY,MAAM,YAAY,IAAI;AAAA,EAC3C;AAAA,EACA,WAAW,MAAM;AACf,WAAO,YAAY,MAAM,WAAW,IAAI;AAAA,EAC1C;AAAA,EACA,KAAK,WAAW;AACd,WAAO,kBAAkB,IAAI,EAAE,KAAK,SAAS;AAAA,EAC/C;AAAA;AAAA,EAEA,eAAe,MAAM;AACnB,WAAO,YAAY,MAAM,eAAe,IAAI;AAAA,EAC9C;AAAA,EACA,IAAI,IAAI,SAAS;AACf,WAAO,MAAM,MAAM,OAAO,IAAI,SAAS,QAAQ,SAAS;AAAA,EAC1D;AAAA,EACA,MAAM;AACJ,WAAO,WAAW,MAAM,KAAK;AAAA,EAC/B;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,WAAW,MAAM,QAAQ,IAAI;AAAA,EACtC;AAAA,EACA,OAAO,OAAO,MAAM;AAClB,WAAO,OAAO,MAAM,UAAU,IAAI,IAAI;AAAA,EACxC;AAAA,EACA,YAAY,OAAO,MAAM;AACvB,WAAO,OAAO,MAAM,eAAe,IAAI,IAAI;AAAA,EAC7C;AAAA,EACA,QAAQ;AACN,WAAO,WAAW,MAAM,OAAO;AAAA,EACjC;AAAA;AAAA,EAEA,KAAK,IAAI,SAAS;AAChB,WAAO,MAAM,MAAM,QAAQ,IAAI,SAAS,QAAQ,SAAS;AAAA,EAC3D;AAAA,EACA,UAAU,MAAM;AACd,WAAO,WAAW,MAAM,UAAU,IAAI;AAAA,EACxC;AAAA,EACA,aAAa;AACX,WAAO,kBAAkB,IAAI,EAAE,WAAA;AAAA,EACjC;AAAA,EACA,SAAS,UAAU;AACjB,WAAO,kBAAkB,IAAI,EAAE,SAAS,QAAQ;AAAA,EAClD;AAAA,EACA,aAAa,MAAM;AACjB,WAAO,kBAAkB,IAAI,EAAE,UAAU,GAAG,IAAI;AAAA,EAClD;AAAA,EACA,WAAW,MAAM;AACf,WAAO,WAAW,MAAM,WAAW,IAAI;AAAA,EACzC;AAAA,EACA,SAAS;AACP,WAAO,SAAS,MAAM,UAAU,CAAC,SAAS,UAAU,MAAM,IAAI,CAAC;AAAA,EACjE;AACF;AACA,SAAS,SAASI,OAAM,QAAQ,WAAW;AACzC,QAAM,MAAM,iBAAiBA,KAAI;AACjC,QAAM,OAAO,IAAI,MAAM,EAAA;AACvB,MAAI,QAAQA,SAAQ,CAAC,UAAUA,KAAI,GAAG;AACpC,SAAK,QAAQ,KAAK;AAClB,SAAK,OAAO,MAAM;AAChB,YAAM,SAAS,KAAK,MAAA;AACpB,UAAI,CAAC,OAAO,MAAM;AAChB,eAAO,QAAQ,UAAU,OAAO,KAAK;AAAA,MACvC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,MAAM,aAAa,MAAM;AACzB,SAAS,MAAMA,OAAM,QAAQ,IAAI,SAAS,cAAc,MAAM;AAC5D,QAAM,MAAM,iBAAiBA,KAAI;AACjC,QAAM,YAAY,QAAQA,SAAQ,CAAC,UAAUA,KAAI;AACjD,QAAM,WAAW,IAAI,MAAM;AAC3B,MAAI,aAAa,WAAW,MAAM,GAAG;AACnC,UAAM,UAAU,SAAS,MAAMA,OAAM,IAAI;AACzC,WAAO,YAAY,WAAW,OAAO,IAAI;AAAA,EAC3C;AACA,MAAI,YAAY;AAChB,MAAI,QAAQA,OAAM;AAChB,QAAI,WAAW;AACb,kBAAY,SAAS,MAAM,OAAO;AAChC,eAAO,GAAG,KAAK,MAAM,UAAUA,OAAM,IAAI,GAAG,OAAOA,KAAI;AAAA,MACzD;AAAA,IACF,WAAW,GAAG,SAAS,GAAG;AACxB,kBAAY,SAAS,MAAM,OAAO;AAChC,eAAO,GAAG,KAAK,MAAM,MAAM,OAAOA,KAAI;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS,SAAS,KAAK,KAAK,WAAW,OAAO;AACpD,SAAO,aAAa,eAAe,aAAa,MAAM,IAAI;AAC5D;AACA,SAAS,OAAOA,OAAM,QAAQ,IAAI,MAAM;AACtC,QAAM,MAAM,iBAAiBA,KAAI;AACjC,MAAI,YAAY;AAChB,MAAI,QAAQA,OAAM;AAChB,QAAI,CAAC,UAAUA,KAAI,GAAG;AACpB,kBAAY,SAAS,KAAK,MAAM,OAAO;AACrC,eAAO,GAAG,KAAK,MAAM,KAAK,UAAUA,OAAM,IAAI,GAAG,OAAOA,KAAI;AAAA,MAC9D;AAAA,IACF,WAAW,GAAG,SAAS,GAAG;AACxB,kBAAY,SAAS,KAAK,MAAM,OAAO;AACrC,eAAO,GAAG,KAAK,MAAM,KAAK,MAAM,OAAOA,KAAI;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,IAAI,MAAM,EAAE,WAAW,GAAG,IAAI;AACvC;AACA,SAAS,YAAYA,OAAM,QAAQ,MAAM;AACvC,QAAM,MAAM,MAAMA,KAAI;AACtB,QAAM,KAAK,WAAW,iBAAiB;AACvC,QAAM,MAAM,IAAI,MAAM,EAAE,GAAG,IAAI;AAC/B,OAAK,QAAQ,MAAM,QAAQ,UAAU,QAAQ,KAAK,CAAC,CAAC,GAAG;AACrD,SAAK,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;AACvB,WAAO,IAAI,MAAM,EAAE,GAAG,IAAI;AAAA,EAC5B;AACA,SAAO;AACT;AACA,SAAS,WAAWA,OAAM,QAAQ,OAAO,CAAA,GAAI;AAC3C,gBAAA;AACA,aAAA;AACA,QAAM,MAAM,MAAMA,KAAI,EAAE,MAAM,EAAE,MAAMA,OAAM,IAAI;AAChD,WAAA;AACA,gBAAA;AACA,SAAO;AACT;AAEA,MAAM,6CAA6C,6BAA6B;AAChF,MAAM,iBAAiB,IAAI;AAAA,EACT,uBAAO,oBAAoB,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ,eAAe,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ,OAAO,GAAG,CAAC,EAAE,OAAO,QAAQ;AACvJ;AACA,SAAS,eAAe,KAAK;AAC3B,MAAI,CAAC,SAAS,GAAG,EAAG,OAAM,OAAO,GAAG;AACpC,QAAM,MAAM,MAAM,IAAI;AACtB,QAAM,KAAK,OAAO,GAAG;AACrB,SAAO,IAAI,eAAe,GAAG;AAC/B;AACA,MAAM,oBAAoB;AAAA,EACxB,YAAY,cAAc,OAAO,aAAa,OAAO;AACnD,SAAK,cAAc;AACnB,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,QAAQ,KAAK,UAAU;AACzB,QAAI,QAAQ,WAAY,QAAO,OAAO,UAAU;AAChD,UAAM,cAAc,KAAK,aAAa,aAAa,KAAK;AACxD,QAAI,QAAQ,kBAAkB;AAC5B,aAAO,CAAC;AAAA,IACV,WAAW,QAAQ,kBAAkB;AACnC,aAAO;AAAA,IACT,WAAW,QAAQ,iBAAiB;AAClC,aAAO;AAAA,IACT,WAAW,QAAQ,WAAW;AAC5B,UAAI,cAAc,cAAc,aAAa,qBAAqB,cAAc,aAAa,qBAAqB,aAAa,IAAI,MAAM;AAAA;AAAA,MAEzI,OAAO,eAAe,MAAM,MAAM,OAAO,eAAe,QAAQ,GAAG;AACjE,eAAO;AAAA,MACT;AACA;AAAA,IACF;AACA,UAAM,gBAAgB,QAAQ,MAAM;AACpC,QAAI,CAAC,aAAa;AAChB,UAAI;AACJ,UAAI,kBAAkB,KAAK,sBAAsB,GAAG,IAAI;AACtD,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,kBAAkB;AAC5B,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,MAAM,QAAQ;AAAA,MAClB;AAAA,MACA;AAAA;AAAA;AAAA;AAAA,MAIA,MAAM,MAAM,IAAI,SAAS;AAAA,IAAA;AAE3B,QAAI,SAAS,GAAG,IAAI,eAAe,IAAI,GAAG,IAAI,mBAAmB,GAAG,GAAG;AACrE,aAAO;AAAA,IACT;AACA,QAAI,CAAC,aAAa;AAChB,YAAM,QAAQ,OAAO,GAAG;AAAA,IAC1B;AACA,QAAI,YAAY;AACd,aAAO;AAAA,IACT;AACA,QAAI,MAAM,GAAG,GAAG;AACd,YAAM,QAAQ,iBAAiB,aAAa,GAAG,IAAI,MAAM,IAAI;AAC7D,aAAO,eAAe,SAAS,KAAK,IAAI,SAAS,KAAK,IAAI;AAAA,IAC5D;AACA,QAAI,SAAS,GAAG,GAAG;AACjB,aAAO,cAAc,SAAS,GAAG,IAAI,SAAS,GAAG;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AACF;AACA,MAAM,+BAA+B,oBAAoB;AAAA,EACvD,YAAY,aAAa,OAAO;AAC9B,UAAM,OAAO,UAAU;AAAA,EACzB;AAAA,EACA,IAAI,QAAQ,KAAK,OAAO,UAAU;AAChC,QAAI,WAAW,OAAO,GAAG;AACzB,UAAM,wBAAwB,QAAQ,MAAM,KAAK,aAAa,GAAG;AACjE,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,qBAAqB,WAAW,QAAQ;AAC9C,UAAI,CAAC,UAAU,KAAK,KAAK,CAAC,WAAW,KAAK,GAAG;AAC3C,mBAAW,MAAM,QAAQ;AACzB,gBAAQ,MAAM,KAAK;AAAA,MACrB;AACA,UAAI,CAAC,yBAAyB,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AAC9D,YAAI,oBAAoB;AAOtB,iBAAO;AAAA,QACT,OAAO;AACL,mBAAS,QAAQ;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,UAAM,SAAS,wBAAwB,OAAO,GAAG,IAAI,OAAO,SAAS,OAAO,QAAQ,GAAG;AACvF,UAAM,SAAS,QAAQ;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,MAAM,IAAI,SAAS;AAAA,IAAA;AAE3B,QAAI,WAAW,MAAM,QAAQ,GAAG;AAC9B,UAAI,CAAC,QAAQ;AACX,gBAAQ,QAAQ,OAAO,KAAK,KAAK;AAAA,MACnC,WAAW,WAAW,OAAO,QAAQ,GAAG;AACtC,gBAAQ,QAAQ,OAAO,KAAK,KAAe;AAAA,MAC7C;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,eAAe,QAAQ,KAAK;AAC1B,UAAM,SAAS,OAAO,QAAQ,GAAG;AAChB,WAAO,GAAG;AAC3B,UAAM,SAAS,QAAQ,eAAe,QAAQ,GAAG;AACjD,QAAI,UAAU,QAAQ;AACpB,cAAQ,QAAQ,UAAU,KAAK,MAAgB;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,UAAM,SAAS,QAAQ,IAAI,QAAQ,GAAG;AACtC,QAAI,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,IAAI,GAAG,GAAG;AAC9C,YAAM,QAAQ,OAAO,GAAG;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,QAAQ;AACd;AAAA,MACE;AAAA,MACA;AAAA,MACA,QAAQ,MAAM,IAAI,WAAW;AAAA,IAAA;AAE/B,WAAO,QAAQ,QAAQ,MAAM;AAAA,EAC/B;AACF;AACA,MAAM,gCAAgC,oBAAoB;AAAA,EACxD,YAAY,aAAa,OAAO;AAC9B,UAAM,MAAM,UAAU;AAAA,EACxB;AAAA,EACA,IAAI,QAAQ,KAAK;AAOf,WAAO;AAAA,EACT;AAAA,EACA,eAAe,QAAQ,KAAK;AAO1B,WAAO;AAAA,EACT;AACF;AACA,MAAM,sCAAsC,uBAAA;AAC5C,MAAM,uCAAuC,wBAAA;AAC7C,MAAM,0BAA0C,oBAAI,uBAAuB,IAAI;AAC/E,MAAM,0BAA0C,oBAAI,wBAAwB,IAAI;AAEhF,MAAM,YAAY,CAAC,UAAU;AAC7B,MAAM,WAAW,CAACJ,OAAM,QAAQ,eAAeA,EAAC;AAChD,SAAS,qBAAqB,QAAQ,aAAa,YAAY;AAC7D,SAAO,YAAY,MAAM;AACvB,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,YAAY,MAAM,MAAM;AAC9B,UAAM,cAAc,MAAM,SAAS;AACnC,UAAM,SAAS,WAAW,aAAa,WAAW,OAAO,YAAY;AACrE,UAAM,YAAY,WAAW,UAAU;AACvC,UAAM,gBAAgB,OAAO,MAAM,EAAE,GAAG,IAAI;AAC5C,UAAM,OAAO,aAAa,YAAY,cAAc,aAAa;AACjE,KAAC,eAAe;AAAA,MACd;AAAA,MACA;AAAA,MACA,YAAY,sBAAsB;AAAA,IAAA;AAEpC,WAAO;AAAA;AAAA,MAEL,OAAO;AACL,cAAM,EAAE,OAAO,SAAS,cAAc,KAAA;AACtC,eAAO,OAAO,EAAE,OAAO,SAAS;AAAA,UAC9B,OAAO,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK;AAAA,UAC7D;AAAA,QAAA;AAAA,MAEJ;AAAA;AAAA,MAEA,CAAC,OAAO,QAAQ,IAAI;AAClB,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EAEJ;AACF;AACA,SAAS,qBAAqB,MAAM;AAClC,SAAO,YAAY,MAAM;AAQvB,WAAO,SAAS,WAAW,QAAQ,SAAS,UAAU,SAAS;AAAA,EACjE;AACF;AACA,SAAS,uBAAuBK,WAAU,SAAS;AACjD,QAAM,mBAAmB;AAAA,IACvB,IAAI,KAAK;AACP,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,YAAY,MAAM,MAAM;AAC9B,YAAM,SAAS,MAAM,GAAG;AACxB,UAAI,CAACA,WAAU;AACb,YAAI,WAAW,KAAK,MAAM,GAAG;AAC3B,gBAAM,WAAW,OAAO,GAAG;AAAA,QAC7B;AACA,cAAM,WAAW,OAAO,MAAM;AAAA,MAChC;AACA,YAAM,EAAE,IAAA,IAAQ,SAAS,SAAS;AAClC,YAAM,OAAO,UAAU,YAAYA,YAAW,aAAa;AAC3D,UAAI,IAAI,KAAK,WAAW,GAAG,GAAG;AAC5B,eAAO,KAAK,OAAO,IAAI,GAAG,CAAC;AAAA,MAC7B,WAAW,IAAI,KAAK,WAAW,MAAM,GAAG;AACtC,eAAO,KAAK,OAAO,IAAI,MAAM,CAAC;AAAA,MAChC,WAAW,WAAW,WAAW;AAC/B,eAAO,IAAI,GAAG;AAAA,MAChB;AAAA,IACF;AAAA,IACA,IAAI,OAAO;AACT,YAAM,SAAS,KAAK,SAAS;AAC7B,OAACA,aAAY,MAAM,MAAM,MAAM,GAAG,WAAW,WAAW;AACxD,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,IAAI,KAAK;AACP,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,YAAY,MAAM,MAAM;AAC9B,YAAM,SAAS,MAAM,GAAG;AACxB,UAAI,CAACA,WAAU;AACb,YAAI,WAAW,KAAK,MAAM,GAAG;AAC3B,gBAAM,WAAW,OAAO,GAAG;AAAA,QAC7B;AACA,cAAM,WAAW,OAAO,MAAM;AAAA,MAChC;AACA,aAAO,QAAQ,SAAS,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,KAAK,OAAO,IAAI,MAAM;AAAA,IAChF;AAAA,IACA,QAAQ,UAAU,SAAS;AACzB,YAAM,WAAW;AACjB,YAAM,SAAS,SAAS,SAAS;AACjC,YAAM,YAAY,MAAM,MAAM;AAC9B,YAAM,OAAO,UAAU,YAAYA,YAAW,aAAa;AAC3D,OAACA,aAAY,MAAM,WAAW,WAAW,WAAW;AACpD,aAAO,OAAO,QAAQ,CAAC,OAAO,QAAQ;AACpC,eAAO,SAAS,KAAK,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,QAAQ;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,EAAA;AAEF;AAAA,IACE;AAAA,IACAA,YAAW;AAAA,MACT,KAAK,qBAAqB,KAAK;AAAA,MAC/B,KAAK,qBAAqB,KAAK;AAAA,MAC/B,QAAQ,qBAAqB,QAAQ;AAAA,MACrC,OAAO,qBAAqB,OAAO;AAAA,IAAA,IACjC;AAAA,MACF,IAAI,OAAO;AACT,YAAI,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK,CAAC,WAAW,KAAK,GAAG;AACvD,kBAAQ,MAAM,KAAK;AAAA,QACrB;AACA,cAAM,SAAS,MAAM,IAAI;AACzB,cAAM,QAAQ,SAAS,MAAM;AAC7B,cAAM,SAAS,MAAM,IAAI,KAAK,QAAQ,KAAK;AAC3C,YAAI,CAAC,QAAQ;AACX,iBAAO,IAAI,KAAK;AAChB,kBAAQ,QAAQ,OAAO,OAAO,KAAK;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AAAA,MACA,IAAI,KAAK,OAAO;AACd,YAAI,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK,CAAC,WAAW,KAAK,GAAG;AACvD,kBAAQ,MAAM,KAAK;AAAA,QACrB;AACA,cAAM,SAAS,MAAM,IAAI;AACzB,cAAM,EAAE,KAAK,QAAQ,SAAS,MAAM;AACpC,YAAI,SAAS,IAAI,KAAK,QAAQ,GAAG;AACjC,YAAI,CAAC,QAAQ;AACX,gBAAM,MAAM,GAAG;AACf,mBAAS,IAAI,KAAK,QAAQ,GAAG;AAAA,QAC/B;AAGA,cAAM,WAAW,IAAI,KAAK,QAAQ,GAAG;AACrC,eAAO,IAAI,KAAK,KAAK;AACrB,YAAI,CAAC,QAAQ;AACX,kBAAQ,QAAQ,OAAO,KAAK,KAAK;AAAA,QACnC,WAAW,WAAW,OAAO,QAAQ,GAAG;AACtC,kBAAQ,QAAQ,OAAO,KAAK,KAAe;AAAA,QAC7C;AACA,eAAO;AAAA,MACT;AAAA,MACA,OAAO,KAAK;AACV,cAAM,SAAS,MAAM,IAAI;AACzB,cAAM,EAAE,KAAK,QAAQ,SAAS,MAAM;AACpC,YAAI,SAAS,IAAI,KAAK,QAAQ,GAAG;AACjC,YAAI,CAAC,QAAQ;AACX,gBAAM,MAAM,GAAG;AACf,mBAAS,IAAI,KAAK,QAAQ,GAAG;AAAA,QAC/B;AAGiB,cAAM,IAAI,KAAK,QAAQ,GAAG,IAAI;AAC/C,cAAM,SAAS,OAAO,OAAO,GAAG;AAChC,YAAI,QAAQ;AACV,kBAAQ,QAAQ,UAAU,KAAK,MAAgB;AAAA,QACjD;AACA,eAAO;AAAA,MACT;AAAA,MACA,QAAQ;AACN,cAAM,SAAS,MAAM,IAAI;AACzB,cAAM,WAAW,OAAO,SAAS;AAEjC,cAAM,SAAS,OAAO,MAAA;AACtB,YAAI,UAAU;AACZ;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAEF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAEF,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EAAA;AAET,kBAAgB,QAAQ,CAAC,WAAW;AAClC,qBAAiB,MAAM,IAAI,qBAAqB,QAAQA,WAAU,OAAO;AAAA,EAC3E,CAAC;AACD,SAAO;AACT;AACA,SAAS,4BAA4B,aAAa,SAAS;AACzD,QAAM,mBAAmB,uBAAuB,aAAa,OAAO;AACpE,SAAO,CAAC,QAAQ,KAAK,aAAa;AAChC,QAAI,QAAQ,kBAAkB;AAC5B,aAAO,CAAC;AAAA,IACV,WAAW,QAAQ,kBAAkB;AACnC,aAAO;AAAA,IACT,WAAW,QAAQ,WAAW;AAC5B,aAAO;AAAA,IACT;AACA,WAAO,QAAQ;AAAA,MACb,OAAO,kBAAkB,GAAG,KAAK,OAAO,SAAS,mBAAmB;AAAA,MACpE;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF;AACA,MAAM,4BAA4B;AAAA,EAChC,KAAqB,4CAA4B,OAAO,KAAK;AAC/D;AACA,MAAM,4BAA4B;AAAA,EAChC,KAAqB,4CAA4B,OAAO,IAAI;AAC9D;AACA,MAAM,6BAA6B;AAAA,EACjC,KAAqB,4CAA4B,MAAM,KAAK;AAC9D;AACA,MAAM,oCAAoC;AAAA,EACxC,KAAqB,4CAA4B,MAAM,IAAI;AAC7D;AAWA,MAAM,kCAAkC,QAAA;AACxC,MAAM,yCAAyC,QAAA;AAC/C,MAAM,kCAAkC,QAAA;AACxC,MAAM,yCAAyC,QAAA;AAC/C,SAAS,cAAc,SAAS;AAC9B,UAAQ,SAAA;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AACA,SAAS,cAAc,OAAO;AAC5B,SAAO,MAAM,UAAU,KAAK,CAAC,OAAO,aAAa,KAAK,IAAI,IAAkB,cAAc,UAAU,KAAK,CAAC;AAC5G;AACA,SAAS,SAAS,QAAQ;AACxB,MAAI,WAAW,MAAM,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,gBAAgB,QAAQ;AAC/B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,SAAS,QAAQ;AACxB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,gBAAgB,QAAQ;AAC/B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,qBAAqB,QAAQ,aAAa,cAAc,oBAAoB,UAAU;AAC7F,MAAI,CAAC,SAAS,MAAM,GAAG;AAQrB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,SAAS,KAAK,EAAE,eAAe,OAAO,gBAAgB,IAAI;AACnE,WAAO;AAAA,EACT;AACA,QAAM,aAAa,cAAc,MAAM;AACvC,MAAI,eAAe,GAAiB;AAClC,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,SAAS,IAAI,MAAM;AACzC,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,IAAI;AAAA,IAChB;AAAA,IACA,eAAe,IAAqB,qBAAqB;AAAA,EAAA;AAE3D,WAAS,IAAI,QAAQ,KAAK;AAC1B,SAAO;AACT;AACA,SAAS,WAAW,OAAO;AACzB,MAAI,WAAW,KAAK,GAAG;AACrB,WAAO,WAAW,MAAM,SAAS,CAAC;AAAA,EACpC;AACA,SAAO,CAAC,EAAE,SAAS,MAAM,gBAAgB;AAC3C;AACA,SAAS,WAAW,OAAO;AACzB,SAAO,CAAC,EAAE,SAAS,MAAM,gBAAgB;AAC3C;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,CAAC,EAAE,SAAS,MAAM,eAAe;AAC1C;AACA,SAAS,QAAQ,OAAO;AACtB,SAAO,QAAQ,CAAC,CAAC,MAAM,SAAS,IAAI;AACtC;AACA,SAAS,MAAM,UAAU;AACvB,QAAM,MAAM,YAAY,SAAS,SAAS;AAC1C,SAAO,MAAM,MAAM,GAAG,IAAI;AAC5B;AACA,SAAS,QAAQ,OAAO;AACtB,MAAI,CAAC,OAAO,OAAO,UAAU,KAAK,OAAO,aAAa,KAAK,GAAG;AAC5D,QAAI,OAAO,YAAY,IAAI;AAAA,EAC7B;AACA,SAAO;AACT;AACA,MAAM,aAAa,CAAC,UAAU,SAAS,KAAK,IAAI,SAAS,KAAK,IAAI;AAClE,MAAM,aAAa,CAAC,UAAU,SAAS,KAAK,IAAI,SAAS,KAAK,IAAI;AAElE,SAAS,MAAM,GAAG;AAChB,SAAO,IAAI,EAAE,WAAW,MAAM,OAAO;AACvC;AACA,SAAS,IAAI,OAAO;AAClB,SAAO,UAAU,OAAO,KAAK;AAC/B;AAIA,SAAS,UAAU,UAAU,SAAS;AACpC,MAAI,MAAM,QAAQ,GAAG;AACnB,WAAO;AAAA,EACT;AACA,SAAO,IAAI,QAAQ,UAAU,OAAO;AACtC;AACA,MAAM,QAAQ;AAAA,EACZ,YAAY,OAAO,YAAY;AAC7B,SAAK,MAAM,IAAI,IAAA;AACf,SAAK,WAAW,IAAI;AACpB,SAAK,eAAe,IAAI;AACxB,SAAK,YAAY,aAAa,QAAQ,MAAM,KAAK;AACjD,SAAK,SAAS,aAAa,QAAQ,WAAW,KAAK;AACnD,SAAK,eAAe,IAAI;AAAA,EAC1B;AAAA,EACA,IAAI,QAAQ;AAOH;AACL,WAAK,IAAI,MAAA;AAAA,IACX;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,UAAU;AAClB,UAAM,WAAW,KAAK;AACtB,UAAM,iBAAiB,KAAK,eAAe,KAAK,UAAU,QAAQ,KAAK,WAAW,QAAQ;AAC1F,eAAW,iBAAiB,WAAW,MAAM,QAAQ;AACrD,QAAI,WAAW,UAAU,QAAQ,GAAG;AAClC,WAAK,YAAY;AACjB,WAAK,SAAS,iBAAiB,WAAW,WAAW,QAAQ;AAStD;AACL,aAAK,IAAI,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAeA,SAAS,MAAM,MAAM;AACnB,SAAO,MAAM,IAAI,IAAI,KAAK,QAAQ;AACpC;AAIA,MAAM,wBAAwB;AAAA,EAC5B,KAAK,CAAC,QAAQ,KAAK,aAAa,QAAQ,YAAY,SAAS,MAAM,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC;AAAA,EACrG,KAAK,CAAC,QAAQ,KAAK,OAAO,aAAa;AACrC,UAAM,WAAW,OAAO,GAAG;AAC3B,QAAI,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AACpC,eAAS,QAAQ;AACjB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,QAAQ,IAAI,QAAQ,KAAK,OAAO,QAAQ;AAAA,IACjD;AAAA,EACF;AACF;AACA,SAAS,UAAU,gBAAgB;AACjC,SAAO,WAAW,cAAc,IAAI,iBAAiB,IAAI,MAAM,gBAAgB,qBAAqB;AACtG;AA8FA,MAAM,gBAAgB;AAAA,EACpB,YAAY,IAAI,QAAQ,OAAO;AAC7B,SAAK,KAAK;AACV,SAAK,SAAS;AAId,SAAK,SAAS;AAId,SAAK,MAAM,IAAI,IAAI,IAAI;AAIvB,SAAK,YAAY;AAMjB,SAAK,OAAO;AAIZ,SAAK,WAAW;AAIhB,SAAK,QAAQ;AAIb,SAAK,gBAAgB,gBAAgB;AAIrC,SAAK,OAAO;AAEZ,SAAK,SAAS;AACd,SAAK,gBAAgB,IAAI,CAAC;AAC1B,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACP,SAAK,SAAS;AACd,QAAI,EAAE,KAAK,QAAQ;AAAA,IACnB,cAAc,MAAM;AAClB,YAAM,MAAM,IAAI;AAChB,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,IAAI,QAAQ;AACV,UAAM,OAID,KAAK,IAAI,MAAA;AACd,oBAAgB,IAAI;AACpB,QAAI,MAAM;AACR,WAAK,UAAU,KAAK,IAAI;AAAA,IAC1B;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,UAAU;AAClB,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,QAAQ;AAAA,IACtB;AAAA,EAGF;AACF;AACA,SAASF,WAAS,iBAAiB,cAAc,QAAQ,OAAO;AAC9D,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW,eAAe,GAAG;AAC/B,aAAS;AAAA,EACX,OAAO;AACL,aAAS,gBAAgB;AACzB,aAAS,gBAAgB;AAAA,EAC3B;AACA,QAAM,OAAO,IAAI,gBAAgB,QAAQ,QAAQ,KAAK;AAKtD,SAAO;AACT;AA8BA,MAAM,wBAAwB,CAAA;AAC9B,MAAM,iCAAiC,QAAA;AACvC,IAAI,gBAAgB;AAIpB,SAAS,iBAAiB,WAAW,eAAe,OAAO,QAAQ,eAAe;AAChF,MAAI,OAAO;AACT,QAAI,WAAW,WAAW,IAAI,KAAK;AACnC,QAAI,CAAC,SAAU,YAAW,IAAI,OAAO,WAAW,EAAE;AAClD,aAAS,KAAK,SAAS;AAAA,EACzB;AAKF;AACA,SAASG,QAAM,QAAQ,IAAI,UAAU,WAAW;AAC9C,QAAM,EAAE,WAAW,MAAM,MAAM,WAAW,YAAY,SAAS;AAQ/D,QAAM,iBAAiB,CAAC,YAAY;AAClC,QAAI,KAAM,QAAO;AACjB,QAAI,UAAU,OAAO,KAAK,SAAS,SAAS,SAAS;AACnD,aAAO,SAAS,SAAS,CAAC;AAC5B,WAAO,SAAS,OAAO;AAAA,EACzB;AACA,MAAIC;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,eAAe;AACnB,MAAI,gBAAgB;AACpB,MAAI,MAAM,MAAM,GAAG;AACjB,aAAS,MAAM,OAAO;AACtB,mBAAe,UAAU,MAAM;AAAA,EACjC,WAAW,WAAW,MAAM,GAAG;AAC7B,aAAS,MAAM,eAAe,MAAM;AACpC,mBAAe;AAAA,EACjB,WAAW,QAAQ,MAAM,GAAG;AAC1B,oBAAgB;AAChB,mBAAe,OAAO,KAAK,CAACX,OAAM,WAAWA,EAAC,KAAK,UAAUA,EAAC,CAAC;AAC/D,aAAS,MAAM,OAAO,IAAI,CAACA,OAAM;AAC/B,UAAI,MAAMA,EAAC,GAAG;AACZ,eAAOA,GAAE;AAAA,MACX,WAAW,WAAWA,EAAC,GAAG;AACxB,eAAO,eAAeA,EAAC;AAAA,MACzB,WAAW,WAAWA,EAAC,GAAG;AACxB,eAAO,OAAO,KAAKA,IAAG,CAAC,IAAIA,GAAA;AAAA,MAC7B,MAAO;AAAA,IAGT,CAAC;AAAA,EACH,WAAW,WAAW,MAAM,GAAG;AAC7B,QAAI,IAAI;AACN,eAAS,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI;AAAA,IAC1C,OAAO;AACL,eAAS,MAAM;AACb,YAAI,SAAS;AACX,wBAAA;AACA,cAAI;AACF,oBAAA;AAAA,UACF,UAAA;AACE,0BAAA;AAAA,UACF;AAAA,QACF;AACA,cAAM,gBAAgB;AACtB,wBAAgBW;AAChB,YAAI;AACF,iBAAO,OAAO,KAAK,QAAQ,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,YAAY;AAAA,QACrE,UAAA;AACE,0BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,aAAS;AAAA,EAEX;AACA,MAAI,MAAM,MAAM;AACd,UAAM,aAAa;AACnB,UAAM,QAAQ,SAAS,OAAO,WAAW;AACzC,aAAS,MAAM,SAAS,WAAA,GAAc,KAAK;AAAA,EAC7C;AACA,QAAM,QAAQ,gBAAA;AACd,QAAM,cAAc,MAAM;AACxBA,YAAO,KAAA;AACP,QAAI,SAAS,MAAM,QAAQ;AACzB,aAAO,MAAM,SAASA,OAAM;AAAA,IAC9B;AAAA,EACF;AACA,MAAI,QAAQ,IAAI;AACd,UAAM,MAAM;AACZ,SAAK,IAAI,SAAS;AAChB,UAAI,GAAG,IAAI;AACX,kBAAA;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,gBAAgB,IAAI,MAAM,OAAO,MAAM,EAAE,KAAK,qBAAqB,IAAI;AACtF,QAAM,MAAM,CAAC,sBAAsB;AACjC,QAAI,EAAEA,QAAO,QAAQ,MAAM,CAACA,QAAO,SAAS,CAAC,mBAAmB;AAC9D;AAAA,IACF;AACA,QAAI,IAAI;AACN,YAAM,WAAWA,QAAO,IAAA;AACxB,UAAI,QAAQ,iBAAiB,gBAAgB,SAAS,KAAK,CAACP,IAAGP,OAAM,WAAWO,IAAG,SAASP,EAAC,CAAC,CAAC,IAAI,WAAW,UAAU,QAAQ,IAAI;AAClI,YAAI,SAAS;AACX,kBAAA;AAAA,QACF;AACA,cAAM,iBAAiB;AACvB,wBAAgBc;AAChB,YAAI;AACF,gBAAM,OAAO;AAAA,YACX;AAAA;AAAA,YAEA,aAAa,wBAAwB,SAAS,iBAAiB,SAAS,CAAC,MAAM,wBAAwB,CAAA,IAAK;AAAA,YAC5G;AAAA,UAAA;AAEF,qBAAW;AACX,iBAAO,KAAK,IAAI,GAAG,IAAI;AAAA;AAAA,YAErB,GAAG,GAAG,IAAI;AAAA;AAAA,QAEd,UAAA;AACE,0BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF,OAAO;AACLA,cAAO,IAAA;AAAA,IACT;AAAA,EACF;AACA,MAAI,YAAY;AACd,eAAW,GAAG;AAAA,EAChB;AACAA,YAAS,IAAI,eAAe,MAAM;AAClCA,UAAO,YAAY,YAAY,MAAM,UAAU,KAAK,KAAK,IAAI;AAC7D,iBAAe,CAAC,OAAO,iBAAiB,IAAI,OAAOA,OAAM;AACzD,YAAUA,QAAO,SAAS,MAAM;AAC9B,UAAM,WAAW,WAAW,IAAIA,OAAM;AACtC,QAAI,UAAU;AACZ,UAAI,MAAM;AACR,aAAK,UAAU,CAAC;AAAA,MAClB,OAAO;AACL,mBAAW,YAAY,SAAU,UAAA;AAAA,MACnC;AACA,iBAAW,OAAOA,OAAM;AAAA,IAC1B;AAAA,EACF;AAKA,MAAI,IAAI;AACN,QAAI,WAAW;AACb,UAAI,IAAI;AAAA,IACV,OAAO;AACL,iBAAWA,QAAO,IAAA;AAAA,IACpB;AAAA,EACF,WAAW,WAAW;AACpB,cAAU,IAAI,KAAK,MAAM,IAAI,GAAG,IAAI;AAAA,EACtC,OAAO;AACLA,YAAO,IAAA;AAAA,EACT;AACA,cAAY,QAAQA,QAAO,MAAM,KAAKA,OAAM;AAC5C,cAAY,SAASA,QAAO,OAAO,KAAKA,OAAM;AAC9C,cAAY,OAAO;AACnB,SAAO;AACT;AACA,SAAS,SAAS,OAAO,QAAQ,UAAU,MAAM;AAC/C,MAAI,SAAS,KAAK,CAAC,SAAS,KAAK,KAAK,MAAM,UAAU,GAAG;AACvD,WAAO;AAAA,EACT;AACA,SAAO,4BAA4B,IAAA;AACnC,OAAK,KAAK,IAAI,KAAK,KAAK,MAAM,OAAO;AACnC,WAAO;AAAA,EACT;AACA,OAAK,IAAI,OAAO,KAAK;AACrB;AACA,MAAI,MAAM,KAAK,GAAG;AAChB,aAAS,MAAM,OAAO,OAAO,IAAI;AAAA,EACnC,WAAW,QAAQ,KAAK,GAAG;AACzB,aAASd,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,eAAS,MAAMA,EAAC,GAAG,OAAO,IAAI;AAAA,IAChC;AAAA,EACF,WAAW,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG;AACvC,UAAM,QAAQ,CAACO,OAAM;AACnB,eAASA,IAAG,OAAO,IAAI;AAAA,IACzB,CAAC;AAAA,EACH,WAAW,cAAc,KAAK,GAAG;AAC/B,eAAW,OAAO,OAAO;AACvB,eAAS,MAAM,GAAG,GAAG,OAAO,IAAI;AAAA,IAClC;AACA,eAAW,OAAO,OAAO,sBAAsB,KAAK,GAAG;AACrD,UAAI,OAAO,UAAU,qBAAqB,KAAK,OAAO,GAAG,GAAG;AAC1D,iBAAS,MAAM,GAAG,GAAG,OAAO,IAAI;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AC36DA;AAAA;AAAA;AAAA;AAAA;AAUA,MAAM,QAAQ,CAAA;AAOd,IAAI,YAAY;AAChB,SAAS,OAAO,QAAQ,MAAM;AAC5B,MAAI,UAAW;AACf,cAAY;AACZ,gBAAA;AACA,QAAM,WAAW,MAAM,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE,YAAY;AACpE,QAAM,iBAAiB,YAAY,SAAS,WAAW,OAAO;AAC9D,QAAM,QAAQ,kBAAA;AACd,MAAI,gBAAgB;AAClB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,QAEE,MAAM,KAAK,IAAI,CAACH,OAAM;AACpB,cAAII,KAAI;AACR,kBAAQ,MAAMA,MAAKJ,GAAE,aAAa,OAAO,SAASI,IAAG,KAAKJ,EAAC,MAAM,OAAO,KAAK,KAAK,UAAUA,EAAC;AAAA,QAC/F,CAAC,EAAE,KAAK,EAAE;AAAA,QACV,YAAY,SAAS;AAAA,QACrB,MAAM;AAAA,UACJ,CAAC,EAAE,MAAA,MAAY,OAAO,oBAAoB,UAAU,MAAM,IAAI,CAAC;AAAA,QAAA,EAC/D,KAAK,IAAI;AAAA,QACX;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,OAAO;AACL,UAAM,WAAW,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI;AAC/C,QAAI,MAAM;AAAA,IACV,MAAM;AACJ,eAAS,KAAK;AAAA,GACjB,GAAG,YAAY,KAAK,CAAC;AAAA,IACpB;AACA,YAAQ,KAAK,GAAG,QAAQ;AAAA,EAC1B;AACA,gBAAA;AACA,cAAY;AACd;AACA,SAAS,oBAAoB;AAC3B,MAAI,eAAe,MAAM,MAAM,SAAS,CAAC;AACzC,MAAI,CAAC,cAAc;AACjB,WAAO,CAAA;AAAA,EACT;AACA,QAAM,kBAAkB,CAAA;AACxB,SAAO,cAAc;AACnB,UAAM,OAAO,gBAAgB,CAAC;AAC9B,QAAI,QAAQ,KAAK,UAAU,cAAc;AACvC,WAAK;AAAA,IACP,OAAO;AACL,sBAAgB,KAAK;AAAA,QACnB,OAAO;AAAA,QACP,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AACA,UAAM,iBAAiB,aAAa,aAAa,aAAa,UAAU;AACxE,mBAAe,kBAAkB,eAAe;AAAA,EAClD;AACA,SAAO;AACT;AACA,SAAS,YAAY,OAAO;AAC1B,QAAM,OAAO,CAAA;AACb,QAAM,QAAQ,CAAC,OAAOJ,OAAM;AAC1B,SAAK,KAAK,GAAGA,OAAM,IAAI,CAAA,IAAK,CAAC;AAAA,CAChC,GAAG,GAAG,iBAAiB,KAAK,CAAC;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;AACA,SAAS,iBAAiB,EAAE,OAAO,gBAAgB;AACjD,QAAM,UAAU,eAAe,IAAI,QAAQ,YAAY,sBAAsB;AAC7E,QAAM,SAAS,MAAM,YAAY,MAAM,UAAU,UAAU,OAAO;AAClE,QAAM,OAAO,QAAQ;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EAAA,CACD;AACD,QAAM,QAAQ,MAAM;AACpB,SAAO,MAAM,QAAQ,CAAC,MAAM,GAAG,YAAY,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,OAAO,KAAK;AACjF;AACA,SAAS,YAAY,OAAO;AAC1B,QAAM,MAAM,CAAA;AACZ,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,OAAK,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ;AAChC,QAAI,KAAK,GAAG,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,EACzC,CAAC;AACD,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,KAAK,MAAM;AAAA,EACjB;AACA,SAAO;AACT;AACA,SAAS,WAAW,KAAK,OAAO,KAAK;AACnC,MAAI,SAAS,KAAK,GAAG;AACnB,YAAQ,KAAK,UAAU,KAAK;AAC5B,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,EACzC,WAAW,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,SAAS,MAAM;AACnF,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,EACzC,WAAW,MAAM,KAAK,GAAG;AACvB,YAAQ,WAAW,KAAK,MAAM,MAAM,KAAK,GAAG,IAAI;AAChD,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,SAAS,OAAO,GAAG;AAAA,EACjD,WAAW,WAAW,KAAK,GAAG;AAC5B,WAAO,CAAC,GAAG,GAAG,MAAM,MAAM,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE,EAAE;AAAA,EAC3D,OAAO;AACL,YAAQ,MAAM,KAAK;AACnB,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,KAAK,KAAK;AAAA,EACxC;AACF;AA2EA,SAAS,sBAAsB,IAAI,UAAU,MAAM,MAAM;AACvD,MAAI;AACF,WAAO,OAAO,GAAG,GAAG,IAAI,IAAI,GAAA;AAAA,EAC9B,SAAS,KAAK;AACZ,gBAAY,KAAK,UAAU,IAAI;AAAA,EACjC;AACF;AACA,SAAS,2BAA2B,IAAI,UAAU,MAAM,MAAM;AAC5D,MAAI,WAAW,EAAE,GAAG;AAClB,UAAM,MAAM,sBAAsB,IAAI,UAAU,MAAM,IAAI;AAC1D,QAAI,OAAO,UAAU,GAAG,GAAG;AACzB,UAAI,MAAM,CAAC,QAAQ;AACjB,oBAAY,KAAK,UAAU,IAAI;AAAA,MACjC,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,EAAE,GAAG;AACf,UAAM,SAAS,CAAA;AACf,aAASA,KAAI,GAAGA,KAAI,GAAG,QAAQA,MAAK;AAClC,aAAO,KAAK,2BAA2B,GAAGA,EAAC,GAAG,UAAU,MAAM,IAAI,CAAC;AAAA,IACrE;AACA,WAAO;AAAA,EACT;AAKF;AACA,SAAS,YAAY,KAAK,UAAU,MAAM,aAAa,MAAM;AAC3D,QAAM,eAAe,WAAW,SAAS,QAAQ;AACjD,QAAM,EAAE,cAAc,gCAAA,IAAoC,YAAY,SAAS,WAAW,UAAU;AACpG,MAAI,UAAU;AACZ,QAAI,MAAM,SAAS;AACnB,UAAM,kBAAkB,SAAS;AACjC,UAAM,YAAmF,8CAA8C,IAAI;AAC3I,WAAO,KAAK;AACV,YAAM,qBAAqB,IAAI;AAC/B,UAAI,oBAAoB;AACtB,iBAASA,KAAI,GAAGA,KAAI,mBAAmB,QAAQA,MAAK;AAClD,cAAI,mBAAmBA,EAAC,EAAE,KAAK,iBAAiB,SAAS,MAAM,OAAO;AACpE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,YAAM,IAAI;AAAA,IACZ;AACA,QAAI,cAAc;AAChB,oBAAA;AACA,4BAAsB,cAAc,MAAM,IAAI;AAAA,QAC5C;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AACD,oBAAA;AACA;AAAA,IACF;AAAA,EACF;AACA,WAAS,KAAK,MAAM,cAAc,YAAY,+BAA+B;AAC/E;AACA,SAAS,SAAS,KAAK,MAAM,cAAc,aAAa,MAAM,cAAc,OAAO;MAetE,aAAa;AACtB,UAAM;AAAA,EACR,OAAO;AACL,YAAQ,MAAM,GAAG;AAAA,EACnB;AACF;AAEA,MAAM,QAAQ,CAAA;AACd,IAAI,aAAa;AACjB,MAAM,sBAAsB,CAAA;AAC5B,IAAI,qBAAqB;AACzB,IAAI,iBAAiB;AACrB,MAAM,0CAA0C,QAAA;AAChD,IAAI,sBAAsB;AAE1B,SAAS,SAAS,IAAI;AACpB,QAAMe,KAAI,uBAAuB;AACjC,SAAO,KAAKA,GAAE,KAAK,OAAO,GAAG,KAAK,IAAI,IAAI,EAAE,IAAIA;AAClD;AACA,SAAS,mBAAmB,IAAI;AAC9B,MAAI,QAAQ,aAAa;AACzB,MAAI,MAAM,MAAM;AAChB,SAAO,QAAQ,KAAK;AAClB,UAAM,SAAS,QAAQ,QAAQ;AAC/B,UAAM,YAAY,MAAM,MAAM;AAC9B,UAAM,cAAc,MAAM,SAAS;AACnC,QAAI,cAAc,MAAM,gBAAgB,MAAM,UAAU,QAAQ,GAAG;AACjE,cAAQ,SAAS;AAAA,IACnB,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,SAAS,KAAK;AACrB,MAAI,EAAE,IAAI,QAAQ,IAAI;AACpB,UAAM,QAAQ,MAAM,GAAG;AACvB,UAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AACtC,QAAI,CAAC;AAAA,IACL,EAAE,IAAI,QAAQ,MAAM,SAAS,MAAM,OAAO,GAAG;AAC3C,YAAM,KAAK,GAAG;AAAA,IAChB,OAAO;AACL,YAAM,OAAO,mBAAmB,KAAK,GAAG,GAAG,GAAG;AAAA,IAChD;AACA,QAAI,SAAS;AACb,eAAA;AAAA,EACF;AACF;AACA,SAAS,aAAa;AACpB,MAAI,CAAC,qBAAqB;AACxB,0BAAsB,gBAAgB,KAAK,SAAS;AAAA,EACtD;AACF;AACA,SAAS,iBAAiB,IAAI;AAC5B,MAAI,CAAC,QAAQ,EAAE,GAAG;AAChB,QAAI,sBAAsB,GAAG,OAAO,IAAI;AACtC,yBAAmB,OAAO,iBAAiB,GAAG,GAAG,EAAE;AAAA,IACrD,WAAW,EAAE,GAAG,QAAQ,IAAI;AAC1B,0BAAoB,KAAK,EAAE;AAC3B,SAAG,SAAS;AAAA,IACd;AAAA,EACF,OAAO;AACL,wBAAoB,KAAK,GAAG,EAAE;AAAA,EAChC;AACA,aAAA;AACF;AACA,SAAS,iBAAiB,UAAU,MAAMf,KAAI,aAAa,GAAG;AAI5D,SAAOA,KAAI,MAAM,QAAQA,MAAK;AAC5B,UAAM,KAAK,MAAMA,EAAC;AAClB,QAAI,MAAM,GAAG,QAAQ,GAAG;AACtB,UAAI,YAAY,GAAG,OAAO,SAAS,KAAK;AACtC;AAAA,MACF;AAIA,YAAM,OAAOA,IAAG,CAAC;AACjB,MAAAA;AACA,UAAI,GAAG,QAAQ,GAAG;AAChB,WAAG,SAAS;AAAA,MACd;AACA,SAAA;AACA,UAAI,EAAE,GAAG,QAAQ,IAAI;AACnB,WAAG,SAAS;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AACA,SAAS,kBAAkB,MAAM;AAC/B,MAAI,oBAAoB,QAAQ;AAC9B,UAAM,UAAU,CAAC,GAAG,IAAI,IAAI,mBAAmB,CAAC,EAAE;AAAA,MAChD,CAACI,IAAGC,OAAM,MAAMD,EAAC,IAAI,MAAMC,EAAC;AAAA,IAAA;AAE9B,wBAAoB,SAAS;AAC7B,QAAI,oBAAoB;AACtB,yBAAmB,KAAK,GAAG,OAAO;AAClC;AAAA,IACF;AACA,yBAAqB;AAIrB,SAAK,iBAAiB,GAAG,iBAAiB,mBAAmB,QAAQ,kBAAkB;AACrF,YAAM,KAAK,mBAAmB,cAAc;AAI5C,UAAI,GAAG,QAAQ,GAAG;AAChB,WAAG,SAAS;AAAA,MACd;AACA,UAAI,EAAE,GAAG,QAAQ,GAAI,IAAA;AACrB,SAAG,SAAS;AAAA,IACd;AACA,yBAAqB;AACrB,qBAAiB;AAAA,EACnB;AACF;AACA,MAAM,QAAQ,CAAC,QAAQ,IAAI,MAAM,OAAO,IAAI,QAAQ,IAAI,KAAK,WAAW,IAAI;AAC5E,SAAS,UAAU,MAAM;AAKvB,MAAI;AACF,SAAK,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc;AAC5D,YAAM,MAAM,MAAM,UAAU;AAC5B,UAAI,OAAO,EAAE,IAAI,QAAQ,IAAI;AAC3B,YAAI,MAAyD;AAG7D,YAAI,IAAI,QAAQ,GAAG;AACjB,cAAI,SAAS,CAAC;AAAA,QAChB;AACA;AAAA,UACE;AAAA,UACA,IAAI;AAAA,UACJ,IAAI,IAAI,KAAK;AAAA,QAAA;AAEf,YAAI,EAAE,IAAI,QAAQ,IAAI;AACpB,cAAI,SAAS,CAAC;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF,UAAA;AACE,WAAO,aAAa,MAAM,QAAQ,cAAc;AAC9C,YAAM,MAAM,MAAM,UAAU;AAC5B,UAAI,KAAK;AACP,YAAI,SAAS;AAAA,MACf;AAAA,IACF;AACA,iBAAa;AACb,UAAM,SAAS;AACf,sBAAsB;AACtB,0BAAsB;AACtB,QAAI,MAAM,UAAU,oBAAoB,QAAQ;AAC9C,gBAAc;AAAA,IAChB;AAAA,EACF;AACF;AA2OA,IAAI,2BAA2B;AAC/B,IAAI,iBAAiB;AACrB,SAAS,4BAA4B,UAAU;AAC7C,QAAM,OAAO;AACb,6BAA2B;AAC3B,mBAAiB,YAAY,SAAS,KAAK,aAAa;AACxD,SAAO;AACT;AAQA,SAAS,QAAQ,IAAI,MAAM,0BAA0B,iBAAiB;AACpE,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,GAAG,IAAI;AACT,WAAO;AAAA,EACT;AACA,QAAM,sBAAsB,IAAI,SAAS;AACvC,QAAI,oBAAoB,IAAI;AAC1B,uBAAiB,EAAE;AAAA,IACrB;AACA,UAAM,eAAe,4BAA4B,GAAG;AACpD,QAAI;AACJ,QAAI;AACF,YAAM,GAAG,GAAG,IAAI;AAAA,IAClB,UAAA;AACE,kCAA4B,YAAY;AACxC,UAAI,oBAAoB,IAAI;AAC1B,yBAAiB,CAAC;AAAA,MACpB;AAAA,IACF;AAIA,WAAO;AAAA,EACT;AACA,sBAAoB,KAAK;AACzB,sBAAoB,KAAK;AACzB,sBAAoB,KAAK;AACzB,SAAO;AACT;AAOA,SAAS,eAAe,OAAO,YAAY;AACzC,MAAI,6BAA6B,MAAM;AAErC,WAAO;AAAA,EACT;AACA,QAAM,WAAW,2BAA2B,wBAAwB;AACpE,QAAM,WAAW,MAAM,SAAS,MAAM,OAAO,CAAA;AAC7C,WAASL,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AAC1C,QAAI,CAAC,KAAK,OAAO,KAAK,YAAY,SAAS,IAAI,WAAWA,EAAC;AAC3D,QAAI,KAAK;AACP,UAAI,WAAW,GAAG,GAAG;AACnB,cAAM;AAAA,UACJ,SAAS;AAAA,UACT,SAAS;AAAA,QAAA;AAAA,MAEb;AACA,UAAI,IAAI,MAAM;AACZ,iBAAS,KAAK;AAAA,MAChB;AACA,eAAS,KAAK;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,oBAAoB,OAAO,WAAW,UAAU,MAAM;AAC7D,QAAM,WAAW,MAAM;AACvB,QAAM,cAAc,aAAa,UAAU;AAC3C,WAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,UAAM,UAAU,SAASA,EAAC;AAC1B,QAAI,aAAa;AACf,cAAQ,WAAW,YAAYA,EAAC,EAAE;AAAA,IACpC;AACA,QAAI,OAAO,QAAQ,IAAI,IAAI;AAC3B,QAAI,MAAM;AACR,oBAAA;AACA,iCAA2B,MAAM,UAAU,GAAG;AAAA,QAC5C,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AACD,oBAAA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,QAAQ,KAAK,OAAO;AAM3B,MAAI,iBAAiB;AACnB,QAAI,WAAW,gBAAgB;AAC/B,UAAM,iBAAiB,gBAAgB,UAAU,gBAAgB,OAAO;AACxE,QAAI,mBAAmB,UAAU;AAC/B,iBAAW,gBAAgB,WAAW,OAAO,OAAO,cAAc;AAAA,IACpE;AACA,aAAS,GAAG,IAAI;AAAA,EAClB;AACF;AACA,SAAS,OAAO,KAAK,cAAc,wBAAwB,OAAO;AAChE,QAAM,WAAW,mBAAA;AACjB,MAAI,YAAY,YAAY;AAC1B,QAAI,WAAW,aAAa,WAAW,SAAS,WAAW,WAAW,SAAS,UAAU,QAAQ,SAAS,KAAK,SAAS,MAAM,cAAc,SAAS,MAAM,WAAW,WAAW,SAAS,OAAO,WAAW;AAC5M,QAAI,YAAY,OAAO,UAAU;AAC/B,aAAO,SAAS,GAAG;AAAA,IACrB,WAAW,UAAU,SAAS,GAAG;AAC/B,aAAO,yBAAyB,WAAW,YAAY,IAAI,aAAa,KAAK,YAAY,SAAS,KAAK,IAAI;AAAA,IAC7G;EAGF;AAGF;AAKA,MAAM,gBAAgC,uBAAO,IAAI,OAAO;AACxD,MAAM,gBAAgB,MAAM;AAC1B;AACE,UAAM,MAAM,OAAO,aAAa;AAMhC,WAAO;AAAA,EACT;AACF;AAmBA,SAAS,MAAM,QAAQ,IAAI,SAAS;AAMlC,SAAO,QAAQ,QAAQ,IAAI,OAAO;AACpC;AACA,SAAS,QAAQ,QAAQ,IAAI,UAAU,WAAW;AAChD,QAAM,EAAE,WAAW,MAAM,OAAO,SAAS;AAkBzC,QAAM,mBAAmB,OAAO,CAAA,GAAI,OAAO;AAE3C,QAAM,kBAAkB,MAAM,aAAa,CAAC,MAAM,UAAU;AAC5D,MAAI;AACJ,MAAI,uBAAuB;AACzB,QAAI,UAAU,QAAQ;AACpB,YAAM,MAAM,cAAA;AACZ,mBAAa,IAAI,qBAAqB,IAAI,mBAAmB,CAAA;AAAA,IAC/D,WAAW,CAAC,iBAAiB;AAC3B,YAAM,kBAAkB,MAAM;AAAA,MAC9B;AACA,sBAAgB,OAAO;AACvB,sBAAgB,SAAS;AACzB,sBAAgB,QAAQ;AACxB,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,WAAW;AACjB,mBAAiB,OAAO,CAAC,IAAI,MAAM,SAAS,2BAA2B,IAAI,UAAU,MAAM,IAAI;AAC/F,MAAI,QAAQ;AACZ,MAAI,UAAU,QAAQ;AACpB,qBAAiB,YAAY,CAAC,QAAQ;AACpC,4BAAsB,KAAK,YAAY,SAAS,QAAQ;AAAA,IAC1D;AAAA,EACF,WAAW,UAAU,QAAQ;AAC3B,YAAQ;AACR,qBAAiB,YAAY,CAAC,KAAK,eAAe;AAChD,UAAI,YAAY;AACd,YAAA;AAAA,MACF,OAAO;AACL,iBAAS,GAAG;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACA,mBAAiB,aAAa,CAAC,QAAQ;AACrC,QAAI,IAAI;AACN,UAAI,SAAS;AAAA,IACf;AACA,QAAI,OAAO;AACT,UAAI,SAAS;AACb,UAAI,UAAU;AACZ,YAAI,KAAK,SAAS;AAClB,YAAI,IAAI;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACA,QAAM,cAAc,QAAQ,QAAQ,IAAI,gBAAgB;AACxD,MAAI,uBAAuB;AACzB,QAAI,YAAY;AACd,iBAAW,KAAK,WAAW;AAAA,IAC7B,WAAW,iBAAiB;AAC1B,kBAAA;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,cAAc,QAAQ,OAAO,SAAS;AAC7C,QAAM,aAAa,KAAK;AACxB,QAAM,SAAS,SAAS,MAAM,IAAI,OAAO,SAAS,GAAG,IAAI,iBAAiB,YAAY,MAAM,IAAI,MAAM,WAAW,MAAM,IAAI,OAAO,KAAK,YAAY,UAAU;AAC7J,MAAI;AACJ,MAAI,WAAW,KAAK,GAAG;AACrB,SAAK;AAAA,EACP,OAAO;AACL,SAAK,MAAM;AACX,cAAU;AAAA,EACZ;AACA,QAAM,QAAQ,mBAAmB,IAAI;AACrC,QAAM,MAAM,QAAQ,QAAQ,GAAG,KAAK,UAAU,GAAG,OAAO;AACxD,QAAA;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,KAAK,MAAM;AACnC,QAAM,WAAW,KAAK,MAAM,GAAG;AAC/B,SAAO,MAAM;AACX,QAAI,MAAM;AACV,aAASA,KAAI,GAAGA,KAAI,SAAS,UAAU,KAAKA,MAAK;AAC/C,YAAM,IAAI,SAASA,EAAC,CAAC;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AACF;AAEA,MAAM,wCAAwC,MAAM;AACpD,MAAM,aAAa,CAAC,SAAS,KAAK;AAClC,MAAM,qBAAqB,CAAC,UAAU,UAAU,MAAM,YAAY,MAAM,aAAa;AACrF,MAAM,qBAAqB,CAAC,UAAU,UAAU,MAAM,SAAS,MAAM,UAAU;AAC/E,MAAM,cAAc,CAAC,WAAW,OAAO,eAAe,eAAe,kBAAkB;AACvF,MAAM,iBAAiB,CAAC,WAAW,OAAO,kBAAkB,cAAc,kBAAkB;AAC5F,MAAM,gBAAgB,CAAC,OAAO,WAAW;AACvC,QAAM,iBAAiB,SAAS,MAAM;AACtC,MAAI,SAAS,cAAc,GAAG;AAC5B,QAAI,CAAC,QAAQ;AAIX,aAAO;AAAA,IACT,OAAO;AACL,YAAM,SAAS,OAAO,cAAc;AAMpC,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AAIL,WAAO;AAAA,EACT;AACF;AACA,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,cAAc;AAAA,EACd,QAAQ,IAAI,IAAI,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,WAAW,WAAW;AACjH,UAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,GAAG,EAAE,QAAQ,eAAe,YAAY,cAAA;AAAA,IAAc,IACpD;AACJ,UAAM,WAAW,mBAAmB,GAAG,KAAK;AAC5C,QAAI,EAAE,WAAW,UAAU,gBAAA,IAAoB;AAK/C,QAAI,MAAM,MAAM;AACd,YAAM,cAAc,GAAG,KAAmF,WAAW,EAAE;AACvH,YAAM,aAAa,GAAG,SAAqF,WAAW,EAAE;AACxH,aAAO,aAAa,WAAW,MAAM;AACrC,aAAO,YAAY,WAAW,MAAM;AACpC,YAAM,QAAQ,CAAC,YAAY,YAAY;AACrC,YAAI,YAAY,IAAI;AAClB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AACA,YAAM,gBAAgB,MAAM;AAC1B,cAAM,SAAS,GAAG,SAAS,cAAc,GAAG,OAAO,aAAa;AAChE,cAAM,eAAe,cAAc,QAAQ,IAAI,YAAY,MAAM;AACjE,YAAI,QAAQ;AACV,cAAI,cAAc,SAAS,YAAY,MAAM,GAAG;AAC9C,wBAAY;AAAA,UACd,WAAW,cAAc,YAAY,eAAe,MAAM,GAAG;AAC3D,wBAAY;AAAA,UACd;AACA,cAAI,mBAAmB,gBAAgB,MAAM;AAC3C,aAAC,gBAAgB,GAAG,qBAAqB,gBAAgB,GAAG,mBAAmC,oBAAI,IAAA,IAAQ,IAAI,MAAM;AAAA,UACvH;AACA,cAAI,CAAC,UAAU;AACb,kBAAM,QAAQ,YAAY;AAC1B,0BAAc,IAAI,KAAK;AAAA,UACzB;AAAA,QACF;AAAA,MAOF;AACA,UAAI,UAAU;AACZ,cAAM,WAAW,UAAU;AAC3B,sBAAc,IAAI,IAAI;AAAA,MACxB;AACA,UAAI,mBAAmB,GAAG,KAAK,GAAG;AAChC,WAAG,GAAG,cAAc;AACpB,8BAAsB,MAAM;AAC1B,wBAAA;AACA,iBAAO,GAAG,GAAG;AAAA,QACf,GAAG,cAAc;AAAA,MACnB,OAAO;AACL,sBAAA;AAAA,MACF;AAAA,IACF,OAAO;AACL,UAAI,mBAAmB,GAAG,KAAK,KAAK,GAAG,GAAG,gBAAgB,OAAO;AAC/D,8BAAsB,MAAM;AAC1B,uBAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,GAAG,cAAc;AACjB;AAAA,MACF;AACA,SAAG,KAAK,GAAG;AACX,SAAG,cAAc,GAAG;AACpB,YAAM,aAAa,GAAG,SAAS,GAAG;AAClC,YAAM,SAAS,GAAG,SAAS,GAAG;AAC9B,YAAM,eAAe,GAAG,eAAe,GAAG;AAC1C,YAAM,cAAc,mBAAmB,GAAG,KAAK;AAC/C,YAAM,mBAAmB,cAAc,YAAY;AACnD,YAAM,gBAAgB,cAAc,aAAa;AACjD,UAAI,cAAc,SAAS,YAAY,MAAM,GAAG;AAC9C,oBAAY;AAAA,MACd,WAAW,cAAc,YAAY,eAAe,MAAM,GAAG;AAC3D,oBAAY;AAAA,MACd;AACA,UAAI,iBAAiB;AACnB;AAAA,UACE,GAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAEF,+BAAuB,IAAI,IAAI,IAA0C;AAAA,MAC3E,WAAW,CAAC,WAAW;AACrB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AACA,UAAI,UAAU;AACZ,YAAI,CAAC,aAAa;AAChB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,OAAO;AACL,cAAI,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,OAAO,GAAG,MAAM,IAAI;AACvD,eAAG,MAAM,KAAK,GAAG,MAAM;AAAA,UACzB;AAAA,QACF;AAAA,MACF,OAAO;AACL,aAAK,GAAG,SAAS,GAAG,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,KAAK;AAC3D,gBAAM,aAAa,GAAG,SAAS;AAAA,YAC7B,GAAG;AAAA,YACH;AAAA,UAAA;AAEF,cAAI,YAAY;AACd;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QAOF,WAAW,aAAa;AACtB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AACA,oBAAc,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,OAAO,OAAO,iBAAiB,gBAAgB,EAAE,IAAI,SAAS,GAAG,EAAE,QAAQ,WAAA,EAAW,GAAK,UAAU;AACnG,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE;AACJ,QAAI,QAAQ;AACV,iBAAW,WAAW;AACtB,iBAAW,YAAY;AAAA,IACzB;AACA,gBAAY,WAAW,MAAM;AAC7B,QAAI,YAAY,IAAI;AAClB,YAAM,eAAe,YAAY,CAAC,mBAAmB,KAAK;AAC1D,eAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,cAAM,QAAQ,SAASA,EAAC;AACxB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC,CAAC,MAAM;AAAA,QAAA;AAAA,MAEZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AACX;AACA,SAAS,aAAa,OAAO,WAAW,cAAc,EAAE,GAAG,EAAE,OAAA,GAAU,GAAG,QAAQ,WAAW,GAAG;AAC9F,MAAI,aAAa,GAAG;AAClB,WAAO,MAAM,cAAc,WAAW,YAAY;AAAA,EACpD;AACA,QAAM,EAAE,IAAI,QAAQ,WAAW,UAAU,UAAU;AACnD,QAAM,YAAY,aAAa;AAC/B,MAAI,WAAW;AACb,WAAO,IAAI,WAAW,YAAY;AAAA,EACpC;AACA,MAAI,CAAC,aAAa,mBAAmB,KAAK,GAAG;AAC3C,QAAI,YAAY,IAAI;AAClB,eAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC;AAAA,UACE,SAASA,EAAC;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW;AACb,WAAO,QAAQ,WAAW,YAAY;AAAA,EACxC;AACF;AACA,SAAS,gBAAgB,MAAM,OAAO,iBAAiB,gBAAgB,cAAc,WAAW;AAAA,EAC9F,GAAG,EAAE,aAAa,YAAY,eAAe,QAAQ,WAAA;AACvD,GAAG,iBAAiB;AAClB,WAAS,wBAAwB,OAAO,QAAQ,aAAa,cAAc;AACzE,WAAO,SAAS;AAAA,MACd,YAAY,KAAK;AAAA,MACjB;AAAA,MACA,WAAW,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO,cAAc;AACrB,WAAO,eAAe;AAAA,EACxB;AACA,QAAM,SAAS,MAAM,SAAS;AAAA,IAC5B,MAAM;AAAA,IACN;AAAA,EAAA;AAEF,QAAM,WAAW,mBAAmB,MAAM,KAAK;AAC/C,MAAI,QAAQ;AACV,UAAM,aAAa,OAAO,QAAQ,OAAO;AACzC,QAAI,MAAM,YAAY,IAAI;AACxB,UAAI,UAAU;AACZ;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc,YAAY,UAAU;AAAA,QAAA;AAAA,MAExC,OAAO;AACL,cAAM,SAAS,YAAY,IAAI;AAC/B,YAAI,eAAe;AACnB,eAAO,cAAc;AACnB,cAAI,gBAAgB,aAAa,aAAa,GAAG;AAC/C,gBAAI,aAAa,SAAS,yBAAyB;AACjD,oBAAM,cAAc;AAAA,YACtB,WAAW,aAAa,SAAS,mBAAmB;AAClD,oBAAM,eAAe;AACrB,qBAAO,OAAO,MAAM,gBAAgB,YAAY,MAAM,YAAY;AAClE;AAAA,YACF;AAAA,UACF;AACA,yBAAe,YAAY,YAAY;AAAA,QACzC;AACA,YAAI,CAAC,MAAM,cAAc;AACvB,wBAAc,QAAQ,OAAO,YAAY,MAAM;AAAA,QACjD;AACA;AAAA,UACE,cAAc,YAAY,UAAU;AAAA,UACpC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AACA,kBAAc,OAAO,QAAQ;AAAA,EAC/B,WAAW,UAAU;AACnB,QAAI,MAAM,YAAY,IAAI;AACxB,8BAAwB,MAAM,OAAO,MAAM,YAAY,IAAI,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,SAAO,MAAM,UAAU,YAAY,MAAM,MAAM;AACjD;AACA,MAAM,WAAW;AACjB,SAAS,cAAc,OAAO,YAAY;AACxC,QAAM,MAAM,MAAM;AAClB,MAAI,OAAO,IAAI,IAAI;AACjB,QAAI,MAAM;AACV,QAAI,YAAY;AACd,aAAO,MAAM;AACb,eAAS,MAAM;AAAA,IACjB,OAAO;AACL,aAAO,MAAM;AACb,eAAS,MAAM;AAAA,IACjB;AACA,WAAO,QAAQ,SAAS,QAAQ;AAC9B,UAAI,KAAK,aAAa,QAAQ,aAAa,gBAAgB,IAAI,GAAG;AAClE,aAAO,KAAK;AAAA,IACd;AACA,QAAI,GAAA;AAAA,EACN;AACF;AACA,SAAS,cAAc,QAAQ,OAAO,YAAY,QAAQ;AACxD,QAAM,cAAc,MAAM,cAAc,WAAW,EAAE;AACrD,QAAM,eAAe,MAAM,eAAe,WAAW,EAAE;AACvD,cAAY,cAAc,IAAI;AAC9B,MAAI,QAAQ;AACV,WAAO,aAAa,MAAM;AAC1B,WAAO,cAAc,MAAM;AAAA,EAC7B;AACA,SAAO;AACT;AAEA,MAAM,oCAAoC,UAAU;AACpD,MAAM,oCAAoC,UAAU;AACpD,SAAS,qBAAqB;AAC5B,QAAM,QAAQ;AAAA,IACZ,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,IACd,mCAAmC,IAAA;AAAA,EAAI;AAEzC,YAAU,MAAM;AACd,UAAM,YAAY;AAAA,EACpB,CAAC;AACD,kBAAgB,MAAM;AACpB,UAAM,eAAe;AAAA,EACvB,CAAC;AACD,SAAO;AACT;AACA,MAAM,0BAA0B,CAAC,UAAU,KAAK;AAChD,MAAM,gCAAgC;AAAA,EACpC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA;AAAA,EAEX,eAAe;AAAA,EACf,SAAS;AAAA,EACT,cAAc;AAAA,EACd,kBAAkB;AAAA;AAAA,EAElB,eAAe;AAAA,EACf,SAAS;AAAA,EACT,cAAc;AAAA,EACd,kBAAkB;AAAA;AAAA,EAElB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,mBAAmB;AACrB;AACA,MAAM,sBAAsB,CAAC,aAAa;AACxC,QAAM,UAAU,SAAS;AACzB,SAAO,QAAQ,YAAY,oBAAoB,QAAQ,SAAS,IAAI;AACtE;AACA,MAAM,qBAAqB;AAAA,EACzB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM,OAAO,EAAE,SAAS;AACtB,UAAM,WAAW,mBAAA;AACjB,UAAM,QAAQ,mBAAA;AACd,WAAO,MAAM;AACX,YAAM,WAAW,MAAM,WAAW,yBAAyB,MAAM,QAAA,GAAW,IAAI;AAChF,UAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;AACjC;AAAA,MACF;AACA,YAAM,QAAQ,oBAAoB,QAAQ;AAC1C,YAAM,WAAW,MAAM,KAAK;AAC5B,YAAM,EAAE,SAAS;AAIjB,UAAI,MAAM,WAAW;AACnB,eAAO,iBAAiB,KAAK;AAAA,MAC/B;AACA,YAAM,aAAa,gBAAgB,KAAK;AACxC,UAAI,CAAC,YAAY;AACf,eAAO,iBAAiB,KAAK;AAAA,MAC/B;AACA,UAAI,aAAa;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA,CAAC,UAAU,aAAa;AAAA,MAAA;AAE1B,UAAI,WAAW,SAAS,SAAS;AAC/B,2BAAmB,YAAY,UAAU;AAAA,MAC3C;AACA,UAAI,gBAAgB,SAAS,WAAW,gBAAgB,SAAS,OAAO;AACxE,UAAI,iBAAiB,cAAc,SAAS,WAAW,CAAC,gBAAgB,eAAe,UAAU,KAAK,oBAAoB,QAAQ,EAAE,SAAS,SAAS;AACpJ,YAAI,eAAe;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAEF,2BAAmB,eAAe,YAAY;AAC9C,YAAI,SAAS,YAAY,WAAW,SAAS,SAAS;AACpD,gBAAM,YAAY;AAClB,uBAAa,aAAa,MAAM;AAC9B,kBAAM,YAAY;AAClB,gBAAI,EAAE,SAAS,IAAI,QAAQ,IAAI;AAC7B,uBAAS,OAAA;AAAA,YACX;AACA,mBAAO,aAAa;AACpB,4BAAgB;AAAA,UAClB;AACA,iBAAO,iBAAiB,KAAK;AAAA,QAC/B,WAAW,SAAS,YAAY,WAAW,SAAS,SAAS;AAC3D,uBAAa,aAAa,CAAC,IAAI,aAAa,iBAAiB;AAC3D,kBAAM,qBAAqB;AAAA,cACzB;AAAA,cACA;AAAA,YAAA;AAEF,+BAAmB,OAAO,cAAc,GAAG,CAAC,IAAI;AAChD,eAAG,UAAU,IAAI,MAAM;AACrB,0BAAA;AACA,iBAAG,UAAU,IAAI;AACjB,qBAAO,WAAW;AAClB,8BAAgB;AAAA,YAClB;AACA,uBAAW,eAAe,MAAM;AAC9B,2BAAA;AACA,qBAAO,WAAW;AAClB,8BAAgB;AAAA,YAClB;AAAA,UACF;AAAA,QACF,OAAO;AACL,0BAAgB;AAAA,QAClB;AAAA,MACF,WAAW,eAAe;AACxB,wBAAgB;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACA,SAAS,oBAAoB,UAAU;AACrC,MAAI,QAAQ,SAAS,CAAC;AACtB,MAAI,SAAS,SAAS,GAAG;AAEvB,eAAWE,MAAK,UAAU;AACxB,UAAIA,GAAE,SAAS,SAAS;AAOtB,gBAAQA;AAEwC;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,MAAM,iBAAiB;AACvB,SAAS,uBAAuB,OAAO,OAAO;AAC5C,QAAM,EAAE,kBAAkB;AAC1B,MAAI,qBAAqB,cAAc,IAAI,MAAM,IAAI;AACrD,MAAI,CAAC,oBAAoB;AACvB,yBAAqC,uBAAO,OAAO,IAAI;AACvD,kBAAc,IAAI,MAAM,MAAM,kBAAkB;AAAA,EAClD;AACA,SAAO;AACT;AACA,SAAS,uBAAuB,OAAO,OAAO,OAAO,UAAU,WAAW;AACxE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AACJ,QAAM,MAAM,OAAO,MAAM,GAAG;AAC5B,QAAM,qBAAqB,uBAAuB,OAAO,KAAK;AAC9D,QAAMc,YAAW,CAAC,MAAM,SAAS;AAC/B,YAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACA,QAAM,gBAAgB,CAAC,MAAM,SAAS;AACpC,UAAM,OAAO,KAAK,CAAC;AACnBA,cAAS,MAAM,IAAI;AACnB,QAAI,QAAQ,IAAI,GAAG;AACjB,UAAI,KAAK,MAAM,CAAC,UAAU,MAAM,UAAU,CAAC,EAAG,MAAA;AAAA,IAChD,WAAW,KAAK,UAAU,GAAG;AAC3B,WAAA;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA,YAAY,IAAI;AACd,UAAI,OAAO;AACX,UAAI,CAAC,MAAM,WAAW;AACpB,YAAI,QAAQ;AACV,iBAAO,kBAAkB;AAAA,QAC3B,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,UAAI,GAAG,UAAU,GAAG;AAClB,WAAG,UAAU;AAAA,UACX;AAAA;AAAA,QAAA;AAAA,MAGJ;AACA,YAAM,eAAe,mBAAmB,GAAG;AAC3C,UAAI,gBAAgB,gBAAgB,OAAO,YAAY,KAAK,aAAa,GAAG,UAAU,GAAG;AACvF,qBAAa,GAAG,UAAU,EAAA;AAAA,MAC5B;AACAA,gBAAS,MAAM,CAAC,EAAE,CAAC;AAAA,IACrB;AAAA,IACA,MAAM,IAAI;AACR,UAAI,OAAO;AACX,UAAI,YAAY;AAChB,UAAI,aAAa;AACjB,UAAI,CAAC,MAAM,WAAW;AACpB,YAAI,QAAQ;AACV,iBAAO,YAAY;AACnB,sBAAY,iBAAiB;AAC7B,uBAAa,qBAAqB;AAAA,QACpC,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,UAAI,SAAS;AACb,YAAM,OAAO,GAAG,UAAU,IAAI,CAAC,cAAc;AAC3C,YAAI,OAAQ;AACZ,iBAAS;AACT,YAAI,WAAW;AACbA,oBAAS,YAAY,CAAC,EAAE,CAAC;AAAA,QAC3B,OAAO;AACLA,oBAAS,WAAW,CAAC,EAAE,CAAC;AAAA,QAC1B;AACA,YAAI,MAAM,cAAc;AACtB,gBAAM,aAAA;AAAA,QACR;AACA,WAAG,UAAU,IAAI;AAAA,MACnB;AACA,UAAI,MAAM;AACR,sBAAc,MAAM,CAAC,IAAI,IAAI,CAAC;AAAA,MAChC,OAAO;AACL,aAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,IAAIC,SAAQ;AAChB,YAAM,OAAO,OAAO,MAAM,GAAG;AAC7B,UAAI,GAAG,UAAU,GAAG;AAClB,WAAG,UAAU;AAAA,UACX;AAAA;AAAA,QAAA;AAAA,MAGJ;AACA,UAAI,MAAM,cAAc;AACtB,eAAOA,QAAAA;AAAAA,MACT;AACAD,gBAAS,eAAe,CAAC,EAAE,CAAC;AAC5B,UAAI,SAAS;AACb,YAAM,OAAO,GAAG,UAAU,IAAI,CAAC,cAAc;AAC3C,YAAI,OAAQ;AACZ,iBAAS;AACTC,gBAAAA;AACA,YAAI,WAAW;AACbD,oBAAS,kBAAkB,CAAC,EAAE,CAAC;AAAA,QACjC,OAAO;AACLA,oBAAS,cAAc,CAAC,EAAE,CAAC;AAAA,QAC7B;AACA,WAAG,UAAU,IAAI;AACjB,YAAI,mBAAmB,IAAI,MAAM,OAAO;AACtC,iBAAO,mBAAmB,IAAI;AAAA,QAChC;AAAA,MACF;AACA,yBAAmB,IAAI,IAAI;AAC3B,UAAI,SAAS;AACX,sBAAc,SAAS,CAAC,IAAI,IAAI,CAAC;AAAA,MACnC,OAAO;AACL,aAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,QAAQ;AACZ,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAEF,UAAI,qBAAqB,MAAM;AAC/B,aAAO;AAAA,IACT;AAAA,EAAA;AAEF,SAAO;AACT;AACA,SAAS,iBAAiB,OAAO;AAC/B,MAAI,YAAY,KAAK,GAAG;AACtB,YAAQ,WAAW,KAAK;AACxB,UAAM,WAAW;AACjB,WAAO;AAAA,EACT;AACF;AACA,SAAS,gBAAgB,OAAO;AAC9B,MAAI,CAAC,YAAY,KAAK,GAAG;AACvB,QAAI,WAAW,MAAM,IAAI,KAAK,MAAM,UAAU;AAC5C,aAAO,oBAAoB,MAAM,QAAQ;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AACA,MAAI,MAAM,WAAW;AACnB,WAAO,MAAM,UAAU;AAAA,EACzB;AACA,QAAM,EAAE,WAAW,SAAA,IAAa;AAChC,MAAI,UAAU;AACZ,QAAI,YAAY,IAAI;AAClB,aAAO,SAAS,CAAC;AAAA,IACnB;AACA,QAAI,YAAY,MAAM,WAAW,SAAS,OAAO,GAAG;AAClD,aAAO,SAAS,QAAA;AAAA,IAClB;AAAA,EACF;AACF;AACA,SAAS,mBAAmB,OAAO,OAAO;AACxC,MAAI,MAAM,YAAY,KAAK,MAAM,WAAW;AAC1C,UAAM,aAAa;AACnB,uBAAmB,MAAM,UAAU,SAAS,KAAK;AAAA,EACnD,WAAW,MAAM,YAAY,KAAK;AAChC,UAAM,UAAU,aAAa,MAAM,MAAM,MAAM,SAAS;AACxD,UAAM,WAAW,aAAa,MAAM,MAAM,MAAM,UAAU;AAAA,EAC5D,OAAO;AACL,UAAM,aAAa;AAAA,EACrB;AACF;AACA,SAAS,yBAAyB,UAAU,cAAc,OAAO,WAAW;AAC1E,MAAI,MAAM,CAAA;AACV,MAAI,qBAAqB;AACzB,WAAShB,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,QAAI,QAAQ,SAASA,EAAC;AACtB,UAAM,MAAM,aAAa,OAAO,MAAM,MAAM,OAAO,SAAS,IAAI,OAAO,MAAM,OAAO,OAAO,MAAM,MAAMA,EAAC;AACxG,QAAI,MAAM,SAAS,UAAU;AAC3B,UAAI,MAAM,YAAY,IAAK;AAC3B,YAAM,IAAI;AAAA,QACR,yBAAyB,MAAM,UAAU,aAAa,GAAG;AAAA,MAAA;AAAA,IAE7D,WAAW,eAAe,MAAM,SAAS,SAAS;AAChD,UAAI,KAAK,OAAO,OAAO,WAAW,OAAO,EAAE,KAAK,IAAI,KAAK;AAAA,IAC3D;AAAA,EACF;AACA,MAAI,qBAAqB,GAAG;AAC1B,aAASA,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,UAAIA,EAAC,EAAE,YAAY;AAAA,IACrB;AAAA,EACF;AACA,SAAO;AACT;AAAA;AAGA,SAAS,gBAAgB,SAAS,cAAc;AAC9C,SAAO,WAAW,OAAO;AAAA;AAAA;AAAA,IAGN,uBAAM,OAAO,EAAE,MAAM,QAAQ,KAAA,GAAQ,cAAc,EAAE,OAAO,SAAS,GAAA;AAAA,MACpF;AACN;AAaA,SAAS,kBAAkB,UAAU;AACnC,WAAS,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC;AACjE;AA8BA,MAAM,uCAAuC,QAAA;AAC7C,SAAS,OAAO,QAAQ,WAAW,gBAAgB,OAAO,YAAY,OAAO;AAC3E,MAAI,QAAQ,MAAM,GAAG;AACnB,WAAO;AAAA,MACL,CAAC,GAAGA,OAAM;AAAA,QACR;AAAA,QACA,cAAc,QAAQ,SAAS,IAAI,UAAUA,EAAC,IAAI;AAAA,QAClD;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAEF;AAAA,EACF;AACA,MAAI,eAAe,KAAK,KAAK,CAAC,WAAW;AACvC,QAAI,MAAM,YAAY,OAAO,MAAM,KAAK,mBAAmB,MAAM,UAAU,QAAQ,WAAW;AAC5F,aAAO,QAAQ,WAAW,gBAAgB,MAAM,UAAU,OAAO;AAAA,IACnE;AACA;AAAA,EACF;AACA,QAAM,WAAW,MAAM,YAAY,IAAI,2BAA2B,MAAM,SAAS,IAAI,MAAM;AAC3F,QAAM,QAAQ,YAAY,OAAO;AACjC,QAAM,EAAE,GAAG,OAAO,GAAGkB,SAAQ;AAO7B,QAAM,SAAS,aAAa,UAAU;AACtC,QAAM,OAAO,MAAM,SAAS,YAAY,MAAM,OAAO,KAAK,MAAM;AAChE,QAAM,aAAa,MAAM;AACzB,QAAM,gBAAgB,MAAM,UAAU;AACtC,QAAM,iBAAiB,eAAe,YAAY,KAAK,CAAC,QAAQ;AAW9D,WAAO,OAAO,eAAe,GAAG;AAAA,EAClC;AAIA,MAAI,UAAU,QAAQ,WAAWA,MAAK;AACpC,4BAAwB,SAAS;AACjC,QAAI,SAAS,MAAM,GAAG;AACpB,WAAK,MAAM,IAAI;AACf,UAAI,eAAe,MAAM,GAAG;AAC1B,mBAAW,MAAM,IAAI;AAAA,MACvB;AAAA,IACF,WAAW,MAAM,MAAM,GAAG;AACD;AACrB,eAAO,QAAQ;AAAA,MACjB;AACA,YAAM,gBAAgB;AACtB,UAAI,cAAc,EAAG,MAAK,cAAc,CAAC,IAAI;AAAA,IAC/C;AAAA,EACF;AACA,MAAI,WAAWA,IAAG,GAAG;AACnB,0BAAsBA,MAAK,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC;AAAA,EACrD,OAAO;AACL,UAAM,YAAY,SAASA,IAAG;AAC9B,UAAM,SAAS,MAAMA,IAAG;AACxB,QAAI,aAAa,QAAQ;AACvB,YAAM,QAAQ,MAAM;AAClB,YAAI,OAAO,GAAG;AACZ,gBAAM,WAAW,YAAY,eAAeA,IAAG,IAAI,WAAWA,IAAG,IAAI,KAAKA,IAAG,IAAkCA,KAAI;AACnH,cAAI,WAAW;AACb,oBAAQ,QAAQ,KAAK,OAAO,UAAU,QAAQ;AAAA,UAChD,OAAO;AACL,gBAAI,CAAC,QAAQ,QAAQ,GAAG;AACtB,kBAAI,WAAW;AACb,qBAAKA,IAAG,IAAI,CAAC,QAAQ;AACrB,oBAAI,eAAeA,IAAG,GAAG;AACvB,6BAAWA,IAAG,IAAI,KAAKA,IAAG;AAAA,gBAC5B;AAAA,cACF,OAAO;AACL,sBAAM,SAAS,CAAC,QAAQ;AACJ;AAClBA,uBAAI,QAAQ;AAAA,gBACd;AACA,oBAAI,OAAO,EAAG,MAAK,OAAO,CAAC,IAAI;AAAA,cACjC;AAAA,YACF,WAAW,CAAC,SAAS,SAAS,QAAQ,GAAG;AACvC,uBAAS,KAAK,QAAQ;AAAA,YACxB;AAAA,UACF;AAAA,QACF,WAAW,WAAW;AACpB,eAAKA,IAAG,IAAI;AACZ,cAAI,eAAeA,IAAG,GAAG;AACvB,uBAAWA,IAAG,IAAI;AAAA,UACpB;AAAA,QACF,WAAW,QAAQ;AACG;AAClBA,iBAAI,QAAQ;AAAA,UACd;AACA,cAAI,OAAO,EAAG,MAAK,OAAO,CAAC,IAAI;AAAA,QACjC;MAGF;AACA,UAAI,OAAO;AACT,cAAM,MAAM,MAAM;AAChB,gBAAA;AACA,2BAAiB,OAAO,MAAM;AAAA,QAChC;AACA,YAAI,KAAK;AACT,yBAAiB,IAAI,QAAQ,GAAG;AAChC,8BAAsB,KAAK,cAAc;AAAA,MAC3C,OAAO;AACL,gCAAwB,MAAM;AAC9B,cAAA;AAAA,MACF;AAAA,IACF;AAAA,EAGF;AACF;AACA,SAAS,wBAAwB,QAAQ;AACvC,QAAM,gBAAgB,iBAAiB,IAAI,MAAM;AACjD,MAAI,eAAe;AACjB,kBAAc,SAAS;AACvB,qBAAiB,OAAO,MAAM;AAAA,EAChC;AACF;AA8oB4B,gBAAgB,wBAAwB,CAAC,OAAO,WAAW,IAAI,CAAC;AACjE,cAAA,EAAgB,uBAAuB,CAAC,OAAO,aAAa,EAAE;AA0FzF,MAAM,iBAAiB,CAAClB,OAAM,CAAC,CAACA,GAAE,KAAK;AA2KvC,MAAM,cAAc,CAAC,UAAU,MAAM,KAAK;AA6N1C,SAAS,YAAY,MAAM,QAAQ;AACjC,wBAAsB,MAAM,KAAK,MAAM;AACzC;AACA,SAAS,cAAc,MAAM,QAAQ;AACnC,wBAAsB,MAAM,MAAM,MAAM;AAC1C;AACA,SAAS,sBAAsB,MAAM,MAAM,SAAS,iBAAiB;AACnE,QAAM,cAAc,KAAK,UAAU,KAAK,QAAQ,MAAM;AACpD,QAAI,UAAU;AACd,WAAO,SAAS;AACd,UAAI,QAAQ,eAAe;AACzB;AAAA,MACF;AACA,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAO,KAAA;AAAA,EACT;AACA,aAAW,MAAM,aAAa,MAAM;AACpC,MAAI,QAAQ;AACV,QAAI,UAAU,OAAO;AACrB,WAAO,WAAW,QAAQ,QAAQ;AAChC,UAAI,YAAY,QAAQ,OAAO,KAAK,GAAG;AACrC,8BAAsB,aAAa,MAAM,QAAQ,OAAO;AAAA,MAC1D;AACA,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AACF;AACA,SAAS,sBAAsB,MAAM,MAAM,QAAQ,eAAe;AAChE,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAAA;AAGF,cAAY,MAAM;AAChB,WAAO,cAAc,IAAI,GAAG,QAAQ;AAAA,EACtC,GAAG,MAAM;AACX;AASA,SAAS,WAAW,MAAM,MAAM,SAAS,iBAAiB,UAAU,OAAO;AACzE,MAAI,QAAQ;AACV,UAAM,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,IAAI;AAC9C,UAAM,cAAc,KAAK,UAAU,KAAK,QAAQ,IAAI,SAAS;AAC3D,oBAAA;AACA,YAAM,QAAQ,mBAAmB,MAAM;AACvC,YAAM,MAAM,2BAA2B,MAAM,QAAQ,MAAM,IAAI;AAC/D,YAAA;AACA,oBAAA;AACA,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACX,YAAM,QAAQ,WAAW;AAAA,IAC3B,OAAO;AACL,YAAM,KAAK,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAMF;AACA,MAAM,aAAa,CAAC,cAAc,CAAC,MAAM,SAAS,oBAAoB;AACpE,MAAI,CAAC,yBAAyB,cAAc,MAAM;AAChD,eAAW,WAAW,IAAI,SAAS,KAAK,GAAG,IAAI,GAAG,MAAM;AAAA,EAC1D;AACF;AACA,MAAM,gBAAgB,WAAW,IAAI;AACrC,MAAM,YAAY,WAAW,GAAG;AAChC,MAAM,iBAAiB;AAAA,EACrB;AACF;AACA,MAAM,YAAY,WAAW,GAAG;AAChC,MAAM,kBAAkB;AAAA,EACtB;AACF;AACA,MAAM,cAAc,WAAW,IAAI;AACnC,MAAM,mBAAmB;AAAA,EACvB;AACF;AACA,MAAM,oBAAoB,WAAW,KAAK;AAC1C,MAAM,kBAAkB,WAAW,KAAK;AACxC,SAAS,gBAAgB,MAAM,SAAS,iBAAiB;AACvD,aAAW,MAAM,MAAM,MAAM;AAC/B;AAEA,MAAM,aAAa;AAEnB,SAAS,iBAAiB,MAAM,oBAAoB;AAClD,SAAO,aAAa,YAAY,MAAM,MAAM,kBAAkB,KAAK;AACrE;AACA,MAAM,yBAAyC,uBAAO,IAAI,OAAO;AAWjE,SAAS,aAAa,MAAM,MAAM,cAAc,MAAM,qBAAqB,OAAO;AAChF,QAAM,WAAW,4BAA4B;AAC7C,MAAI,UAAU;AACZ,UAAM,YAAY,SAAS;AACF;AACvB,YAAM,WAAW;AAAA,QACf;AAAA,QACA;AAAA,MAAA;AAEF,UAAI,aAAa,aAAa,QAAQ,aAAa,SAAS,IAAI,KAAK,aAAa,WAAW,SAAS,IAAI,CAAC,IAAI;AAC7G,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM;AAAA;AAAA;AAAA,MAGJ,QAAQ,SAAS,IAAI,KAAK,UAAU,IAAI,GAAG,IAAI;AAAA,MAC/C,QAAQ,SAAS,WAAW,IAAI,GAAG,IAAI;AAAA;AAEzC,QAAI,CAAC,OAAO,oBAAoB;AAC9B,aAAO;AAAA,IACT;AAMA,WAAO;AAAA,EACT;AAKF;AACA,SAAS,QAAQ,UAAU,MAAM;AAC/B,SAAO,aAAa,SAAS,IAAI,KAAK,SAAS,SAAS,IAAI,CAAC,KAAK,SAAS,WAAW,SAAS,IAAI,CAAC,CAAC;AACvG;AAEA,SAAS,WAAW,QAAQ,YAAY,OAAO,OAAO;AACpD,MAAI;AACJ,QAAM,SAAS;AACf,QAAM,gBAAgB,QAAQ,MAAM;AACpC,MAAI,iBAAiB,SAAS,MAAM,GAAG;AACrC,UAAM,wBAAwB,iBAAiB,WAAW,MAAM;AAChE,QAAI,YAAY;AAChB,QAAI,mBAAmB;AACvB,QAAI,uBAAuB;AACzB,kBAAY,CAAC,UAAU,MAAM;AAC7B,yBAAmB,WAAW,MAAM;AACpC,eAAS,iBAAiB,MAAM;AAAA,IAClC;AACA,UAAM,IAAI,MAAM,OAAO,MAAM;AAC7B,aAASA,KAAI,GAAGS,KAAI,OAAO,QAAQT,KAAIS,IAAGT,MAAK;AAC7C,UAAIA,EAAC,IAAI;AAAA,QACP,YAAY,mBAAmB,WAAW,WAAW,OAAOA,EAAC,CAAC,CAAC,IAAI,WAAW,OAAOA,EAAC,CAAC,IAAI,OAAOA,EAAC;AAAA,QACnGA;AAAA,QACA;AAAA,QACA;AAAA,MAAkB;AAAA,IAEtB;AAAA,EACF,WAAW,OAAO,WAAW,UAAU;AAIrC,UAAM,IAAI,MAAM,MAAM;AACtB,aAASA,KAAI,GAAGA,KAAI,QAAQA,MAAK;AAC/B,UAAIA,EAAC,IAAI,WAAWA,KAAI,GAAGA,IAAG,QAAQ,MAAmB;AAAA,IAC3D;AAAA,EACF,WAAW,SAAS,MAAM,GAAG;AAC3B,QAAI,OAAO,OAAO,QAAQ,GAAG;AAC3B,YAAM,MAAM;AAAA,QACV;AAAA,QACA,CAAC,MAAMA,OAAM,WAAW,MAAMA,IAAG,QAAQ,MAAmB;AAAA,MAAA;AAAA,IAEhE,OAAO;AACL,YAAM,OAAO,OAAO,KAAK,MAAM;AAC/B,YAAM,IAAI,MAAM,KAAK,MAAM;AAC3B,eAASA,KAAI,GAAGS,KAAI,KAAK,QAAQT,KAAIS,IAAGT,MAAK;AAC3C,cAAM,MAAM,KAAKA,EAAC;AAClB,YAAIA,EAAC,IAAI,WAAW,OAAO,GAAG,GAAG,KAAKA,IAAG,MAAmB;AAAA,MAC9D;AAAA,IACF;AAAA,EACF,OAAO;AACL,UAAM,CAAA;AAAA,EACR;AAIA,SAAO;AACT;AAoBA,SAAS,WAAW,OAAO,MAAM,QAAQ,CAAA,GAAI,UAAU,WAAW;AAChE,MAAI,yBAAyB,MAAM,yBAAyB,UAAU,eAAe,yBAAyB,MAAM,KAAK,yBAAyB,OAAO,IAAI;AAC3J,UAAM,WAAW,OAAO,KAAK,KAAK,EAAE,SAAS;AAC7C,QAAI,SAAS,UAAW,OAAM,OAAO;AACrC,WAAO,aAAa;AAAA,MAClB;AAAA,MACA;AAAA,MACA,CAAC,YAAY,QAAQ,OAAO,QAAsB,CAAC;AAAA,MACnD,WAAW,KAAK;AAAA,IAAA;AAAA,EAEpB;AACA,MAAI,OAAO,MAAM,IAAI;AAOrB,MAAI,QAAQ,KAAK,IAAI;AACnB,SAAK,KAAK;AAAA,EACZ;AACA,YAAA;AACA,QAAM,mBAAmB,QAAQ,iBAAiB,KAAK,KAAK,CAAC;AAC7D,QAAM,UAAU,MAAM;AAAA;AAAA,EAEtB,oBAAoB,iBAAiB;AACrC,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM,WAAW,CAAC,SAAS,OAAO,IAAI,UAAU,IAAI,IAAI;AAAA,OACvD,CAAC,oBAAoB,WAAW,QAAQ;AAAA,IAAA;AAAA,IAE3C,oBAA6C,CAAA;AAAA,IAC7C,oBAAoB,MAAM,MAAM,IAAI,KAAK;AAAA,EAAA;AAK3C,MAAI,QAAQ,KAAK,IAAI;AACnB,SAAK,KAAK;AAAA,EACZ;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,QAAQ;AAChC,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,QAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,QAAI,MAAM,SAAS,QAAS,QAAO;AACnC,QAAI,MAAM,SAAS,YAAY,CAAC,iBAAiB,MAAM,QAAQ;AAC7D,aAAO;AACT,WAAO;AAAA,EACT,CAAC,IAAI,SAAS;AAChB;AAcA,MAAM,oBAAoB,CAACA,OAAM;AAC/B,MAAI,CAACA,GAAG,QAAO;AACf,MAAI,oBAAoBA,EAAC,EAAG,QAAO,2BAA2BA,EAAC;AAC/D,SAAO,kBAAkBA,GAAE,MAAM;AACnC;AACA,MAAM;AAAA;AAAA;AAAA,EAGY,uBAAuB,uBAAO,OAAO,IAAI,GAAG;AAAA,IAC1D,GAAG,CAACA,OAAMA;AAAA,IACV,KAAK,CAACA,OAAMA,GAAE,MAAM;AAAA,IACpB,OAAO,CAACA,OAAMA,GAAE;AAAA,IAChB,QAAQ,CAACA,OAA6EA,GAAE;AAAA,IACxF,QAAQ,CAACA,OAA6EA,GAAE;AAAA,IACxF,QAAQ,CAACA,OAA6EA,GAAE;AAAA,IACxF,OAAO,CAACA,OAA4EA,GAAE;AAAA,IACtF,SAAS,CAACA,OAAM,kBAAkBA,GAAE,MAAM;AAAA,IAC1C,OAAO,CAACA,OAAM,kBAAkBA,GAAE,IAAI;AAAA,IACtC,OAAO,CAACA,OAAMA,GAAE;AAAA,IAChB,OAAO,CAACA,OAAMA,GAAE;AAAA,IAChB,UAAU,CAACA,OAA4B,qBAAqBA,EAAC;AAAA,IAC7D,cAAc,CAACA,OAAMA,GAAE,MAAMA,GAAE,IAAI,MAAM;AACvC,eAASA,GAAE,MAAM;AAAA,IACnB;AAAA,IACA,WAAW,CAACA,OAAMA,GAAE,MAAMA,GAAE,IAAI,SAAS,KAAKA,GAAE,KAAK;AAAA,IACrD,QAAQ,CAACA,OAA4B,cAAc,KAAKA,EAAC;AAAA,EAAI,CAC9D;AAAA;AAGH,MAAM,kBAAkB,CAAC,OAAO,QAAQ,UAAU,aAAa,CAAC,MAAM,mBAAmB,OAAO,OAAO,GAAG;AAC1G,MAAM,8BAA8B;AAAA,EAClC,IAAI,EAAE,GAAG,SAAA,GAAY,KAAK;AACxB,QAAI,QAAQ,YAAY;AACtB,aAAO;AAAA,IACT;AACA,UAAM,EAAE,KAAK,YAAY,MAAM,OAAO,aAAa,MAAM,eAAe;AAIxE,QAAI,IAAI,CAAC,MAAM,KAAK;AAClB,YAAM,IAAI,YAAY,GAAG;AACzB,UAAI,MAAM,QAAQ;AAChB,gBAAQ,GAAA;AAAA,UACN,KAAK;AACH,mBAAO,WAAW,GAAG;AAAA,UACvB,KAAK;AACH,mBAAO,KAAK,GAAG;AAAA,UACjB,KAAK;AACH,mBAAO,IAAI,GAAG;AAAA,UAChB,KAAK;AACH,mBAAO,MAAM,GAAG;AAAA,QAAA;AAAA,MAEtB,WAAW,gBAAgB,YAAY,GAAG,GAAG;AAC3C,oBAAY,GAAG,IAAI;AACnB,eAAO,WAAW,GAAG;AAAA,MACvB,WAAkC,SAAS,aAAa,OAAO,MAAM,GAAG,GAAG;AACzE,oBAAY,GAAG,IAAI;AACnB,eAAO,KAAK,GAAG;AAAA,MACjB,WAAW,OAAO,OAAO,GAAG,GAAG;AAC7B,oBAAY,GAAG,IAAI;AACnB,eAAO,MAAM,GAAG;AAAA,MAClB,WAAW,QAAQ,aAAa,OAAO,KAAK,GAAG,GAAG;AAChD,oBAAY,GAAG,IAAI;AACnB,eAAO,IAAI,GAAG;AAAA,MAChB,WAAmC,mBAAmB;AACpD,oBAAY,GAAG,IAAI;AAAA,MACrB;AAAA,IACF;AACA,UAAM,eAAe,oBAAoB,GAAG;AAC5C,QAAI,WAAW;AACf,QAAI,cAAc;AAChB,UAAI,QAAQ,UAAU;AACpB,cAAM,SAAS,OAAO,OAAO,EAAE;AAAA,MAEjC;AAGA,aAAO,aAAa,QAAQ;AAAA,IAC9B;AAAA;AAAA,OAEG,YAAY,KAAK,kBAAkB,YAAY,UAAU,GAAG;AAAA,MAC7D;AACA,aAAO;AAAA,IACT,WAAW,QAAQ,aAAa,OAAO,KAAK,GAAG,GAAG;AAChD,kBAAY,GAAG,IAAI;AACnB,aAAO,IAAI,GAAG;AAAA,IAChB;AAAA;AAAA,MAEE,mBAAmB,WAAW,OAAO,kBAAkB,OAAO,kBAAkB,GAAG;AAAA,MACnF;AACA;AACE,eAAO,iBAAiB,GAAG;AAAA,MAC7B;AAAA,IACF;EAeF;AAAA,EACA,IAAI,EAAE,GAAG,SAAA,GAAY,KAAK,OAAO;AAC/B,UAAM,EAAE,MAAM,YAAY,IAAA,IAAQ;AAClC,QAAI,gBAAgB,YAAY,GAAG,GAAG;AACpC,iBAAW,GAAG,IAAI;AAClB,aAAO;AAAA,IACT,WAGkC,SAAS,aAAa,OAAO,MAAM,GAAG,GAAG;AACzE,WAAK,GAAG,IAAI;AACZ,aAAO;AAAA,IACT,WAAW,OAAO,SAAS,OAAO,GAAG,GAAG;AAEtC,aAAO;AAAA,IACT;AACA,QAAI,IAAI,CAAC,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK,UAAU;AAI9C,aAAO;AAAA,IACT,OAAO;AAOE;AACL,YAAI,GAAG,IAAI;AAAA,MACb;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI;AAAA,IACF,GAAG,EAAE,MAAM,YAAY,aAAa,KAAK,YAAY,OAAO,KAAA;AAAA,EAAK,GAChE,KAAK;AACN,QAAI;AACJ,WAAO,CAAC,EAAE,YAAY,GAAG,KAA4B,SAAS,aAAa,IAAI,CAAC,MAAM,OAAO,OAAO,MAAM,GAAG,KAAK,gBAAgB,YAAY,GAAG,KAAK,OAAO,OAAO,GAAG,KAAK,OAAO,KAAK,GAAG,KAAK,OAAO,qBAAqB,GAAG,KAAK,OAAO,WAAW,OAAO,kBAAkB,GAAG,MAAM,aAAa,KAAK,iBAAiB,WAAW,GAAG;AAAA,EAC3U;AAAA,EACA,eAAe,QAAQ,KAAK,YAAY;AACtC,QAAI,WAAW,OAAO,MAAM;AAC1B,aAAO,EAAE,YAAY,GAAG,IAAI;AAAA,IAC9B,WAAW,OAAO,YAAY,OAAO,GAAG;AACtC,WAAK,IAAI,QAAQ,KAAK,WAAW,OAAO,IAAI;AAAA,IAC9C;AACA,WAAO,QAAQ,eAAe,QAAQ,KAAK,UAAU;AAAA,EACvD;AACF;AA4IA,SAAS,sBAAsB,OAAO;AACpC,SAAO,QAAQ,KAAK,IAAI,MAAM;AAAA,IAC5B,CAAC,YAAYe,QAAO,WAAWA,EAAC,IAAI,MAAM;AAAA,IAC1C,CAAA;AAAA,EAAC,IACC;AACN;AAoEA,IAAI,oBAAoB;AACxB,SAAS,aAAa,UAAU;AAC9B,QAAM,UAAU,qBAAqB,QAAQ;AAC7C,QAAM,aAAa,SAAS;AAC5B,QAAM,MAAM,SAAS;AACrB,sBAAoB;AACpB,MAAI,QAAQ,cAAc;AACxBC,eAAS,QAAQ,cAAc,UAAU,IAAI;AAAA,EAC/C;AACA,QAAM;AAAA;AAAA,IAEJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA;AAAA,IAER;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AACJ,QAAM,2BAAkG;AASxG,MAAI,eAAe;AACjB,sBAAkB,eAAe,KAAK,wBAAwB;AAAA,EAChE;AACA,MAAI,SAAS;AACX,eAAW,OAAO,SAAS;AACzB,YAAM,gBAAgB,QAAQ,GAAG;AACjC,UAAI,WAAW,aAAa,GAAG;AAQtB;AACL,cAAI,GAAG,IAAI,cAAc,KAAK,UAAU;AAAA,QAC1C;AAAA,MAIF;AAAA,IAKF;AAAA,EACF;AACA,MAAI,aAAa;AAMf,UAAM,OAAO,YAAY,KAAK,YAAY,UAAU;AAMpD,QAAI,CAAC,SAAS,IAAI,EAAG;AAAA,SAEd;AACL,eAAS,OAAO,SAAS,IAAI;AAAA,IAc/B;AAAA,EACF;AACA,sBAAoB;AACpB,MAAI,iBAAiB;AACnB,eAAW,OAAO,iBAAiB;AACjC,YAAM,MAAM,gBAAgB,GAAG;AAC/B,YAAM,MAAM,WAAW,GAAG,IAAI,IAAI,KAAK,YAAY,UAAU,IAAI,WAAW,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,YAAY,UAAU,IAAI;AAI9H,YAAM,MAAM,CAAC,WAAW,GAAG,KAAK,WAAW,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,UAAU,IAIzE;AACJ,YAAMd,KAAI,SAAS;AAAA,QACjB;AAAA,QACA;AAAA,MAAA,CACD;AACD,aAAO,eAAe,KAAK,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAMA,GAAE;AAAA,QACb,KAAK,CAACK,OAAML,GAAE,QAAQK;AAAA,MAAA,CACvB;AAAA,IAIH;AAAA,EACF;AACA,MAAI,cAAc;AAChB,eAAW,OAAO,cAAc;AAC9B,oBAAc,aAAa,GAAG,GAAG,KAAK,YAAY,GAAG;AAAA,IACvD;AAAA,EACF;AACA,MAAI,gBAAgB;AAClB,UAAM,WAAW,WAAW,cAAc,IAAI,eAAe,KAAK,UAAU,IAAI;AAChF,YAAQ,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACzC,cAAQ,KAAK,SAAS,GAAG,CAAC;AAAA,IAC5B,CAAC;AAAA,EACH;AACA,MAAI,SAAS;AACXS,eAAS,SAAS,UAAU,GAAG;AAAA,EACjC;AACA,WAAS,sBAAsB,UAAU,MAAM;AAC7C,QAAI,QAAQ,IAAI,GAAG;AACjB,WAAK,QAAQ,CAAC,UAAU,SAAS,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,IAC1D,WAAW,MAAM;AACf,eAAS,KAAK,KAAK,UAAU,CAAC;AAAA,IAChC;AAAA,EACF;AACA,wBAAsB,eAAe,WAAW;AAChD,wBAAsB,WAAW,OAAO;AACxC,wBAAsB,gBAAgB,YAAY;AAClD,wBAAsB,WAAW,OAAO;AACxC,wBAAsB,aAAa,SAAS;AAC5C,wBAAsB,eAAe,WAAW;AAChD,wBAAsB,iBAAiB,aAAa;AACpD,wBAAsB,iBAAiB,aAAa;AACpD,wBAAsB,mBAAmB,eAAe;AACxD,wBAAsB,iBAAiB,aAAa;AACpD,wBAAsB,aAAa,SAAS;AAC5C,wBAAsB,kBAAkB,cAAc;AACtD,MAAI,QAAQ,MAAM,GAAG;AACnB,QAAI,OAAO,QAAQ;AACjB,YAAM,UAAU,SAAS,YAAY,SAAS,UAAU,CAAA;AACxD,aAAO,QAAQ,CAAC,QAAQ;AACtB,eAAO,eAAe,SAAS,KAAK;AAAA,UAClC,KAAK,MAAM,WAAW,GAAG;AAAA,UACzB,KAAK,CAAC,QAAQ,WAAW,GAAG,IAAI;AAAA,UAChC,YAAY;AAAA,QAAA,CACb;AAAA,MACH,CAAC;AAAA,IACH,WAAW,CAAC,SAAS,SAAS;AAC5B,eAAS,UAAU,CAAA;AAAA,IACrB;AAAA,EACF;AACA,MAAI,UAAU,SAAS,WAAW,MAAM;AACtC,aAAS,SAAS;AAAA,EACpB;AACA,MAAI,gBAAgB,MAAM;AACxB,aAAS,eAAe;AAAA,EAC1B;AACA,MAAI,qBAAqB,aAAa;AACtC,MAAI,qBAAqB,aAAa;AACtC,MAAI,gBAAgB;AAClB,sBAAkB,QAAQ;AAAA,EAC5B;AACF;AACA,SAAS,kBAAkB,eAAe,KAAK,2BAA2B,MAAM;AAC9E,MAAI,QAAQ,aAAa,GAAG;AAC1B,oBAAgB,gBAAgB,aAAa;AAAA,EAC/C;AACA,aAAW,OAAO,eAAe;AAC/B,UAAM,MAAM,cAAc,GAAG;AAC7B,QAAI;AACJ,QAAI,SAAS,GAAG,GAAG;AACjB,UAAI,aAAa,KAAK;AACpB,mBAAW;AAAA,UACT,IAAI,QAAQ;AAAA,UACZ,IAAI;AAAA,UACJ;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,mBAAW,OAAO,IAAI,QAAQ,GAAG;AAAA,MACnC;AAAA,IACF,OAAO;AACL,iBAAW,OAAO,GAAG;AAAA,IACvB;AACA,QAAI,MAAM,QAAQ,GAAG;AACnB,aAAO,eAAe,KAAK,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAM,SAAS;AAAA,QACpB,KAAK,CAACT,OAAM,SAAS,QAAQA;AAAA,MAAA,CAC9B;AAAA,IACH,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EAIF;AACF;AACA,SAASS,WAAS,MAAM,UAAU,MAAM;AACtC;AAAA,IACE,QAAQ,IAAI,IAAI,KAAK,IAAI,CAACG,OAAMA,GAAE,KAAK,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,KAAK;AAAA,IAClF;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,cAAc,KAAK,KAAK,YAAY,KAAK;AAChD,MAAI,SAAS,IAAI,SAAS,GAAG,IAAI,iBAAiB,YAAY,GAAG,IAAI,MAAM,WAAW,GAAG;AACzF,MAAI,SAAS,GAAG,GAAG;AACjB,UAAM,UAAU,IAAI,GAAG;AACvB,QAAI,WAAW,OAAO,GAAG;AACvB;AACE,cAAM,QAAQ,OAAO;AAAA,MACvB;AAAA,IACF;AAAA,EAGF,WAAW,WAAW,GAAG,GAAG;AAC1B;AACE,YAAM,QAAQ,IAAI,KAAK,UAAU,CAAC;AAAA,IACpC;AAAA,EACF,WAAW,SAAS,GAAG,GAAG;AACxB,QAAI,QAAQ,GAAG,GAAG;AAChB,UAAI,QAAQ,CAAC,MAAM,cAAc,GAAG,KAAK,YAAY,GAAG,CAAC;AAAA,IAC3D,OAAO;AACL,YAAM,UAAU,WAAW,IAAI,OAAO,IAAI,IAAI,QAAQ,KAAK,UAAU,IAAI,IAAI,IAAI,OAAO;AACxF,UAAI,WAAW,OAAO,GAAG;AACvB,cAAM,QAAQ,SAAS,GAAG;AAAA,MAC5B;AAAA,IAGF;AAAA,EACF;AAGF;AACA,SAAS,qBAAqB,UAAU;AACtC,QAAM,OAAO,SAAS;AACtB,QAAM,EAAE,QAAQ,SAAS,eAAA,IAAmB;AAC5C,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,QAAQ,EAAE,sBAAA;AAAA,EAAsB,IAC9B,SAAS;AACb,QAAM,SAAS,MAAM,IAAI,IAAI;AAC7B,MAAI;AACJ,MAAI,QAAQ;AACV,eAAW;AAAA,EACb,WAAW,CAAC,aAAa,UAAU,CAAC,UAAU,CAAC,gBAAgB;AAC7D;AACE,iBAAW;AAAA,IACb;AAAA,EACF,OAAO;AACL,eAAW,CAAA;AACX,QAAI,aAAa,QAAQ;AACvB,mBAAa;AAAA,QACX,CAACC,OAAM,aAAa,UAAUA,IAAG,uBAAuB,IAAI;AAAA,MAAA;AAAA,IAEhE;AACA,iBAAa,UAAU,MAAM,qBAAqB;AAAA,EACpD;AACA,MAAI,SAAS,IAAI,GAAG;AAClB,UAAM,IAAI,MAAM,QAAQ;AAAA,EAC1B;AACA,SAAO;AACT;AACA,SAAS,aAAa,IAAI,MAAM,QAAQ,UAAU,OAAO;AACvD,QAAM,EAAE,QAAQ,SAAS,eAAA,IAAmB;AAC5C,MAAI,gBAAgB;AAClB,iBAAa,IAAI,gBAAgB,QAAQ,IAAI;AAAA,EAC/C;AACA,MAAI,QAAQ;AACV,WAAO;AAAA,MACL,CAACA,OAAM,aAAa,IAAIA,IAAG,QAAQ,IAAI;AAAA,IAAA;AAAA,EAE3C;AACA,aAAW,OAAO,MAAM;AACtB,QAAI,WAAW,QAAQ,SAAU;AAAA,SAI1B;AACL,YAAM,QAAQ,0BAA0B,GAAG,KAAK,UAAU,OAAO,GAAG;AACpE,SAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG;AAAA,IACxD;AAAA,EACF;AACA,SAAO;AACT;AACA,MAAM,4BAA4B;AAAA,EAChC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA,EACT,UAAU;AAAA;AAAA,EAEV,cAAc;AAAA,EACd,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT,cAAc;AAAA,EACd,SAAS;AAAA,EACT,eAAe;AAAA,EACf,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA;AAAA,EAEhB,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAEZ,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA,EACT,QAAQ;AACV;AACA,SAAS,YAAY,IAAI,MAAM;AAC7B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AACA,SAAO,SAAS,eAAe;AAC7B,WAAQ;AAAA,MACN,WAAW,EAAE,IAAI,GAAG,KAAK,MAAM,IAAI,IAAI;AAAA,MACvC,WAAW,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI;AAAA,IAAA;AAAA,EAE/C;AACF;AACA,SAAS,YAAY,IAAI,MAAM;AAC7B,SAAO,mBAAmB,gBAAgB,EAAE,GAAG,gBAAgB,IAAI,CAAC;AACtE;AACA,SAAS,gBAAgB,KAAK;AAC5B,MAAI,QAAQ,GAAG,GAAG;AAChB,UAAM,MAAM,CAAA;AACZ,aAASpB,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,UAAI,IAAIA,EAAC,CAAC,IAAI,IAAIA,EAAC;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,aAAa,IAAI,MAAM;AAC9B,SAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAA,EAAG,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI;AAClD;AACA,SAAS,mBAAmB,IAAI,MAAM;AACpC,SAAO,KAAK,OAAuB,uBAAO,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI;AACtE;AACA,SAAS,yBAAyB,IAAI,MAAM;AAC1C,MAAI,IAAI;AACN,QAAI,QAAQ,EAAE,KAAK,QAAQ,IAAI,GAAG;AAChC,aAAO,CAAC,GAAmB,oBAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,IACtD;AACA,WAAO;AAAA,MACW,uBAAO,OAAO,IAAI;AAAA,MAClC,sBAAsB,EAAE;AAAA,MACxB,sBAAsB,QAAQ,OAAO,OAAO,CAAA,CAAE;AAAA,IAAA;AAAA,EAElD,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,kBAAkB,IAAI,MAAM;AACnC,MAAI,CAAC,GAAI,QAAO;AAChB,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,SAAS,OAAuB,uBAAO,OAAO,IAAI,GAAG,EAAE;AAC7D,aAAW,OAAO,MAAM;AACtB,WAAO,GAAG,IAAI,aAAa,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC;AAAA,EAC/C;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB;AAC1B,SAAO;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,aAAa;AAAA,MACb,kBAAkB,CAAA;AAAA,MAClB,uBAAuB,CAAA;AAAA,MACvB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,iBAAiB,CAAA;AAAA,IAAC;AAAA,IAEpB,QAAQ,CAAA;AAAA,IACR,YAAY,CAAA;AAAA,IACZ,YAAY,CAAA;AAAA,IACZ,UAA0B,uBAAO,OAAO,IAAI;AAAA,IAC5C,kCAAkC,QAAA;AAAA,IAClC,gCAAgC,QAAA;AAAA,IAChC,gCAAgC,QAAA;AAAA,EAAQ;AAE5C;AACA,IAAI,QAAQ;AACZ,SAAS,aAAa,QAAQ,SAAS;AACrC,SAAO,SAASqB,WAAU,eAAe,YAAY,MAAM;AACzD,QAAI,CAAC,WAAW,aAAa,GAAG;AAC9B,sBAAgB,OAAO,CAAA,GAAI,aAAa;AAAA,IAC1C;AACA,QAAI,aAAa,QAAQ,CAAC,SAAS,SAAS,GAAG;AAE7C,kBAAY;AAAA,IACd;AACA,UAAM,UAAU,iBAAA;AAChB,UAAM,uCAAuC,QAAA;AAC7C,UAAM,mBAAmB,CAAA;AACzB,QAAI,YAAY;AAChB,UAAMC,OAAM,QAAQ,MAAM;AAAA,MACxB,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,MACA,IAAI,SAAS;AACX,eAAO,QAAQ;AAAA,MACjB;AAAA,MACA,IAAI,OAAOf,IAAG;AAAA,MAMd;AAAA,MACA,IAAI,WAAW,SAAS;AACtB,YAAI,iBAAiB,IAAI,MAAM,EAAG;AAAA,iBAEvB,UAAU,WAAW,OAAO,OAAO,GAAG;AAC/C,2BAAiB,IAAI,MAAM;AAC3B,iBAAO,QAAQe,MAAK,GAAG,OAAO;AAAA,QAChC,WAAW,WAAW,MAAM,GAAG;AAC7B,2BAAiB,IAAI,MAAM;AAC3B,iBAAOA,MAAK,GAAG,OAAO;AAAA,QACxB;AAKA,eAAOA;AAAA,MACT;AAAA,MACA,MAAM,OAAO;AACc;AACvB,cAAI,CAAC,QAAQ,OAAO,SAAS,KAAK,GAAG;AACnC,oBAAQ,OAAO,KAAK,KAAK;AAAA,UAC3B;AAAA,QAKF;AAGA,eAAOA;AAAA,MACT;AAAA,MACA,UAAU,MAAM,WAAW;AAIzB,YAAI,CAAC,WAAW;AACd,iBAAO,QAAQ,WAAW,IAAI;AAAA,QAChC;AAIA,gBAAQ,WAAW,IAAI,IAAI;AAC3B,eAAOA;AAAA,MACT;AAAA,MACA,UAAU,MAAM,WAAW;AAIzB,YAAI,CAAC,WAAW;AACd,iBAAO,QAAQ,WAAW,IAAI;AAAA,QAChC;AAIA,gBAAQ,WAAW,IAAI,IAAI;AAC3B,eAAOA;AAAA,MACT;AAAA,MACA,MAAM,eAAe,WAAW,WAAW;AACzC,YAAI,CAAC,WAAW;AAOd,gBAAM,QAAQA,KAAI,YAAY,YAAY,eAAe,SAAS;AAClE,gBAAM,aAAa;AACnB,cAAI,cAAc,MAAM;AACtB,wBAAY;AAAA,UACd,WAAW,cAAc,OAAO;AAC9B,wBAAY;AAAA,UACd;AAUO;AACL,mBAAO,OAAO,eAAe,SAAS;AAAA,UACxC;AACA,sBAAY;AACZ,UAAAA,KAAI,aAAa;AACjB,wBAAc,cAAcA;AAK5B,iBAAO,2BAA2B,MAAM,SAAS;AAAA,QACnD;AAAA,MAMF;AAAA,MACA,UAAU,WAAW;AAMnB,yBAAiB,KAAK,SAAS;AAAA,MACjC;AAAA,MACA,UAAU;AACR,YAAI,WAAW;AACb;AAAA,YACE;AAAA,YACAA,KAAI;AAAA,YACJ;AAAA,UAAA;AAEF,iBAAO,MAAMA,KAAI,UAAU;AAK3B,iBAAOA,KAAI,WAAW;AAAA,QACxB;AAAA,MAGF;AAAA,MACA,QAAQ,KAAK,OAAO;AAYlB,gBAAQ,SAAS,GAAG,IAAI;AACxB,eAAOA;AAAA,MACT;AAAA,MACA,eAAe,IAAI;AACjB,cAAM,UAAU;AAChB,qBAAaA;AACb,YAAI;AACF,iBAAO,GAAA;AAAA,QACT,UAAA;AACE,uBAAa;AAAA,QACf;AAAA,MACF;AAAA,IAAA;AAEF,WAAOA;AAAA,EACT;AACF;AACA,IAAI,aAAa;AAiEjB,MAAM,oBAAoB,CAAC,OAAO,cAAc;AAC9C,SAAO,cAAc,gBAAgB,cAAc,gBAAgB,MAAM,iBAAiB,MAAM,GAAG,SAAS,WAAW,KAAK,MAAM,GAAG,SAAS,SAAS,CAAC,WAAW,KAAK,MAAM,GAAG,UAAU,SAAS,CAAC,WAAW;AAClN;AAEA,SAAS,KAAK,UAAU,UAAU,SAAS;AACzC,MAAI,SAAS,YAAa;AAC1B,QAAM,QAAQ,SAAS,MAAM,SAAS;AA0BtC,MAAI,OAAO;AACX,QAAMC,mBAAkB,MAAM,WAAW,SAAS;AAClD,QAAM,YAAYA,oBAAmB,kBAAkB,OAAO,MAAM,MAAM,CAAC,CAAC;AAC5E,MAAI,WAAW;AACb,QAAI,UAAU,MAAM;AAClB,aAAO,QAAQ,IAAI,CAACnB,OAAM,SAASA,EAAC,IAAIA,GAAE,KAAA,IAASA,EAAC;AAAA,IACtD;AACA,QAAI,UAAU,QAAQ;AACpB,aAAO,QAAQ,IAAI,aAAa;AAAA,IAClC;AAAA,EACF;AAiBA,MAAI;AACJ,MAAI,UAAU,MAAM,cAAc,aAAa,KAAK,CAAC;AAAA,EACrD,MAAM,cAAc,aAAa,SAAS,KAAK,CAAC,CAAC;AACjD,MAAI,CAAC,WAAWmB,kBAAiB;AAC/B,cAAU,MAAM,cAAc,aAAa,UAAU,KAAK,CAAC,CAAC;AAAA,EAC9D;AACA,MAAI,SAAS;AACX;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACA,QAAM,cAAc,MAAM,cAAc,MAAM;AAC9C,MAAI,aAAa;AACf,QAAI,CAAC,SAAS,SAAS;AACrB,eAAS,UAAU,CAAA;AAAA,IACrB,WAAW,SAAS,QAAQ,WAAW,GAAG;AACxC;AAAA,IACF;AACA,aAAS,QAAQ,WAAW,IAAI;AAChC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF;AACA,MAAM,sCAAsC,QAAA;AAC5C,SAAS,sBAAsB,MAAM,YAAY,UAAU,OAAO;AAChE,QAAM,QAA+B,UAAU,kBAAkB,WAAW;AAC5E,QAAM,SAAS,MAAM,IAAI,IAAI;AAC7B,MAAI,WAAW,QAAQ;AACrB,WAAO;AAAA,EACT;AACA,QAAM,MAAM,KAAK;AACjB,MAAI,aAAa,CAAA;AACjB,MAAI,aAAa;AACjB,MAA2B,CAAC,WAAW,IAAI,GAAG;AAC5C,UAAM,cAAc,CAAC,SAAS;AAC5B,YAAM,uBAAuB,sBAAsB,MAAM,YAAY,IAAI;AACzE,UAAI,sBAAsB;AACxB,qBAAa;AACb,eAAO,YAAY,oBAAoB;AAAA,MACzC;AAAA,IACF;AACA,QAAI,CAAC,WAAW,WAAW,OAAO,QAAQ;AACxC,iBAAW,OAAO,QAAQ,WAAW;AAAA,IACvC;AACA,QAAI,KAAK,SAAS;AAChB,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,QAAQ,WAAW;AAAA,IACjC;AAAA,EACF;AACA,MAAI,CAAC,OAAO,CAAC,YAAY;AACvB,QAAI,SAAS,IAAI,GAAG;AAClB,YAAM,IAAI,MAAM,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,GAAG,GAAG;AAChB,QAAI,QAAQ,CAAC,QAAQ,WAAW,GAAG,IAAI,IAAI;AAAA,EAC7C,OAAO;AACL,WAAO,YAAY,GAAG;AAAA,EACxB;AACA,MAAI,SAAS,IAAI,GAAG;AAClB,UAAM,IAAI,MAAM,UAAU;AAAA,EAC5B;AACA,SAAO;AACT;AACA,SAAS,eAAe,SAAS,KAAK;AACpC,MAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG;AAC1B,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,CAAC,EAAE,QAAQ,SAAS,EAAE;AACtC,SAAO,OAAO,SAAS,IAAI,CAAC,EAAE,YAAA,IAAgB,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,SAAS,UAAU,GAAG,CAAC,KAAK,OAAO,SAAS,GAAG;AACvH;AAGA,SAAS,oBAAoB;AAE7B;AACA,SAAS,oBAAoB,UAAU;AACrC,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,CAAC,YAAY;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,MAAAC;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AACJ,QAAM,OAAO,4BAA4B,QAAQ;AACjD,MAAI;AACJ,MAAI;AAIJ,MAAI;AACF,QAAI,MAAM,YAAY,GAAG;AACvB,YAAM,aAAa,aAAa;AAChC,YAAM,YAAY,QAA0E,IAAI,MAAM,YAAY;AAAA,QAChH,IAAI,QAAQ,KAAK,UAAU;AACzB;AAAA,YACE,aAAa;AAAA,cACX;AAAA,YAAA,CACD;AAAA,UAAA;AAEH,iBAAO,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AAAA,QAC1C;AAAA,MAAA,CACD,IAAI;AACL,eAAS;AAAA,QACP,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAA4C,gBAAgB,KAAK,IAAI;AAAA,UACrE;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAEF,yBAAmB;AAAA,IACrB,OAAO;AACL,YAAM,UAAU;AAChB,UAAI,MAA8D;AAGlE,eAAS;AAAA,QACP,QAAQ,SAAS,IAAI;AAAA,UACnB,QAA4C,gBAAgB,KAAK,IAAI;AAAA,UACrE,QAA4C;AAAA,YAC1C,IAAI,QAAQ;AACV,gCAAA;AACA,qBAAO,gBAAgB,KAAK;AAAA,YAC9B;AAAA,YACA;AAAA,YACA,MAAAA;AAAAA,UAAA,IACE,EAAE,OAAO,OAAO,MAAAA,MAAAA;AAAAA,QAAK,IACvB;AAAA,UACF,QAA4C,gBAAgB,KAAK,IAAI;AAAA,UACrE;AAAA,QAAA;AAAA,MACF;AAEF,yBAAmB,UAAU,QAAQ,QAAQ,yBAAyB,KAAK;AAAA,IAC7E;AAAA,EACF,SAAS,KAAK;AACZ,eAAW,SAAS;AACpB,gBAAY,KAAK,UAAU,CAAC;AAC5B,aAAS,YAAY,OAAO;AAAA,EAC9B;AACA,MAAI,OAAO;AAKX,MAAI,oBAAoB,iBAAiB,OAAO;AAC9C,UAAM,OAAO,OAAO,KAAK,gBAAgB;AACzC,UAAM,EAAE,cAAc;AACtB,QAAI,KAAK,QAAQ;AACf,UAAI,aAAa,IAAI,IAAI;AACvB,YAAI,gBAAgB,KAAK,KAAK,eAAe,GAAG;AAC9C,6BAAmB;AAAA,YACjB;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;AACA,eAAO,WAAW,MAAM,kBAAkB,OAAO,IAAI;AAAA,MACvD;AAAA,IAyBF;AAAA,EACF;AACA,MAAI,MAAM,MAAM;AAMd,WAAO,WAAW,MAAM,MAAM,OAAO,IAAI;AACzC,SAAK,OAAO,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM,IAAI,IAAI,MAAM;AAAA,EAC/D;AACA,MAAI,MAAM,YAAY;AAMpB,uBAAmB,MAAM,MAAM,UAAU;AAAA,EAC3C;AAGO;AACL,aAAS;AAAA,EACX;AACA,8BAA4B,IAAI;AAChC,SAAO;AACT;AA6CA,MAAM,2BAA2B,CAAC,UAAU;AAC1C,MAAI;AACJ,aAAW,OAAO,OAAO;AACvB,QAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,GAAG,GAAG;AACnD,OAAC,QAAQ,MAAM,CAAA,IAAK,GAAG,IAAI,MAAM,GAAG;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AACT;AACA,MAAM,uBAAuB,CAAC,OAAO,UAAU;AAC7C,QAAM,MAAM,CAAA;AACZ,aAAW,OAAO,OAAO;AACvB,QAAI,CAAC,gBAAgB,GAAG,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,QAAQ;AACrD,UAAI,GAAG,IAAI,MAAM,GAAG;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AACT;AAIA,SAAS,sBAAsB,WAAW,WAAW,WAAW;AAC9D,QAAM,EAAE,OAAO,WAAW,UAAU,cAAc,cAAc;AAChE,QAAM,EAAE,OAAO,WAAW,UAAU,cAAc,cAAc;AAChE,QAAM,QAAQ,UAAU;AAIxB,MAAI,UAAU,QAAQ,UAAU,YAAY;AAC1C,WAAO;AAAA,EACT;AACA,MAAI,aAAa,aAAa,GAAG;AAC/B,QAAI,YAAY,MAAM;AACpB,aAAO;AAAA,IACT;AACA,QAAI,YAAY,IAAI;AAClB,UAAI,CAAC,WAAW;AACd,eAAO,CAAC,CAAC;AAAA,MACX;AACA,aAAO,gBAAgB,WAAW,WAAW,KAAK;AAAA,IACpD,WAAW,YAAY,GAAG;AACxB,YAAM,eAAe,UAAU;AAC/B,eAASxB,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AAC5C,cAAM,MAAM,aAAaA,EAAC;AAC1B,YAAI,UAAU,GAAG,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,OAAO,GAAG,GAAG;AACpE,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,gBAAgB,cAAc;AAChC,UAAI,CAAC,gBAAgB,CAAC,aAAa,SAAS;AAC1C,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,cAAc,WAAW;AAC3B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,WAAW;AACd,aAAO,CAAC,CAAC;AAAA,IACX;AACA,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AACA,WAAO,gBAAgB,WAAW,WAAW,KAAK;AAAA,EACpD;AACA,SAAO;AACT;AACA,SAAS,gBAAgB,WAAW,WAAW,cAAc;AAC3D,QAAM,WAAW,OAAO,KAAK,SAAS;AACtC,MAAI,SAAS,WAAW,OAAO,KAAK,SAAS,EAAE,QAAQ;AACrD,WAAO;AAAA,EACT;AACA,WAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,UAAM,MAAM,SAASA,EAAC;AACtB,QAAI,UAAU,GAAG,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,cAAc,GAAG,GAAG;AAC3E,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,gBAAgB,EAAE,OAAO,OAAA,GAAU,IAAI;AAC9C,SAAO,QAAQ;AACb,UAAM,OAAO,OAAO;AACpB,QAAI,KAAK,YAAY,KAAK,SAAS,iBAAiB,OAAO;AACzD,WAAK,KAAK,MAAM;AAAA,IAClB;AACA,QAAI,SAAS,OAAO;AAClB,OAAC,QAAQ,OAAO,OAAO,KAAK;AAC5B,eAAS,OAAO;AAAA,IAClB,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,sBAAsB,CAAA;AAC5B,MAAM,uBAAuB,MAAM,OAAO,OAAO,mBAAmB;AACpE,MAAM,mBAAmB,CAAC,QAAQ,OAAO,eAAe,GAAG,MAAM;AAEjE,SAAS,UAAU,UAAU,UAAU,YAAY,QAAQ,OAAO;AAChE,QAAM,QAAQ,CAAA;AACd,QAAM,QAAQ,qBAAA;AACd,WAAS,gBAAgC,uBAAO,OAAO,IAAI;AAC3D,eAAa,UAAU,UAAU,OAAO,KAAK;AAC7C,aAAW,OAAO,SAAS,aAAa,CAAC,GAAG;AAC1C,QAAI,EAAE,OAAO,QAAQ;AACnB,YAAM,GAAG,IAAI;AAAA,IACf;AAAA,EACF;AAIA,MAAI,YAAY;AACd,aAAS,QAAQ,QAAQ,QAAQ,gBAAgB,KAAK;AAAA,EACxD,OAAO;AACL,QAAI,CAAC,SAAS,KAAK,OAAO;AACxB,eAAS,QAAQ;AAAA,IACnB,OAAO;AACL,eAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AACA,WAAS,QAAQ;AACnB;AAOA,SAAS,YAAY,UAAU,UAAU,cAAc,WAAW;AAChE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,UAAA;AAAA,EAAU,IACjB;AACJ,QAAM,kBAAkB,MAAM,KAAK;AACnC,QAAM,CAAC,OAAO,IAAI,SAAS;AAC3B,MAAI,kBAAkB;AACtB;AAAA;AAAA;AAAA;AAAA,KAI+E,aAAa,YAAY,MAAM,EAAE,YAAY;AAAA,IAC1H;AACA,QAAI,YAAY,GAAG;AACjB,YAAM,gBAAgB,SAAS,MAAM;AACrC,eAASA,KAAI,GAAGA,KAAI,cAAc,QAAQA,MAAK;AAC7C,YAAI,MAAM,cAAcA,EAAC;AACzB,YAAI,eAAe,SAAS,cAAc,GAAG,GAAG;AAC9C;AAAA,QACF;AACA,cAAM,QAAQ,SAAS,GAAG;AAC1B,YAAI,SAAS;AACX,cAAI,OAAO,OAAO,GAAG,GAAG;AACtB,gBAAI,UAAU,MAAM,GAAG,GAAG;AACxB,oBAAM,GAAG,IAAI;AACb,gCAAkB;AAAA,YACpB;AAAA,UACF,OAAO;AACL,kBAAM,eAAe,SAAS,GAAG;AACjC,kBAAM,YAAY,IAAI;AAAA,cACpB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF,OAAO;AACL,cAAI,UAAU,MAAM,GAAG,GAAG;AACxB,kBAAM,GAAG,IAAI;AACb,8BAAkB;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,aAAa,UAAU,UAAU,OAAO,KAAK,GAAG;AAClD,wBAAkB;AAAA,IACpB;AACA,QAAI;AACJ,eAAW,OAAO,iBAAiB;AACjC,UAAI,CAAC;AAAA,MACL,CAAC,OAAO,UAAU,GAAG;AAAA;AAAA,QAEnB,WAAW,UAAU,GAAG,OAAO,OAAO,CAAC,OAAO,UAAU,QAAQ,IAAI;AACpE,YAAI,SAAS;AACX,cAAI;AAAA,WACH,aAAa,GAAG,MAAM;AAAA,UACvB,aAAa,QAAQ,MAAM,SAAS;AAClC,kBAAM,GAAG,IAAI;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF,OAAO;AACL,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,QAAI,UAAU,iBAAiB;AAC7B,iBAAW,OAAO,OAAO;AACvB,YAAI,CAAC,YAAY,CAAC,OAAO,UAAU,GAAG,KAAK,MAAM;AAC/C,iBAAO,MAAM,GAAG;AAChB,4BAAkB;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,iBAAiB;AACnB,YAAQ,SAAS,OAAO,OAAO,EAAE;AAAA,EACnC;AAIF;AACA,SAAS,aAAa,UAAU,UAAU,OAAO,OAAO;AACtD,QAAM,CAAC,SAAS,YAAY,IAAI,SAAS;AACzC,MAAI,kBAAkB;AACtB,MAAI;AACJ,MAAI,UAAU;AACZ,aAAS,OAAO,UAAU;AACxB,UAAI,eAAe,GAAG,GAAG;AACvB;AAAA,MACF;AACA,YAAM,QAAQ,SAAS,GAAG;AAC1B,UAAI;AACJ,UAAI,WAAW,OAAO,SAAS,WAAW,SAAS,GAAG,CAAC,GAAG;AACxD,YAAI,CAAC,gBAAgB,CAAC,aAAa,SAAS,QAAQ,GAAG;AACrD,gBAAM,QAAQ,IAAI;AAAA,QACpB,OAAO;AACL,WAAC,kBAAkB,gBAAgB,CAAA,IAAK,QAAQ,IAAI;AAAA,QACtD;AAAA,MACF,WAAW,CAAC,eAAe,SAAS,cAAc,GAAG,GAAG;AACtD,YAAI,EAAE,OAAO,UAAU,UAAU,MAAM,GAAG,GAAG;AAC3C,gBAAM,GAAG,IAAI;AACb,4BAAkB;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,cAAc;AAChB,UAAM,kBAAkB,MAAM,KAAK;AACnC,UAAM,aAAa,iBAAiB;AACpC,aAASA,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AAC5C,YAAM,MAAM,aAAaA,EAAC;AAC1B,YAAM,GAAG,IAAI;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,GAAG;AAAA,QACd;AAAA,QACA,CAAC,OAAO,YAAY,GAAG;AAAA,MAAA;AAAA,IAE3B;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,SAAS,OAAO,KAAK,OAAO,UAAU,UAAU;AACxE,QAAM,MAAM,QAAQ,GAAG;AACvB,MAAI,OAAO,MAAM;AACf,UAAM,aAAa,OAAO,KAAK,SAAS;AACxC,QAAI,cAAc,UAAU,QAAQ;AAClC,YAAM,eAAe,IAAI;AACzB,UAAI,IAAI,SAAS,YAAY,CAAC,IAAI,eAAe,WAAW,YAAY,GAAG;AACzE,cAAM,EAAE,kBAAkB;AAC1B,YAAI,OAAO,eAAe;AACxB,kBAAQ,cAAc,GAAG;AAAA,QAC3B,OAAO;AACL,gBAAM,QAAQ,mBAAmB,QAAQ;AACzC,kBAAQ,cAAc,GAAG,IAAI,aAAa;AAAA,YACxC;AAAA,YACA;AAAA,UAAA;AAEF,gBAAA;AAAA,QACF;AAAA,MACF,OAAO;AACL,gBAAQ;AAAA,MACV;AACA,UAAI,SAAS,IAAI;AACf,iBAAS,GAAG,SAAS,KAAK,KAAK;AAAA,MACjC;AAAA,IACF;AACA,QAAI;AAAA,MAAI;AAAA;AAAA,IAAA,GAAqB;AAC3B,UAAI,YAAY,CAAC,YAAY;AAC3B,gBAAQ;AAAA,MACV,WAAW;AAAA,QAAI;AAAA;AAAA,MAAA,MAA4B,UAAU,MAAM,UAAU,UAAU,GAAG,IAAI;AACpF,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,MAAM,sCAAsC,QAAA;AAC5C,SAAS,sBAAsB,MAAM,YAAY,UAAU,OAAO;AAChE,QAAM,QAA+B,UAAU,kBAAkB,WAAW;AAC5E,QAAM,SAAS,MAAM,IAAI,IAAI;AAC7B,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AACA,QAAM,MAAM,KAAK;AACjB,QAAM,aAAa,CAAA;AACnB,QAAM,eAAe,CAAA;AACrB,MAAI,aAAa;AACjB,MAA2B,CAAC,WAAW,IAAI,GAAG;AAC5C,UAAM,cAAc,CAAC,SAAS;AAC5B,mBAAa;AACb,YAAM,CAAC,OAAO,IAAI,IAAI,sBAAsB,MAAM,YAAY,IAAI;AAClE,aAAO,YAAY,KAAK;AACxB,UAAI,KAAM,cAAa,KAAK,GAAG,IAAI;AAAA,IACrC;AACA,QAAI,CAAC,WAAW,WAAW,OAAO,QAAQ;AACxC,iBAAW,OAAO,QAAQ,WAAW;AAAA,IACvC;AACA,QAAI,KAAK,SAAS;AAChB,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,QAAQ,WAAW;AAAA,IACjC;AAAA,EACF;AACA,MAAI,CAAC,OAAO,CAAC,YAAY;AACvB,QAAI,SAAS,IAAI,GAAG;AAClB,YAAM,IAAI,MAAM,SAAS;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,GAAG,GAAG;AAChB,aAASA,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AAInC,YAAM,gBAAgB,SAAS,IAAIA,EAAC,CAAC;AACrC,UAAI,iBAAiB,aAAa,GAAG;AACnC,mBAAW,aAAa,IAAI;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,WAAW,KAAK;AAId,eAAW,OAAO,KAAK;AACrB,YAAM,gBAAgB,SAAS,GAAG;AAClC,UAAI,iBAAiB,aAAa,GAAG;AACnC,cAAM,MAAM,IAAI,GAAG;AACnB,cAAM,OAAO,WAAW,aAAa,IAAI,QAAQ,GAAG,KAAK,WAAW,GAAG,IAAI,EAAE,MAAM,IAAA,IAAQ,OAAO,CAAA,GAAI,GAAG;AACzG,cAAM,WAAW,KAAK;AACtB,YAAI,aAAa;AACjB,YAAI,iBAAiB;AACrB,YAAI,QAAQ,QAAQ,GAAG;AACrB,mBAAS,QAAQ,GAAG,QAAQ,SAAS,QAAQ,EAAE,OAAO;AACpD,kBAAM,OAAO,SAAS,KAAK;AAC3B,kBAAM,WAAW,WAAW,IAAI,KAAK,KAAK;AAC1C,gBAAI,aAAa,WAAW;AAC1B,2BAAa;AACb;AAAA,YACF,WAAW,aAAa,UAAU;AAChC,+BAAiB;AAAA,YACnB;AAAA,UACF;AAAA,QACF,OAAO;AACL,uBAAa,WAAW,QAAQ,KAAK,SAAS,SAAS;AAAA,QACzD;AACA;AAAA,UAAK;AAAA;AAAA,QAAA,IAAsB;AAC3B;AAAA,UAAK;AAAA;AAAA,QAAA,IAA0B;AAC/B,YAAI,cAAc,OAAO,MAAM,SAAS,GAAG;AACzC,uBAAa,KAAK,aAAa;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM,CAAC,YAAY,YAAY;AACrC,MAAI,SAAS,IAAI,GAAG;AAClB,UAAM,IAAI,MAAM,GAAG;AAAA,EACrB;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,KAAK;AAC7B,MAAI,IAAI,CAAC,MAAM,OAAO,CAAC,eAAe,GAAG,GAAG;AAC1C,WAAO;AAAA,EACT;AAGA,SAAO;AACT;AAqHA,MAAM,gBAAgB,CAAC,QAAQ,QAAQ,OAAO,QAAQ,UAAU,QAAQ;AACxE,MAAM,qBAAqB,CAAC,UAAU,QAAQ,KAAK,IAAI,MAAM,IAAI,cAAc,IAAI,CAAC,eAAe,KAAK,CAAC;AACzG,MAAM,gBAAgB,CAAC,KAAK,SAAS,QAAQ;AAC3C,MAAI,QAAQ,IAAI;AACd,WAAO;AAAA,EACT;AACA,QAAM,aAAa,QAAQ,IAAI,SAAS;AACtC,QAAI,MAA4J;AAKhK,WAAO,mBAAmB,QAAQ,GAAG,IAAI,CAAC;AAAA,EAC5C,GAAG,GAAG;AACN,aAAW,KAAK;AAChB,SAAO;AACT;AACA,MAAM,uBAAuB,CAAC,UAAU,OAAO,aAAa;AAC1D,QAAM,MAAM,SAAS;AACrB,aAAW,OAAO,UAAU;AAC1B,QAAI,cAAc,GAAG,EAAG;AACxB,UAAM,QAAQ,SAAS,GAAG;AAC1B,QAAI,WAAW,KAAK,GAAG;AACrB,YAAM,GAAG,IAAI,cAAc,KAAK,OAAO,GAAG;AAAA,IAC5C,WAAW,SAAS,MAAM;AAMxB,YAAM,aAAa,mBAAmB,KAAK;AAC3C,YAAM,GAAG,IAAI,MAAM;AAAA,IACrB;AAAA,EACF;AACF;AACA,MAAM,sBAAsB,CAAC,UAAU,aAAa;AAMlD,QAAM,aAAa,mBAAmB,QAAQ;AAC9C,WAAS,MAAM,UAAU,MAAM;AACjC;AACA,MAAM,cAAc,CAAC,OAAO,UAAU,cAAc;AAClD,aAAW,OAAO,UAAU;AAC1B,QAAI,aAAa,CAAC,cAAc,GAAG,GAAG;AACpC,YAAM,GAAG,IAAI,SAAS,GAAG;AAAA,IAC3B;AAAA,EACF;AACF;AACA,MAAM,YAAY,CAAC,UAAU,UAAU,cAAc;AACnD,QAAM,QAAQ,SAAS,QAAQ,qBAAA;AAC/B,MAAI,SAAS,MAAM,YAAY,IAAI;AACjC,UAAM,OAAO,SAAS;AACtB,QAAI,MAAM;AACR,kBAAY,OAAO,UAAU,SAAS;AACtC,UAAI,WAAW;AACb,YAAI,OAAO,KAAK,MAAM,IAAI;AAAA,MAC5B;AAAA,IACF,OAAO;AACL,2BAAqB,UAAU,KAAK;AAAA,IACtC;AAAA,EACF,WAAW,UAAU;AACnB,wBAAoB,UAAU,QAAQ;AAAA,EACxC;AACF;AACA,MAAM,cAAc,CAAC,UAAU,UAAU,cAAc;AACrD,QAAM,EAAE,OAAO,MAAA,IAAU;AACzB,MAAI,oBAAoB;AACxB,MAAI,2BAA2B;AAC/B,MAAI,MAAM,YAAY,IAAI;AACxB,UAAM,OAAO,SAAS;AACtB,QAAI,MAAM;AAIR,UAAW,aAAa,SAAS,GAAG;AAClC,4BAAoB;AAAA,MACtB,OAAO;AACL,oBAAY,OAAO,UAAU,SAAS;AAAA,MACxC;AAAA,IACF,OAAO;AACL,0BAAoB,CAAC,SAAS;AAC9B,2BAAqB,UAAU,KAAK;AAAA,IACtC;AACA,+BAA2B;AAAA,EAC7B,WAAW,UAAU;AACnB,wBAAoB,UAAU,QAAQ;AACtC,+BAA2B,EAAE,SAAS,EAAA;AAAA,EACxC;AACA,MAAI,mBAAmB;AACrB,eAAW,OAAO,OAAO;AACvB,UAAI,CAAC,cAAc,GAAG,KAAK,yBAAyB,GAAG,KAAK,MAAM;AAChE,eAAO,MAAM,GAAG;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;AAgEA,MAAM,wBAAwB;AAC9B,SAAS,eAAe,SAAS;AAC/B,SAAO,mBAAmB,OAAO;AACnC;AAIA,SAAS,mBAAmB,SAAS,oBAAoB;AAIvD,QAAM,SAAS,cAAA;AACf,SAAO,UAAU;AAIjB,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,YAAY,iBAAiB;AAAA,IAC7B,qBAAqB;AAAA,EAAA,IACnB;AACJ,QAAM,QAAQ,CAAC,IAAI,IAAI,WAAW,SAAS,MAAM,kBAAkB,MAAM,iBAAiB,MAAM,YAAY,QAAQ,eAAe,MAAM,YAAiF,CAAC,CAAC,GAAG,oBAAoB;AACjP,QAAI,OAAO,IAAI;AACb;AAAA,IACF;AACA,QAAI,MAAM,CAAC,gBAAgB,IAAI,EAAE,GAAG;AAClC,eAAS,gBAAgB,EAAE;AAC3B,cAAQ,IAAI,iBAAiB,gBAAgB,IAAI;AACjD,WAAK;AAAA,IACP;AACA,QAAI,GAAG,cAAc,IAAI;AACvB,kBAAY;AACZ,SAAG,kBAAkB;AAAA,IACvB;AACA,UAAM,EAAE,MAAM,KAAAkB,MAAK,cAAc;AACjC,YAAQ,MAAA;AAAA,MACN,KAAK;AACH,oBAAY,IAAI,IAAI,WAAW,MAAM;AACrC;AAAA,MACF,KAAK;AACH,2BAAmB,IAAI,IAAI,WAAW,MAAM;AAC5C;AAAA,MACF,KAAK;AACH,YAAI,MAAM,MAAM;AACd,0BAAgB,IAAI,WAAW,QAAQ,SAAS;AAAA,QAClD;AAGA;AAAA,MACF,KAAK;AACH;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAEF;AAAA,MACF;AACE,YAAI,YAAY,GAAG;AACjB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,WAAW,YAAY,GAAG;AACxB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,WAAW,YAAY,IAAI;AACzB,eAAK;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,WAAW,YAAY,KAAK;AAC1B,eAAK;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;IAEA;AAEJ,QAAIA,QAAO,QAAQ,iBAAiB;AAClC,aAAOA,MAAK,MAAM,GAAG,KAAK,gBAAgB,MAAM,IAAI,CAAC,EAAE;AAAA,IACzD,WAAWA,QAAO,QAAQ,MAAM,GAAG,OAAO,MAAM;AAC9C,aAAO,GAAG,KAAK,MAAM,gBAAgB,IAAI,IAAI;AAAA,IAC/C;AAAA,EACF;AACA,QAAM,cAAc,CAAC,IAAI,IAAI,WAAW,WAAW;AACjD,QAAI,MAAM,MAAM;AACd;AAAA,QACE,GAAG,KAAK,eAAe,GAAG,QAAQ;AAAA,QAClC;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,OAAO;AACL,YAAM,KAAK,GAAG,KAAK,GAAG;AACtB,UAAI,GAAG,aAAa,GAAG,UAAU;AAOxB;AACL,sBAAY,IAAI,GAAG,QAAQ;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,qBAAqB,CAAC,IAAI,IAAI,WAAW,WAAW;AACxD,QAAI,MAAM,MAAM;AACd;AAAA,QACE,GAAG,KAAK,kBAAkB,GAAG,YAAY,EAAE;AAAA,QAC3C;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,OAAO;AACL,SAAG,KAAK,GAAG;AAAA,IACb;AAAA,EACF;AACA,QAAM,kBAAkB,CAAC,IAAI,WAAW,QAAQ,cAAc;AAC5D,KAAC,GAAG,IAAI,GAAG,MAAM,IAAI;AAAA,MACnB,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,EAEP;AAgBA,QAAM,iBAAiB,CAAC,EAAE,IAAI,OAAA,GAAU,WAAW,gBAAgB;AACjE,QAAI;AACJ,WAAO,MAAM,OAAO,QAAQ;AAC1B,aAAO,gBAAgB,EAAE;AACzB,iBAAW,IAAI,WAAW,WAAW;AACrC,WAAK;AAAA,IACP;AACA,eAAW,QAAQ,WAAW,WAAW;AAAA,EAC3C;AACA,QAAM,mBAAmB,CAAC,EAAE,IAAI,aAAa;AAC3C,QAAI;AACJ,WAAO,MAAM,OAAO,QAAQ;AAC1B,aAAO,gBAAgB,EAAE;AACzB,iBAAW,EAAE;AACb,WAAK;AAAA,IACP;AACA,eAAW,MAAM;AAAA,EACnB;AACA,QAAM,iBAAiB,CAAC,IAAI,IAAI,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AACzH,QAAI,GAAG,SAAS,OAAO;AACrB,kBAAY;AAAA,IACd,WAAW,GAAG,SAAS,QAAQ;AAC7B,kBAAY;AAAA,IACd;AACA,QAAI,MAAM,MAAM;AACd;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,OAAO;AACL,YAAM,gBAAgB,CAAC,EAAE,GAAG,MAAM,GAAG,GAAG,YAAY,GAAG,KAAK;AAC5D,UAAI;AACF,YAAI,eAAe;AACjB,wBAAc,YAAA;AAAA,QAChB;AACA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,UAAA;AACE,YAAI,eAAe;AACjB,wBAAc,UAAA;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,eAAe,CAAC,OAAO,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AACtH,QAAI;AACJ,QAAI;AACJ,UAAM,EAAE,OAAO,WAAW,YAAY,SAAS;AAC/C,SAAK,MAAM,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA,SAAS,MAAM;AAAA,MACf;AAAA,IAAA;AAEF,QAAI,YAAY,GAAG;AACjB,yBAAmB,IAAI,MAAM,QAAQ;AAAA,IACvC,WAAW,YAAY,IAAI;AACzB;AAAA,QACE,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,yBAAyB,OAAO,SAAS;AAAA,QACzC;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,MAAM;AACR,0BAAoB,OAAO,MAAM,iBAAiB,SAAS;AAAA,IAC7D;AACA,eAAW,IAAI,OAAO,MAAM,SAAS,cAAc,eAAe;AAClE,QAAI,OAAO;AACT,iBAAW,OAAO,OAAO;AACvB,YAAI,QAAQ,WAAW,CAAC,eAAe,GAAG,GAAG;AAC3C,wBAAc,IAAI,KAAK,MAAM,MAAM,GAAG,GAAG,WAAW,eAAe;AAAA,QACrE;AAAA,MACF;AACA,UAAI,WAAW,OAAO;AACpB,sBAAc,IAAI,SAAS,MAAM,MAAM,OAAO,SAAS;AAAA,MACzD;AACA,UAAI,YAAY,MAAM,oBAAoB;AACxC,wBAAgB,WAAW,iBAAiB,KAAK;AAAA,MACnD;AAAA,IACF;AAKA,QAAI,MAAM;AACR,0BAAoB,OAAO,MAAM,iBAAiB,aAAa;AAAA,IACjE;AACA,UAAM,0BAA0B,eAAe,gBAAgB,UAAU;AACzE,QAAI,yBAAyB;AAC3B,iBAAW,YAAY,EAAE;AAAA,IAC3B;AACA,eAAW,IAAI,WAAW,MAAM;AAChC,SAAK,YAAY,SAAS,MAAM,mBAAmB,2BAA2B,MAAM;AAClF,4BAAsB,MAAM;AAC1B,qBAAa,gBAAgB,WAAW,iBAAiB,KAAK;AAC9D,mCAA2B,WAAW,MAAM,EAAE;AAC9C,gBAAQ,oBAAoB,OAAO,MAAM,iBAAiB,SAAS;AAAA,MACrE,GAAG,cAAc;AAAA,IACnB;AAAA,EACF;AACA,QAAM,aAAa,CAAC,IAAI,OAAO,SAAS,cAAc,oBAAoB;AACxE,QAAI,SAAS;AACX,qBAAe,IAAI,OAAO;AAAA,IAC5B;AACA,QAAI,cAAc;AAChB,eAASlB,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AAC5C,uBAAe,IAAI,aAAaA,EAAC,CAAC;AAAA,MACpC;AAAA,IACF;AACA,QAAI,iBAAiB;AACnB,UAAI,UAAU,gBAAgB;AAI9B,UAAI,UAAU,WAAW,WAAW,QAAQ,IAAI,MAAM,QAAQ,cAAc,SAAS,QAAQ,eAAe,QAAQ;AAClH,cAAM,cAAc,gBAAgB;AACpC;AAAA,UACE;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,gBAAgB;AAAA,QAAA;AAAA,MAEpB;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,CAAC,UAAU,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,WAAW,QAAQ,MAAM;AACrI,aAASA,KAAI,OAAOA,KAAI,SAAS,QAAQA,MAAK;AAC5C,YAAM,QAAQ,SAASA,EAAC,IAAI,YAAY,eAAe,SAASA,EAAC,CAAC,IAAI,eAAe,SAASA,EAAC,CAAC;AAChG;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACA,QAAM,eAAe,CAAC,IAAI,IAAI,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AACpG,UAAM,KAAK,GAAG,KAAK,GAAG;AAItB,QAAI,EAAE,WAAW,iBAAiB,KAAA,IAAS;AAC3C,iBAAa,GAAG,YAAY;AAC5B,UAAM,WAAW,GAAG,SAAS;AAC7B,UAAM,WAAW,GAAG,SAAS;AAC7B,QAAI;AACJ,uBAAmB,cAAc,iBAAiB,KAAK;AACvD,QAAI,YAAY,SAAS,qBAAqB;AAC5C,sBAAgB,WAAW,iBAAiB,IAAI,EAAE;AAAA,IACpD;AACA,QAAI,MAAM;AACR,0BAAoB,IAAI,IAAI,iBAAiB,cAAc;AAAA,IAC7D;AACA,uBAAmB,cAAc,iBAAiB,IAAI;AAMtD,QAAI,SAAS,aAAa,SAAS,aAAa,QAAQ,SAAS,eAAe,SAAS,eAAe,MAAM;AAC5G,yBAAmB,IAAI,EAAE;AAAA,IAC3B;AACA,QAAI,iBAAiB;AACnB;AAAA,QACE,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,yBAAyB,IAAI,SAAS;AAAA,QACtC;AAAA,MAAA;AAAA,IAKJ,WAAW,CAAC,WAAW;AACrB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,yBAAyB,IAAI,SAAS;AAAA,QACtC;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,YAAY,GAAG;AACjB,UAAI,YAAY,IAAI;AAClB,mBAAW,IAAI,UAAU,UAAU,iBAAiB,SAAS;AAAA,MAC/D,OAAO;AACL,YAAI,YAAY,GAAG;AACjB,cAAI,SAAS,UAAU,SAAS,OAAO;AACrC,0BAAc,IAAI,SAAS,MAAM,SAAS,OAAO,SAAS;AAAA,UAC5D;AAAA,QACF;AACA,YAAI,YAAY,GAAG;AACjB,wBAAc,IAAI,SAAS,SAAS,OAAO,SAAS,OAAO,SAAS;AAAA,QACtE;AACA,YAAI,YAAY,GAAG;AACjB,gBAAM,gBAAgB,GAAG;AACzB,mBAASA,KAAI,GAAGA,KAAI,cAAc,QAAQA,MAAK;AAC7C,kBAAM,MAAM,cAAcA,EAAC;AAC3B,kBAAM,OAAO,SAAS,GAAG;AACzB,kBAAM,OAAO,SAAS,GAAG;AACzB,gBAAI,SAAS,QAAQ,QAAQ,SAAS;AACpC,4BAAc,IAAI,KAAK,MAAM,MAAM,WAAW,eAAe;AAAA,YAC/D;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,YAAY,GAAG;AACjB,YAAI,GAAG,aAAa,GAAG,UAAU;AAC/B,6BAAmB,IAAI,GAAG,QAAQ;AAAA,QACpC;AAAA,MACF;AAAA,IACF,WAAW,CAAC,aAAa,mBAAmB,MAAM;AAChD,iBAAW,IAAI,UAAU,UAAU,iBAAiB,SAAS;AAAA,IAC/D;AACA,SAAK,YAAY,SAAS,mBAAmB,MAAM;AACjD,4BAAsB,MAAM;AAC1B,qBAAa,gBAAgB,WAAW,iBAAiB,IAAI,EAAE;AAC/D,gBAAQ,oBAAoB,IAAI,IAAI,iBAAiB,SAAS;AAAA,MAChE,GAAG,cAAc;AAAA,IACnB;AAAA,EACF;AACA,QAAM,qBAAqB,CAAC,aAAa,aAAa,mBAAmB,iBAAiB,gBAAgB,WAAW,iBAAiB;AACpI,aAASA,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AAC3C,YAAM,WAAW,YAAYA,EAAC;AAC9B,YAAM,WAAW,YAAYA,EAAC;AAC9B,YAAM;AAAA;AAAA;AAAA,QAGJ,SAAS;AAAA;AAAA,SAER,SAAS,SAAS;AAAA;AAAA,QAEnB,CAAC,gBAAgB,UAAU,QAAQ;AAAA,QACnC,SAAS,aAAa,IAAI,KAAK,QAAQ,eAAe,SAAS,EAAE;AAAA;AAAA;AAAA,UAG/D;AAAA;AAAA;AAGJ;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACA,QAAM,aAAa,CAAC,IAAI,UAAU,UAAU,iBAAiB,cAAc;AACzE,QAAI,aAAa,UAAU;AACzB,UAAI,aAAa,WAAW;AAC1B,mBAAW,OAAO,UAAU;AAC1B,cAAI,CAAC,eAAe,GAAG,KAAK,EAAE,OAAO,WAAW;AAC9C;AAAA,cACE;AAAA,cACA;AAAA,cACA,SAAS,GAAG;AAAA,cACZ;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MACF;AACA,iBAAW,OAAO,UAAU;AAC1B,YAAI,eAAe,GAAG,EAAG;AACzB,cAAM,OAAO,SAAS,GAAG;AACzB,cAAM,OAAO,SAAS,GAAG;AACzB,YAAI,SAAS,QAAQ,QAAQ,SAAS;AACpC,wBAAc,IAAI,KAAK,MAAM,MAAM,WAAW,eAAe;AAAA,QAC/D;AAAA,MACF;AACA,UAAI,WAAW,UAAU;AACvB,sBAAc,IAAI,SAAS,SAAS,OAAO,SAAS,OAAO,SAAS;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AACA,QAAM,kBAAkB,CAAC,IAAI,IAAI,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AAC1H,UAAM,sBAAsB,GAAG,KAAK,KAAK,GAAG,KAAK,eAAe,EAAE;AAClE,UAAM,oBAAoB,GAAG,SAAS,KAAK,GAAG,SAAS,eAAe,EAAE;AACxE,QAAI,EAAE,WAAW,iBAAiB,cAAc,yBAAyB;AAOzE,QAAI,sBAAsB;AACxB,qBAAe,eAAe,aAAa,OAAO,oBAAoB,IAAI;AAAA,IAC5E;AACA,QAAI,MAAM,MAAM;AACd,iBAAW,qBAAqB,WAAW,MAAM;AACjD,iBAAW,mBAAmB,WAAW,MAAM;AAC/C;AAAA;AAAA;AAAA;AAAA;AAAA,QAKE,GAAG,YAAY,CAAA;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,OAAO;AACL,UAAI,YAAY,KAAK,YAAY,MAAM;AAAA;AAAA,MAEvC,GAAG,mBAAmB,GAAG,gBAAgB,WAAW,gBAAgB,QAAQ;AAC1E;AAAA,UACE,GAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,GAAG,OAAO,QAAQ,mBAAmB,OAAO,gBAAgB;AAAA,UAC5D;AACA;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAAA;AAAA,QAGJ;AAAA,MACF,OAAO;AACL;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AACA,QAAM,mBAAmB,CAAC,IAAI,IAAI,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AAC3H,OAAG,eAAe;AAClB,QAAI,MAAM,MAAM;AACd,UAAI,GAAG,YAAY,KAAK;AACtB,wBAAgB,IAAI;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF,OAAO;AACL,sBAAgB,IAAI,IAAI,SAAS;AAAA,IACnC;AAAA,EACF;AACA,QAAM,iBAAiB,CAAC,cAAc,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc;AACjH,UAAM,WAAY,aAAa,YAAY;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AASF,QAAI,YAAY,YAAY,GAAG;AAC7B,eAAS,IAAI,WAAW;AAAA,IAC1B;AACA;AAIE,qBAAe,UAAU,OAAO,SAAS;AAAA,IAI3C;AAEA,QAAI,SAAS,UAAU;AACrB,wBAAkB,eAAe,YAAY,UAAU,mBAAmB,SAAS;AACnF,UAAI,CAAC,aAAa,IAAI;AACpB,cAAM,cAAc,SAAS,UAAU,YAAY,OAAO;AAC1D,2BAAmB,MAAM,aAAa,WAAW,MAAM;AACvD,qBAAa,cAAc,YAAY;AAAA,MACzC;AAAA,IACF,OAAO;AACL;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAKF;AACA,QAAM,kBAAkB,CAAC,IAAI,IAAI,cAAc;AAC7C,UAAM,WAAW,GAAG,YAAY,GAAG;AACnC,QAAI,sBAAsB,IAAI,IAAI,SAAS,GAAG;AAC5C,UAAI,SAAS,YAAY,CAAC,SAAS,eAAe;AAIhD,iCAAyB,UAAU,IAAI,SAAS;AAIhD;AAAA,MACF,OAAO;AACL,iBAAS,OAAO;AAChB,iBAAS,OAAA;AAAA,MACX;AAAA,IACF,OAAO;AACL,SAAG,KAAK,GAAG;AACX,eAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AACA,QAAM,oBAAoB,CAAC,UAAU,cAAc,WAAW,QAAQ,gBAAgB,WAAW,cAAc;AAC7G,UAAM,oBAAoB,MAAM;AAC9B,UAAI,CAAC,SAAS,WAAW;AACvB,YAAI;AACJ,cAAM,EAAE,IAAI,MAAA,IAAU;AACtB,cAAM,EAAE,IAAI,GAAAoB,IAAG,QAAQ,MAAM,SAAS;AACtC,cAAM,sBAAsB,eAAe,YAAY;AACvD,sBAAc,UAAU,KAAK;AAC7B,YAAI,IAAI;AACN,yBAAe,EAAE;AAAA,QACnB;AACA,YAAI,CAAC,wBAAwB,YAAY,SAAS,MAAM,qBAAqB;AAC3E,0BAAgB,WAAW,QAAQ,YAAY;AAAA,QACjD;AACA,sBAAc,UAAU,IAAI;AAiCrB;AACL,cAAI,KAAK;AAAA,UACT,KAAK,GAAG,KAAK,eAAe,OAAO;AACjC,iBAAK,GAAG,kBAAkB,IAAI;AAAA,UAChC;AAIA,gBAAM,UAAU,SAAS,UAAU,oBAAoB,QAAQ;AAO/D;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAKF,uBAAa,KAAK,QAAQ;AAAA,QAC5B;AACA,YAAIA,IAAG;AACL,gCAAsBA,IAAG,cAAc;AAAA,QACzC;AACA,YAAI,CAAC,wBAAwB,YAAY,SAAS,MAAM,iBAAiB;AACvE,gBAAM,qBAAqB;AAC3B;AAAA,YACE,MAAM,gBAAgB,WAAW,QAAQ,kBAAkB;AAAA,YAC3D;AAAA,UAAA;AAAA,QAEJ;AACA,YAAI,aAAa,YAAY,OAAO,UAAU,eAAe,OAAO,KAAK,KAAK,OAAO,MAAM,YAAY,KAAK;AAC1G,mBAAS,KAAK,sBAAsB,SAAS,GAAG,cAAc;AAAA,QAChE;AACA,iBAAS,YAAY;AAIrB,uBAAe,YAAY,SAAS;AAAA,MACtC,OAAO;AACL,YAAI,EAAE,MAAM,IAAI,GAAG,QAAQ,UAAU;AACrC;AACE,gBAAM,uBAAuB,2BAA2B,QAAQ;AAChE,cAAI,sBAAsB;AACxB,gBAAI,MAAM;AACR,mBAAK,KAAK,MAAM;AAChB,uCAAyB,UAAU,MAAM,SAAS;AAAA,YACpD;AACA,iCAAqB,SAAS,KAAK,MAAM;AACvC,kBAAI,CAAC,SAAS,aAAa;AACzB,kCAAA;AAAA,cACF;AAAA,YACF,CAAC;AACD;AAAA,UACF;AAAA,QACF;AACA,YAAI,aAAa;AACjB,YAAI;AAIJ,sBAAc,UAAU,KAAK;AAC7B,YAAI,MAAM;AACR,eAAK,KAAK,MAAM;AAChB,mCAAyB,UAAU,MAAM,SAAS;AAAA,QACpD,OAAO;AACL,iBAAO;AAAA,QACT;AACA,YAAI,IAAI;AACN,yBAAe,EAAE;AAAA,QACnB;AACA,YAAI,YAAY,KAAK,SAAS,KAAK,MAAM,qBAAqB;AAC5D,0BAAgB,WAAW,QAAQ,MAAM,KAAK;AAAA,QAChD;AACA,sBAAc,UAAU,IAAI;AAI5B,cAAM,WAAW,oBAAoB,QAAQ;AAI7C,cAAM,WAAW,SAAS;AAC1B,iBAAS,UAAU;AAInB;AAAA,UACE;AAAA,UACA;AAAA;AAAA,UAEA,eAAe,SAAS,EAAE;AAAA;AAAA,UAE1B,gBAAgB,QAAQ;AAAA,UACxB;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAKF,aAAK,KAAK,SAAS;AACnB,YAAI,eAAe,MAAM;AACvB,0BAAgB,UAAU,SAAS,EAAE;AAAA,QACvC;AACA,YAAI,GAAG;AACL,gCAAsB,GAAG,cAAc;AAAA,QACzC;AACA,YAAI,YAAY,KAAK,SAAS,KAAK,MAAM,gBAAgB;AACvD;AAAA,YACE,MAAM,gBAAgB,WAAW,QAAQ,MAAM,KAAK;AAAA,YACpD;AAAA,UAAA;AAAA,QAEJ;AAAA,MAOF;AAAA,IACF;AACA,aAAS,MAAM,GAAA;AACf,UAAMN,UAAS,SAAS,SAAS,IAAI,eAAe,iBAAiB;AACrE,aAAS,MAAM,IAAA;AACf,UAAM,SAAS,SAAS,SAASA,QAAO,IAAI,KAAKA,OAAM;AACvD,UAAM,MAAM,SAAS,MAAMA,QAAO,WAAW,KAAKA,OAAM;AACxD,QAAI,IAAI;AACR,QAAI,KAAK,SAAS;AAClBA,YAAO,YAAY,MAAM,SAAS,GAAG;AACrC,kBAAc,UAAU,IAAI;AAK5B,WAAA;AAAA,EACF;AACA,QAAM,2BAA2B,CAAC,UAAU,WAAW,cAAc;AACnE,cAAU,YAAY;AACtB,UAAM,YAAY,SAAS,MAAM;AACjC,aAAS,QAAQ;AACjB,aAAS,OAAO;AAChB,gBAAY,UAAU,UAAU,OAAO,WAAW,SAAS;AAC3D,gBAAY,UAAU,UAAU,UAAU,SAAS;AACnD,kBAAA;AACA,qBAAiB,QAAQ;AACzB,kBAAA;AAAA,EACF;AACA,QAAM,gBAAgB,CAAC,IAAI,IAAI,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,YAAY,UAAU;AAChI,UAAM,KAAK,MAAM,GAAG;AACpB,UAAM,gBAAgB,KAAK,GAAG,YAAY;AAC1C,UAAM,KAAK,GAAG;AACd,UAAM,EAAE,WAAW,UAAA,IAAc;AACjC,QAAI,YAAY,GAAG;AACjB,UAAI,YAAY,KAAK;AACnB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAEF;AAAA,MACF,WAAW,YAAY,KAAK;AAC1B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAEF;AAAA,MACF;AAAA,IACF;AACA,QAAI,YAAY,GAAG;AACjB,UAAI,gBAAgB,IAAI;AACtB,wBAAgB,IAAI,iBAAiB,cAAc;AAAA,MACrD;AACA,UAAI,OAAO,IAAI;AACb,2BAAmB,WAAW,EAAE;AAAA,MAClC;AAAA,IACF,OAAO;AACL,UAAI,gBAAgB,IAAI;AACtB,YAAI,YAAY,IAAI;AAClB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,OAAO;AACL,0BAAgB,IAAI,iBAAiB,gBAAgB,IAAI;AAAA,QAC3D;AAAA,MACF,OAAO;AACL,YAAI,gBAAgB,GAAG;AACrB,6BAAmB,WAAW,EAAE;AAAA,QAClC;AACA,YAAI,YAAY,IAAI;AAClB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,uBAAuB,CAAC,IAAI,IAAI,WAAW,QAAQ,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AAC/H,SAAK,MAAM;AACX,SAAK,MAAM;AACX,UAAM,YAAY,GAAG;AACrB,UAAM,YAAY,GAAG;AACrB,UAAM,eAAe,KAAK,IAAI,WAAW,SAAS;AAClD,QAAId;AACJ,SAAKA,KAAI,GAAGA,KAAI,cAAcA,MAAK;AACjC,YAAM,YAAY,GAAGA,EAAC,IAAI,YAAY,eAAe,GAAGA,EAAC,CAAC,IAAI,eAAe,GAAGA,EAAC,CAAC;AAClF;AAAA,QACE,GAAGA,EAAC;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,YAAY,WAAW;AACzB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,OAAO;AACL;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACA,QAAM,qBAAqB,CAAC,IAAI,IAAI,WAAW,cAAc,iBAAiB,gBAAgB,WAAW,cAAc,cAAc;AACnI,QAAIA,KAAI;AACR,UAAM,KAAK,GAAG;AACd,QAAI,KAAK,GAAG,SAAS;AACrB,QAAI,KAAK,KAAK;AACd,WAAOA,MAAK,MAAMA,MAAK,IAAI;AACzB,YAAM,KAAK,GAAGA,EAAC;AACf,YAAM,KAAK,GAAGA,EAAC,IAAI,YAAY,eAAe,GAAGA,EAAC,CAAC,IAAI,eAAe,GAAGA,EAAC,CAAC;AAC3E,UAAI,gBAAgB,IAAI,EAAE,GAAG;AAC3B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL;AAAA,MACF;AACA,MAAAA;AAAA,IACF;AACA,WAAOA,MAAK,MAAMA,MAAK,IAAI;AACzB,YAAM,KAAK,GAAG,EAAE;AAChB,YAAM,KAAK,GAAG,EAAE,IAAI,YAAY,eAAe,GAAG,EAAE,CAAC,IAAI,eAAe,GAAG,EAAE,CAAC;AAC9E,UAAI,gBAAgB,IAAI,EAAE,GAAG;AAC3B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL;AAAA,MACF;AACA;AACA;AAAA,IACF;AACA,QAAIA,KAAI,IAAI;AACV,UAAIA,MAAK,IAAI;AACX,cAAM,UAAU,KAAK;AACrB,cAAM,SAAS,UAAU,KAAK,GAAG,OAAO,EAAE,KAAK;AAC/C,eAAOA,MAAK,IAAI;AACd;AAAA,YACE;AAAA,YACA,GAAGA,EAAC,IAAI,YAAY,eAAe,GAAGA,EAAC,CAAC,IAAI,eAAe,GAAGA,EAAC,CAAC;AAAA,YAChE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAEF,UAAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,WAAWA,KAAI,IAAI;AACjB,aAAOA,MAAK,IAAI;AACd,gBAAQ,GAAGA,EAAC,GAAG,iBAAiB,gBAAgB,IAAI;AACpD,QAAAA;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,KAAKA;AACX,YAAM,KAAKA;AACX,YAAM,uCAAuC,IAAA;AAC7C,WAAKA,KAAI,IAAIA,MAAK,IAAIA,MAAK;AACzB,cAAM,YAAY,GAAGA,EAAC,IAAI,YAAY,eAAe,GAAGA,EAAC,CAAC,IAAI,eAAe,GAAGA,EAAC,CAAC;AAClF,YAAI,UAAU,OAAO,MAAM;AAQzB,2BAAiB,IAAI,UAAU,KAAKA,EAAC;AAAA,QACvC;AAAA,MACF;AACA,UAAI;AACJ,UAAI,UAAU;AACd,YAAM,cAAc,KAAK,KAAK;AAC9B,UAAI,QAAQ;AACZ,UAAI,mBAAmB;AACvB,YAAM,wBAAwB,IAAI,MAAM,WAAW;AACnD,WAAKA,KAAI,GAAGA,KAAI,aAAaA,KAAK,uBAAsBA,EAAC,IAAI;AAC7D,WAAKA,KAAI,IAAIA,MAAK,IAAIA,MAAK;AACzB,cAAM,YAAY,GAAGA,EAAC;AACtB,YAAI,WAAW,aAAa;AAC1B,kBAAQ,WAAW,iBAAiB,gBAAgB,IAAI;AACxD;AAAA,QACF;AACA,YAAI;AACJ,YAAI,UAAU,OAAO,MAAM;AACzB,qBAAW,iBAAiB,IAAI,UAAU,GAAG;AAAA,QAC/C,OAAO;AACL,eAAK,IAAI,IAAI,KAAK,IAAI,KAAK;AACzB,gBAAI,sBAAsB,IAAI,EAAE,MAAM,KAAK,gBAAgB,WAAW,GAAG,CAAC,CAAC,GAAG;AAC5E,yBAAW;AACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,aAAa,QAAQ;AACvB,kBAAQ,WAAW,iBAAiB,gBAAgB,IAAI;AAAA,QAC1D,OAAO;AACL,gCAAsB,WAAW,EAAE,IAAIA,KAAI;AAC3C,cAAI,YAAY,kBAAkB;AAChC,+BAAmB;AAAA,UACrB,OAAO;AACL,oBAAQ;AAAA,UACV;AACA;AAAA,YACE;AAAA,YACA,GAAG,QAAQ;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAEF;AAAA,QACF;AAAA,MACF;AACA,YAAM,6BAA6B,QAAQ,YAAY,qBAAqB,IAAI;AAChF,UAAI,2BAA2B,SAAS;AACxC,WAAKA,KAAI,cAAc,GAAGA,MAAK,GAAGA,MAAK;AACrC,cAAM,YAAY,KAAKA;AACvB,cAAM,YAAY,GAAG,SAAS;AAC9B,cAAM,cAAc,GAAG,YAAY,CAAC;AACpC,cAAM,SAAS,YAAY,IAAI;AAAA;AAAA,UAE7B,YAAY,MAAM,iCAAiC,WAAW;AAAA,YAC5D;AACJ,YAAI,sBAAsBA,EAAC,MAAM,GAAG;AAClC;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ,WAAW,OAAO;AAChB,cAAI,IAAI,KAAKA,OAAM,2BAA2B,CAAC,GAAG;AAChD,iBAAK,WAAW,WAAW,QAAQ,CAAC;AAAA,UACtC,OAAO;AACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAO,CAAC,OAAO,WAAW,QAAQ,UAAU,iBAAiB,SAAS;AAC1E,UAAM,EAAE,IAAI,MAAM,YAAY,UAAU,cAAc;AACtD,QAAI,YAAY,GAAG;AACjB,WAAK,MAAM,UAAU,SAAS,WAAW,QAAQ,QAAQ;AACzD;AAAA,IACF;AACA,QAAI,YAAY,KAAK;AACnB,YAAM,SAAS,KAAK,WAAW,QAAQ,QAAQ;AAC/C;AAAA,IACF;AACA,QAAI,YAAY,IAAI;AAClB,WAAK,KAAK,OAAO,WAAW,QAAQ,SAAS;AAC7C;AAAA,IACF;AACA,QAAI,SAAS,UAAU;AACrB,iBAAW,IAAI,WAAW,MAAM;AAChC,eAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,aAAK,SAASA,EAAC,GAAG,WAAW,QAAQ,QAAQ;AAAA,MAC/C;AACA,iBAAW,MAAM,QAAQ,WAAW,MAAM;AAC1C;AAAA,IACF;AACA,QAAI,SAAS,QAAQ;AACnB,qBAAe,OAAO,WAAW,MAAM;AACvC;AAAA,IACF;AACA,UAAM,kBAAkB,aAAa,KAAK,YAAY,KAAK;AAC3D,QAAI,iBAAiB;AACnB,UAAI,aAAa,GAAG;AAClB,mBAAW,YAAY,EAAE;AACzB,mBAAW,IAAI,WAAW,MAAM;AAChC,8BAAsB,MAAM,WAAW,MAAM,EAAE,GAAG,cAAc;AAAA,MAClE,OAAO;AACL,cAAM,EAAE,OAAO,YAAY,WAAA,IAAe;AAC1C,cAAMyB,WAAU,MAAM;AACpB,cAAI,MAAM,IAAI,aAAa;AACzB,uBAAW,EAAE;AAAA,UACf,OAAO;AACL,uBAAW,IAAI,WAAW,MAAM;AAAA,UAClC;AAAA,QACF;AACA,cAAM,eAAe,MAAM;AACzB,cAAI,GAAG,YAAY;AACjB,eAAG,UAAU;AAAA,cACX;AAAA;AAAA,YAAA;AAAA,UAGJ;AACA,gBAAM,IAAI,MAAM;AACdA,qBAAAA;AACA,0BAAc,WAAA;AAAA,UAChB,CAAC;AAAA,QACH;AACA,YAAI,YAAY;AACd,qBAAW,IAAIA,UAAS,YAAY;AAAA,QACtC,OAAO;AACL,uBAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,iBAAW,IAAI,WAAW,MAAM;AAAA,IAClC;AAAA,EACF;AACA,QAAM,UAAU,CAAC,OAAO,iBAAiB,gBAAgB,WAAW,OAAO,YAAY,UAAU;AAC/F,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,KAAAP;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE;AACJ,QAAI,cAAc,IAAI;AACpB,kBAAY;AAAA,IACd;AACA,QAAIA,QAAO,MAAM;AACf,oBAAA;AACA,aAAOA,MAAK,MAAM,gBAAgB,OAAO,IAAI;AAC7C,oBAAA;AAAA,IACF;AACA,QAAI,cAAc,MAAM;AACtB,sBAAgB,YAAY,UAAU,IAAI;AAAA,IAC5C;AACA,QAAI,YAAY,KAAK;AACnB,sBAAgB,IAAI,WAAW,KAAK;AACpC;AAAA,IACF;AACA,UAAM,mBAAmB,YAAY,KAAK;AAC1C,UAAM,wBAAwB,CAAC,eAAe,KAAK;AACnD,QAAI;AACJ,QAAI,0BAA0B,YAAY,SAAS,MAAM,uBAAuB;AAC9E,sBAAgB,WAAW,iBAAiB,KAAK;AAAA,IACnD;AACA,QAAI,YAAY,GAAG;AACjB,uBAAiB,MAAM,WAAW,gBAAgB,QAAQ;AAAA,IAC5D,OAAO;AACL,UAAI,YAAY,KAAK;AACnB,cAAM,SAAS,QAAQ,gBAAgB,QAAQ;AAC/C;AAAA,MACF;AACA,UAAI,kBAAkB;AACpB,4BAAoB,OAAO,MAAM,iBAAiB,eAAe;AAAA,MACnE;AACA,UAAI,YAAY,IAAI;AAClB,cAAM,KAAK;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAKX,CAAC,gBAAgB;AAAA,OAChB,SAAS,YAAY,YAAY,KAAK,YAAY,KAAK;AACtD;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,WAAW,SAAS,YAAY,aAAa,MAAM,QAAQ,CAAC,aAAa,YAAY,IAAI;AACvF,wBAAgB,UAAU,iBAAiB,cAAc;AAAA,MAC3D;AACA,UAAI,UAAU;AACZD,gBAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,QAAI,0BAA0B,YAAY,SAAS,MAAM,qBAAqB,kBAAkB;AAC9F,4BAAsB,MAAM;AAC1B,qBAAa,gBAAgB,WAAW,iBAAiB,KAAK;AAC9D,4BAAoB,oBAAoB,OAAO,MAAM,iBAAiB,WAAW;AAAA,MACnF,GAAG,cAAc;AAAA,IACnB;AAAA,EACF;AACA,QAAMA,UAAS,CAAC,UAAU;AACxB,UAAM,EAAE,MAAM,IAAI,QAAQ,eAAe;AACzC,QAAI,SAAS,UAAU;AASd;AACL,uBAAe,IAAI,MAAM;AAAA,MAC3B;AACA;AAAA,IACF;AACA,QAAI,SAAS,QAAQ;AACnB,uBAAiB,KAAK;AACtB;AAAA,IACF;AACA,UAAM,gBAAgB,MAAM;AAC1B,iBAAW,EAAE;AACb,UAAI,cAAc,CAAC,WAAW,aAAa,WAAW,YAAY;AAChE,mBAAW,WAAA;AAAA,MACb;AAAA,IACF;AACA,QAAI,MAAM,YAAY,KAAK,cAAc,CAAC,WAAW,WAAW;AAC9D,YAAM,EAAE,OAAO,WAAA,IAAe;AAC9B,YAAM,eAAe,MAAM,MAAM,IAAI,aAAa;AAClD,UAAI,YAAY;AACd,mBAAW,MAAM,IAAI,eAAe,YAAY;AAAA,MAClD,OAAO;AACL,qBAAA;AAAA,MACF;AAAA,IACF,OAAO;AACL,oBAAA;AAAA,IACF;AAAA,EACF;AACA,QAAM,iBAAiB,CAAC,KAAK,QAAQ;AACnC,QAAI;AACJ,WAAO,QAAQ,KAAK;AAClB,aAAO,gBAAgB,GAAG;AAC1B,iBAAW,GAAG;AACd,YAAM;AAAA,IACR;AACA,eAAW,GAAG;AAAA,EAChB;AACA,QAAM,mBAAmB,CAAC,UAAU,gBAAgB,aAAa;AAI/D,UAAM,EAAE,KAAK,OAAO,KAAK,SAAS,IAAI,GAAAG,IAAG,GAAAhB,OAAM;AAC/C,oBAAgBgB,EAAC;AACjB,oBAAgBhB,EAAC;AACjB,QAAI,KAAK;AACP,qBAAe,GAAG;AAAA,IACpB;AACA,UAAM,KAAA;AACN,QAAI,KAAK;AACP,UAAI,SAAS;AACb,cAAQ,SAAS,UAAU,gBAAgB,QAAQ;AAAA,IACrD;AACA,QAAI,IAAI;AACN,4BAAsB,IAAI,cAAc;AAAA,IAC1C;AACA,0BAAsB,MAAM;AAC1B,eAAS,cAAc;AAAA,IACzB,GAAG,cAAc;AAAA,EAInB;AACA,QAAM,kBAAkB,CAAC,UAAU,iBAAiB,gBAAgB,WAAW,OAAO,YAAY,OAAO,QAAQ,MAAM;AACrH,aAASJ,KAAI,OAAOA,KAAI,SAAS,QAAQA,MAAK;AAC5C,cAAQ,SAASA,EAAC,GAAG,iBAAiB,gBAAgB,UAAU,SAAS;AAAA,IAC3E;AAAA,EACF;AACA,QAAM,kBAAkB,CAAC,UAAU;AACjC,QAAI,MAAM,YAAY,GAAG;AACvB,aAAO,gBAAgB,MAAM,UAAU,OAAO;AAAA,IAChD;AACA,QAAI,MAAM,YAAY,KAAK;AACzB,aAAO,MAAM,SAAS,KAAA;AAAA,IACxB;AACA,UAAM,KAAK,gBAAgB,MAAM,UAAU,MAAM,EAAE;AACnD,UAAM,cAAc,MAAM,GAAG,cAAc;AAC3C,WAAO,cAAc,gBAAgB,WAAW,IAAI;AAAA,EACtD;AACA,MAAI,aAAa;AACjB,QAAM,SAAS,CAAC,OAAO,WAAW,cAAc;AAC9C,QAAI;AACJ,QAAI,SAAS,MAAM;AACjB,UAAI,UAAU,QAAQ;AACpB,gBAAQ,UAAU,QAAQ,MAAM,MAAM,IAAI;AAC1C,mBAAW,UAAU,OAAO;AAAA,MAC9B;AAAA,IACF,OAAO;AACL;AAAA,QACE,UAAU,UAAU;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,cAAU,SAAS;AACnB,QAAI,CAAC,YAAY;AACf,mBAAa;AACb,uBAAiB,QAAQ;AACzB,wBAAA;AACA,mBAAa;AAAA,IACf;AAAA,EACF;AACA,QAAM,YAAY;AAAA,IAChB,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,GAAGiB;AAAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEL,MAAI;AAOJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,WAAW,aAAa,MAAe;AAAA,EAAA;AAE3C;AACA,SAAS,yBAAyB,EAAE,MAAM,MAAA,GAAS,kBAAkB;AACnE,SAAO,qBAAqB,SAAS,SAAS,mBAAmB,qBAAqB,YAAY,SAAS,oBAAoB,SAAS,MAAM,YAAY,MAAM,SAAS,SAAS,MAAM,IAAI,SAAS;AACvM;AACA,SAAS,cAAc,EAAE,QAAAH,SAAQ,IAAA,GAAO,SAAS;AAC/C,MAAI,SAAS;AACXA,YAAO,SAAS;AAChB,QAAI,SAAS;AAAA,EACf,OAAO;AACLA,YAAO,SAAS;AAChB,QAAI,SAAS;AAAA,EACf;AACF;AACA,SAAS,eAAe,gBAAgB,YAAY;AAClD,UAAQ,CAAC,kBAAkB,kBAAkB,CAAC,eAAe,kBAAkB,cAAc,CAAC,WAAW;AAC3G;AACA,SAAS,uBAAuB,IAAI,IAAI,UAAU,OAAO;AACvD,QAAM,MAAM,GAAG;AACf,QAAM,MAAM,GAAG;AACf,MAAI,QAAQ,GAAG,KAAK,QAAQ,GAAG,GAAG;AAChC,aAASd,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,YAAM,KAAK,IAAIA,EAAC;AAChB,UAAI,KAAK,IAAIA,EAAC;AACd,UAAI,GAAG,YAAY,KAAK,CAAC,GAAG,iBAAiB;AAC3C,YAAI,GAAG,aAAa,KAAK,GAAG,cAAc,IAAI;AAC5C,eAAK,IAAIA,EAAC,IAAI,eAAe,IAAIA,EAAC,CAAC;AACnC,aAAG,KAAK,GAAG;AAAA,QACb;AACA,YAAI,CAAC,WAAW,GAAG,cAAc;AAC/B,iCAAuB,IAAI,EAAE;AAAA,MACjC;AACA,UAAI,GAAG,SAAS,MAAM;AACpB,YAAI,GAAG,cAAc,IAAI;AACvB,aAAG,KAAK,GAAG;AAAA,QACb,OAAO;AACL,aAAG,YAAYA;AAAA,WACd,GAAG,SAAS,WAAW,IAAI;AAAA,QAC9B;AAAA,MACF;AACA,UAAI,GAAG,SAAS,WAAW,CAAC,GAAG,IAAI;AACjC,WAAG,KAAK,GAAG;AAAA,MACb;AAAA,IAIF;AAAA,EACF;AACF;AACA,SAAS,YAAY,KAAK;AACxB,QAAMe,KAAI,IAAI,MAAA;AACd,QAAM,SAAS,CAAC,CAAC;AACjB,MAAIf,IAAG,GAAG,GAAGO,IAAGL;AAChB,QAAM,MAAM,IAAI;AAChB,OAAKF,KAAI,GAAGA,KAAI,KAAKA,MAAK;AACxB,UAAM,OAAO,IAAIA,EAAC;AAClB,QAAI,SAAS,GAAG;AACd,UAAI,OAAO,OAAO,SAAS,CAAC;AAC5B,UAAI,IAAI,CAAC,IAAI,MAAM;AACjB,QAAAe,GAAEf,EAAC,IAAI;AACP,eAAO,KAAKA,EAAC;AACb;AAAA,MACF;AACA,UAAI;AACJ,MAAAO,KAAI,OAAO,SAAS;AACpB,aAAO,IAAIA,IAAG;AACZ,QAAAL,KAAI,IAAIK,MAAK;AACb,YAAI,IAAI,OAAOL,EAAC,CAAC,IAAI,MAAM;AACzB,cAAIA,KAAI;AAAA,QACV,OAAO;AACL,UAAAK,KAAIL;AAAA,QACN;AAAA,MACF;AACA,UAAI,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG;AACzB,YAAI,IAAI,GAAG;AACT,UAAAa,GAAEf,EAAC,IAAI,OAAO,IAAI,CAAC;AAAA,QACrB;AACA,eAAO,CAAC,IAAIA;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO;AACX,EAAAO,KAAI,OAAO,IAAI,CAAC;AAChB,SAAO,MAAM,GAAG;AACd,WAAO,CAAC,IAAIA;AACZ,IAAAA,KAAIQ,GAAER,EAAC;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,2BAA2B,UAAU;AAC5C,QAAM,eAAe,SAAS,QAAQ;AACtC,MAAI,cAAc;AAChB,QAAI,aAAa,YAAY,CAAC,aAAa,eAAe;AACxD,aAAO;AAAA,IACT,OAAO;AACL,aAAO,2BAA2B,YAAY;AAAA,IAChD;AAAA,EACF;AACF;AACA,SAAS,gBAAgB,OAAO;AAC9B,MAAI,OAAO;AACT,aAASP,KAAI,GAAGA,KAAI,MAAM,QAAQA;AAChC,YAAMA,EAAC,EAAE,SAAS;AAAA,EACtB;AACF;AACA,SAAS,iCAAiC,aAAa;AACrD,MAAI,YAAY,aAAa;AAC3B,WAAO,YAAY;AAAA,EACrB;AACA,QAAM,WAAW,YAAY;AAC7B,MAAI,UAAU;AACZ,WAAO,iCAAiC,SAAS,OAAO;AAAA,EAC1D;AACA,SAAO;AACT;AAEA,MAAM,aAAa,CAAC,SAAS,KAAK;AA2jBlC,SAAS,wBAAwB,IAAI,UAAU;AAC7C,MAAI,YAAY,SAAS,eAAe;AACtC,QAAI,QAAQ,EAAE,GAAG;AACf,eAAS,QAAQ,KAAK,GAAG,EAAE;AAAA,IAC7B,OAAO;AACL,eAAS,QAAQ,KAAK,EAAE;AAAA,IAC1B;AAAA,EACF,OAAO;AACL,qBAAiB,EAAE;AAAA,EACrB;AACF;AAoBA,MAAM,WAA2B,uBAAO,IAAI,OAAO;AACnD,MAAM,OAAuB,uBAAO,IAAI,OAAO;AAC/C,MAAM,UAA0B,uBAAO,IAAI,OAAO;AAClD,MAAM,SAAyB,uBAAO,IAAI,OAAO;AACjD,MAAM,aAAa,CAAA;AACnB,IAAI,eAAe;AACnB,SAAS,UAAU,kBAAkB,OAAO;AAC1C,aAAW,KAAK,eAAe,kBAAkB,OAAO,CAAA,CAAE;AAC5D;AACA,SAAS,aAAa;AACpB,aAAW,IAAA;AACX,iBAAe,WAAW,WAAW,SAAS,CAAC,KAAK;AACtD;AACA,IAAI,qBAAqB;AACzB,SAAS,iBAAiB,OAAO,UAAU,OAAO;AAChD,wBAAsB;AACtB,MAAI,QAAQ,KAAK,gBAAgB,SAAS;AACxC,iBAAa,UAAU;AAAA,EACzB;AACF;AACA,SAAS,WAAW,OAAO;AACzB,QAAM,kBAAkB,qBAAqB,IAAI,gBAAgB,YAAY;AAC7E,aAAA;AACA,MAAI,qBAAqB,KAAK,cAAc;AAC1C,iBAAa,KAAK,KAAK;AAAA,EACzB;AACA,SAAO;AACT;AACA,SAAS,mBAAmB,MAAM,OAAO,UAAU,WAAW,cAAc,WAAW;AACrF,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AACA,SAAS,YAAY,MAAM,OAAO,UAAU,WAAW,cAAc;AACnE,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AACA,SAAS,QAAQ,OAAO;AACtB,SAAO,QAAQ,MAAM,gBAAgB,OAAO;AAC9C;AACA,SAAS,gBAAgB,IAAI,IAAI;AAS/B,SAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG;AAC9C;AAUA,MAAM,eAAe,CAAC,EAAE,UAAU,OAAO,OAAO,MAAM;AACtD,MAAM,eAAe,CAAC;AAAA,EACpB,KAAAkB;AAAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,MAAI,OAAOA,SAAQ,UAAU;AAC3BA,WAAM,KAAKA;AAAAA,EACb;AACA,SAAOA,QAAO,OAAO,SAASA,IAAG,KAAK,MAAMA,IAAG,KAAK,WAAWA,IAAG,IAAI,EAAE,GAAG,0BAA0B,GAAGA,MAAK,GAAG,SAAS,GAAG,CAAC,CAAC,YAAYA,OAAM;AAClJ;AACA,SAAS,gBAAgB,MAAM,QAAQ,MAAM,WAAW,MAAM,YAAY,GAAG,eAAe,MAAM,YAAY,SAAS,WAAW,IAAI,GAAG,cAAc,OAAO,gCAAgC,OAAO;AACnM,QAAM,QAAQ;AAAA,IACZ,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,KAAK,SAAS,aAAa,KAAK;AAAA,IAChC,KAAK,SAAS,aAAa,KAAK;AAAA,IAChC,SAAS;AAAA,IACT,cAAc;AAAA,IACd;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,KAAK;AAAA,EAAA;AAEP,MAAI,+BAA+B;AACjC,sBAAkB,OAAO,QAAQ;AACjC,QAAI,YAAY,KAAK;AACnB,WAAK,UAAU,KAAK;AAAA,IACtB;AAAA,EACF,WAAW,UAAU;AACnB,UAAM,aAAa,SAAS,QAAQ,IAAI,IAAI;AAAA,EAC9C;AAIA,MAAI,qBAAqB;AAAA,EACzB,CAAC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,GAIC,MAAM,YAAY,KAAK,YAAY;AAAA;AAAA,EAEpC,MAAM,cAAc,IAAI;AACtB,iBAAa,KAAK,KAAK;AAAA,EACzB;AACA,SAAO;AACT;AACA,MAAM,cAAyF;AAC/F,SAAS,aAAa,MAAM,QAAQ,MAAM,WAAW,MAAM,YAAY,GAAG,eAAe,MAAM,cAAc,OAAO;AAClH,MAAI,CAAC,QAAQ,SAAS,wBAAwB;AAI5C,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,IAAI,GAAG;AACjB,UAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAAA;AAGF,QAAI,UAAU;AACZ,wBAAkB,QAAQ,QAAQ;AAAA,IACpC;AACA,QAAI,qBAAqB,KAAK,CAAC,eAAe,cAAc;AAC1D,UAAI,OAAO,YAAY,GAAG;AACxB,qBAAa,aAAa,QAAQ,IAAI,CAAC,IAAI;AAAA,MAC7C,OAAO;AACL,qBAAa,KAAK,MAAM;AAAA,MAC1B;AAAA,IACF;AACA,WAAO,YAAY;AACnB,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,IAAI,GAAG;AAC1B,WAAO,KAAK;AAAA,EACd;AACA,MAAI,OAAO;AACT,YAAQ,mBAAmB,KAAK;AAChC,QAAI,EAAE,OAAO,OAAO,OAAAQ,OAAA,IAAU;AAC9B,QAAI,SAAS,CAAC,SAAS,KAAK,GAAG;AAC7B,YAAM,QAAQ,eAAe,KAAK;AAAA,IACpC;AACA,QAAI,SAASA,MAAK,GAAG;AACnB,UAAI,QAAQA,MAAK,KAAK,CAAC,QAAQA,MAAK,GAAG;AACrC,QAAAA,SAAQ,OAAO,CAAA,GAAIA,MAAK;AAAA,MAC1B;AACA,YAAM,QAAQ,eAAeA,MAAK;AAAA,IACpC;AAAA,EACF;AACA,QAAM,YAAY,SAAS,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,MAAM,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI;AAUpI,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,mBAAmB,OAAO;AACjC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,QAAQ,KAAK,KAAK,iBAAiB,KAAK,IAAI,OAAO,CAAA,GAAI,KAAK,IAAI;AACzE;AACA,SAAS,WAAW,OAAO,YAAY,WAAW,OAAO,kBAAkB,OAAO;AAChF,QAAM,EAAE,OAAO,KAAAR,MAAK,WAAW,UAAU,eAAe;AACxD,QAAM,cAAc,aAAa,WAAW,SAAS,CAAA,GAAI,UAAU,IAAI;AACvE,QAAM,SAAS;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,MAAM,MAAM;AAAA,IACZ,OAAO;AAAA,IACP,KAAK,eAAe,aAAa,WAAW;AAAA,IAC5C,KAAK,cAAc,WAAW;AAAA;AAAA;AAAA;AAAA,MAI5B,YAAYA,OAAM,QAAQA,IAAG,IAAIA,KAAI,OAAO,aAAa,UAAU,CAAC,IAAI,CAACA,MAAK,aAAa,UAAU,CAAC,IAAI,aAAa,UAAU;AAAA,QAC/HA;AAAAA,IACJ,SAAS,MAAM;AAAA,IACf,cAAc,MAAM;AAAA,IACpB;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,WAAW,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,IAKjB,WAAW,cAAc,MAAM,SAAS,WAAW,cAAc,KAAK,KAAK,YAAY,KAAK;AAAA,IAC5F,cAAc,MAAM;AAAA,IACpB,iBAAiB,MAAM;AAAA,IACvB,YAAY,MAAM;AAAA,IAClB,MAAM,MAAM;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA,IAChB,WAAW,MAAM,aAAa,WAAW,MAAM,SAAS;AAAA,IACxD,YAAY,MAAM,cAAc,WAAW,MAAM,UAAU;AAAA,IAC3D,aAAa,MAAM;AAAA,IACnB,IAAI,MAAM;AAAA,IACV,QAAQ,MAAM;AAAA,IACd,KAAK,MAAM;AAAA,IACX,IAAI,MAAM;AAAA,EAAA;AAEZ,MAAI,cAAc,iBAAiB;AACjC;AAAA,MACE;AAAA,MACA,WAAW,MAAM,MAAM;AAAA,IAAA;AAAA,EAE3B;AACA,SAAO;AACT;AAQA,SAAS,gBAAgB,OAAO,KAAK,OAAO,GAAG;AAC7C,SAAO,YAAY,MAAM,MAAM,MAAM,IAAI;AAC3C;AACA,SAAS,kBAAkB,SAAS,eAAe;AACjD,QAAM,QAAQ,YAAY,QAAQ,MAAM,OAAO;AAC/C,QAAM,cAAc;AACpB,SAAO;AACT;AACA,SAAS,mBAAmB,OAAO,IAAI,UAAU,OAAO;AACtD,SAAO,WAAW,aAAa,YAAY,SAAS,MAAM,IAAI,KAAK,YAAY,SAAS,MAAM,IAAI;AACpG;AACA,SAAS,eAAe,OAAO;AAC7B,MAAI,SAAS,QAAQ,OAAO,UAAU,WAAW;AAC/C,WAAO,YAAY,OAAO;AAAA,EAC5B,WAAW,QAAQ,KAAK,GAAG;AACzB,WAAO;AAAA,MACL;AAAA,MACA;AAAA;AAAA,MAEA,MAAM,MAAA;AAAA,IAAM;AAAA,EAEhB,WAAW,QAAQ,KAAK,GAAG;AACzB,WAAO,eAAe,KAAK;AAAA,EAC7B,OAAO;AACL,WAAO,YAAY,MAAM,MAAM,OAAO,KAAK,CAAC;AAAA,EAC9C;AACF;AACA,SAAS,eAAe,OAAO;AAC7B,SAAO,MAAM,OAAO,QAAQ,MAAM,cAAc,MAAM,MAAM,OAAO,QAAQ,WAAW,KAAK;AAC7F;AACA,SAAS,kBAAkB,OAAO,UAAU;AAC1C,MAAI,OAAO;AACX,QAAM,EAAE,cAAc;AACtB,MAAI,YAAY,MAAM;AACpB,eAAW;AAAA,EACb,WAAW,QAAQ,QAAQ,GAAG;AAC5B,WAAO;AAAA,EACT,WAAW,OAAO,aAAa,UAAU;AACvC,QAAI,aAAa,IAAI,KAAK;AACxB,YAAM,OAAO,SAAS;AACtB,UAAI,MAAM;AACR,aAAK,OAAO,KAAK,KAAK;AACtB,0BAAkB,OAAO,MAAM;AAC/B,aAAK,OAAO,KAAK,KAAK;AAAA,MACxB;AACA;AAAA,IACF,OAAO;AACL,aAAO;AACP,YAAM,WAAW,SAAS;AAC1B,UAAI,CAAC,YAAY,CAAC,iBAAiB,QAAQ,GAAG;AAC5C,iBAAS,OAAO;AAAA,MAClB,WAAW,aAAa,KAAK,0BAA0B;AACrD,YAAI,yBAAyB,MAAM,MAAM,GAAG;AAC1C,mBAAS,IAAI;AAAA,QACf,OAAO;AACL,mBAAS,IAAI;AACb,gBAAM,aAAa;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF,WAAW,WAAW,QAAQ,GAAG;AAC/B,eAAW,EAAE,SAAS,UAAU,MAAM,yBAAA;AACtC,WAAO;AAAA,EACT,OAAO;AACL,eAAW,OAAO,QAAQ;AAC1B,QAAI,YAAY,IAAI;AAClB,aAAO;AACP,iBAAW,CAAC,gBAAgB,QAAQ,CAAC;AAAA,IACvC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,WAAW;AACjB,QAAM,aAAa;AACrB;AACA,SAAS,cAAc,MAAM;AAC3B,QAAM,MAAM,CAAA;AACZ,WAASlB,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,UAAM,UAAU,KAAKA,EAAC;AACtB,eAAW,OAAO,SAAS;AACzB,UAAI,QAAQ,SAAS;AACnB,YAAI,IAAI,UAAU,QAAQ,OAAO;AAC/B,cAAI,QAAQ,eAAe,CAAC,IAAI,OAAO,QAAQ,KAAK,CAAC;AAAA,QACvD;AAAA,MACF,WAAW,QAAQ,SAAS;AAC1B,YAAI,QAAQ,eAAe,CAAC,IAAI,OAAO,QAAQ,KAAK,CAAC;AAAA,MACvD,WAAW,KAAK,GAAG,GAAG;AACpB,cAAM,WAAW,IAAI,GAAG;AACxB,cAAM,WAAW,QAAQ,GAAG;AAC5B,YAAI,YAAY,aAAa,YAAY,EAAE,QAAQ,QAAQ,KAAK,SAAS,SAAS,QAAQ,IAAI;AAC5F,cAAI,GAAG,IAAI,WAAW,CAAA,EAAG,OAAO,UAAU,QAAQ,IAAI;AAAA,QACxD;AAAA,MACF,WAAW,QAAQ,IAAI;AACrB,YAAI,GAAG,IAAI,QAAQ,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,gBAAgB,MAAM,UAAU,OAAO,YAAY,MAAM;AAChE,6BAA2B,MAAM,UAAU,GAAG;AAAA,IAC5C;AAAA,IACA;AAAA,EAAA,CACD;AACH;AAEA,MAAM,kBAAkB,iBAAA;AACxB,IAAI,MAAM;AACV,SAAS,wBAAwB,OAAO,QAAQ,UAAU;AACxD,QAAM,OAAO,MAAM;AACnB,QAAM,cAAc,SAAS,OAAO,aAAa,MAAM,eAAe;AACtE,QAAM,WAAW;AAAA,IACf,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA;AAAA,IAEN,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,IAET,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,IAER,KAAK;AAAA,IACL,OAAO,IAAI;AAAA,MACT;AAAA;AAAA,IAAA;AAAA,IAGF,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,UAAU,SAAS,OAAO,WAAW,OAAO,OAAO,WAAW,QAAQ;AAAA,IACtE,KAAK,SAAS,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACpC,aAAa;AAAA,IACb,aAAa,CAAA;AAAA;AAAA,IAEb,YAAY;AAAA,IACZ,YAAY;AAAA;AAAA,IAEZ,cAAc,sBAAsB,MAAM,UAAU;AAAA,IACpD,cAAc,sBAAsB,MAAM,UAAU;AAAA;AAAA,IAEpD,MAAM;AAAA;AAAA,IAEN,SAAS;AAAA;AAAA,IAET,eAAe;AAAA;AAAA,IAEf,cAAc,KAAK;AAAA;AAAA,IAEnB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,cAAc;AAAA;AAAA,IAEd;AAAA,IACA,YAAY,WAAW,SAAS,YAAY;AAAA,IAC5C,UAAU;AAAA,IACV,eAAe;AAAA;AAAA;AAAA,IAGf,WAAW;AAAA,IACX,aAAa;AAAA,IACb,eAAe;AAAA,IACf,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,KAAK;AAAA,IACL,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA;AAIC;AACL,aAAS,MAAM,EAAE,GAAG,SAAA;AAAA,EACtB;AACA,WAAS,OAAO,SAAS,OAAO,OAAO;AACvC,WAAS,OAAO,KAAK,KAAK,MAAM,QAAQ;AACxC,MAAI,MAAM,IAAI;AACZ,UAAM,GAAG,QAAQ;AAAA,EACnB;AACA,SAAO;AACT;AACA,IAAI,kBAAkB;AACtB,MAAM,qBAAqB,MAAM,mBAAmB;AACpD,IAAI;AACJ,IAAI;AACJ;AACE,QAAM,IAAI,cAAA;AACV,QAAM,uBAAuB,CAAC,KAAK,WAAW;AAC5C,QAAI;AACJ,QAAI,EAAE,UAAU,EAAE,GAAG,GAAI,WAAU,EAAE,GAAG,IAAI,CAAA;AAC5C,YAAQ,KAAK,MAAM;AACnB,WAAO,CAACO,OAAM;AACZ,UAAI,QAAQ,SAAS,EAAG,SAAQ,QAAQ,CAAC,QAAQ,IAAIA,EAAC,CAAC;AAAA,UAClD,SAAQ,CAAC,EAAEA,EAAC;AAAA,IACnB;AAAA,EACF;AACA,+BAA6B;AAAA,IAC3B;AAAA,IACA,CAACA,OAAM,kBAAkBA;AAAA,EAAA;AAE3B,uBAAqB;AAAA,IACnB;AAAA,IACA,CAACA,OAAM,wBAAwBA;AAAA,EAAA;AAEnC;AACA,MAAM,qBAAqB,CAAC,aAAa;AACvC,QAAM,OAAO;AACb,6BAA2B,QAAQ;AACnC,WAAS,MAAM,GAAA;AACf,SAAO,MAAM;AACX,aAAS,MAAM,IAAA;AACf,+BAA2B,IAAI;AAAA,EACjC;AACF;AACA,MAAM,uBAAuB,MAAM;AACjC,qBAAmB,gBAAgB,MAAM,IAAA;AACzC,6BAA2B,IAAI;AACjC;AASA,SAAS,oBAAoB,UAAU;AACrC,SAAO,SAAS,MAAM,YAAY;AACpC;AACA,IAAI,wBAAwB;AAC5B,SAAS,eAAe,UAAU,QAAQ,OAAO,YAAY,OAAO;AAClE,WAAS,mBAAmB,KAAK;AACjC,QAAM,EAAE,OAAO,SAAA,IAAa,SAAS;AACrC,QAAM,aAAa,oBAAoB,QAAQ;AAC/C,YAAU,UAAU,OAAO,YAAY,KAAK;AAC5C,YAAU,UAAU,UAAU,aAAa,KAAK;AAChD,QAAM,cAAc,aAAa,uBAAuB,UAAU,KAAK,IAAI;AAC3E,WAAS,mBAAmB,KAAK;AACjC,SAAO;AACT;AACA,SAAS,uBAAuB,UAAU,OAAO;AAC/C,QAAM,YAAY,SAAS;AAuB3B,WAAS,cAA8B,uBAAO,OAAO,IAAI;AACzD,WAAS,QAAQ,IAAI,MAAM,SAAS,KAAK,2BAA2B;AAIpE,QAAM,EAAE,OAAAoB,WAAU;AAClB,MAAIA,QAAO;AACT,kBAAA;AACA,UAAM,eAAe,SAAS,eAAeA,OAAM,SAAS,IAAI,mBAAmB,QAAQ,IAAI;AAC/F,UAAM,QAAQ,mBAAmB,QAAQ;AACzC,UAAM,cAAc;AAAA,MAClBA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACgF,SAAS;AAAA,QACvF;AAAA,MAAA;AAAA,IACF;AAEF,UAAM,eAAe,UAAU,WAAW;AAC1C,kBAAA;AACA,UAAA;AACA,SAAK,gBAAgB,SAAS,OAAO,CAAC,eAAe,QAAQ,GAAG;AAC9D,wBAAkB,QAAQ;AAAA,IAC5B;AACA,QAAI,cAAc;AAChB,kBAAY,KAAK,sBAAsB,oBAAoB;AAC3D,UAAI,OAAO;AACT,eAAO,YAAY,KAAK,CAAC,mBAAmB;AAC1C,4BAAkB,UAAU,cAAqB;AAAA,QACnD,CAAC,EAAE,MAAM,CAAC,MAAM;AACd,sBAAY,GAAG,UAAU,CAAC;AAAA,QAC5B,CAAC;AAAA,MACH,OAAO;AACL,iBAAS,WAAW;AAAA,MAOtB;AAAA,IACF,OAAO;AACL,wBAAkB,UAAU,WAAkB;AAAA,IAChD;AAAA,EACF,OAAO;AACL,yBAAqB,QAAe;AAAA,EACtC;AACF;AACA,SAAS,kBAAkB,UAAU,aAAa,OAAO;AACvD,MAAI,WAAW,WAAW,GAAG;AAC3B,QAAI,SAAS,KAAK,mBAAmB;AACnC,eAAS,YAAY;AAAA,IACvB,OAAO;AACL,eAAS,SAAS;AAAA,IACpB;AAAA,EACF,WAAW,SAAS,WAAW,GAAG;AAShC,aAAS,aAAa,UAAU,WAAW;AAAA,EAI7C;AAKA,uBAAqB,QAAe;AACtC;AAYA,SAAS,qBAAqB,UAAU,OAAO,aAAa;AAC1D,QAAM,YAAY,SAAS;AAC3B,MAAI,CAAC,SAAS,QAAQ;AAyBpB,aAAS,SAAS,UAAU,UAAU;AAAA,EAIxC;AACiC;AAC/B,UAAM,QAAQ,mBAAmB,QAAQ;AACzC,kBAAA;AACA,QAAI;AACF,mBAAa,QAAQ;AAAA,IACvB,UAAA;AACE,oBAAA;AACA,YAAA;AAAA,IACF;AAAA,EACF;AAUF;AACA,MAAM,qBAcF;AAAA,EACF,IAAI,QAAQ,KAAK;AACf,UAAM,QAAQ,OAAO,EAAE;AACvB,WAAO,OAAO,GAAG;AAAA,EACnB;AACF;AASA,SAAS,mBAAmB,UAAU;AACpC,QAAM,SAAS,CAAC,YAAY;AAqB1B,aAAS,UAAU,WAAW,CAAA;AAAA,EAChC;AAgBO;AACL,WAAO;AAAA,MACL,OAAO,IAAI,MAAM,SAAS,OAAO,kBAAkB;AAAA,MACnD,OAAO,SAAS;AAAA,MAChB,MAAM,SAAS;AAAA,MACf;AAAA,IAAA;AAAA,EAEJ;AACF;AACA,SAAS,2BAA2B,UAAU;AAC5C,MAAI,SAAS,SAAS;AACpB,WAAO,SAAS,gBAAgB,SAAS,cAAc,IAAI,MAAM,UAAU,QAAQ,SAAS,OAAO,CAAC,GAAG;AAAA,MACrG,IAAI,QAAQ,KAAK;AACf,YAAI,OAAO,QAAQ;AACjB,iBAAO,OAAO,GAAG;AAAA,QACnB,WAAW,OAAO,qBAAqB;AACrC,iBAAO,oBAAoB,GAAG,EAAE,QAAQ;AAAA,QAC1C;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,KAAK;AACf,eAAO,OAAO,UAAU,OAAO;AAAA,MACjC;AAAA,IAAA,CACD;AAAA,EACH,OAAO;AACL,WAAO,SAAS;AAAA,EAClB;AACF;AACA,MAAM,aAAa;AACnB,MAAM,WAAW,CAAC,QAAQ,IAAI,QAAQ,YAAY,CAACzB,OAAMA,GAAE,YAAA,CAAa,EAAE,QAAQ,SAAS,EAAE;AAC7F,SAAS,iBAAiB,WAAW,kBAAkB,MAAM;AAC3D,SAAO,WAAW,SAAS,IAAI,UAAU,eAAe,UAAU,OAAO,UAAU,QAAQ,mBAAmB,UAAU;AAC1H;AACA,SAAS,oBAAoB,UAAU,WAAW,SAAS,OAAO;AAChE,MAAI,OAAO,iBAAiB,SAAS;AACrC,MAAI,CAAC,QAAQ,UAAU,QAAQ;AAC7B,UAAM,QAAQ,UAAU,OAAO,MAAM,iBAAiB;AACtD,QAAI,OAAO;AACT,aAAO,MAAM,CAAC;AAAA,IAChB;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,UAAU;AACrB,UAAM,oBAAoB,CAAC,aAAa;AACtC,iBAAW,OAAO,UAAU;AAC1B,YAAI,SAAS,GAAG,MAAM,WAAW;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO,kBAAkB,SAAS,UAAU,KAAK,SAAS,UAAU;AAAA,MAClE,SAAS,OAAO,KAAK;AAAA,IAAA,KAClB,kBAAkB,SAAS,WAAW,UAAU;AAAA,EACvD;AACA,SAAO,OAAO,SAAS,IAAI,IAAI,SAAS,QAAQ;AAClD;AACA,SAAS,iBAAiB,OAAO;AAC/B,SAAO,WAAW,KAAK,KAAK,eAAe;AAC7C;AAEA,MAAM,WAAW,CAAC,iBAAiB,iBAAiB;AAClD,QAAMA,KAAI,WAAW,iBAAiB,cAAc,qBAAqB;AAOzE,SAAOA;AACT;AAEA,SAASiB,IAAE,MAAM,iBAAiB,UAAU;AAC1C,MAAI;AACF,qBAAiB,EAAE;AACnB,UAAMV,KAAI,UAAU;AACpB,QAAIA,OAAM,GAAG;AACX,UAAI,SAAS,eAAe,KAAK,CAAC,QAAQ,eAAe,GAAG;AAC1D,YAAI,QAAQ,eAAe,GAAG;AAC5B,iBAAO,YAAY,MAAM,MAAM,CAAC,eAAe,CAAC;AAAA,QAClD;AACA,eAAO,YAAY,MAAM,eAAe;AAAA,MAC1C,OAAO;AACL,eAAO,YAAY,MAAM,MAAM,eAAe;AAAA,MAChD;AAAA,IACF,OAAO;AACL,UAAIA,KAAI,GAAG;AACT,mBAAW,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAAA,MACpD,WAAWA,OAAM,KAAK,QAAQ,QAAQ,GAAG;AACvC,mBAAW,CAAC,QAAQ;AAAA,MACtB;AACA,aAAO,YAAY,MAAM,iBAAiB,QAAQ;AAAA,IACpD;AAAA,EACF,UAAA;AACE,qBAAiB,CAAC;AAAA,EACpB;AACF;AAgNA,MAAM,UAAU;ACx1QhB;AAAA;AAAA;AAAA;AAAA;AASA,IAAI,SAAS;AACb,MAAMmB,OAAK,OAAO,WAAW,eAAe,OAAO;AACnD,IAAIA,MAAI;AACN,MAAI;AACF,aAAyBA,qBAAG,aAAa,OAAO;AAAA,MAC9C,YAAY,CAAC,QAAQ;AAAA,IAAA,CACtB;AAAA,EACH,SAAS,GAAG;AAAA,EAEZ;AACF;AACA,MAAM,sBAAsB,SAAS,CAAC,QAAQ,OAAO,WAAW,GAAG,IAAI,CAAC,QAAQ;AAChF,MAAM,QAAQ;AACd,MAAM,WAAW;AACjB,MAAM,MAAM,OAAO,aAAa,cAAc,WAAW;AACzD,MAAM,oBAAoB,OAAuB,oBAAI,cAAc,UAAU;AAC7E,MAAM,UAAU;AAAA,EACd,QAAQ,CAAC,OAAO,QAAQ,WAAW;AACjC,WAAO,aAAa,OAAO,UAAU,IAAI;AAAA,EAC3C;AAAA,EACA,QAAQ,CAAC,UAAU;AACjB,UAAM,SAAS,MAAM;AACrB,QAAI,QAAQ;AACV,aAAO,YAAY,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,eAAe,CAAC,KAAK,WAAW,IAAI,UAAU;AAC5C,UAAM,KAAK,cAAc,QAAQ,IAAI,gBAAgB,OAAO,GAAG,IAAI,cAAc,WAAW,IAAI,gBAAgB,UAAU,GAAG,IAAI,KAAK,IAAI,cAAc,KAAK,EAAE,IAAI,IAAI,IAAI,cAAc,GAAG;AAC5L,QAAI,QAAQ,YAAY,SAAS,MAAM,YAAY,MAAM;AACvD,SAAG,aAAa,YAAY,MAAM,QAAQ;AAAA,IAC5C;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,CAAC,SAAS,IAAI,eAAe,IAAI;AAAA,EAC7C,eAAe,CAAC,SAAS,IAAI,cAAc,IAAI;AAAA,EAC/C,SAAS,CAAC,MAAM,SAAS;AACvB,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,gBAAgB,CAAC,IAAI,SAAS;AAC5B,OAAG,cAAc;AAAA,EACnB;AAAA,EACA,YAAY,CAAC,SAAS,KAAK;AAAA,EAC3B,aAAa,CAAC,SAAS,KAAK;AAAA,EAC5B,eAAe,CAAC,aAAa,IAAI,cAAc,QAAQ;AAAA,EACvD,WAAW,IAAI,IAAI;AACjB,OAAG,aAAa,IAAI,EAAE;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,SAAS,QAAQ,QAAQ,WAAW,OAAO,KAAK;AAClE,UAAM,SAAS,SAAS,OAAO,kBAAkB,OAAO;AACxD,QAAI,UAAU,UAAU,OAAO,MAAM,cAAc;AACjD,aAAO,MAAM;AACX,eAAO,aAAa,MAAM,UAAU,IAAI,GAAG,MAAM;AACjD,YAAI,UAAU,OAAO,EAAE,QAAQ,MAAM,aAAc;AAAA,MACrD;AAAA,IACF,OAAO;AACL,wBAAkB,YAAY;AAAA,QAC5B,cAAc,QAAQ,QAAQ,OAAO,WAAW,cAAc,WAAW,SAAS,OAAO,YAAY;AAAA,MAAA;AAEvG,YAAM,WAAW,kBAAkB;AACnC,UAAI,cAAc,SAAS,cAAc,UAAU;AACjD,cAAM,UAAU,SAAS;AACzB,eAAO,QAAQ,YAAY;AACzB,mBAAS,YAAY,QAAQ,UAAU;AAAA,QACzC;AACA,iBAAS,YAAY,OAAO;AAAA,MAC9B;AACA,aAAO,aAAa,UAAU,MAAM;AAAA,IACtC;AACA,WAAO;AAAA;AAAA,MAEL,SAAS,OAAO,cAAc,OAAO;AAAA;AAAA,MAErC,SAAS,OAAO,kBAAkB,OAAO;AAAA,IAAA;AAAA,EAE7C;AACF;AAEA,MAAM,aAAa;AACnB,MAAM,YAAY;AAClB,MAAM,gCAAgC,MAAM;AAC5C,MAAM,+BAA+B;AAAA,EACnC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAAA,EAEX,UAAU,CAAC,QAAQ,QAAQ,MAAM;AAAA,EACjC,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,cAAc;AAChB;AACA,MAAM,4BAA4C;AAAA,EAChD,CAAA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,aAAa,CAAC,MAAM;AACxB,IAAE,cAAc;AAChB,IAAE,QAAQ;AACV,SAAO;AACT;AACA,MAAM,aAA6B;AAAA,EACjC,CAAC,OAAO,EAAE,YAAYT,IAAE,gBAAgB,uBAAuB,KAAK,GAAG,KAAK;AAC9E;AACA,MAAM,WAAW,CAAC,MAAM,OAAO,OAAO;AACpC,MAAI,QAAQ,IAAI,GAAG;AACjB,SAAK,QAAQ,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC;AAAA,EAClC,WAAW,MAAM;AACf,SAAK,GAAG,IAAI;AAAA,EACd;AACF;AACA,MAAM,sBAAsB,CAAC,SAAS;AACpC,SAAO,OAAO,QAAQ,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI;AACrF;AACA,SAAS,uBAAuB,UAAU;AACxC,QAAM,YAAY,CAAA;AAClB,aAAW,OAAO,UAAU;AAC1B,QAAI,EAAE,OAAO,+BAA+B;AAC1C,gBAAU,GAAG,IAAI,SAAS,GAAG;AAAA,IAC/B;AAAA,EACF;AACA,MAAI,SAAS,QAAQ,OAAO;AAC1B,WAAO;AAAA,EACT;AACA,QAAM;AAAA,IACJ,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,iBAAiB,GAAG,IAAI;AAAA,IACxB,mBAAmB,GAAG,IAAI;AAAA,IAC1B,eAAe,GAAG,IAAI;AAAA,IACtB,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,iBAAiB,GAAG,IAAI;AAAA,IACxB,mBAAmB,GAAG,IAAI;AAAA,IAC1B,eAAe,GAAG,IAAI;AAAA,EAAA,IACpB;AACJ,QAAM,YAAY,kBAAkB,QAAQ;AAC5C,QAAM,gBAAgB,aAAa,UAAU,CAAC;AAC9C,QAAM,gBAAgB,aAAa,UAAU,CAAC;AAC9C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,oBAAoB;AAAA,EAAA,IAClB;AACJ,QAAM,cAAc,CAAC,IAAI,UAAU,MAAM,gBAAgB;AACvD,OAAG,kBAAkB;AACrB,0BAAsB,IAAI,WAAW,gBAAgB,YAAY;AACjE,0BAAsB,IAAI,WAAW,oBAAoB,gBAAgB;AACzE,YAAQ,KAAA;AAAA,EACV;AACA,QAAM,cAAc,CAAC,IAAI,SAAS;AAChC,OAAG,aAAa;AAChB,0BAAsB,IAAI,cAAc;AACxC,0BAAsB,IAAI,YAAY;AACtC,0BAAsB,IAAI,gBAAgB;AAC1C,YAAQ,KAAA;AAAA,EACV;AACA,QAAM,gBAAgB,CAAC,aAAa;AAClC,WAAO,CAAC,IAAI,SAAS;AACnB,YAAM,OAAO,WAAW,WAAW;AACnC,YAAMU,WAAU,MAAM,YAAY,IAAI,UAAU,IAAI;AACpD,eAAS,MAAM,CAAC,IAAIA,QAAO,CAAC;AAC5B,gBAAU,MAAM;AACd,8BAAsB,IAAI,WAAW,kBAAkB,cAAc;AACrE,2BAAmB,IAAI,WAAW,gBAAgB,YAAY;AAC9D,YAAI,CAAC,oBAAoB,IAAI,GAAG;AAC9B,6BAAmB,IAAI,MAAM,eAAeA,QAAO;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,OAAO,WAAW;AAAA,IACvB,cAAc,IAAI;AAChB,eAAS,eAAe,CAAC,EAAE,CAAC;AAC5B,yBAAmB,IAAI,cAAc;AACrC,yBAAmB,IAAI,gBAAgB;AAAA,IACzC;AAAA,IACA,eAAe,IAAI;AACjB,eAAS,gBAAgB,CAAC,EAAE,CAAC;AAC7B,yBAAmB,IAAI,eAAe;AACtC,yBAAmB,IAAI,iBAAiB;AAAA,IAC1C;AAAA,IACA,SAAS,cAAc,KAAK;AAAA,IAC5B,UAAU,cAAc,IAAI;AAAA,IAC5B,QAAQ,IAAI,MAAM;AAChB,SAAG,aAAa;AAChB,YAAMA,WAAU,MAAM,YAAY,IAAI,IAAI;AAC1C,yBAAmB,IAAI,cAAc;AACrC,UAAI,CAAC,GAAG,iBAAiB;AACvB,oBAAY,EAAE;AACd,2BAAmB,IAAI,gBAAgB;AAAA,MACzC,OAAO;AACL,2BAAmB,IAAI,gBAAgB;AACvC,oBAAY,EAAE;AAAA,MAChB;AACA,gBAAU,MAAM;AACd,YAAI,CAAC,GAAG,YAAY;AAClB;AAAA,QACF;AACA,8BAAsB,IAAI,cAAc;AACxC,2BAAmB,IAAI,YAAY;AACnC,YAAI,CAAC,oBAAoB,OAAO,GAAG;AACjC,6BAAmB,IAAI,MAAM,eAAeA,QAAO;AAAA,QACrD;AAAA,MACF,CAAC;AACD,eAAS,SAAS,CAAC,IAAIA,QAAO,CAAC;AAAA,IACjC;AAAA,IACA,iBAAiB,IAAI;AACnB,kBAAY,IAAI,OAAO,QAAQ,IAAI;AACnC,eAAS,kBAAkB,CAAC,EAAE,CAAC;AAAA,IACjC;AAAA,IACA,kBAAkB,IAAI;AACpB,kBAAY,IAAI,MAAM,QAAQ,IAAI;AAClC,eAAS,mBAAmB,CAAC,EAAE,CAAC;AAAA,IAClC;AAAA,IACA,iBAAiB,IAAI;AACnB,kBAAY,EAAE;AACd,eAAS,kBAAkB,CAAC,EAAE,CAAC;AAAA,IACjC;AAAA,EAAA,CACD;AACH;AACA,SAAS,kBAAkB,UAAU;AACnC,MAAI,YAAY,MAAM;AACpB,WAAO;AAAA,EACT,WAAW,SAAS,QAAQ,GAAG;AAC7B,WAAO,CAAC,SAAS,SAAS,KAAK,GAAG,SAAS,SAAS,KAAK,CAAC;AAAA,EAC5D,OAAO;AACL,UAAM,IAAI,SAAS,QAAQ;AAC3B,WAAO,CAAC,GAAG,CAAC;AAAA,EACd;AACF;AACA,SAAS,SAAS,KAAK;AACrB,QAAM,MAAM,SAAS,GAAG;AAIxB,SAAO;AACT;AACA,SAAS,mBAAmB,IAAI,KAAK;AACnC,MAAI,MAAM,KAAK,EAAE,QAAQ,CAAC3B,OAAMA,MAAK,GAAG,UAAU,IAAIA,EAAC,CAAC;AACxD,GAAC,GAAG,MAAM,MAAM,GAAG,MAAM,IAAoB,oBAAI,IAAA,IAAQ,IAAI,GAAG;AAClE;AACA,SAAS,sBAAsB,IAAI,KAAK;AACtC,MAAI,MAAM,KAAK,EAAE,QAAQ,CAACA,OAAMA,MAAK,GAAG,UAAU,OAAOA,EAAC,CAAC;AAC3D,QAAM,OAAO,GAAG,MAAM;AACtB,MAAI,MAAM;AACR,SAAK,OAAO,GAAG;AACf,QAAI,CAAC,KAAK,MAAM;AACd,SAAG,MAAM,IAAI;AAAA,IACf;AAAA,EACF;AACF;AACA,SAAS,UAAU,IAAI;AACrB,wBAAsB,MAAM;AAC1B,0BAAsB,EAAE;AAAA,EAC1B,CAAC;AACH;AACA,IAAI,QAAQ;AACZ,SAAS,mBAAmB,IAAI,cAAc,iBAAiB2B,UAAS;AACtE,QAAM,KAAK,GAAG,SAAS,EAAE;AACzB,QAAM,oBAAoB,MAAM;AAC9B,QAAI,OAAO,GAAG,QAAQ;AACpB,MAAAA,SAAA;AAAA,IACF;AAAA,EACF;AACA,MAAI,mBAAmB,MAAM;AAC3B,WAAO,WAAW,mBAAmB,eAAe;AAAA,EACtD;AACA,QAAM,EAAE,MAAM,SAAS,cAAc,kBAAkB,IAAI,YAAY;AACvE,MAAI,CAAC,MAAM;AACT,WAAOA,SAAA;AAAA,EACT;AACA,QAAM,WAAW,OAAO;AACxB,MAAI,QAAQ;AACZ,QAAM,MAAM,MAAM;AAChB,OAAG,oBAAoB,UAAU,KAAK;AACtC,sBAAA;AAAA,EACF;AACA,QAAM,QAAQ,CAAC,MAAM;AACnB,QAAI,EAAE,WAAW,MAAM,EAAE,SAAS,WAAW;AAC3C,UAAA;AAAA,IACF;AAAA,EACF;AACA,aAAW,MAAM;AACf,QAAI,QAAQ,WAAW;AACrB,UAAA;AAAA,IACF;AAAA,EACF,GAAG,UAAU,CAAC;AACd,KAAG,iBAAiB,UAAU,KAAK;AACrC;AACA,SAAS,kBAAkB,IAAI,cAAc;AAC3C,QAAM,SAAS,OAAO,iBAAiB,EAAE;AACzC,QAAM,qBAAqB,CAAC,SAAS,OAAO,GAAG,KAAK,IAAI,MAAM,IAAI;AAClE,QAAM,mBAAmB,mBAAmB,GAAG,UAAU,OAAO;AAChE,QAAM,sBAAsB,mBAAmB,GAAG,UAAU,UAAU;AACtE,QAAM,oBAAoB,WAAW,kBAAkB,mBAAmB;AAC1E,QAAM,kBAAkB,mBAAmB,GAAG,SAAS,OAAO;AAC9D,QAAM,qBAAqB,mBAAmB,GAAG,SAAS,UAAU;AACpE,QAAM,mBAAmB,WAAW,iBAAiB,kBAAkB;AACvE,MAAI,OAAO;AACX,MAAI,UAAU;AACd,MAAI,YAAY;AAChB,MAAI,iBAAiB,YAAY;AAC/B,QAAI,oBAAoB,GAAG;AACzB,aAAO;AACP,gBAAU;AACV,kBAAY,oBAAoB;AAAA,IAClC;AAAA,EACF,WAAW,iBAAiB,WAAW;AACrC,QAAI,mBAAmB,GAAG;AACxB,aAAO;AACP,gBAAU;AACV,kBAAY,mBAAmB;AAAA,IACjC;AAAA,EACF,OAAO;AACL,cAAU,KAAK,IAAI,mBAAmB,gBAAgB;AACtD,WAAO,UAAU,IAAI,oBAAoB,mBAAmB,aAAa,YAAY;AACrF,gBAAY,OAAO,SAAS,aAAa,oBAAoB,SAAS,mBAAmB,SAAS;AAAA,EACpG;AACA,QAAM,eAAe,SAAS,cAAc,6BAA6B;AAAA,IACvE,mBAAmB,GAAG,UAAU,UAAU,EAAE,SAAA;AAAA,EAAS;AAEvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,WAAW,QAAQ,WAAW;AACrC,SAAO,OAAO,SAAS,UAAU,QAAQ;AACvC,aAAS,OAAO,OAAO,MAAM;AAAA,EAC/B;AACA,SAAO,KAAK,IAAI,GAAG,UAAU,IAAI,CAACC,IAAG9B,OAAM,KAAK8B,EAAC,IAAI,KAAK,OAAO9B,EAAC,CAAC,CAAC,CAAC;AACvE;AACA,SAAS,KAAKG,IAAG;AACf,MAAIA,OAAM,OAAQ,QAAO;AACzB,SAAO,OAAOA,GAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,KAAK,GAAG,CAAC,IAAI;AACpD;AACA,SAAS,YAAY,IAAI;AACvB,QAAM,iBAAiB,KAAK,GAAG,gBAAgB;AAC/C,SAAO,eAAe,KAAK;AAC7B;AAEA,SAAS,WAAW,IAAI,OAAO,OAAO;AACpC,QAAM,oBAAoB,GAAG,MAAM;AACnC,MAAI,mBAAmB;AACrB,aAAS,QAAQ,CAAC,OAAO,GAAG,iBAAiB,IAAI,CAAC,GAAG,iBAAiB,GAAG,KAAK,GAAG;AAAA,EACnF;AACA,MAAI,SAAS,MAAM;AACjB,OAAG,gBAAgB,OAAO;AAAA,EAC5B,WAAW,OAAO;AAChB,OAAG,aAAa,SAAS,KAAK;AAAA,EAChC,OAAO;AACL,OAAG,YAAY;AAAA,EACjB;AACF;AAEA,MAAM,8CAA8C,MAAM;AAC1D,MAAM,qCAAqC,MAAM;AACjD,MAAM,QAAQ;AAAA;AAAA,EAEZ,MAAM;AAAA,EACN,YAAY,IAAI,EAAE,SAAS,EAAE,cAAc;AACzC,OAAG,oBAAoB,IAAI,GAAG,MAAM,YAAY,SAAS,KAAK,GAAG,MAAM;AACvE,QAAI,cAAc,OAAO;AACvB,iBAAW,YAAY,EAAE;AAAA,IAC3B,OAAO;AACL,iBAAW,IAAI,KAAK;AAAA,IACtB;AAAA,EACF;AAAA,EACA,QAAQ,IAAI,EAAE,SAAS,EAAE,cAAc;AACrC,QAAI,cAAc,OAAO;AACvB,iBAAW,MAAM,EAAE;AAAA,IACrB;AAAA,EACF;AAAA,EACA,QAAQ,IAAI,EAAE,OAAO,YAAY,EAAE,cAAc;AAC/C,QAAI,CAAC,UAAU,CAAC,SAAU;AAC1B,QAAI,YAAY;AACd,UAAI,OAAO;AACT,mBAAW,YAAY,EAAE;AACzB,mBAAW,IAAI,IAAI;AACnB,mBAAW,MAAM,EAAE;AAAA,MACrB,OAAO;AACL,mBAAW,MAAM,IAAI,MAAM;AACzB,qBAAW,IAAI,KAAK;AAAA,QACtB,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,iBAAW,IAAI,KAAK;AAAA,IACtB;AAAA,EACF;AAAA,EACA,cAAc,IAAI,EAAE,SAAS;AAC3B,eAAW,IAAI,KAAK;AAAA,EACtB;AACF;AACA,SAAS,WAAW,IAAI,OAAO;AAC7B,KAAG,MAAM,UAAU,QAAQ,GAAG,oBAAoB,IAAI;AACtD,KAAG,WAAW,IAAI,CAAC;AACrB;AASA,MAAM,eAA+B,uBAAoE,EAAE;AAyE3G,MAAM,YAAY;AAClB,SAAS,WAAW,IAAI,MAAM,MAAM;AAClC,QAAMuB,SAAQ,GAAG;AACjB,QAAM,cAAc,SAAS,IAAI;AACjC,MAAI,uBAAuB;AAC3B,MAAI,QAAQ,CAAC,aAAa;AACxB,QAAI,MAAM;AACR,UAAI,CAAC,SAAS,IAAI,GAAG;AACnB,mBAAW,OAAO,MAAM;AACtB,cAAI,KAAK,GAAG,KAAK,MAAM;AACrB,qBAASA,QAAO,KAAK,EAAE;AAAA,UACzB;AAAA,QACF;AAAA,MACF,OAAO;AACL,mBAAW,aAAa,KAAK,MAAM,GAAG,GAAG;AACvC,gBAAM,MAAM,UAAU,MAAM,GAAG,UAAU,QAAQ,GAAG,CAAC,EAAE,KAAA;AACvD,cAAI,KAAK,GAAG,KAAK,MAAM;AACrB,qBAASA,QAAO,KAAK,EAAE;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,eAAW,OAAO,MAAM;AACtB,UAAI,QAAQ,WAAW;AACrB,+BAAuB;AAAA,MACzB;AACA,eAASA,QAAO,KAAK,KAAK,GAAG,CAAC;AAAA,IAChC;AAAA,EACF,OAAO;AACL,QAAI,aAAa;AACf,UAAI,SAAS,MAAM;AACjB,cAAM,aAAaA,OAAM,YAAY;AACrC,YAAI,YAAY;AACd,kBAAQ,MAAM;AAAA,QAChB;AACA,QAAAA,OAAM,UAAU;AAChB,+BAAuB,UAAU,KAAK,IAAI;AAAA,MAC5C;AAAA,IACF,WAAW,MAAM;AACf,SAAG,gBAAgB,OAAO;AAAA,IAC5B;AAAA,EACF;AACA,MAAI,wBAAwB,IAAI;AAC9B,OAAG,oBAAoB,IAAI,uBAAuBA,OAAM,UAAU;AAClE,QAAI,GAAG,WAAW,GAAG;AACnB,MAAAA,OAAM,UAAU;AAAA,IAClB;AAAA,EACF;AACF;AAEA,MAAM,cAAc;AACpB,SAAS,SAASA,QAAO,MAAM,KAAK;AAClC,MAAI,QAAQ,GAAG,GAAG;AAChB,QAAI,QAAQ,CAACnB,OAAM,SAASmB,QAAO,MAAMnB,EAAC,CAAC;AAAA,EAC7C,OAAO;AACL,QAAI,OAAO,KAAM,OAAM;AAQvB,QAAI,KAAK,WAAW,IAAI,GAAG;AACzB,MAAAmB,OAAM,YAAY,MAAM,GAAG;AAAA,IAC7B,OAAO;AACL,YAAM,WAAW,WAAWA,QAAO,IAAI;AACvC,UAAI,YAAY,KAAK,GAAG,GAAG;AACzB,QAAAA,OAAM;AAAA,UACJ,UAAU,QAAQ;AAAA,UAClB,IAAI,QAAQ,aAAa,EAAE;AAAA,UAC3B;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,QAAAA,OAAM,QAAQ,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;AACA,MAAM,WAAW,CAAC,UAAU,OAAO,IAAI;AACvC,MAAM,cAAc,CAAA;AACpB,SAAS,WAAWA,QAAO,SAAS;AAClC,QAAM,SAAS,YAAY,OAAO;AAClC,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AACA,MAAI,OAAO,SAAS,OAAO;AAC3B,MAAI,SAAS,YAAY,QAAQA,QAAO;AACtC,WAAO,YAAY,OAAO,IAAI;AAAA,EAChC;AACA,SAAO,WAAW,IAAI;AACtB,WAAS1B,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,UAAM,WAAW,SAASA,EAAC,IAAI;AAC/B,QAAI,YAAY0B,QAAO;AACrB,aAAO,YAAY,OAAO,IAAI;AAAA,IAChC;AAAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,UAAU;AAChB,SAAS,UAAU,IAAI,KAAK,OAAO,OAAO,UAAU,YAAY,qBAAqB,GAAG,GAAG;AACzF,MAAI,SAAS,IAAI,WAAW,QAAQ,GAAG;AACrC,QAAI,SAAS,MAAM;AACjB,SAAG,kBAAkB,SAAS,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC;AAAA,IACxD,OAAO;AACL,SAAG,eAAe,SAAS,KAAK,KAAK;AAAA,IACvC;AAAA,EACF,OAAO;AACL,QAAI,SAAS,QAAQ,aAAa,CAAC,mBAAmB,KAAK,GAAG;AAC5D,SAAG,gBAAgB,GAAG;AAAA,IACxB,OAAO;AACL,SAAG;AAAA,QACD;AAAA,QACA,YAAY,KAAK,SAAS,KAAK,IAAI,OAAO,KAAK,IAAI;AAAA,MAAA;AAAA,IAEvD;AAAA,EACF;AACF;AAEA,SAAS,aAAa,IAAI,KAAK,OAAO,iBAAiB,UAAU;AAC/D,MAAI,QAAQ,eAAe,QAAQ,eAAe;AAChD,QAAI,SAAS,MAAM;AACjB,SAAG,GAAG,IAAI,QAAQ,cAAc,oBAAoB,KAAK,IAAI;AAAA,IAC/D;AACA;AAAA,EACF;AACA,QAAM,MAAM,GAAG;AACf,MAAI,QAAQ,WAAW,QAAQ;AAAA,EAC/B,CAAC,IAAI,SAAS,GAAG,GAAG;AAClB,UAAM,WAAW,QAAQ,WAAW,GAAG,aAAa,OAAO,KAAK,KAAK,GAAG;AACxE,UAAM,WAAW,SAAS;AAAA;AAAA;AAAA,MAGxB,GAAG,SAAS,aAAa,OAAO;AAAA,QAC9B,OAAO,KAAK;AAChB,QAAI,aAAa,YAAY,EAAE,YAAY,KAAK;AAC9C,SAAG,QAAQ;AAAA,IACb;AACA,QAAI,SAAS,MAAM;AACjB,SAAG,gBAAgB,GAAG;AAAA,IACxB;AACA,OAAG,SAAS;AACZ;AAAA,EACF;AACA,MAAI,aAAa;AACjB,MAAI,UAAU,MAAM,SAAS,MAAM;AACjC,UAAM,OAAO,OAAO,GAAG,GAAG;AAC1B,QAAI,SAAS,WAAW;AACtB,cAAQ,mBAAmB,KAAK;AAAA,IAClC,WAAW,SAAS,QAAQ,SAAS,UAAU;AAC7C,cAAQ;AACR,mBAAa;AAAA,IACf,WAAW,SAAS,UAAU;AAC5B,cAAQ;AACR,mBAAa;AAAA,IACf;AAAA,EACF;AACA,MAAI;AACF,OAAG,GAAG,IAAI;AAAA,EACZ,SAAS,GAAG;AAAA,EAOZ;AACA,gBAAc,GAAG,gBAAgB,YAAY,GAAG;AAClD;AAEA,SAAS,iBAAiB,IAAI,OAAO,SAAS,SAAS;AACrD,KAAG,iBAAiB,OAAO,SAAS,OAAO;AAC7C;AACA,SAAS,oBAAoB,IAAI,OAAO,SAAS,SAAS;AACxD,KAAG,oBAAoB,OAAO,SAAS,OAAO;AAChD;AACA,MAAM,gCAAgC,MAAM;AAC5C,SAAS,WAAW,IAAI,SAAS,WAAW,WAAW,WAAW,MAAM;AACtE,QAAM,WAAW,GAAG,MAAM,MAAM,GAAG,MAAM,IAAI;AAC7C,QAAM,kBAAkB,SAAS,OAAO;AACxC,MAAI,aAAa,iBAAiB;AAChC,oBAAgB,QAA6F;AAAA,EAC/G,OAAO;AACL,UAAM,CAAC,MAAM,OAAO,IAAI,UAAU,OAAO;AACzC,QAAI,WAAW;AACb,YAAM,UAAU,SAAS,OAAO,IAAI;AAAA,QACmD;AAAA,QACrF;AAAA,MAAA;AAEF,uBAAiB,IAAI,MAAM,SAAS,OAAO;AAAA,IAC7C,WAAW,iBAAiB;AAC1B,0BAAoB,IAAI,MAAM,iBAAiB,OAAO;AACtD,eAAS,OAAO,IAAI;AAAA,IACtB;AAAA,EACF;AACF;AACA,MAAM,oBAAoB;AAC1B,SAAS,UAAU,MAAM;AACvB,MAAI;AACJ,MAAI,kBAAkB,KAAK,IAAI,GAAG;AAChC,cAAU,CAAA;AACV,QAAIN;AACJ,WAAOA,KAAI,KAAK,MAAM,iBAAiB,GAAG;AACxC,aAAO,KAAK,MAAM,GAAG,KAAK,SAASA,GAAE,CAAC,EAAE,MAAM;AAC9C,cAAQA,GAAE,CAAC,EAAE,YAAA,CAAa,IAAI;AAAA,IAChC;AAAA,EACF;AACA,QAAM,QAAQ,KAAK,CAAC,MAAM,MAAM,KAAK,MAAM,CAAC,IAAI,UAAU,KAAK,MAAM,CAAC,CAAC;AACvE,SAAO,CAAC,OAAO,OAAO;AACxB;AACA,IAAI,YAAY;AAChB,MAAM,4BAA4B,QAAA;AAClC,MAAM,SAAS,MAAM,cAAc,EAAE,KAAK,MAAM,YAAY,CAAC,GAAG,YAAY,KAAK,IAAA;AACjF,SAAS,cAAc,cAAc,UAAU;AAC7C,QAAM,UAAU,CAAC,MAAM;AACrB,QAAI,CAAC,EAAE,MAAM;AACX,QAAE,OAAO,KAAK,IAAA;AAAA,IAChB,WAAW,EAAE,QAAQ,QAAQ,UAAU;AACrC;AAAA,IACF;AACA;AAAA,MACE,8BAA8B,GAAG,QAAQ,KAAK;AAAA,MAC9C;AAAA,MACA;AAAA,MACA,CAAC,CAAC;AAAA,IAAA;AAAA,EAEN;AACA,UAAQ,QAAQ;AAChB,UAAQ,WAAW,OAAA;AACnB,SAAO;AACT;AAWA,SAAS,8BAA8B,GAAG,OAAO;AAC/C,MAAI,QAAQ,KAAK,GAAG;AAClB,UAAM,eAAe,EAAE;AACvB,MAAE,2BAA2B,MAAM;AACjC,mBAAa,KAAK,CAAC;AACnB,QAAE,WAAW;AAAA,IACf;AACA,WAAO,MAAM;AAAA,MACX,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,YAAY,MAAM,GAAG,EAAE;AAAA,IAAA;AAAA,EAE/C,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,MAAM,aAAa,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,OAAO,IAAI,WAAW,CAAC,MAAM;AAC/E,IAAI,WAAW,CAAC,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI;AAC9C,MAAM,YAAY,CAAC,IAAI,KAAK,WAAW,WAAW,WAAW,oBAAoB;AAC/E,QAAM,QAAQ,cAAc;AAC5B,MAAI,QAAQ,SAAS;AACnB,eAAW,IAAI,WAAW,KAAK;AAAA,EACjC,WAAW,QAAQ,SAAS;AAC1B,eAAW,IAAI,WAAW,SAAS;AAAA,EACrC,WAAW,KAAK,GAAG,GAAG;AACpB,QAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB,iBAAW,IAAI,KAAK,WAAW,WAAW,eAAe;AAAA,IAC3D;AAAA,EACF,WAAW,IAAI,CAAC,MAAM,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,QAAQ,IAAI,CAAC,MAAM,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,SAAS,gBAAgB,IAAI,KAAK,WAAW,KAAK,GAAG;AAClJ,iBAAa,IAAI,KAAK,SAAS;AAC/B,QAAI,CAAC,GAAG,QAAQ,SAAS,GAAG,MAAM,QAAQ,WAAW,QAAQ,aAAa,QAAQ,aAAa;AAC7F,gBAAU,IAAI,KAAK,WAAW,OAAO,iBAAiB,QAAQ,OAAO;AAAA,IACvE;AAAA,EACF;AAAA;AAAA,IAEE,GAAG,aAAa,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,SAAS;AAAA,IACxD;AACA,iBAAa,IAAIW,SAAW,GAAG,GAAG,WAAW,iBAAiB,GAAG;AAAA,EACnE,OAAO;AACL,QAAI,QAAQ,cAAc;AACxB,SAAG,aAAa;AAAA,IAClB,WAAW,QAAQ,eAAe;AAChC,SAAG,cAAc;AAAA,IACnB;AACA,cAAU,IAAI,KAAK,WAAW,KAAK;AAAA,EACrC;AACF;AACA,SAAS,gBAAgB,IAAI,KAAK,OAAO,OAAO;AAC9C,MAAI,OAAO;AACT,QAAI,QAAQ,eAAe,QAAQ,eAAe;AAChD,aAAO;AAAA,IACT;AACA,QAAI,OAAO,MAAM,WAAW,GAAG,KAAK,WAAW,KAAK,GAAG;AACrD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe;AAC/F,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,aAAa,GAAG,YAAY,UAAU;AAChD,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,QAAQ;AAClB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,UAAU,GAAG,YAAY,SAAS;AAC5C,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,UAAU,GAAG,YAAY,YAAY;AAC/C,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,WAAW,QAAQ,UAAU;AACvC,UAAM,MAAM,GAAG;AACf,QAAI,QAAQ,SAAS,QAAQ,WAAW,QAAQ,YAAY,QAAQ,UAAU;AAC5E,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,WAAW,GAAG,KAAK,SAAS,KAAK,GAAG;AACtC,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAChB;AAwnBA,MAAM,mBAAmB,CAAC,UAAU;AAClC,QAAM,KAAK,MAAM,MAAM,qBAAqB,KAAK;AACjD,SAAO,QAAQ,EAAE,IAAI,CAAC,UAAU,eAAe,IAAI,KAAK,IAAI;AAC9D;AACA,SAAS,mBAAmB,GAAG;AAC7B,IAAE,OAAO,YAAY;AACvB;AACA,SAAS,iBAAiB,GAAG;AAC3B,QAAM,SAAS,EAAE;AACjB,MAAI,OAAO,WAAW;AACpB,WAAO,YAAY;AACnB,WAAO,cAAc,IAAI,MAAM,OAAO,CAAC;AAAA,EACzC;AACF;AACA,MAAM,mCAAmC,SAAS;AAClD,SAAS,UAAU,OAAO,MAAM,QAAQ;AACtC,MAAI,KAAM,SAAQ,MAAM,KAAA;AACxB,MAAI,OAAQ,SAAQ,cAAc,KAAK;AACvC,SAAO;AACT;AACA,MAAM,aAAa;AAAA,EACjB,QAAQ,IAAI,EAAE,WAAW,EAAE,MAAM,MAAM,SAAO,GAAK,OAAO;AACxD,OAAG,SAAS,IAAI,iBAAiB,KAAK;AACtC,UAAM,eAAe,UAAU,MAAM,SAAS,MAAM,MAAM,SAAS;AACnE,qBAAiB,IAAI,OAAO,WAAW,SAAS,CAAC,MAAM;AACrD,UAAI,EAAE,OAAO,UAAW;AACxB,SAAG,SAAS,EAAE,UAAU,GAAG,OAAO,MAAM,YAAY,CAAC;AAAA,IACvD,CAAC;AACD,QAAI,QAAQ,cAAc;AACxB,uBAAiB,IAAI,UAAU,MAAM;AACnC,WAAG,QAAQ,UAAU,GAAG,OAAO,MAAM,YAAY;AAAA,MACnD,CAAC;AAAA,IACH;AACA,QAAI,CAAC,MAAM;AACT,uBAAiB,IAAI,oBAAoB,kBAAkB;AAC3D,uBAAiB,IAAI,kBAAkB,gBAAgB;AACvD,uBAAiB,IAAI,UAAU,gBAAgB;AAAA,IACjD;AAAA,EACF;AAAA;AAAA,EAEA,QAAQ,IAAI,EAAE,SAAS;AACrB,OAAG,QAAQ,SAAS,OAAO,KAAK;AAAA,EAClC;AAAA,EACA,aAAa,IAAI,EAAE,OAAO,UAAU,WAAW,EAAE,MAAM,MAAM,OAAA,EAAO,GAAK,OAAO;AAC9E,OAAG,SAAS,IAAI,iBAAiB,KAAK;AACtC,QAAI,GAAG,UAAW;AAClB,UAAM,WAAW,UAAU,GAAG,SAAS,aAAa,CAAC,OAAO,KAAK,GAAG,KAAK,IAAI,cAAc,GAAG,KAAK,IAAI,GAAG;AAC1G,UAAM,WAAW,SAAS,OAAO,KAAK;AACtC,QAAI,YAAY,UAAU;AACxB;AAAA,IACF;AACA,QAAI,SAAS,kBAAkB,MAAM,GAAG,SAAS,SAAS;AACxD,UAAI,QAAQ,UAAU,UAAU;AAC9B;AAAA,MACF;AACA,UAAI,QAAQ,GAAG,MAAM,KAAA,MAAW,UAAU;AACxC;AAAA,MACF;AAAA,IACF;AACA,OAAG,QAAQ;AAAA,EACb;AACF;AAwDA,MAAM,cAAc;AAAA,EAClB,QAAQ,IAAI,EAAE,MAAA,GAAS,OAAO;AAC5B,OAAG,UAAU,WAAW,OAAO,MAAM,MAAM,KAAK;AAChD,OAAG,SAAS,IAAI,iBAAiB,KAAK;AACtC,qBAAiB,IAAI,UAAU,MAAM;AACnC,SAAG,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,aAAa,IAAI,EAAE,OAAO,SAAA,GAAY,OAAO;AAC3C,OAAG,SAAS,IAAI,iBAAiB,KAAK;AACtC,QAAI,UAAU,UAAU;AACtB,SAAG,UAAU,WAAW,OAAO,MAAM,MAAM,KAAK;AAAA,IAClD;AAAA,EACF;AACF;AAkEA,SAAS,SAAS,IAAI;AACpB,SAAO,YAAY,KAAK,GAAG,SAAS,GAAG;AACzC;AA+EA,MAAM,kBAAkB,CAAC,QAAQ,SAAS,OAAO,MAAM;AACvD,MAAM,iBAAiB;AAAA,EACrB,MAAM,CAAC,MAAM,EAAE,gBAAA;AAAA,EACf,SAAS,CAAC,MAAM,EAAE,eAAA;AAAA,EAClB,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE;AAAA,EAC5B,MAAM,CAAC,MAAM,CAAC,EAAE;AAAA,EAChB,OAAO,CAAC,MAAM,CAAC,EAAE;AAAA,EACjB,KAAK,CAAC,MAAM,CAAC,EAAE;AAAA,EACf,MAAM,CAAC,MAAM,CAAC,EAAE;AAAA,EAChB,MAAM,CAAC,MAAM,YAAY,KAAK,EAAE,WAAW;AAAA,EAC3C,QAAQ,CAAC,MAAM,YAAY,KAAK,EAAE,WAAW;AAAA,EAC7C,OAAO,CAAC,MAAM,YAAY,KAAK,EAAE,WAAW;AAAA,EAC5C,OAAO,CAAC,GAAG,cAAc,gBAAgB,KAAK,CAACX,OAAM,EAAE,GAAGA,EAAC,KAAK,KAAK,CAAC,UAAU,SAASA,EAAC,CAAC;AAC7F;AACA,MAAM,gBAAgB,CAAC,IAAI,cAAc;AACvC,QAAM,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAA;AAC9C,QAAM,WAAW,UAAU,KAAK,GAAG;AACnC,SAAO,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK,CAAC,UAAU,SAAS;AAChE,aAASpB,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,YAAM,QAAQ,eAAe,UAAUA,EAAC,CAAC;AACzC,UAAI,SAAS,MAAM,OAAO,SAAS,EAAG;AAAA,IACxC;AACA,WAAO,GAAG,OAAO,GAAG,IAAI;AAAA,EAC1B;AACF;AACA,MAAM,WAAW;AAAA,EACf,KAAK;AAAA,EACL,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AACV;AACA,MAAM,WAAW,CAAC,IAAI,cAAc;AAClC,QAAM,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAA;AAC9C,QAAM,WAAW,UAAU,KAAK,GAAG;AACnC,SAAO,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK,CAAC,UAAU;AACvD,QAAI,EAAE,SAAS,QAAQ;AACrB;AAAA,IACF;AACA,UAAM,WAAW,UAAU,MAAM,GAAG;AACpC,QAAI,UAAU;AAAA,MACZ,CAACgC,OAAMA,OAAM,YAAY,SAASA,EAAC,MAAM;AAAA,IAAA,GACxC;AACD,aAAO,GAAG,KAAK;AAAA,IACjB;AAAA,EACF;AACF;AAEA,MAAM,kBAAkC,uBAAO,EAAE,UAAA,GAAa,OAAO;AACrE,IAAI;AAEJ,SAAS,iBAAiB;AACxB,SAAO,aAAa,WAAW,eAAe,eAAe;AAC/D;AAYA,MAAM,aAAa,IAAI,SAAS;AAC9B,QAAMV,OAAM,eAAA,EAAiB,UAAU,GAAG,IAAI;AAK9C,QAAM,EAAE,UAAUA;AAClB,EAAAA,KAAI,QAAQ,CAAC,wBAAwB;AACnC,UAAM,YAAY,mBAAmB,mBAAmB;AACxD,QAAI,CAAC,UAAW;AAChB,UAAM,YAAYA,KAAI;AACtB,QAAI,CAAC,WAAW,SAAS,KAAK,CAAC,UAAU,UAAU,CAAC,UAAU,UAAU;AACtE,gBAAU,WAAW,UAAU;AAAA,IACjC;AACA,QAAI,UAAU,aAAa,GAAG;AAC5B,gBAAU,cAAc;AAAA,IAC1B;AACA,UAAM,QAAQ,MAAM,WAAW,OAAO,qBAAqB,SAAS,CAAC;AACrE,QAAI,qBAAqB,SAAS;AAChC,gBAAU,gBAAgB,SAAS;AACnC,gBAAU,aAAa,cAAc,EAAE;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AACA,SAAOA;AACT;AAgBA,SAAS,qBAAqB,WAAW;AACvC,MAAI,qBAAqB,YAAY;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,kBAAkB,cAAc,qBAAqB,eAAe;AAC7E,WAAO;AAAA,EACT;AACF;AAoCA,SAAS,mBAAmB,WAAW;AACrC,MAAI,SAAS,SAAS,GAAG;AACvB,UAAM,MAAM,SAAS,cAAc,SAAS;AAM5C,WAAO;AAAA,EACT;AAMA,SAAO;AACT;ACp3DA,IAAIW,OAAG,OAAO;AAAe,IAAI,IAAE,OAAO;AAAsB,IAAI,KAAG,OAAO,UAAU,gBAAeC,OAAG,OAAO,UAAU;AAAqB,IAAIC,MAAE,CAAC,GAAE,GAAE,MAAI,KAAK,IAAEF,KAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,CAAC,IAAE,GAAE,IAAE,CAAC,GAAE,MAAI;AAAC,WAAQ,KAAK,MAAI,IAAE,CAAA,GAAI,IAAG,KAAK,GAAE,CAAC,KAAGE,IAAE,GAAE,GAAE,EAAE,CAAC,CAAC;AAAE,MAAG,EAAE,UAAQ,KAAK,EAAE,CAAC,EAAED,MAAG,KAAK,GAAE,CAAC,KAAGC,IAAE,GAAE,GAAE,EAAE,CAAC,CAAC;AAAE,SAAO;AAAC;AAAE,SAAS,EAAE,GAAE;AAAC,SAAO,KAAG,QAAM,MAAI,MAAI,MAAM,QAAQ,CAAC,KAAG,EAAE,WAAS,KAAG,EAAE,aAAa,SAAO,OAAO,KAAG,YAAU,OAAO,KAAK,CAAC,EAAE,WAAS;AAAC;AAA43B,SAASjC,IAAE,GAAE;AAAC,SAAO,OAAO,KAAG,cAAY,UAAS,KAAG,WAAU;AAAC;AAAC,SAASC,IAAE,GAAE;AAAC,SAAM,CAAC,EAAE,CAAC;AAAC;AAAuZ,SAAS,EAAE,GAAE,IAAE,MAAG;AAAC,SAAO,aAAa,UAAQ,EAAE,gBAAc,WAAS,KAAG,OAAO,KAAK,CAAC,EAAE,WAAS;AAAE;AAAC,SAASiC,IAAE,IAAE,IAAG,IAAE,CAAA,GAAG;AAAC,MAAI,IAAE,EAAE,CAAA,GAAG,CAAC;AAAE,SAAO,OAAO,KAAK,CAAC,EAAE,QAAQ,OAAG;AAAC,QAAI,IAAE;AAAE,MAAE,EAAE,CAAC,CAAC,KAAG,KAAK,KAAG,EAAE,EAAE,CAAC,CAAC,IAAE,EAAE,CAAC,IAAEA,IAAE,EAAE,CAAC,GAAE,EAAE,CAAC,CAAC,IAAE,EAAE,CAAC,IAAE,EAAE,CAAC;AAAA,EAAC,CAAC,GAAE;AAAC;AAAC,SAAS,KAAK,GAAE;AAAC,SAAO,EAAE,OAAO,CAAC,GAAE,GAAE,MAAI,MAAI,IAAE,IAAEA,IAAE,GAAE,CAAC,GAAE,CAAA,CAAE;AAAC;AAAuc,SAAS,EAAE,MAAK,GAAE;AAAC,SAAOlC,IAAE,CAAC,IAAE,EAAE,GAAG,CAAC,IAAE;AAAC;AAAC,SAAS,EAAE,GAAE,IAAE,MAAG;AAAC,SAAO,OAAO,KAAG,aAAW,KAAG,MAAI;AAAG;AAAshB,SAAS,EAAE,GAAE;AAAC,SAAOC,IAAE,CAAC,KAAG,CAAC,MAAM,CAAC;AAAC;AAAkP,SAAS,EAAE,GAAE,GAAE;AAAC,MAAG,GAAE;AAAC,QAAI,IAAE,EAAE,KAAK,CAAC;AAAE,WAAO,EAAE,YAAU,GAAE;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS,KAAK,GAAE;AAAC,SAAO,EAAE,GAAG,CAAC;AAAC;AAAC,SAASkC,IAAE,GAAE;AAAC,SAAO,KAAG,EAAE,QAAQ,0CAAyC,EAAE,EAAE,QAAQ,UAAS,GAAG,EAAE,QAAQ,cAAa,IAAI,EAAE,QAAQ,YAAW,IAAI,EAAE,QAAQ,OAAM,GAAG,EAAE,QAAQ,OAAM,GAAG,EAAE,KAAI;AAAE;AAGzlH,SAAS,GAAG,GAAE;AAAC,SAAO,EAAE,CAAC,IAAE,EAAE,QAAQ,QAAO,GAAG,EAAE,QAAQ,mBAAkB,OAAO,EAAE,YAAW,IAAG;AAAC;ACH1Q,SAAS,IAAG;AAAC,MAAI,IAAE,oBAAI;AAAI,SAAM,EAAC,GAAG,GAAE,GAAE;AAAC,QAAI,IAAE,EAAE,IAAI,CAAC;AAAE,WAAO,IAAE,EAAE,KAAK,CAAC,IAAE,IAAE,CAAC,CAAC,GAAE,EAAE,IAAI,GAAE,CAAC,GAAE;AAAA,EAAI,GAAE,IAAI,GAAE,GAAE;AAAC,QAAI,IAAE,EAAE,IAAI,CAAC;AAAE,WAAO,KAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAI,GAAE,CAAC,GAAE;AAAA,EAAI,GAAE,KAAK,GAAE,GAAE;AAAC,QAAI,IAAE,EAAE,IAAI,CAAC;AAAE,SAAG,EAAE,QAAQ,CAAArC,OAAG;AAAC,MAAAA,GAAE,CAAC;AAAA,IAAC,CAAC;AAAA,EAAC,GAAE,QAAO;AAAC,MAAE,MAAK;AAAA,EAAE,EAAC;AAAC;ACAk2H,SAAS,EAAE,GAAE;AAAC,MAAG,GAAE;AAAC,QAAI,IAAE,EAAE;AAAW,WAAO,KAAG,aAAa,cAAY,EAAE,SAAO,IAAE,EAAE,OAAM;AAAA,EAAC;AAAC,SAAO;AAAI;AAAC,SAAS,EAAE,GAAE;AAAC,SAAM,CAAC,EAAE,MAAI,QAAM,OAAO,KAAG,eAAa,EAAE,YAAU,EAAE,CAAC;AAAE;AAAC,SAAS,EAAE,GAAE;AAAC,SAAO,OAAO,WAAS,cAAY,aAAa,UAAQ,MAAI,QAAM,OAAO,KAAG,YAAU,EAAE,aAAW,KAAG,OAAO,EAAE,YAAU;AAAQ;AAA8nE,SAAS,EAAE,GAAE,IAAE,CAAA,GAAG;AAAC,MAAG,EAAE,CAAC,GAAE;AAAC,QAAI,IAAE,CAAC,GAAE,MAAI;AAAC,UAAIS,IAAEqB;AAAE,UAAI9B,MAAGS,KAAE,KAAG,OAAK,SAAO,EAAE,WAAS,QAAMA,GAAE,CAAC,IAAE,EAAEqB,KAAE,KAAG,OAAK,SAAO,EAAE,WAAS,OAAK,SAAOA,GAAE,CAAC,CAAC,IAAE;AAAG,aAAM,CAAC,CAAC,EAAE,KAAI,EAAG,OAAO,CAAC3B,IAAEC,OAAI;AAAC,YAAGA,MAAG,MAAK;AAAC,cAAI,IAAE,OAAOA;AAAE,cAAG,MAAI,YAAU,MAAI,SAAS,CAAAD,GAAE,KAAKC,EAAC;AAAA,mBAAU,MAAI,UAAS;AAAC,gBAAIW,KAAE,MAAM,QAAQX,EAAC,IAAE,EAAE,GAAEA,EAAC,IAAE,OAAO,QAAQA,EAAC,EAAE,IAAI,CAAC,CAAC,GAAE,CAAC,MAAI,MAAI,YAAU,KAAG,MAAI,KAAG,GAAG,EAAE,QAAQ,mBAAkB,OAAO,EAAE,YAAW,CAAE,IAAI,CAAC,KAAG,IAAE,IAAE,MAAM;AAAE,YAAAD,KAAEY,GAAE,SAAOZ,GAAE,OAAOY,GAAE,OAAO,OAAG,CAAC,CAAC,CAAC,CAAC,IAAEZ;AAAA,UAAC;AAAA,QAAC;AAAC,eAAOA;AAAA,MAAC,GAAEH,EAAC;AAAA,IAAC;AAAE,WAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAE,CAAC,MAAI;AAAC,UAAG,KAAG,MAAK;AAAC,YAAIA,KAAE,EAAE,MAAM,SAAS;AAAE,QAAAA,KAAE,EAAE,iBAAiBA,GAAE,CAAC,EAAE,YAAW,GAAG,CAAC,IAAE,MAAI,YAAU,MAAI,UAAQ,EAAE,GAAE,CAAC,KAAG,IAAE,MAAI,UAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,SAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,KAAI,IAAG,MAAI,UAAQ,EAAE,SAAQ,CAAC,EAAE,KAAK,GAAG,EAAE,KAAI,IAAG,IAAG,EAAE,SAAO,EAAE,UAAQ,CAAA,OAAM,EAAE,OAAO,CAAC,IAAE,IAAG,EAAE,aAAa,GAAE,CAAC;AAAA,MAAE;AAAA,IAAC,CAAC;AAAA,EAAC;AAAC;AAM7wH,SAAS,KAAI;AAAC,SAAM,CAAC,EAAE,OAAO,UAAQ,eAAa,OAAO,YAAU,OAAO,SAAS;AAAc;AAMz2D,SAAS,GAAG,GAAE,IAAE,IAAG,GAAE;AAAC,IAAE,CAAC,KAAG,MAAI,QAAM,MAAI,UAAQ,EAAE,aAAa,GAAE,CAAC;AAAC;ACZh2D,IAAI,KAAG,OAAO,gBAAe,KAAG,OAAO;AAAiB,IAAI,KAAG,OAAO;AAA0B,IAAI,IAAE,OAAO;AAAsB,IAAI,KAAG,OAAO,UAAU,gBAAe,KAAG,OAAO,UAAU;AAAqB,IAAI,KAAG,CAAC,GAAE,GAAE,MAAI,KAAK,IAAE,GAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,CAAC,IAAE,GAAE,IAAE,CAAC,GAAE,MAAI;AAAC,WAAQ,KAAK,MAAI,IAAE,CAAA,GAAI,IAAG,KAAK,GAAE,CAAC,KAAG,GAAG,GAAE,GAAE,EAAE,CAAC,CAAC;AAAE,MAAG,EAAE,UAAQ,KAAK,EAAE,CAAC,EAAE,IAAG,KAAK,GAAE,CAAC,KAAG,GAAG,GAAE,GAAE,EAAE,CAAC,CAAC;AAAE,SAAO;AAAC,GAAE,IAAE,CAAC,GAAE,MAAI,GAAG,GAAE,GAAG,CAAC,CAAC;AAAE,IAAI,IAAE,CAAC,GAAE,MAAI;AAAC,MAAI,IAAE;AAAG,WAAQG,MAAK,EAAE,IAAG,KAAK,GAAEA,EAAC,KAAG,EAAE,QAAQA,EAAC,IAAE,MAAI,EAAEA,EAAC,IAAE,EAAEA,EAAC;AAAG,MAAG,KAAG,QAAM,EAAE,UAAQA,MAAK,EAAE,CAAC,EAAE,GAAE,QAAQA,EAAC,IAAE,KAAG,GAAG,KAAK,GAAEA,EAAC,MAAI,EAAEA,EAAC,IAAE,EAAEA,EAAC;AAAG,SAAO;AAAC;AAAiM,IAAI,KAAGmC,EAAE,GAAG,IAAE;AAAsK,IAAI,IAAE,cAAa,KAAG,6BAA4B,KAAG;AAAgB,SAAS,GAAG,GAAE;AAAC,SAAOC,EAAE,CAAC,IAAE,EAAE,QAAQ,UAAS,CAAC,GAAE,MAAI,MAAI,IAAE,IAAE,MAAI,EAAE,YAAW,CAAE,EAAE,YAAW,IAAG;AAAC;AAAmE,SAAS,GAAG,GAAE;AAAC,SAAOC,EAAG,CAAC,KAAG,EAAE,eAAe,QAAQ,KAAG,EAAE,eAAe,OAAO,IAAE,EAAE,SAAO;AAAC;AAA2M,SAAS,GAAG,GAAE;AAAC,SAAO,EAAE,WAAW,MAAK,EAAE,EAAE,QAAQ,UAAS,GAAG;AAAC;AAAC,SAAS,EAAE,IAAE,IAAG,IAAE,IAAG;AAAC,SAAO,GAAG,GAAGD,EAAE,GAAE,KAAE,KAAGA,EAAE,GAAE,KAAE,IAAE,GAAG,CAAC,MAAI,CAAC,GAAG,CAAC,EAAE;AAAC;AAAC,SAAS,GAAG,IAAE,IAAG,IAAE,IAAG;AAAC,SAAM,KAAK,EAAE,GAAE,CAAC,CAAC;AAAE;AAAC,SAAS,GAAG,IAAE,IAAG;AAAC,MAAI,KAAG,EAAE,MAAM,IAAI,KAAG,CAAA,GAAI,QAAO,KAAG,EAAE,MAAM,IAAI,KAAG,CAAA,GAAI;AAAO,UAAO,IAAE,KAAG,MAAI;AAAC;AAAC,SAAS,EAAE,GAAE,IAAE,IAAG,IAAE,IAAGpC,KAAE,IAAGH,IAAE;AAAC,MAAGuC,EAAE,CAAC,GAAE;AAAC,QAAInC,KAAE,EAAE;AAAO,QAAG,GAAGA,EAAC,EAAE;AAAO,QAAGqC,EAAErC,IAAE,CAAC,GAAE;AAAC,UAAI,IAAEA,GAAE,WAAW,GAAE,CAAAK,OAAG;AAAC,YAAIP,KAAEO,GAAE,QAAQ,QAAO,EAAE,EAAE,MAAM,GAAG,EAAE,OAAO,CAAAW,OAAG,CAACjB,GAAE,KAAK,CAAA2B,OAAGW,EAAErB,IAAEU,EAAC,CAAC,CAAC;AAAE,eAAM,OAAO,GAAG,GAAEY,GAAGxC,GAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAGyC,IAAG3C,EAAC,IAAE,KAAKA,EAAC,KAAG,EAAE;AAAA,MAAG,CAAC;AAAE,aAAOyC,EAAE,EAAE,QAAQ,IAAG,GAAG,GAAE,EAAE,IAAE,QAAQ,CAAC,MAAI;AAAA,IAAC;AAAC,WAAOrC;AAAA,EAAC,WAASwC,EAAG,CAAC,EAAE,QAAO;AAAC;AAAkI,SAAS,GAAG,GAAE,GAAE,GAAE;AAACL,IAAE,GAAE,KAAE,KAAG,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG;AAAC;AAAC,SAAS,EAAE,GAAE,GAAE;AAAC,SAAO,IAAE,GAAG,CAAC,IAAI,CAAC,MAAI;AAAE;AAAC,SAAS,GAAG,GAAE,GAAE;AAAC,MAAG,EAAE,QAAQ,KAAK,MAAI,GAAG,QAAO;AAAE,WAAS,EAAE,GAAE9B,IAAE;AAAC,QAAI,IAAE,CAAA,GAAGP,KAAE,GAAEkB,KAAE,IAAGU,KAAE,MAAK,IAAE;AAAE,WAAK5B,MAAG,EAAE,UAAQ;AAAC,UAAI,IAAE,EAAEA,EAAC;AAAE,WAAI,MAAI,OAAK,MAAI,OAAK,MAAI,QAAM,EAAEA,KAAE,CAAC,MAAI,SAAO4B,KAAEA,OAAI,IAAE,OAAK,IAAG,CAACA,OAAI,MAAI,OAAK,KAAI,MAAI,OAAK,MAAK,MAAI,OAAK5B,OAAI,EAAE,WAAS,MAAI,IAAG;AAAC,YAAI,IAAEkB,GAAE,KAAI;AAAG,UAAE,WAAW,KAAK,IAAE,EAAE,KAAK,GAAG,GAAEX,EAAC,CAAC,IAAE,EAAE,KAAKN,GAAE,CAAC,CAAC,GAAEiB,KAAE,IAAGlB;AAAI;AAAA,MAAQ;AAAC,YAAI,WAASkB,MAAG,IAAGlB;AAAA,IAAG;AAAC,WAAO;AAAA,EAAC;AAAC,WAASC,GAAE,GAAE;AAAC,QAAIM,KAAE,EAAE,CAAC;AAAE,SAAIA,OAAI,OAAKA,OAAI,OAAKA,OAAI,QAAM,EAAE,EAAE,SAAO,CAAC,MAAIA,GAAE,QAAO,EAAE,MAAM,GAAE,EAAE;AAAE,QAAI,IAAE,OAAO,CAAC;AAAE,WAAO,MAAM,CAAC,IAAE,IAAE;AAAA,EAAC;AAAC,MAAIT,KAAE,CAAA,GAAGI,KAAE;AAAG,WAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,KAAG,EAAE,CAAC,MAAI,OAAK,EAAE,MAAM,GAAE,IAAE,CAAC,MAAI,MAAM,CAAAA,GAAE,KAAK,CAAC,GAAE,KAAG;AAAA,WAAU,EAAE,CAAC,MAAI,OAAKA,GAAE,SAAO,GAAE;AAAC,QAAIK,KAAEL,GAAE,IAAG;AAAG,IAAAA,GAAE,WAAS,KAAGJ,GAAE,KAAK,CAACS,IAAE,CAAC,CAAC;AAAA,EAAC;AAAC,MAAG,CAACT,GAAE,OAAO,QAAO;AAAE,WAAQ,IAAEA,GAAE,SAAO,GAAE,KAAG,GAAE,KAAI;AAAC,QAAG,CAACS,IAAE,CAAC,IAAET,GAAE,CAAC,GAAEE,KAAE,EAAE,MAAMO,KAAE,GAAE,CAAC,GAAEW,KAAE,EAAElB,IAAE,CAAC,GAAE4B,KAAE,EAAE,GAAGV,EAAC;AAAE,QAAE,EAAE,MAAM,GAAEX,EAAC,IAAEqB,KAAE,EAAE,MAAM,IAAE,CAAC;AAAA,EAAC;AAAC,SAAO;AAAC;AAAojC,IAAqL,IAAE,IAAI,MAAI,GAAG,EAAE,SAAQ,GAAG,GAAG,CAAC,GAAE,KAAG,CAAC,IAAE,CAAA,GAAG,GAAE,GAAE3B,OAAI;AAAC,MAAG,GAAE;AAAC,QAAG,EAAC,UAASH,IAAE,SAAQI,GAAC,IAAE,EAAE,YAAU,CAAA,GAAG,EAAC,QAAO,GAAE,WAAUK,IAAC,KAAG,KAAG,OAAK,SAAO,EAAE,YAAUL,MAAG,CAAA,GAAG,IAAEyC,EAAG,GAAE,CAAC,IAAE,IAAE,IAAI,CAAC;AAAI,WAAO1C,OAAI,WAAS2C,EAAG3C,EAAC,KAAGM,QAAI,WAAS,EAAE,cAAc,CAAC,IAAE,EAAE,GAAE,QAAO,GAAE,CAACT,GAAE,gBAAgB,GAAE,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAE,SAAS,GAAG,MAAK,GAAE;AAAC,MAAG,aAAa,OAAM;AAAC,QAAI,IAAE,EAAE,OAAO,CAACG,IAAEH,IAAEI,OAAI;AAAC,UAAI;AAAE,aAAOD,KAAEH,OAAI,IAAE+C,EAAG,EAAE3C,EAAC,GAAE,EAAC,IAAG,EAAC,CAAC,MAAI,OAAK,IAAE;AAAA,IAAG,GAAE,EAAE;AAAE,WAAO,GAAG,GAAE,CAAC;AAAA,EAAC;AAAC,SAAO2C,EAAG,GAAE,EAAC,IAAG,EAAC,CAAC;AAAC;AAA8hC,SAAS,GAAG,GAAE,IAAE,IAAG;AAAC,MAAI,IAAE,EAAE,SAAS,UAAS,EAAC,QAAO5C,KAAE,EAAE,QAAO,UAASH,MAAE,EAAE,UAAS,kBAAiBI,KAAE,EAAE,iBAAgB,IAAE,GAAE,IAAE,CAAA,GAAGK,KAAE,IAAG,IAAE,CAAC,EAAC,MAAK,GAAE,MAAKN,GAAC,CAAC;AAAE,SAAK,EAAE,UAAQ;AAAC,QAAG,EAAC,MAAKiB,IAAE,MAAKU,GAAC,IAAE,EAAE;AAAM,aAAQ,KAAKV,IAAE;AAAC,UAAI,IAAEA,GAAE,CAAC,GAAE,IAAE,GAAG,CAAC,GAAEL,KAAEiC,EAAG,GAAE5C,EAAC,IAAE,EAAE0B,EAAC,IAAE,EAAEA,IAAEmB,GAAG,CAAC,CAAC;AAAE,UAAGC,EAAG,CAAC,EAAE,GAAE,KAAK,EAAC,MAAK,GAAE,MAAKnC,GAAC,CAAC;AAAA,WAAM;AAAC,YAAIoC,KAAE,GAAGpC,EAAC,GAAE,IAAE,EAAE,GAAEA,IAAEZ,IAAE,CAACC,EAAC,CAAC;AAAE,WAAGK,IAAE0C,IAAE,CAAC;AAAE,YAAIC,KAAErC;AAAE,QAAAZ,MAAGiD,GAAE,WAAWjD,KAAE,GAAG,MAAIiD,KAAEA,GAAE,MAAMjD,GAAE,SAAO,CAAC,IAAG,EAAE,KAAKiD,GAAE,QAAQ,MAAK,GAAG,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAAC,MAAIlD,KAAEO,GAAE,KAAK,EAAE;AAAE,SAAM,EAAC,OAAMA,IAAE,QAAO,GAAE,cAAaP,IAAE,KAAI,EAAEF,KAAEE,EAAC,EAAC;AAAC;AAAC,IAAI,IAAE,EAAC,OAAM,EAAC,OAAM,EAAC,OAAM,EAAC,SAAQ,wBAAuB,QAAQ,GAAE;AAAC,SAAM,EAAC,MAAK,SAAQ,UAAS,GAAE,SAAQ,KAAK,QAAQ,KAAK,EAAE,KAAI,CAAE,EAAC;AAAC,EAAC,GAAE,MAAK,EAAC,SAAQ,cAAa,QAAQ,GAAE;AAAC,SAAM,EAAC,MAAK,QAAO,UAAS,QAAQ,CAAC,SAAS,CAAC,IAAG,SAAQ,KAAK,QAAQ,KAAK,EAAE,KAAI,CAAE,EAAC;AAAC,EAAC,GAAE,OAAM,EAAC,SAAQ,iBAAgB,QAAQ,GAAE;AAAC,SAAM,EAAC,MAAK,SAAQ,UAAS,GAAE,SAAQ,KAAK,QAAQ,KAAK,EAAE,KAAI,CAAE,EAAC;AAAC,EAAC,GAAE,QAAO,EAAC,SAAQ,YAAW,QAAQ,GAAE;AAAC,SAAM,EAAC,MAAK,UAAS,UAAS,uCAAsC,SAAQ,KAAK,QAAQ,KAAK,EAAE,MAAM,EAAC;AAAC,EAAC,GAAE,QAAO,EAAC,QAAQ,GAAE;AAAC,SAAM,EAAC,MAAK,UAAS,UAAS,GAAE,SAAQ,KAAE;AAAC,EAAC,EAAC,GAAE,QAAQ,GAAE;AAAC,MAAI,IAAE,OAAO,KAAK,KAAK,KAAK,EAAE,OAAO,OAAG,MAAI,QAAQ,EAAE,IAAI,OAAG,KAAK,MAAM,CAAC,CAAC;AAAE,SAAM,CAAC,CAAC,EAAE,OAAO,IAAI,OAAG;AAAC,QAAIC;AAAE,YAAOA,KAAE,EAAE,IAAI,CAAAH,OAAGA,GAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAAA,OAAGA,GAAE,OAAO,MAAI,OAAKG,KAAE,KAAK,MAAM,OAAO,QAAQ,CAAC;AAAA,EAAC,CAAC;AAAC,EAAC,GAAE,aAAa,GAAE,GAAE;AAAC,SAAO,GAAG,GAAE,EAAC,QAAO,KAAG,OAAK,SAAO,EAAE,OAAM,CAAC;AAAC,GAAE,UAAU,EAAC,MAAK,IAAE,IAAG,OAAM,IAAE,IAAG,QAAO,GAAE,KAAIA,IAAE,UAASH,GAAC,GAAE;AAAC,MAAI,GAAEoD,IAAE,GAAE,GAAE,GAAEC,IAAE;AAAE,MAAG,EAAC,QAAOjD,IAAE,SAAQ,EAAC,IAAE,GAAEK,IAAE,GAAEP,IAAEkB,KAAEU,IAAE,GAAE;AAAE,MAAGwB,IAAElD,EAAC,KAAG,EAAE,cAAY,UAAS;AAAC,QAAG,EAAC,WAAU,GAAE,UAAS,IAAG,QAAOmD,IAAE,IAAEnD,IAAE,IAAE,MAAI,CAAA,GAAG,EAAC,aAAYoD,GAAC,IAAE,GAAEC,KAAE,EAAE,GAAE,CAAC,aAAa,CAAC,GAAE,IAAEF,OAAI,CAAA,GAAG,EAAC,aAAY,EAAC,IAAE,GAAEG,KAAE,EAAE,GAAE,CAAC,aAAa,CAAC,GAAE3C,KAAEyC,MAAG,IAAG,EAAC,MAAK,EAAC,IAAEzC,IAAE,IAAE,EAAEA,IAAE,CAAC,MAAM,CAAC,GAAEoC,KAAE,KAAG,CAAA,GAAG,EAAC,MAAK,EAAC,IAAEA,IAAEQ,KAAE,EAAER,IAAE,CAAC,MAAM,CAAC,GAAE,IAAEG,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,WAAU,EAAC,GAAE,CAAC,IAAE,CAAA,GAAG,IAAEA,IAAEG,EAAC,IAAE,KAAK,aAAa,EAAC,UAASA,GAAC,GAAE,CAAC,IAAE,IAAG,IAAEH,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,OAAM,EAAC,GAAE,CAAC,IAAE,CAAA,GAAG,KAAGA,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,MAAK,EAAC,GAAE,CAAC,IAAE,CAAA,GAAG,KAAGA,IAAEI,EAAC,IAAE,KAAK,aAAa,EAAC,UAASA,GAAC,GAAE,CAAC,IAAE,CAAA,GAAG,KAAGJ,IAAEK,EAAC,IAAE,KAAK,aAAa,EAAC,OAAMA,GAAC,GAAE,CAAC,IAAE,IAAG,KAAGL,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,MAAK,EAAC,GAAE,CAAC,IAAE,CAAA,GAAG,CAAC,IAAG,EAAE,IAAE,EAAE,IAAE,EAAE,iBAAe,OAAK,IAAE,IAAG,EAAE,MAAM,GAAE,CAAC,IAAG,EAAE,IAAE,EAAEF,KAAE,EAAE,iBAAe,OAAKA,KAAE,IAAG,EAAE,UAAQ,EAAE,GAAE,CAAC,IAAG,EAAE,IAAE,EAAE,IAAE,EAAE,iBAAe,OAAK,IAAE,IAAG,EAAE,UAAQ,EAAE,GAAE,CAAC,IAAG,EAAE,IAAE,EAAE,IAAE,GAAG,iBAAe,OAAK,IAAE,IAAG,GAAG,UAAQ,EAAE,GAAE,CAAC,IAAG,EAAE,IAAE,EAAE,IAAE,GAAG,iBAAe,OAAK,IAAE,IAAG,GAAG,UAAQ,CAAA,CAAE,GAAE,CAAC,IAAG,EAAE,IAAE,EAAEC,KAAE,GAAG,iBAAe,OAAKA,KAAE,IAAG,GAAG,UAAQ,CAAA,CAAE,GAAE,CAAC,IAAG,EAAE,IAAE,EAAE,IAAE,GAAG,iBAAe,OAAK,IAAE,IAAG,GAAG,UAAQ,CAAA,CAAE;AAAE,IAAA5C,KAAE,KAAK,aAAa,GAAE,IAAG,SAAQ,YAAW,GAAEN,IAAEH,EAAC,GAAE,IAAE;AAAG,QAAI,KAAG,KAAK,aAAa,GAAE,GAAG,EAAE,GAAG,EAAE,IAAG,SAAQ,YAAW,GAAEG,IAAEH,EAAC,GAAE,KAAG,KAAK,aAAa,GAAE,GAAG,EAAE,IAAG,QAAO,YAAW,GAAEG,IAAEH,EAAC;AAAE,IAAAE,KAAE,GAAG,EAAE,GAAG,EAAE,IAAGkB,MAAE,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,IAAG,GAAG,IAAG,GAAG,EAAE,CAAC,CAAC;AAAE,QAAI,KAAG,KAAK,aAAa,GAAE,GAAG,EAAE,GAAG,EAAE,sBAAqB,SAAQ,YAAW,GAAEjB,IAAEH,EAAC,GAAE4B,MAAG,KAAK,aAAa,GAAE,GAAG,EAAE,qBAAoB,QAAO,YAAW,GAAEzB,IAAEH,EAAC;AAAE,IAAA8B,KAAE,GAAG,EAAE,GAAGF,GAAE,IAAG,IAAE,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,IAAG,GAAG,IAAG,GAAG,EAAE,CAAC,CAAC,GAAE,IAAEgC,EAAGxD,GAAE,KAAI,EAAC,IAAG,EAAC,CAAC;AAAA,EAAC;AAAC,SAAM,EAAC,WAAU,EAAC,KAAIK,IAAE,QAAO,EAAC,GAAE,UAAS,EAAC,KAAIP,IAAE,QAAOkB,IAAC,GAAE,QAAO,EAAC,KAAIU,IAAE,QAAO,EAAC,GAAE,OAAM,EAAC;AAAC,GAAE,UAAU,EAAC,MAAK,IAAE,IAAG,QAAO,IAAE,CAAA,GAAG,SAAQ,GAAE,QAAO3B,IAAE,KAAIH,IAAE,UAASI,IAAE,UAAS,EAAC,GAAE;AAAC,MAAI,GAAE,GAAEW;AAAE,MAAIN,IAAE,GAAEP;AAAE,MAAGoD,IAAE,CAAC,KAAG,EAAE,cAAY,UAAS;AAAC,QAAIH,KAAE,EAAE,QAAQ,cAAa,EAAE,GAAE/B,MAAE,GAAE,EAAC,aAAY,GAAE,QAAOgC,IAAE,KAAI,EAAC,IAAEhC,KAAE,IAAE,EAAEA,KAAE,CAAC,eAAc,UAAS,KAAK,CAAC,GAAEU,KAAEsB,MAAG,IAAG,EAAC,aAAY,EAAC,IAAEtB,IAAEuB,KAAE,EAAEvB,IAAE,CAAC,aAAa,CAAC,GAAE,IAAE,KAAG,CAAA,GAAG,EAAC,MAAK,EAAC,IAAE,GAAE,IAAE,EAAE,GAAE,CAAC,MAAM,CAAC,GAAE,IAAE,KAAG,CAAA,GAAG,EAAC,MAAK,GAAE,IAAE,GAAEyB,MAAG,EAAE,GAAE,CAAC,MAAM,CAAC,GAAEC,KAAEF,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,CAACH,EAAC,GAAE,EAAE,EAAE,CAAA,GAAG,CAAC,GAAEE,EAAC,EAAC,GAAE,CAAC,IAAE,CAAA,GAAGI,KAAEH,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,CAACH,EAAC,GAAE,EAAE,EAAE,CAAA,GAAG,CAAC,GAAEI,GAAE,EAAC,GAAE,CAAC,IAAE,CAAA,GAAG,IAAED,IAAE,CAAC,IAAE,KAAK,aAAa,EAAC,CAACH,EAAC,GAAE,EAAE,EAAE,CAAA,GAAG,CAAC,GAAE,EAAE,EAAC,GAAE,CAAC,IAAE,IAAG,CAACO,IAAE,CAAC,IAAE,EAAE,IAAEF,GAAE,iBAAe,OAAK,IAAE,IAAGA,GAAE,UAAQ,CAAA,CAAE,GAAE,CAAC,GAAE,CAAC,IAAE,EAAE,IAAEC,GAAE,iBAAe,OAAK,IAAE,IAAGA,GAAE,UAAQ,CAAA,CAAE,GAAE,CAACE,IAAE,CAAC,IAAE,EAAE5C,KAAE,EAAE,iBAAe,OAAKA,KAAE,IAAG,EAAE,UAAQ,CAAA,CAAE,GAAE,IAAE,KAAK,aAAaoC,IAAE,GAAGO,EAAC,GAAG,CAAC,IAAG,SAAQ,YAAW,GAAE1D,IAAEI,IAAE,CAAC,GAAE,IAAE,KAAK,aAAa+C,IAAEQ,IAAE,QAAO,YAAW,GAAE3D,IAAEI,IAAE,CAAC;AAAE,IAAAK,KAAE,GAAG,CAAC,GAAG,CAAC,IAAG,IAAE,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,GAAE,GAAG,GAAE,GAAG,CAAC,CAAC,CAAC,GAAEP,KAAE0D,EAAG,GAAE,EAAC,IAAG,EAAC,CAAC;AAAA,EAAC;AAAC,SAAM,EAAC,KAAInD,IAAE,QAAO,GAAE,OAAMP,GAAC;AAAC,GAAE,WAAW,EAAC,MAAK,IAAE,IAAG,OAAM,IAAE,IAAG,QAAO,GAAE,KAAIC,IAAE,UAASH,GAAC,GAAE;AAAC,MAAI;AAAE,MAAG,EAAC,QAAOI,IAAE,SAAQ,EAAC,IAAE,GAAEK,MAAG,IAAEL,MAAG,OAAK,SAAOA,GAAE,eAAa,OAAK,SAAO,EAAE,CAAC;AAAE,SAAO,KAAK,UAAU,EAAC,MAAK,GAAE,QAAOK,IAAE,SAAQ,GAAE,QAAO,GAAE,KAAIN,IAAE,UAASH,GAAC,CAAC;AAAC,GAAE,WAAW,EAAC,MAAK,IAAE,IAAG,OAAM,IAAE,CAAA,GAAG,QAAO,GAAE,KAAIG,IAAE,UAASH,GAAC,GAAE;AAAC,MAAIE,IAAEkB;AAAE,MAAIhB,KAAE,EAAE,QAAQ,cAAa,EAAE,GAAE,EAAC,QAAO,GAAE,SAAQK,GAAC,IAAE,GAAE,MAAIP,KAAE,KAAG,OAAK,SAAO,EAAE,eAAa,OAAK,SAAOA,GAAEE,EAAC,QAAMgB,KAAE,KAAG,OAAK,SAAO,EAAE,eAAa,OAAK,SAAOA,GAAEhB,EAAC;AAAG,SAAO,KAAK,UAAU,EAAC,MAAKA,IAAE,QAAO,GAAE,SAAQK,IAAE,QAAO,GAAE,KAAIN,IAAE,UAASH,GAAC,CAAC;AAAC,GAAE,qBAAqB,GAAE;AAAC,SAAM,EAAE,EAAE,qBAAmB,UAAQ,EAAE,qBAAmB;AAAG,GAAE,qBAAqB,GAAE,GAAE;AAAC,MAAI;AAAE,SAAO,KAAK,qBAAqB,CAAC,IAAE,KAAK,MAAM,QAAQ,EAAE,qBAAmB,OAAG,EAAE,QAAQ,oBAAkB,IAAE,EAAE,qBAAmB,OAAK,IAAE,EAAE,QAAQ,gBAAgB,IAAE;AAAE,GAAE,cAAc,GAAE,IAAE,IAAG,GAAEG,IAAE;AAAC,MAAG,EAAC,UAASH,GAAC,IAAE;AAAE,SAAOA,KAAE,UAAU4D,EAAG5D,GAAE,SAAOA,GAAE,QAAM,WAAU,CAAC,CAAC,KAAG;AAAE,GAAE,oBAAoB,EAAC,MAAK,IAAE,IAAG,OAAM,IAAE,IAAG,QAAO,GAAE,OAAMG,KAAE,CAAA,GAAG,KAAIH,KAAE,UAASI,GAAC,GAAE;AAAC,MAAI,IAAE,KAAK,UAAU,EAAC,MAAK,GAAE,OAAM,GAAE,QAAO,GAAE,KAAIJ,KAAE,UAASI,GAAC,CAAC,GAAEK,KAAE,OAAO,QAAQN,EAAC,EAAE,OAAO,CAAC,GAAE,CAACD,IAAEkB,EAAC,MAAI,EAAE,KAAK,GAAGlB,EAAC,KAAKkB,EAAC,GAAG,KAAG,GAAE,CAAA,CAAE,EAAE,KAAK,GAAG;AAAE,SAAO,OAAO,QAAQ,KAAG,CAAA,CAAE,EAAE,OAAO,CAAC,GAAE,CAAClB,IAAEkB,EAAC,MAAI;AAAC,QAAGyC,EAAGzC,EAAC,KAAG,OAAO,OAAOA,IAAE,KAAK,GAAE;AAAC,UAAIU,KAAEgC,IAAG1C,GAAE,GAAG,GAAE,IAAE,GAAGlB,EAAC;AAAa,QAAE,KAAK,kDAAkD,CAAC,KAAKO,EAAC,IAAIqB,EAAC,UAAU;AAAA,IAAC;AAAC,WAAO;AAAA,EAAC,GAAE,CAAA,CAAE,EAAE,KAAK,EAAE;AAAC,GAAE,cAAc,EAAC,MAAK,IAAE,IAAG,OAAM,IAAE,CAAA,GAAG,QAAO,GAAE,OAAM3B,KAAE,IAAG,KAAIH,IAAE,UAASI,GAAC,GAAE;AAAC,MAAIF;AAAE,MAAI,IAAE,EAAC,MAAK,GAAE,OAAM,GAAE,QAAO,GAAE,KAAIF,IAAE,UAASI,GAAC,GAAEK,MAAGP,KAAE,EAAE,SAAS,YAAY,IAAE,KAAK,WAAW,CAAC,IAAE,KAAK,WAAW,CAAC,MAAI,OAAK,SAAOA,GAAE,KAAI,IAAE,OAAO,QAAQC,EAAC,EAAE,OAAO,CAACiB,IAAE,CAACU,IAAE,CAAC,MAAIV,GAAE,KAAK,GAAGU,EAAC,KAAK,CAAC,GAAG,KAAGV,IAAE,EAAE,EAAE,KAAK,GAAG;AAAE,SAAOX,KAAE,kDAAkD,CAAC,eAAe,CAAC,IAAIqD,IAAGrD,EAAC,CAAC,aAAW;AAAE,GAAE,aAAa,IAAE,CAAA,GAAG,GAAE,IAAE,IAAGN,KAAE,IAAGH,MAAE,IAAG;AAAC,MAAII,KAAE,SAASK,KAAE,IAAE,CAAA,GAAGP,KAAE,CAAA,GAAG;AAAC,QAAGA,GAAE,SAAS,KAAK,IAAI,EAAE,QAAO,QAAQ,KAAK,kCAAkC,KAAK,IAAI,EAAE,GAAE,EAAC,aAAYO,KAAE,MAAK,KAAK,MAAK,OAAM,GAAE,OAAM,OAAM;AAAE,IAAAP,GAAE,KAAK,KAAK,IAAI,GAAE,EAAE,OAAK,KAAK,MAAK,EAAE,YAAU,EAAE,UAAQ;AAAI,QAAIkB,KAAE,KAAK;AAAM,QAAG,OAAO,KAAK,SAAO,YAAU,EAAE,KAAK,KAAK,KAAK,GAAE;AAAC,UAAI,IAAE,KAAK,MAAM,KAAI,EAAG,QAAQ,GAAE,OAAG;AAAC,YAAI+B;AAAE,YAAI,IAAE,EAAE,MAAM,GAAE,EAAE,GAAE,IAAE,KAAK,OAAO,CAAC;AAAE,YAAG,CAAC,EAAE,QAAO,QAAQ,KAAK,6BAA6B,CAAC,EAAE,GAAE;AAAiB,YAAIpC,KAAE,EAAE,SAASN,KAAE,GAAEP,EAAC;AAAE,eAAO,MAAM,QAAQa,EAAC,KAAGA,GAAE,WAAS,IAAE,cAAcA,GAAE,CAAC,EAAE,KAAK,IAAIA,GAAE,CAAC,EAAE,KAAK,OAAKoC,KAAEpC,MAAG,OAAK,SAAOA,GAAE,UAAQ,OAAKoC,KAAE;AAAA,MAAgB,CAAC;AAAE,MAAA/B,KAAE,GAAG,KAAK,EAAE,QAAQ,IAAG,GAAG,CAAC,IAAE,QAAQ,CAAC,MAAI;AAAA,IAAC;AAAC,WAAO2C,EAAG,EAAE,OAAO,KAAG,OAAO,EAAE,SAAQ7D,GAAE,IAAG,GAAG,EAAC,aAAYO,KAAE,MAAK,KAAK,MAAK,OAAM,GAAE,OAAMW,GAAE,SAAS,gBAAgB,IAAE,SAAOA,GAAC;AAAA,EAAC,GAAE,IAAE,CAACX,IAAE,GAAEP,OAAI;AAAC,WAAO,QAAQO,EAAC,EAAE,QAAQ,CAAC,CAACW,IAAEU,EAAC,MAAI;AAAC,UAAI,IAAEkC,EAAG5C,IAAE,EAAE,SAAS,gBAAgB,IAAE,IAAE,IAAE,GAAG,CAAC,IAAI,GAAGA,EAAC,CAAC,KAAG,GAAGA,EAAC,GAAE,IAAElB,KAAE,GAAGA,EAAC,IAAIkB,EAAC,KAAGA;AAAEyC,QAAG/B,EAAC,IAAE,EAAEA,IAAE,GAAE,CAAC,KAAG9B,IAAE,CAAC,MAAIA,IAAE,CAAC,IAAE,EAAC,OAAM,CAAA,GAAG,UAAS,CAAC,GAAE,IAAE,CAAA,GAAGe,KAAE,OAAK;AAAC,YAAGf,IAAE,CAAC,EAAE,MAAM,WAAS,EAAE,QAAOA,IAAE,CAAC,EAAE,MAAM,CAAC,EAAE,SAASA,IAAE,CAAC,EAAE,MAAM,CAAC,EAAE,QAAO,EAAE,SAAQe,EAAC;AAAE,YAAG,KAAG,MAAI,OAAO,UAAQoC,KAAE,GAAEA,KAAEnD,IAAE,CAAC,EAAE,MAAM,QAAOmD,MAAI;AAAC,cAAI,IAAEnD,IAAE,CAAC,EAAE,MAAMmD,EAAC;AAAE,cAAG,EAAE,WAAS,EAAE,QAAO,EAAE,SAAS,GAAE,EAAE,SAAQpC,EAAC;AAAA,QAAC;AAAC,eAAOf,IAAE,CAAC,EAAE,MAAM,IAAI,CAAAmD,OAAGA,GAAE,SAASA,GAAE,QAAO,EAAEA,GAAE,MAAM,GAAEpC,EAAC,CAAC;AAAA,MAAC,EAAC,IAAGf,IAAE,CAAC,EAAE,MAAM,KAAK,EAAC,MAAK,GAAE,OAAM8B,IAAE,QAAO,EAAE,SAAS,mBAAmB,IAAE,UAAQ,EAAE,SAAS,kBAAkB,IAAE,SAAO,QAAO,UAAS1B,IAAE,QAAOJ,IAAC,CAAC;AAAA,IAAE,CAAC;AAAA,EAAC;AAAE,SAAO,EAAE,GAAE,GAAEG,EAAC,GAAEH;AAAC,GAAE,cAAc,GAAE,GAAE,GAAE;AAAC,MAAIS;AAAE,MAAIT,MAAG,OAAG,EAAE,MAAM,GAAG,EAAE,OAAO,CAAAoB,OAAG,CAAC4C,EAAG5C,GAAE,YAAW,GAAG,EAAE,SAAS,gBAAgB,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,GAAEhB,KAAE,EAAE,SAAS,mBAAmB,IAAE,UAAQ,EAAE,SAAS,kBAAkB,IAAE,SAAO,QAAO,IAAE,EAAEK,KAAE,EAAET,EAAC,MAAI,OAAK,SAAOS,GAAE,SAASL,EAAC,CAAC,EAAE,OAAO,OAAO,OAAG,CAAC;AAAE,SAAO,EAAE,WAAS,IAAE,EAAE,CAAC,EAAE,QAAM,EAAE,OAAO,CAAC,IAAE,IAAGF,OAAI;AAAC,QAAI,IAAEA,IAAE,EAAC,aAAYkB,GAAC,IAAE,GAAEU,KAAE,EAAE,GAAE,CAAC,aAAa,CAAC;AAAE,WAAO,EAAEV,EAAC,IAAEU,IAAE;AAAA,EAAC,GAAE,MAAM;AAAC,GAAE,gBAAgB,GAAE,GAAE,GAAE3B,IAAE;AAAC,SAAO,MAAI,WAAS,MAAI,SAAO,EAAEmD,IAAE,CAAC,IAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAG,GAAEnD,EAAC,IAAE,EAAE,GAAE,EAAE,KAAG,OAAK,IAAE,eAAcA,EAAC,CAAC;AAAC,GAAE,aAAa,GAAE,GAAE,GAAEA,IAAEH,MAAE,CAAA,GAAGI,IAAE,GAAEK,IAAE;AAAC,MAAG6C,IAAE,CAAC,GAAE;AAAC,QAAG,EAAC,UAAS,EAAC,IAAEtD;AAAE,QAAGG,OAAI,SAAQ;AAAC,UAAID,KAAE,KAAK,qBAAqBF,KAAE,CAAC;AAAE,UAAE,MAAI,SAAOE,GAAE,OAAO,CAACkB,IAAE,EAAC,MAAKU,IAAE,UAAS,EAAC,OAAKwB,IAAE,CAAC,MAAIlC,MAAG,EAAE,SAAS,OAAO,IAAE,EAAE,QAAQ,SAAQ,CAAC,IAAE,KAAK,gBAAgB,GAAEX,IAAEqB,IAAE,CAAC,IAAGV,KAAG,EAAE,IAAE,EAAEX,MAAG,OAAKA,KAAE,eAAc,CAAC;AAAA,IAAC;AAAC,QAAG,GAAE;AAAC,UAAIP,KAAE,EAAC,MAAK,UAAyB;AAAE2D,QAAG,CAAC,MAAI3D,GAAE,OAAK0D,EAAG,EAAE,MAAK,EAAC,MAAK,GAAE,MAAKzD,GAAC,CAAC,IAAGmD,IAAEpD,GAAE,IAAI,MAAI,IAAE,EAAE,UAAUA,GAAE,IAAI,IAAG,CAAC,GAAEE,MAAG,QAAMA,GAAE,WAAWF,GAAE,IAAI;AAAA,IAAE;AAAC,WAAO;AAAA,EAAC;AAAC,SAAM;AAAE,EAAC;AAAE,IAAI,IAAE,EAAC,UAAS,EAAC,UAAS,EAAC,QAAO,KAAI,UAAS,eAAc,kBAAiB,gHAA+G,GAAE,SAAQ,EAAC,QAAO,KAAI,kBAAiB,UAAS,UAAS,MAAE,EAAC,GAAE,QAAO,QAAO,aAAY,oBAAI,OAAI,mBAAkB,oBAAI,OAAI,gBAAe,oBAAI,OAAI,SAAQ,CAAA,GAAG,OAAO,IAAE,IAAG;AAAC,MAAG,EAAC,OAAM,EAAC,IAAE;AAAE,QAAI,KAAK,SAAO,EAAE,EAAE,CAAA,GAAG,CAAC,GAAE,EAAC,SAAQ,EAAE,EAAE,CAAA,GAAG,KAAK,SAAS,OAAO,GAAE,EAAE,OAAO,EAAC,CAAC,GAAE,KAAK,UAAQ,EAAE,aAAa,KAAK,QAAO,KAAK,QAAQ,GAAE,KAAK,sBAAqB;AAAG,GAAE,IAAI,QAAO;AAAC,SAAO,KAAK;AAAM,GAAE,IAAI,SAAQ;AAAC,MAAI;AAAE,WAAQ,IAAE,KAAK,UAAQ,OAAK,SAAO,EAAE,WAAS,CAAA;AAAE,GAAE,IAAI,UAAS;AAAC,MAAI;AAAE,WAAQ,IAAE,KAAK,UAAQ,OAAK,SAAO,EAAE,YAAU,CAAA;AAAE,GAAE,IAAI,SAAQ;AAAC,SAAO,KAAK;AAAO,GAAE,WAAU;AAAC,SAAO,KAAK;AAAK,GAAE,SAAS,GAAE;AAAC,OAAK,OAAO,EAAC,OAAM,EAAC,CAAC,GAAE,EAAE,KAAK,gBAAe,CAAC;AAAC,GAAE,YAAW;AAAC,SAAO,KAAK;AAAM,GAAE,UAAU,GAAE;AAAC,OAAK,SAAO,EAAE,EAAE,CAAA,GAAG,KAAK,KAAK,GAAE,EAAC,QAAO,EAAC,CAAC,GAAE,KAAK,UAAQ,EAAE,aAAa,GAAE,KAAK,QAAQ,GAAE,KAAK,sBAAqB,GAAG,EAAE,KAAK,iBAAgB,CAAC,GAAE,EAAE,KAAK,gBAAe,KAAK,KAAK;AAAC,GAAE,aAAY;AAAC,SAAO,KAAK;AAAO,GAAE,WAAW,GAAE;AAAC,OAAK,SAAO,EAAE,EAAE,CAAA,GAAG,KAAK,KAAK,GAAE,EAAC,SAAQ,EAAC,CAAC,GAAE,KAAK,sBAAqB,GAAG,EAAE,KAAK,kBAAiB,CAAC,GAAE,EAAE,KAAK,gBAAe,KAAK,KAAK;AAAC,GAAE,gBAAe;AAAC,SAAM,CAAC,GAAG,KAAK,WAAW;AAAC,GAAE,cAAc,GAAE;AAAC,OAAK,YAAY,IAAI,CAAC;AAAC,GAAE,sBAAqB;AAAC,SAAO,KAAK;AAAiB,GAAE,kBAAkB,GAAE;AAAC,SAAO,KAAK,kBAAkB,IAAI,CAAC;AAAC,GAAE,mBAAmB,GAAE;AAAC,OAAK,kBAAkB,IAAI,CAAC;AAAC,GAAE,sBAAsB,GAAE;AAAC,OAAK,kBAAkB,OAAO,CAAC;AAAC,GAAE,wBAAuB;AAAC,OAAK,kBAAkB;AAAO,GAAE,cAAc,GAAE;AAAC,SAAO,EAAE,cAAc,KAAK,QAAO,GAAE,KAAK,QAAQ;AAAC,GAAE,UAAU,IAAE,IAAG,GAAE;AAAC,SAAO,EAAE,UAAU,EAAC,MAAK,GAAE,OAAM,KAAK,OAAM,QAAO,GAAE,UAAS,KAAK,UAAS,KAAI,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,EAAC,CAAC;AAAC,GAAE,aAAa,IAAE,IAAG,GAAE;AAAC,MAAI,IAAE,EAAC,MAAK,GAAE,OAAM,KAAK,OAAM,QAAO,GAAE,UAAS,KAAK,UAAS,KAAI,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,EAAC;AAAE,SAAO,EAAE,WAAW,CAAC;AAAC,GAAE,aAAa,IAAE,IAAG,GAAE;AAAC,MAAI,IAAE,EAAC,MAAK,GAAE,OAAM,KAAK,OAAM,QAAO,GAAE,UAAS,KAAK,UAAS,KAAI,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,EAAC;AAAE,SAAO,EAAE,WAAW,CAAC;AAAC,GAAE,gBAAgB,IAAE,IAAG,GAAE,GAAEC,IAAE;AAAC,MAAIH,KAAE,EAAC,MAAK,GAAE,QAAO,GAAE,SAAQ,KAAK,SAAQ,UAAS,GAAE,QAAOG,IAAE,UAAS,KAAK,UAAS,KAAI,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,EAAC;AAAE,SAAO,EAAE,UAAUH,EAAC;AAAC,GAAE,iBAAiB,IAAE,IAAG;AAAC,SAAO,EAAE,cAAc,GAAE,KAAK,SAAQ,EAAC,OAAM,KAAK,gBAAe,GAAE,KAAK,QAAQ;AAAC,GAAE,aAAa,IAAE,IAAG,GAAE,IAAE,SAAQG,IAAE;AAAC,SAAO,EAAE,aAAa,GAAE,GAAEA,IAAE,GAAE,KAAK,SAAQ,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,GAAE,KAAK,QAAQ;AAAC,GAAE,oBAAoB,IAAE,IAAG,GAAE,IAAE,CAAA,GAAG;AAAC,SAAO,EAAE,oBAAoB,EAAC,MAAK,GAAE,OAAM,KAAK,OAAM,QAAO,GAAE,OAAM,GAAE,UAAS,KAAK,UAAS,KAAI,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,EAAC,CAAC;AAAC,GAAE,cAAc,GAAE,GAAE,IAAE,CAAA,GAAG;AAAC,SAAO,EAAE,cAAc,EAAC,MAAK,GAAE,OAAM,KAAK,OAAM,QAAO,GAAE,OAAM,GAAE,UAAS,KAAK,UAAS,KAAI,EAAC,YAAW,KAAK,cAAc,KAAK,IAAI,EAAC,EAAC,CAAC;AAAC,GAAE,eAAe,GAAE;AAAC,OAAK,eAAe,IAAI,CAAC;AAAC,GAAE,eAAe,GAAE;AAAC,OAAK,eAAe,IAAI,CAAC;AAAC,GAAE,cAAc,GAAE,EAAC,MAAK,EAAC,GAAE;AAAC,OAAK,eAAe,SAAO,KAAK,eAAe,OAAO,CAAC,GAAE,EAAE,KAAK,SAAS,CAAC,SAAQ,CAAC,GAAE,CAAC,KAAK,eAAe,QAAM,EAAE,KAAK,YAAY;AAAE,EAAC;ACEzphB,IAAI,kBAAkB;AAAA,EACpB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,cAAc;AAAA,EACd,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,uBAAuB;AAAA,EACvB,cAAc;AAAA,EACd,0BAA0B;AAAA,EAE1B,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AACd;ACnBA,IAAI,QAAM;ACGV,SAAS8D,UAAQ,GAAG;AAAE;AAA2B,SAAOA,YAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,WAAO,OAAOA;AAAA,EAAG,IAAI,SAAUA,IAAG;AAAE,WAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EAAG,GAAGD,UAAQ,CAAC;AAAG;AAC7T,SAASE,UAAQ,GAAG,GAAG;AAAE,MAAI,IAAI,OAAO,KAAK,CAAC;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,UAAM,IAAI,EAAE,OAAO,SAAUC,IAAG;AAAE,aAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,IAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AAC9P,SAASC,gBAAc,GAAG;AAAE,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,QAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAA;AAAI,QAAI,IAAIF,UAAQ,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,SAAUC,IAAG;AAAEE,wBAAgB,GAAGF,IAAG,EAAEA,EAAC,CAAC;AAAA,IAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAID,UAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUC,IAAG;AAAE,aAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,IAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AACxb,SAASE,kBAAgB,GAAG,GAAG,GAAG;AAAE,UAAQ,IAAIC,iBAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAM,cAAc,MAAM,UAAU,KAAI,CAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AAAG;AACzL,SAASA,iBAAe,GAAG;AAAE,MAAIvE,KAAIwE,eAAa,GAAG,QAAQ;AAAG,SAAO,YAAYP,UAAQjE,EAAC,IAAIA,KAAIA,KAAI;AAAI;AAC5G,SAASwE,eAAa,GAAG,GAAG;AAAE,MAAI,YAAYP,UAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,MAAI,IAAI,EAAE,OAAO,WAAW;AAAG,MAAI,WAAW,GAAG;AAAE,QAAIjE,KAAI,EAAE,KAAK,GAAG,CAAC;AAAG,QAAI,YAAYiE,UAAQjE,EAAC,EAAG,QAAOA;AAAG,UAAM,IAAI,UAAU,8CAA8C;AAAA,EAAG;AAAE,UAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAG;AAC9S,SAAS,aAAa,IAAI;AACxB,MAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC/E,MAAI,mBAAkB,KAAM,qBAAqB,WAAY,WAAU,EAAE;AAAA,WAAW,KAAM,IAAE;AAAA,MAAQ,UAAS,EAAE;AACjH;AACA,IAAI,MAAM;AACV,SAAS,SAASyE,MAAK;AACrB,MAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,MAAI,WAAW,IAAI,KAAK;AACxB,MAAI,SAAS,IAAIA,IAAG;AACpB,MAAI,WAAW,IAAI,IAAI;AACvB,MAAI,kBAAkBC,GAAQ,IAAK,OAAO,WAAW;AACrD,MAAI,oBAAoB,QAAQ,UAC9BC,YAAW,sBAAsB,SAAS,kBAAkB,mBAC5D,qBAAqB,QAAQ,WAC7B,YAAY,uBAAuB,SAAS,OAAO,oBACnD,kBAAkB,QAAQ,QAC1B,SAAS,oBAAoB,SAAS,QAAQ,iBAC9C,gBAAgB,QAAQ,MACxB,OAAO,kBAAkB,SAAS,SAAS,OAAO,EAAE,GAAG,IAAI,eAC3D,cAAc,QAAQ,IACtB,KAAK,gBAAgB,SAAS,SAAY,aAC1C,iBAAiB,QAAQ,OACzB,QAAQ,mBAAmB,SAAS,SAAY,gBAChD,iBAAiB,QAAQ,OACzB,QAAQ,mBAAmB,SAAS,SAAY,gBAChD,iBAAiB,QAAQ,OACzB,QAAQ,mBAAmB,SAAS,QAAQ,gBAC5C,qBAAqB,QAAQ,WAC7B,iBAAiB,uBAAuB,SAAS,SAAY,oBAC7D,qBAAqB,QAAQ,WAC7B,iBAAiB,uBAAuB,SAAS,SAAY,oBAC7D,kBAAkB,QAAQ,QAC1B,gBAAgB,oBAAoB,SAAS,SAAY,iBACzD,iBAAiB,QAAQ,OACzB,QAAQ,mBAAmB,SAAS,CAAA,IAAK;AAC3C,MAAI,OAAO,SAASC,QAAO;AAAA,EAAC;AAG5B,MAAIC,QAAO,SAASA,MAAK,MAAM;AAC7B,QAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AACjF,QAAI,CAACF,UAAU;AACf,QAAI,cAAcN,gBAAcA,gBAAc,CAAA,GAAI,KAAK,GAAG,MAAM;AAChE,QAAI,QAAQ,YAAY,QAAQ,MAC9BS,OAAM,YAAY,MAAM,IACxB,SAAS,YAAY,SAAS;AAChC,aAAS,QAAQH,UAAS,cAAc,iCAAkC,OAAO,OAAO,IAAK,CAAC,KAAKA,UAAS,eAAeG,IAAG,KAAKH,UAAS,cAAc,OAAO;AACjK,QAAI,CAAC,SAAS,MAAM,aAAa;AAC/B,aAAO,QAAQ,QAAQF;AACvBM,QAAc,SAAS,OAAO;AAAA,QAC5B,MAAM;AAAA,QACN,IAAID;AAAA,QACJ;AAAA,QACA,OAAO;AAAA,MACf,CAAO;AACD,cAAQH,UAAS,KAAK,QAAQ,SAAS,KAAK,IAAIA,UAAS,KAAK,YAAY,SAAS,KAAK;AACxFK,SAAa,SAAS,OAAO,0BAA0B,KAAK;AAC5DD,QAAc,SAAS,OAAO,WAAW;AACzC,eAAS,MAAM,SAAS,SAAU,OAAO;AACvC,eAAO,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,OAAO;AAAA,UACxF,MAAM;AAAA,QAChB,CAAS;AAAA,MACH;AACA,yBAAmB,QAAQ,mBAAmB,UAAU,eAAe,KAAK;AAAA,IAC9E;AACA,QAAI,SAAS,MAAO;AACpB,WAAO,MAAM,QAAQ,SAAU,OAAO;AACpC,eAAS,MAAM,cAAc;AAC7B,yBAAmB,QAAQ,mBAAmB,UAAU,eAAe,KAAK;AAAA,IAC9E,GAAG;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AACD,aAAS,QAAQ;AAAA,EACnB;AACA,MAAI,SAAS,SAASE,UAAS;AAC7B,QAAI,CAACN,aAAY,CAAC,SAAS,MAAO;AAClC,SAAI;AACJO,MAAQ,SAAS,KAAK,KAAKP,UAAS,KAAK,YAAY,SAAS,KAAK;AACnE,aAAS,QAAQ;AACjB,aAAS,QAAQ;AAAA,EACnB;AACA,MAAI,aAAa,CAAC,OAAQ,cAAaE,KAAI;AAK3C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI;AAAA,IACJ,KAAK;AAAA,IACL;AAAA,IACA,MAAMA;AAAA,IACN,UAAU,SAAS,QAAQ;AAAA,EAC/B;AACA;AClGA,SAASZ,UAAQ,GAAG;AAAE;AAA2B,SAAOA,YAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,WAAO,OAAOA;AAAA,EAAG,IAAI,SAAUA,IAAG;AAAE,WAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EAAG,GAAGD,UAAQ,CAAC;AAAG;AAC7T,IAAI,iBAAiB,kBAAkB,kBAAkB;AACzD,SAAS,eAAe,GAAG,GAAG;AAAE,SAAO,gBAAgB,CAAC,KAAK,sBAAsB,GAAG,CAAC,KAAK,4BAA4B,GAAG,CAAC,KAAK,iBAAgB;AAAI;AACrJ,SAAS,mBAAmB;AAAE,QAAM,IAAI,UAAU,2IAA2I;AAAG;AAChM,SAAS,4BAA4B,GAAG7D,IAAG;AAAE,MAAI,GAAG;AAAE,QAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAGA,EAAC;AAAG,QAAI,IAAI,CAAA,EAAG,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,WAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAGA,EAAC,IAAI;AAAA,EAAQ;AAAE;AACzX,SAAS,kBAAkB,GAAGA,IAAG;AAAE,GAAC,QAAQA,MAAKA,KAAI,EAAE,YAAYA,KAAI,EAAE;AAAS,WAAS,IAAI,GAAG,IAAI,MAAMA,EAAC,GAAG,IAAIA,IAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,SAAO;AAAG;AACnJ,SAAS,sBAAsB,GAAGK,IAAG;AAAE,MAAI,IAAI,QAAQ,IAAI,OAAO,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,MAAI,QAAQ,GAAG;AAAE,QAAI,GAAG,GAAGT,IAAG,GAAGI,KAAI,CAAA,GAAI,IAAI,MAAM,IAAI;AAAO,QAAI;AAAE,UAAIJ,MAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,MAAMS,GAAG;AAAA,UAAO,QAAO,EAAE,KAAK,IAAIT,GAAE,KAAK,CAAC,GAAG,UAAUI,GAAE,KAAK,EAAE,KAAK,GAAGA,GAAE,WAAWK,KAAI,IAAI,KAAG;AAAA,IAAE,SAAS2D,IAAG;AAAE,UAAI,MAAM,IAAIA;AAAA,IAAG,UAAC;AAAW,UAAI;AAAE,YAAI,CAAC,KAAK,QAAQ,EAAE,QAAQ,MAAM,IAAI,EAAE,QAAQ,EAAC,GAAI,OAAO,CAAC,MAAM,GAAI;AAAA,MAAQ,UAAC;AAAW,YAAI,EAAG,OAAM;AAAA,MAAG;AAAA,IAAE;AAAE,WAAOhE;AAAA,EAAG;AAAE;AACzf,SAAS,gBAAgB,GAAG;AAAE,MAAI,MAAM,QAAQ,CAAC,EAAG,QAAO;AAAG;AAC9D,SAAS+D,UAAQ,GAAG,GAAG;AAAE,MAAI,IAAI,OAAO,KAAK,CAAC;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,UAAM,IAAI,EAAE,OAAO,SAAUC,IAAG;AAAE,aAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,IAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AAC9P,SAASC,gBAAc,GAAG;AAAE,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,QAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAA;AAAI,QAAI,IAAIF,UAAQ,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,SAAUC,IAAG;AAAEE,wBAAgB,GAAGF,IAAG,EAAEA,EAAC,CAAC;AAAA,IAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAID,UAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUC,IAAG;AAAE,aAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,IAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AACxb,SAASE,kBAAgB,GAAG,GAAG,GAAG;AAAE,UAAQ,IAAIC,iBAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAM,cAAc,MAAM,UAAU,KAAI,CAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AAAG;AACzL,SAASA,iBAAe,GAAG;AAAE,MAAIvE,KAAIwE,eAAa,GAAG,QAAQ;AAAG,SAAO,YAAYP,UAAQjE,EAAC,IAAIA,KAAIA,KAAI;AAAI;AAC5G,SAASwE,eAAa,GAAG,GAAG;AAAE,MAAI,YAAYP,UAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,MAAI,IAAI,EAAE,OAAO,WAAW;AAAG,MAAI,WAAW,GAAG;AAAE,QAAIjE,KAAI,EAAE,KAAK,GAAG,CAAC;AAAG,QAAI,YAAYiE,UAAQjE,EAAC,EAAG,QAAOA;AAAG,UAAM,IAAI,UAAU,8CAA8C;AAAA,EAAG;AAAE,UAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAG;AAC9S,SAAS,uBAAuB,GAAG,GAAG;AAAE,SAAO,MAAM,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,OAAO,OAAO,iBAAiB,GAAG,EAAE,KAAK,EAAE,OAAO,OAAO,OAAO,CAAC,IAAG,CAAE,CAAC;AAAG;AACvJ,IAAI,MAAM,SAASyE,KAAI,MAAM;AAC3B,MAAIU,MAAK,KAAK;AACd,SAAO,yUAAyU,OAAOA,IAAG,iBAAiB,GAAG,QAAQ;AACxX;AACA,IAAI,UAAU,CAAA;AACd,IAAI,eAAe,CAAA;AACnB,IAAI,YAAY;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM,SAAS,KAAKzD,QAAO;AACzB,QAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,QAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,SAAU,IAAI;AAChG,aAAO;AAAA,IACT;AACA,QAAI,gBAAgB,UAAU0D,GAAM,oBAAoB,kBAAkB,uBAAuB,CAAC,IAAI,EAAE,CAAC,IAAI1D,MAAK,CAAC;AACnH,WAAO2D,IAAW,aAAa,IAAI,SAASC,IAAU,aAAa,GAAGjB,gBAAc;AAAA,MAClF,MAAM,KAAK;AAAA,IACjB,GAAO,OAAO,CAAC,IAAI,CAAA;AAAA,EACjB;AAAA,EACA,SAAS,SAAS,UAAU;AAC1B,QAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,WAAO,KAAK,KAAK,KAAK,KAAK,OAAO;AAAA,EACpC;AAAA,EACA,WAAW,SAAS,YAAY;AAC9B,QAAI,QAAQ;AACZ,QAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,QAAI3C,SAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAChF,WAAO,KAAK,KAAK,KAAK,OAAO,SAAS,WAAY;AAChD,UAAI,gBAAgB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACxF,aAAO6D,EAAM,aAAa,QAAQ,QAAQ,MAAM,MAAM,GAAG,OAAO,aAAa,EAAE,OAAOH,GAAM,qBAAqB,mBAAmB,uBAAuB,CAAC,IAAI,EAAE,CAAC,IAAI1D,MAAK,CAAC,CAAC;AAAA,IAChL,CAAC;AAAA,EACH;AAAA,EACA,gBAAgB,SAAS,eAAe,QAAQ;AAC9C,WAAO6D,EAAM,UAAU,KAAK,MAAM,MAAM;AAAA,EAC1C;AAAA,EACA,mBAAmB,SAAS,kBAAkB,QAAQ;AACpD,WAAOA,EAAM,aAAa,KAAK,MAAM,MAAM;AAAA,EAC7C;AAAA,EACA,mBAAmB,SAAS,kBAAkB,QAAQ;AACpD,WAAOA,EAAM,aAAa,KAAK,MAAM,MAAM;AAAA,EAC7C;AAAA,EACA,gBAAgB,SAAS,eAAe,QAAQ,UAAU,QAAQ;AAChE,WAAOA,EAAM,gBAAgB,KAAK,MAAM,QAAQ,UAAU,MAAM;AAAA,EAClE;AAAA,EACA,uBAAuB,SAAS,wBAAwB;AACtD,WAAOA,EAAM,iBAAiB,KAAK,IAAI;AAAA,EACzC;AAAA,EACA,eAAe,SAAS,gBAAgB;AACtC,QAAI,cAAc,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACtF,QAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,QAAI,KAAK,KAAK;AACZ,UAAI,OAAO1D,EAAQ,KAAK,KAAK;AAAA,QAC3B,IAAIsD;AAAAA,MACZ,CAAO,KAAK;AACN,UAAI,SAASG,IAAUF,GAAM,qBAAqB,mBAAmB,uBAAuB,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM,WAAW,CAAC;AAC9H,UAAI,SAAS,OAAO,QAAQ,KAAK,EAAE,OAAO,SAAU,KAAK,OAAO;AAC9D,YAAI,QAAQ,eAAe,OAAO,CAAC,GACjCpD,KAAI,MAAM,CAAC,GACXzB,KAAI,MAAM,CAAC;AACb,eAAO,IAAI,KAAK,GAAG,OAAOyB,IAAG,IAAK,EAAE,OAAOzB,IAAG,GAAI,CAAC,KAAK;AAAA,MAC1D,GAAG,CAAA,CAAE,EAAE,KAAK,GAAG;AACf,aAAO8E,IAAW,MAAM,IAAI,kDAAqD,OAAO,KAAK,MAAM,IAAK,EAAE,OAAO,QAAQ,GAAG,EAAE,OAAO,QAAQ,UAAU,IAAI;AAAA,IAC7J;AACA,WAAO;AAAA,EACT;AAAA,EACA,0BAA0B,SAAS,yBAAyB,QAAQ;AAClE,QAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,WAAOE,EAAM,oBAAoB,KAAK,MAAM,QAAQ,KAAK;AAAA,EAC3D;AAAA,EACA,oBAAoB,SAAS,mBAAmB,QAAQ;AACtD,QAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,QAAId,OAAM,CAACc,EAAM,cAAc,KAAK,MAAM,QAAQ,KAAK,CAAC;AACxD,QAAI,KAAK,OAAO;AACd,UAAI,OAAO,KAAK,SAAS,SAAS,iBAAiB,GAAG,OAAO,KAAK,MAAM,QAAQ;AAChF,UAAI,OAAOH,GAAM,qBAAqB,mBAAmB,uBAAuB,CAAC,IAAI,EAAE,CAAC,IAAIvD,EAAQ,KAAK,OAAO;AAAA,QAC9G,IAAIsD;AAAAA,MACZ,CAAO,CAAC;AACF,UAAI,SAASG,IAAUC,EAAM,aAAa,MAAM,IAAI,CAAC;AACrD,UAAI,SAAS,OAAO,QAAQ,KAAK,EAAE,OAAO,SAAU,KAAK,OAAO;AAC9D,YAAI,QAAQ,eAAe,OAAO,CAAC,GACjCvD,KAAI,MAAM,CAAC,GACXzB,KAAI,MAAM,CAAC;AACb,eAAO,IAAI,KAAK,GAAG,OAAOyB,IAAG,IAAK,EAAE,OAAOzB,IAAG,GAAI,CAAC,KAAK;AAAA,MAC1D,GAAG,CAAA,CAAE,EAAE,KAAK,GAAG;AACf8E,UAAW,MAAM,KAAKZ,KAAI,KAAK,kDAAqD,OAAO,MAAM,IAAK,EAAE,OAAO,QAAQ,GAAG,EAAE,OAAO,QAAQ,UAAU,CAAC;AAAA,IACxJ;AACA,WAAOA,KAAI,KAAK,EAAE;AAAA,EACpB;AAAA,EACA,QAAQ,SAASe,QAAO,SAAS;AAC/B,WAAOnB,gBAAcA,gBAAc,CAAA,GAAI,IAAI,GAAG,CAAA,GAAI;AAAA,MAChD,KAAK;AAAA,MACL,OAAO;AAAA,IACb,GAAO,OAAO;AAAA,EACZ;AACF;AClHA,IAAI,kBAAkBoB,EAAQ;ACK9B,SAAS,QAAQ,GAAG;AAAE;AAA2B,SAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUvB,IAAG;AAAE,WAAO,OAAOA;AAAA,EAAG,IAAI,SAAUA,IAAG;AAAE,WAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EAAG,GAAG,QAAQ,CAAC;AAAG;AAC7T,SAAS,QAAQ,GAAG,GAAG;AAAE,MAAI,IAAI,OAAO,KAAK,CAAC;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,UAAM,IAAI,EAAE,OAAO,SAAUE,IAAG;AAAE,aAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,IAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AAC9P,SAAS,cAAc,GAAG;AAAE,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,QAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAA;AAAI,QAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,SAAUA,IAAG;AAAE,sBAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,IAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,aAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,IAAG,CAAC;AAAA,EAAG;AAAE,SAAO;AAAG;AACxb,SAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,UAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAM,cAAc,MAAM,UAAU,KAAI,CAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AAAG;AACzL,SAAS,eAAe,GAAG;AAAE,MAAIpE,KAAI,aAAa,GAAG,QAAQ;AAAG,SAAO,YAAY,QAAQA,EAAC,IAAIA,KAAIA,KAAI;AAAI;AAC5G,SAAS,aAAa,GAAG,GAAG;AAAE,MAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,MAAI,IAAI,EAAE,OAAO,WAAW;AAAG,MAAI,WAAW,GAAG;AAAE,QAAIA,KAAI,EAAE,KAAK,GAAG,CAAC;AAAG,QAAI,YAAY,QAAQA,EAAC,EAAG,QAAOA;AAAG,UAAM,IAAI,UAAU,8CAA8C;AAAA,EAAG;AAAE,UAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAG;AAC9S,IAAI,iBAAiB;AAAA,EACnB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,IACT,eAAe,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,IACnE,UAAU,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,IACvF,eAAe,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAC/D,aAAa,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,IACtD,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAAA,IACrI,iBAAiB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACpG,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,uBAAuB;AAAA,IACvB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,cAAc;AAAA,IACd,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,aAAa;AAAA,MACb,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,yBAAyB;AAAA,MACzB,sBAAsB;AAAA,MACtB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,WAAW;AAAA,IACjB;AAAA,EACA;AAAA,EACE,wBAAwB;AAAA,IACtB,MAAM,CAAC,gBAAgB,aAAa,gBAAgB,UAAU,gBAAgB,cAAc,gBAAgB,WAAW,gBAAgB,QAAQ,gBAAgB,UAAU;AAAA,IACzK,SAAS,CAAC,gBAAgB,QAAQ,gBAAgB,YAAY,gBAAgB,WAAW,gBAAgB,uBAAuB,gBAAgB,cAAc,gBAAgB,wBAAwB;AAAA,IACtM,MAAM,CAAC,gBAAgB,SAAS,gBAAgB,aAAa,gBAAgB,aAAa,gBAAgB,UAAU;AAAA,EACxH;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AAAA,EACE,OAAO;AAAA,EACP,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,WAAW;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,EAChB;AAAA,EACE,KAAK;AAAA,IACH,OAAO;AAAA,EACX;AACA;AACA,IAAI,iBAAiB,OAAM;AAQ3B,SAAS,MAAMsB,MAAK,SAAS;AAC3B,MAAIoE,YAAW;AAAA,IACb,QAAQ,SAAS,OAAO;AAAA,EAC5B;AACE,EAAApE,KAAI,OAAO,iBAAiB,YAAYoE;AACxC,EAAApE,KAAI,QAAQ,gBAAgBoE,SAAQ;AACpC,cAAW;AACX,cAAYpE,MAAKoE,SAAQ;AACzB,SAAOA;AACT;AACA,IAAI,eAAe,CAAA;AACnB,SAAS,cAAc;AACrBC,IAAa,MAAK;AAClB,eAAa,QAAQ,SAAU,IAAI;AACjC,WAAO,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAE;AAAA,EACnD,CAAC;AACD,iBAAe,CAAA;AACjB;AACA,SAAS,YAAYrE,MAAKoE,WAAU;AAClC,MAAI,iBAAiB,IAAI,KAAK;AAG9B,MAAI,kBAAkB,SAASE,mBAAkB;AAC/C,QAAI;AACJ,UAAM,mBAAmBF,UAAS,YAAY,QAAQ,qBAAqB,SAAS,SAAS,iBAAiB,WAAW,OAAQ;AAGjI,QAAI,CAACH,EAAM,kBAAkB,QAAQ,GAAG;AACtC,UAAI,uBAAuB;AAC3B,UAAI,SAAS,wBAAwB,UAAU,oBAAoB,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,KAAK,SAAS,MAAM,CAAA,GAC/J,YAAY,KAAK,WACjB,WAAW,KAAK,UAChBM,UAAS,KAAK,QACdnE,SAAQ,KAAK;AACf,UAAI,eAAe;AAAA,QACjB,QAAQ,oBAAoBgE,UAAS,YAAY,QAAQ,sBAAsB,WAAW,oBAAoB,kBAAkB,SAAS,QAAQ,sBAAsB,SAAS,SAAS,kBAAkB;AAAA,MACnN;AACM,gBAAU,KAAK,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,KAAK,cAAc;AAAA,QAChG,MAAM;AAAA,MACd,GAAS,YAAY,CAAC;AAChB,gBAAU,KAAK,aAAa,QAAQ,aAAa,SAAS,SAAS,SAAS,KAAK,cAAc;AAAA,QAC7F,MAAM;AAAA,MACd,GAAS,YAAY,CAAC;AAChB,gBAAU,KAAKG,YAAW,QAAQA,YAAW,SAAS,SAASA,QAAO,KAAK,cAAc;AAAA,QACvF,MAAM;AAAA,MACd,GAAS,YAAY,CAAC;AAChB,gBAAU,UAAU,cAAc;AAAA,QAChC,MAAM;AAAA,MACd,GAAS,YAAY,GAAGnE,MAAK;AACvB6D,QAAM,mBAAmB,QAAQ;AAAA,IACnC;AAAA,EACF;AACAI,IAAa,GAAG,gBAAgB,SAAU,UAAU;AAClD,QAAI,CAAC,eAAe,OAAO;AACzB,MAAArE,KAAI,OAAO,iBAAiB,UAAU,OAAO,QAAQ;AACrD,qBAAe,QAAQ;AAAA,IACzB;AAAA,EACF,CAAC;AAGD,MAAI,oBAAoB,MAAMoE,UAAS,QAAQ,SAAU,UAAU,UAAU;AAC3E,oBAAgB,KAAK,iBAAiB;AAAA,MACpC;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACH,GAAG;AAAA,IACD,WAAW;AAAA,IACX,MAAM;AAAA,EACV,CAAG;AACD,MAAI,oBAAoB,MAAM,WAAY;AACxC,WAAOA,UAAS,OAAO;AAAA,EACzB,GAAG,SAAU,UAAU,UAAU;AAC/B,oBAAgB,KAAK,wBAAwB;AAAA,MAC3C;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACH,GAAG;AAAA,IACD,WAAW;AAAA,IACX,MAAM;AAAA,EACV,CAAG;AACD,MAAI,mBAAmB,MAAM,WAAY;AACvC,WAAOA,UAAS,OAAO;AAAA,EACzB,GAAG,SAAU,UAAU,UAAU;AAC/B,QAAI,CAAC,eAAe,OAAO;AACzBH,QAAM,SAAS,QAAQ;AAAA,IACzB;AACA,QAAI,CAACG,UAAS,OAAO,UAAU;AAC7B,sBAAe;AAAA,IACjB;AACA,mBAAe,QAAQ;AACvB,oBAAgB,KAAK,uBAAuB;AAAA,MAC1C;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACH,GAAG;AAAA,IACD,WAAW;AAAA,IACX,MAAM;AAAA,EACV,CAAG;AACD,MAAI,sBAAsB,MAAM,WAAY;AAC1C,WAAOA,UAAS,OAAO;AAAA,EACzB,GAAG,SAAU,UAAU,UAAU;AAC/B,QAAI,CAAC,YAAYA,UAAS,OAAO,OAAO;AACtC,sBAAe;AAAA,IACjB;AACA,oBAAgB,KAAK,0BAA0B;AAAA,MAC7C;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACH,GAAG;AAAA,IACD,WAAW;AAAA,IACX,MAAM;AAAA,EACV,CAAG;AACD,eAAa,KAAK,iBAAiB;AACnC,eAAa,KAAK,iBAAiB;AACnC,eAAa,KAAK,gBAAgB;AAClC,eAAa,KAAK,mBAAmB;AACvC;AACA,IAAI,WAAW;AAAA,EACb,SAAS,SAAS,QAAQpE,MAAK,SAAS;AACtC,QAAI,gBAAgBwE,EAAU,gBAAgB,OAAO;AACrD,UAAMxE,MAAK,aAAa;AAAA,EAC1B;AACF;;;;;;;;;;;;;;;;AChRA,UAAM,QAAQ;AAWd,UAAM,eAAe,SAAS,MAAM;AAClC,aAAO,MAAM,UAAU,gBAAgB,MAAM,OAAO,KAAK;AAAA,IAC3D,CAAC;;0BA9BCyE,mBAWO,QAAA;AAAA,QAXD,OAAKC,eAAA,CAAC,eAAsB,aAAA,KAAY,CAAA;AAAA,MAAA;QAC5CC,gBAAkD,QAAlDC,cAAkDC,gBAAf,QAAA,KAAK,GAAA,CAAA;AAAA,QAC5B,QAAA,UAAU,UAAtBC,aAAAL,mBAAgF,QAAhFM,cAA4D,MAACF,gBAAG,QAAA,KAAK,IAAG,KAAC,CAAA;QAEjE,QAAA,0BADRJ,mBAOS,UAAA;AAAA;UALP,OAAM;AAAA,UACL,6DAAYO,KAAAA,MAAK,QAAA,GAAA,CAAA,MAAA,CAAA;AAAA,UAClB,MAAK;AAAA,QAAA,GACN,KAED;;;;;;;;;;;;;;;;;;0BCVFP,mBAKS,UAAA;AAAA,QALD,OAAM;AAAA,QAAc,MAAK;AAAA,QAAU,+CAAOO,KAAAA,MAAK,OAAA;AAAA,MAAA;QACrDL,gBAEM,OAAA;AAAA,UAFD,OAAM;AAAA,UAAoB,SAAQ;AAAA,UAAY,MAAK;AAAA,QAAA;UACtDA,gBAA+Z,QAAA,EAAzZ,GAAE,uZAAqZ;AAAA,QAAA;QAE/ZA,gBAA2C,QAAA,EAArC,OAAM,oBAAA,GAAoB,QAAI,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;ACuBxC,UAAM,QAAQ;AASd,UAAM,WAAW,CAAC,SAAiB;AACjC,YAAM,QAAQ,MAAM,OAAO,KAAK,CAAA7E,OAAKA,GAAE,SAAS,IAAI;AACpD,aAAO,+BAAO;AAAA,IAChB;;AAvCE,aAAAgF,UAAA,GAAAL,mBAmBM,OAnBNG,cAmBM;AAAA,QAlBJD,gBAGM,OAHNI,cAGM;AAAA,UAFJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAJ,gBAA8C,QAAA,EAAxC,OAAM,iBAAA,GAAiB,cAAU,EAAA;AAAA,UACvCM,YAAqC,YAAA;AAAA,YAAxB,+CAAOD,KAAAA,MAAK,MAAA;AAAA,UAAA;;QAE3BL,gBAaM,OAbNO,cAaM;AAAA,UAZO,QAAA,SAAS,WAAM,kBAA1BT,mBAEM,OAFNU,cAA+D,cAE/D,MACAL,UAAA,GAAAL,mBAQM,OARNW,cAQM;AAAA,8BAPJX,mBAMEY,UAAA,MAAAC,WALe,QAAA,UAAQ,CAAhB,SAAI;kCADbC,YAME,YAAA;AAAA,gBAJC,KAAK;AAAA,gBACL,OAAO;AAAA,gBACP,OAAO,SAAS,IAAI;AAAA,gBACrB,SAAQ;AAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfhB,aAAAT,UAAA,GAAAL,mBA+CM,OA/CNG,cA+CM;AAAA,kCA9CJD,gBAEM,OAAA,EAFD,OAAM,qBAAiB;AAAA,UAC1BA,gBAAwC,QAAA,EAAlC,OAAM,iBAAA,GAAiB,MAAI;AAAA,QAAA;QAEnCA,gBA0CM,OA1CNI,cA0CM;AAAA,UAxCJJ,gBAkBM,OAlBNO,cAkBM;AAAA,YAjBJP,gBAGM,OAHNQ,cAGM;AAAA,cAFJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAR,gBAAiF,QAAA,EAA3E,OAAM,uDAAA,GAAuD,WAAO,EAAA;AAAA,cAC1EM,YAA6C,YAAA;AAAA,gBAAhC,+CAAOD,KAAAA,MAAK,cAAA;AAAA,cAAA;;YAE3BL,gBAYM,OAZNS,cAYM;AAAA,cAXO,QAAA,YAAY,WAAM,kBAA7BX,mBAEM,OAFNe,cAA4D,QAE5D,MACAV,UAAA,GAAAL,mBAOM,OAPNgB,cAOM;AAAA,kCANJhB,mBAKEY,UAAA,MAAAC,WAJc,QAAA,aAAW,CAAlB,QAAG;sCADZC,YAKE,YAAA;AAAA,oBAHC,KAAK;AAAA,oBACL,OAAO;AAAA,oBACR,SAAQ;AAAA,kBAAA;;;;;UAOhBZ,gBAkBM,OAlBNe,cAkBM;AAAA,YAjBJf,gBAGM,OAHNgB,cAGM;AAAA,cAFJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAhB,gBAAiF,QAAA,EAA3E,OAAM,uDAAA,GAAuD,WAAO,EAAA;AAAA,cAC1EM,YAA6C,YAAA;AAAA,gBAAhC,+CAAOD,KAAAA,MAAK,cAAA;AAAA,cAAA;;YAE3BL,gBAYM,OAZNiB,eAYM;AAAA,cAXO,QAAA,YAAY,WAAM,kBAA7BnB,mBAEM,OAFNoB,eAA4D,QAE5D,MACAf,UAAA,GAAAL,mBAOM,OAPNqB,eAOM;AAAA,kCANJrB,mBAKEY,UAAA,MAAAC,WAJc,QAAA,aAAW,CAAlB,QAAG;sCADZC,YAKE,YAAA;AAAA,oBAHC,KAAK;AAAA,oBACL,OAAO;AAAA,oBACR,SAAQ;AAAA,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgCtB,UAAM,QAAQ;AAKd,UAAMrF,QAAO;AAOb,UAAM,eAAe,CAAC,SAAiB;AACrC,UAAI,KAAK,UAAU,GAAI,QAAO;AAC9B,aAAO,QAAQ,KAAK,MAAM,GAAG;AAAA,IAC/B;AAEA,UAAM,gBAAgB,CAAC,SAAiB;AACtC,MAAAA,MAAK,yBAAyB,MAAM,eAAe,OAAO,CAAAT,OAAKA,OAAM,IAAI,CAAC;AAAA,IAC5E;AAEA,UAAM,gBAAgB,CAAC,SAAiB;AACtC,MAAAS,MAAK,yBAAyB,MAAM,eAAe,OAAO,CAAAT,OAAKA,OAAM,IAAI,CAAC;AAAA,IAC5E;;AAhGE,aAAAqF,UAAA,GAAAL,mBAmEM,OAnENG,cAmEM;AAAA,kCAlEJD,gBAEM,OAAA,EAFD,OAAM,qBAAiB;AAAA,UAC1BA,gBAA2C,QAAA,EAArC,OAAM,iBAAA,GAAiB,SAAO;AAAA,QAAA;QAEtCA,gBA8DM,OA9DNI,cA8DM;AAAA,UA5DJJ,gBA4BM,OA5BNO,cA4BM;AAAA,YA3BJP,gBAWM,OAXNQ,cAWM;AAAA,cAVJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAR,gBAAiF,QAAA,EAA3E,OAAM,uDAAA,GAAuD,WAAO,EAAA;AAAA,cAC1EA,gBAQS,UAAA;AAAA,gBAPP,MAAK;AAAA,gBACL,OAAM;AAAA,gBACL,+CAAOK,KAAAA,MAAK,cAAA;AAAA,cAAA;gBAEbL,gBAEM,OAAA;AAAA,kBAFD,SAAQ;AAAA,kBAAY,MAAK;AAAA,gBAAA;kBAC5BA,gBAAkc,QAAA,EAA5b,GAAE,0bAAwb;AAAA,gBAAA;;;YAItcA,gBAcM,OAdNS,cAcM;AAAA,cAbO,QAAA,eAAe,SAAM,KAAhCN,aAAAL,mBASM,OATNe,cASM;AAAA,kCARJf,mBAOEY,UAAA,MAAAC,WANe,QAAA,gBAAc,CAAtB,SAAI;sCADbC,YAOE,YAAA;AAAA,oBALC,KAAK;AAAA,oBACL,OAAO,aAAa,IAAI;AAAA,oBACzB,SAAQ;AAAA,oBACR,WAAA;AAAA,oBACC,UAAM,CAAA,WAAE,cAAc,IAAI;AAAA,kBAAA;;kCAG/Bd,mBAEM,OAFNgB,cAAmC,uBAEnC;AAAA,YAAA;;UAKJd,gBA4BM,OA5BNe,cA4BM;AAAA,YA3BJf,gBAWM,OAXNgB,cAWM;AAAA,cAVJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAhB,gBAAiF,QAAA,EAA3E,OAAM,uDAAA,GAAuD,WAAO,EAAA;AAAA,cAC1EA,gBAQS,UAAA;AAAA,gBAPP,MAAK;AAAA,gBACL,OAAM;AAAA,gBACL,+CAAOK,KAAAA,MAAK,cAAA;AAAA,cAAA;gBAEbL,gBAEM,OAAA;AAAA,kBAFD,SAAQ;AAAA,kBAAY,MAAK;AAAA,gBAAA;kBAC5BA,gBAAkc,QAAA,EAA5b,GAAE,0bAAwb;AAAA,gBAAA;;;YAItcA,gBAcM,OAdNiB,eAcM;AAAA,cAbO,QAAA,eAAe,SAAM,KAAhCd,aAAAL,mBASM,OATNoB,eASM;AAAA,kCARJpB,mBAOEY,UAAA,MAAAC,WANe,QAAA,gBAAc,CAAtB,SAAI;sCADbC,YAOE,YAAA;AAAA,oBALC,KAAK;AAAA,oBACL,OAAO,aAAa,IAAI;AAAA,oBACzB,SAAQ;AAAA,oBACR,WAAA;AAAA,oBACC,UAAM,CAAA,WAAE,cAAc,IAAI;AAAA,kBAAA;;kCAG/Bd,mBAEM,OAFNqB,eAAmC,uBAEnC;AAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACiBV,UAAM,QAAQ;AAMd,UAAM5F,QAAO;AAMb,UAAM,eAAe,IAAI,EAAE;AAC3B,UAAM,eAAe,IAAI,EAAE;AAE3B,UAAM,aAAa,MAAM;AACvB,YAAM,UAAU,aAAa,MAAM,KAAA;AACnC,UAAI,WAAW,CAAC,MAAM,gBAAgB,SAAS,OAAO,GAAG;AACvD,QAAAA,MAAK,0BAA0B,CAAC,GAAG,MAAM,iBAAiB,OAAO,CAAC;AAClE,qBAAa,QAAQ;AAAA,MACvB;AAAA,IACF;AAEA,UAAM,aAAa,MAAM;AACvB,YAAM,UAAU,aAAa,MAAM,KAAA;AACnC,UAAI,WAAW,CAAC,MAAM,gBAAgB,SAAS,OAAO,GAAG;AACvD,QAAAA,MAAK,0BAA0B,CAAC,GAAG,MAAM,iBAAiB,OAAO,CAAC;AAClE,qBAAa,QAAQ;AAAA,MACvB;AAAA,IACF;AAEA,UAAM,gBAAgB,CAAC,YAAoB;AACzC,MAAAA,MAAK,0BAA0B,MAAM,gBAAgB,OAAO,CAAAT,OAAKA,OAAM,OAAO,CAAC;AAAA,IACjF;AAEA,UAAM,gBAAgB,CAAC,YAAoB;AACzC,MAAAS,MAAK,0BAA0B,MAAM,gBAAgB,OAAO,CAAAT,OAAKA,OAAM,OAAO,CAAC;AAAA,IACjF;;AArHE,aAAAqF,UAAA,GAAAL,mBAyEM,OAzENG,cAyEM;AAAA,QAxEJD,gBAUM,OAVNI,cAUM;AAAA,UATJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAJ,gBAAiD,QAAA,EAA3C,OAAM,iBAAA,GAAiB,iBAAa,EAAA;AAAA,UAC1CA,gBAOQ,SAPRO,cAOQ;AAAA,YANNP,gBAIE,SAAA;AAAA,cAHA,MAAK;AAAA,cACJ,SAAS,QAAA;AAAA,cACT,gDAAQK,KAAAA,MAAK,mBAAqB,OAAO,OAA4B,OAAO;AAAA,YAAA;YAE/E,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAL,gBAAoD,QAAA,EAA9C,OAAM,2BAAwB,aAAS,EAAA;AAAA,UAAA;;QAGjDA,gBA4DM,OA5DNS,cA4DM;AAAA,UA1DJT,gBA2BM,OA3BNa,cA2BM;AAAA,sCA1BJb,gBAEM,OAAA,EAFD,OAAM,4BAAwB;AAAA,cACjCA,gBAAiF,QAAA,EAA3E,OAAM,uDAAA,GAAuD,SAAO;AAAA,YAAA;YAE5EA,gBASM,OATNc,cASM;AAAA,6BARJd,gBAME,SAAA;AAAA,gBALA,MAAK;AAAA,6EACI,aAAY,QAAA;AAAA,gBACpB,aAAa,QAAA,WAAQ,yBAAA;AAAA,gBACtB,OAAM;AAAA,gBACL,oBAAe,YAAU,CAAA,OAAA,CAAA;AAAA,cAAA;6BAHjB,aAAA,KAAY;AAAA,cAAA;cAKvBA,gBAA6E,UAAA;AAAA,gBAArE,MAAK;AAAA,gBAAS,OAAM;AAAA,gBAAoB,SAAO;AAAA,cAAA,GAAY,GAAC;AAAA,YAAA;YAEtEA,gBAYM,OAZNgB,cAYM;AAAA,gCAXJlB,mBAOEY,UAAA,MAAAC,WANkB,QAAA,iBAAe,CAA1B,YAAO;oCADhBC,YAOE,YAAA;AAAA,kBALC,KAAK;AAAA,kBACL,OAAO;AAAA,kBACR,SAAQ;AAAA,kBACR,WAAA;AAAA,kBACC,UAAM,CAAA,WAAE,cAAc,OAAO;AAAA,gBAAA;;cAErB,QAAA,gBAAgB,WAAM,kBAAjCd,mBAEM,OAFNmB,eAEMf,gBADD,QAAA,WAAQ,sBAAA,kBAAA,GAAA,CAAA;;;UAMjBF,gBA2BM,OA3BNkB,eA2BM;AAAA,sCA1BJlB,gBAEM,OAAA,EAFD,OAAM,4BAAwB;AAAA,cACjCA,gBAAiF,QAAA,EAA3E,OAAM,uDAAA,GAAuD,SAAO;AAAA,YAAA;YAE5EA,gBASM,OATNmB,eASM;AAAA,6BARJnB,gBAME,SAAA;AAAA,gBALA,MAAK;AAAA,6EACI,aAAY,QAAA;AAAA,gBACpB,aAAa,QAAA,WAAQ,yBAAA;AAAA,gBACtB,OAAM;AAAA,gBACL,oBAAe,YAAU,CAAA,OAAA,CAAA;AAAA,cAAA;6BAHjB,aAAA,KAAY;AAAA,cAAA;cAKvBA,gBAA6E,UAAA;AAAA,gBAArE,MAAK;AAAA,gBAAS,OAAM;AAAA,gBAAoB,SAAO;AAAA,cAAA,GAAY,GAAC;AAAA,YAAA;YAEtEA,gBAYM,OAZNoB,eAYM;AAAA,gCAXJtB,mBAOEY,UAAA,MAAAC,WANkB,QAAA,iBAAe,CAA1B,YAAO;oCADhBC,YAOE,YAAA;AAAA,kBALC,KAAK;AAAA,kBACL,OAAO;AAAA,kBACR,SAAQ;AAAA,kBACR,WAAA;AAAA,kBACC,UAAM,CAAA,WAAE,cAAc,OAAO;AAAA,gBAAA;;cAErB,QAAA,gBAAgB,WAAM,kBAAjCd,mBAEM,OAFNuB,eAEMnB,gBADD,QAAA,WAAQ,sBAAA,kBAAA,GAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;ACpErB,aAAAC,UAAA,GAAAL,mBAmCM,OAnCNG,cAmCM;AAAA,kCAlCJD,gBAEM,OAAA,EAFD,OAAM,qBAAiB;AAAA,UAC1BA,gBAA2C,QAAA,EAArC,OAAM,iBAAA,GAAiB,SAAO;AAAA,QAAA;QAEtCA,gBA8BM,OA9BNI,cA8BM;AAAA,UA7BJJ,gBAaQ,SAbRO,cAaQ;AAAA,sCAZNP,gBAA8G,QAAA;AAAA,cAAxG,OAAM;AAAA,cAAqB,OAAM;AAAA,YAAA,GAA8C,sBAAkB,EAAA;AAAA,YACvGA,gBAUS,UAAA;AAAA,cATP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,iBAAA,CAAgB,CAAA;AAAA,cAClD,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,2BAAA,CAA6B,QAAA,gBAAgB;AAAA,cAC1D,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,YAAA;cAEfL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;UAItCA,gBAaQ,SAbRS,cAaQ;AAAA,sCAZNT,gBAA4F,QAAA;AAAA,cAAtF,OAAM;AAAA,cAAqB,OAAM;AAAA,YAAA,GAAiC,iBAAa,EAAA;AAAA,YACrFA,gBAUS,UAAA;AAAA,cATP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,aAAA,CAAY,CAAA;AAAA,cAC9C,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,uBAAA,CAAyB,QAAA,YAAY;AAAA,cAClD,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,YAAA;cAEfL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACwC5C,UAAM,cAAc,IAAI,KAAK;AAE7B,UAAM,eAAe,CAAC,UAAiB;AACrC,YAAM,MAAM,MAAM;AAClB,UAAI,MAAM,UAAU;AAAA,IACtB;;AA5EE,aAAAG,UAAA,GAAAL,mBAsDM,OAtDNG,cAsDM;AAAA,QArDJD,gBAkBM,OAAA;AAAA,UAjBJ,OAAM;AAAA,UACL,oDAAY,YAAA,QAAW;AAAA,UACvB,oDAAY,YAAA,QAAW;AAAA,QAAA;UAExBA,gBAAqF,QAArFI,cAA6B,qBAAgBF,gBAAG,QAAA,WAAW,gBAAc,GAAA,CAAA;AAAA,UACzEF,gBAWS,UAAA;AAAA,YAVP,MAAK;AAAA,YACL,OAAKD,eAAA,CAAC,oBAAkB,EAAA,6BACe,QAAA,UAAA,CAAS,CAAA;AAAA,YAC/C,6DAAYM,KAAAA,MAAK,SAAA,GAAA,CAAA,MAAA,CAAA;AAAA,YACjB,UAAU,QAAA;AAAA,UAAA;YAEXL,gBAGM,OAAA;AAAA,cAHD,OAAM;AAAA,cAAwB,SAAQ;AAAA,cAAY,MAAK;AAAA,YAAA;cAC1DA,gBAAmN,QAAA,EAA7M,GAAE,2MAAyM;AAAA,cACjNA,gBAAoO,QAAA;AAAA,gBAA9N,aAAU;AAAA,gBAAU,GAAE;AAAA,cAAA;;;;QAMlCM,YA2BagB,YAAA,EA3BD,MAAK,aAAS;AAAA,2BACxB,MAyBM;AAAA,YAzBK,YAAA,SAAe,QAAA,MAAM,SAAM,KAAtCnB,aAAAL,mBAyBM,OAzBNU,cAyBM;AAAA,cAxBJR,gBAuBM,OAvBNS,cAuBM;AAAA,iBAtBJN,UAAA,IAAA,GAAAL,mBAkBMY,UAAA,MAAAC,WAjBW,QAAA,MAAM,cAAd,SAAI;sCADbb,mBAkBM,OAAA;AAAA,oBAhBH,KAAK,KAAK;AAAA,oBACX,OAAM;AAAA,kBAAA;oBAGE,KAAK,4BADbA,mBAKE,OAAA;AAAA;sBAHC,KAAK,KAAK;AAAA,sBACX,OAAM;AAAA,sBACL,SAAO;AAAA,oBAAA,+BAEVK,aAAAL,mBAKM,OALNgB,cAKM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,sBAJJd,gBAGM,OAAA;AAAA,wBAHD,SAAQ;AAAA,wBAAY,MAAK;AAAA,sBAAA;wBAC5BA,gBAA2D,QAAA,EAArD,GAAE,mDAAiD;AAAA,wBACzDA,gBAAuN,QAAA,EAAjN,GAAE,+MAA6M;AAAA,sBAAA;;oBAGzNA,gBAA0E,QAA1Ee,cAA0Eb,gBAA3C,KAAK,cAAc,KAAK,SAAS,GAAA,CAAA;AAAA,kBAAA;;gBAEvD,QAAA,aAAU,kBAArBJ,mBAEM,OAFNkB,cAAiD,wBAC1C,QAAA,aAAU,GAAM,gBAAc,IAAK,UAC1C,CAAA;;;;;;QAKK,QAAA,MAAM,WAAM,KAAA,CAAW,QAAA,0BAAlClB,mBAEM,OAFNmB,eAAoE,qBAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrDF,aAAAd,UAAA,GAAAL,mBAiDM,OAjDNG,cAiDM;AAAA,QA/CJD,gBAsCM,OAtCNI,cAsCM;AAAA,UArCJE,YAIE,kBAAA;AAAA,YAHC,UAAU,QAAA;AAAA,YACV,QAAQ,QAAA;AAAA,YACR,8CAAMD,KAAAA,MAAK,cAAA,YAAA;AAAA,UAAA;UAGdC,YAKE,aAAA;AAAA,YAJC,gBAAc,QAAA;AAAA,YACd,gBAAc,QAAA;AAAA,YACd,qDAAcD,KAAAA,MAAK,cAAA,aAAA;AAAA,YACnB,qDAAcA,KAAAA,MAAK,cAAA,aAAA;AAAA,UAAA;UAGtBC,YAOE,gBAAA;AAAA,YANC,mBAAiB,QAAA;AAAA,YACjB,mBAAiB,QAAA;AAAA,YACjB,2BAAsB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,yBAA0B,MAAM;AAAA,YAC7D,2BAAsB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,yBAA0B,MAAM;AAAA,YAC7D,qDAAcA,KAAAA,MAAK,cAAA,gBAAA;AAAA,YACnB,qDAAcA,KAAAA,MAAK,cAAA,gBAAA;AAAA,UAAA;UAGtBC,YAOE,qBAAA;AAAA,YANC,oBAAkB,QAAA;AAAA,YAClB,oBAAkB,QAAA;AAAA,YAClB,aAAW,QAAA;AAAA,YACX,4BAAuB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,0BAA2B,MAAM;AAAA,YAC/D,4BAAuB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,0BAA2B,MAAM;AAAA,YAC/D,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,mBAAoB,MAAM;AAAA,UAAA;UAGpDC,YAKE,gBAAA;AAAA,YAJC,sBAAoB,QAAA;AAAA,YACpB,iBAAe,QAAA;AAAA,YACf,6BAAyB,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,2BAA4B,MAAM;AAAA,YAClE,yBAAoB,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,uBAAwB,MAAM;AAAA,UAAA;;QAK9DC,YAKE,iBAAA;AAAA,UAJC,OAAO,QAAA;AAAA,UACP,eAAa,QAAA;AAAA,UACb,cAAY,QAAA;AAAA,UACZ,mDAASD,KAAAA,MAAK,SAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTrB,UAAM,QAAQ;AAOd,UAAM9E,QAAO;AAIb,UAAM,QAAQ,MAAM;AAClB,MAAAA,MAAK,OAAO;AAAA,IACd;AAGA,UAAM,gBAAgB,CAAC,MAAqB;AAC1C,UAAI,EAAE,QAAQ,YAAY,MAAM,SAAS;AACvC,cAAA;AAAA,MACF;AAAA,IACF;AAEA,cAAU,MAAM;AACd,eAAS,iBAAiB,WAAW,aAAa;AAAA,IACpD,CAAC;AAED,gBAAY,MAAM;AAChB,eAAS,oBAAoB,WAAW,aAAa;AAAA,IACvD,CAAC;AAGD,UAAM,MAAM,MAAM,SAAS,CAAC,cAAc;AACxC,UAAI,WAAW;AACb,iBAAS,KAAK,MAAM,WAAW;AAAA,MACjC,OAAO;AACL,iBAAS,KAAK,MAAM,WAAW;AAAA,MACjC;AAAA,IACF,CAAC;;0BA3ECqF,YAgCWW,UAAA,EAhCD,IAAG,UAAM;AAAA,QACjBjB,YA8BagB,YAAA,EA9BD,MAAK,WAAO;AAAA,2BACtB,MA4BM;AAAA,YA3BE,QAAA,wBADRxB,mBA4BM,OAAA;AAAA;cA1BJ,OAAM;AAAA,cACL,uBAAY,OAAK,CAAA,MAAA,CAAA;AAAA,cACjB,oBAAa,OAAK,CAAA,KAAA,CAAA;AAAA,YAAA;cAEnBE,gBAqBM,OAAA;AAAA,gBArBD,OAAKD,eAAA,CAAC,mBAA0B,QAAA,UAAU,CAAA;AAAA,gBAAE,MAAK;AAAA,gBAAS,cAAW;AAAA,cAAA;gBACxEC,gBAaM,OAbNC,cAaM;AAAA,kBAZJD,gBAGM,OAHNI,cAGM;AAAA,oBAFJJ,gBAAmD,MAAnDO,cAAmDL,gBAAb,QAAA,KAAK,GAAA,CAAA;AAAA,oBAClC,QAAA,yBAATJ,mBAAuE,KAAvEU,cAAuEN,gBAAf,QAAA,QAAQ,GAAA,CAAA;;kBAElEF,gBAOS,UAAA;AAAA,oBANP,OAAM;AAAA,oBACL,SAAO;AAAA,oBACR,MAAK;AAAA,oBACL,cAAW;AAAA,kBAAA,GACZ,KAED;AAAA,gBAAA;gBAESwB,KAAAA,OAAO,UAAlBrB,aAAAL,mBAEM,OAFNW,cAEM;AAAA,kBADJgB,WAA2B,KAAA,QAAA,UAAA,CAAA,GAAA,QAAA,IAAA;AAAA,gBAAA;gBAE7BzB,gBAEM,OAFNa,cAEM;AAAA,kBADJY,WAAa,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACqCzB,UAAM,QAAQ;AAMd,UAAMlG,QAAO;AAKb,UAAM,cAAc,IAAI,EAAE;AAC1B,UAAM,iBAAiB,IAA6B,IAAI;AAExD,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,CAAC,YAAY,OAAO;AACtB,eAAO,MAAM;AAAA,MACf;AACA,YAAM,QAAQ,YAAY,MAAM,YAAA;AAChC,aAAO,MAAM,OAAO,OAAO,CAAAJ,OAAKA,GAAE,KAAK,YAAA,EAAc,SAAS,KAAK,CAAC;AAAA,IACtE,CAAC;AAED,UAAM,aAAa,CAAC,SAAiB;AACnC,aAAO,MAAM,SAAS,SAAS,IAAI;AAAA,IACrC;AAEA,UAAM,cAAc,CAAC,SAAiB;AACpC,YAAM,cAAc,WAAW,IAAI,IAC/B,MAAM,SAAS,OAAO,CAAA,MAAK,MAAM,IAAI,IACrC,CAAC,GAAG,MAAM,UAAU,IAAI;AAC5B,MAAAI,MAAK,mBAAmB,WAAW;AAAA,IACrC;AAEA,UAAM,WAAW,MAAM;AAAA,IAEvB;AAEA,UAAM,cAAc,MAAM;;AACxB,kBAAY,QAAQ;AACpB,OAAAhB,MAAA,eAAe,UAAf,gBAAAA,IAAsB;AAAA,IACxB;AAEA,UAAM,MAAM,MAAM,SAAS,CAAC,cAAc;AACxC,UAAI,WAAW;AACb,iBAAS,MAAM;;AACb,WAAAA,MAAA,eAAe,UAAf,gBAAAA,IAAsB;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;;0BAhHCqG,YAwDe,cAAA;AAAA,QAvDZ,SAAS,QAAA;AAAA,QACV,OAAM;AAAA,QACN,UAAS;AAAA,QACR,+CAAOP,KAAAA,MAAK,OAAA;AAAA,MAAA;QAEF,gBACT,MAsBM;AAAA,UAtBNL,gBAsBM,OAtBNC,cAsBM;AAAA,sCArBJD,gBAEM,OAAA;AAAA,cAFD,OAAM;AAAA,cAAc,SAAQ;AAAA,cAAY,MAAK;AAAA,YAAA;cAChDA,gBAAqM,QAAA,EAA/L,GAAE,6LAA2L;AAAA,YAAA;2BAErMA,gBAOE,SAAA;AAAA,uBANI;AAAA,cAAJ,KAAI;AAAA,2EACK,YAAW,QAAA;AAAA,cACpB,MAAK;AAAA,cACL,OAAM;AAAA,cACN,aAAY;AAAA,cACX,SAAO;AAAA,YAAA;2BAJC,YAAA,KAAW;AAAA,YAAA;YAOd,YAAA,sBADRF,mBASS,UAAA;AAAA;cAPP,MAAK;AAAA,cACL,OAAM;AAAA,cACL,SAAO;AAAA,YAAA;cAERE,gBAEM,OAAA;AAAA,gBAFD,SAAQ;AAAA,gBAAY,MAAK;AAAA,cAAA;gBAC5BA,gBAA2M,QAAA,EAArM,GAAE,mMAAiM;AAAA,cAAA;;;;yBAMjN,MAuBM;AAAA,UAvBNA,gBAuBM,OAvBNI,cAuBM;AAAA,8BAtBJN,mBAkBQY,UAAA,MAAAC,WAjBU,eAAA,OAAc,CAAvB,UAAK;kCADdb,mBAkBQ,SAAA;AAAA,gBAhBL,KAAK,MAAM;AAAA,gBACZ,OAAM;AAAA,cAAA;gBAENE,gBAKE,SAAA;AAAA,kBAJA,MAAK;AAAA,kBACJ,SAAS,WAAW,MAAM,IAAI;AAAA,kBAC9B,UAAM,CAAA,WAAE,YAAY,MAAM,IAAI;AAAA,kBAC/B,OAAM;AAAA,gBAAA;gBAERA,gBAIO,QAJPQ,cAIO;AAAA,kBAHM,WAAW,MAAM,IAAI,KAAhCL,UAAA,GAAAL,mBAEM,OAFNW,cAEM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,oBADJT,gBAA0I,QAAA,EAApI,GAAE,iIAAA,GAAgI,MAAA,EAAA;AAAA,kBAAA;;gBAG5IA,gBAAgD,QAAhDa,cAAgDX,gBAApB,MAAM,IAAI,GAAA,CAAA;AAAA,gBACtCF,gBAAoD,QAApDc,cAA0B,sBAAI,MAAM,KAAK,IAAG,KAAC,CAAA;AAAA,cAAA;;YAEpC,eAAA,MAAe,WAAM,kBAAhChB,mBAEM,OAFNiB,cAA2D,mBAE3D;;;;;;;;;;;;;;;;;;;AC+BN,MAAM,aAAa;AACnB,MAAM,mBAAmB;;;;;;;;;;;AA5BzB,UAAM,QAAQ;AAOd,UAAMxF,QAAO;AAKb,UAAM,QAAQ;AAAA,MAAS,MACrB,MAAM,YAAY,YAAY,iBAAiB;AAAA,IAAA;AAGjD,UAAM,WAAW;AAAA,MAAS,MACxB,MAAM,YAAY,YACd,qCACA;AAAA,IAAA;AAGN,UAAM,cAAc,IAAI,EAAE;AAC1B,UAAM,iBAAiB,IAA6B,IAAI;AACxD,UAAM,mBAAmB,IAAwB,IAAI;AACrD,UAAM,iBAAiB,IAAI,GAAG;AAK9B,UAAM,eAAe,SAAS,MAAM;AAClC,UAAI,CAAC,YAAY,OAAO;AACtB,eAAO,MAAM;AAAA,MACf;AACA,YAAM,QAAQ,YAAY,MAAM,YAAA;AAChC,aAAO,MAAM,KAAK,OAAO,CAAA,MAAK,EAAE,IAAI,YAAA,EAAc,SAAS,KAAK,CAAC;AAAA,IACnE,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AAEjC,UAAI,YAAY,OAAO;AACrB,eAAO,aAAa;AAAA,MACtB;AAEA,aAAO,aAAa,MAAM,MAAM,GAAG,eAAe,KAAK;AAAA,IACzD,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,YAAY,MAAO,QAAO;AAC9B,aAAO,eAAe,QAAQ,aAAa,MAAM;AAAA,IACnD,CAAC;AAED,UAAM,aAAa,CAAC,QAAgB;AAClC,aAAO,MAAM,SAAS,SAAS,GAAG;AAAA,IACpC;AAEA,UAAM,YAAY,CAAC,QAAgB;AACjC,YAAM,cAAc,WAAW,GAAG,IAC9B,MAAM,SAAS,OAAO,CAAA,MAAK,MAAM,GAAG,IACpC,CAAC,GAAG,MAAM,UAAU,GAAG;AAC3B,MAAAA,MAAK,mBAAmB,WAAW;AAAA,IACrC;AAEA,UAAM,cAAc,MAAM;;AACxB,kBAAY,QAAQ;AACpB,qBAAe,QAAQ;AACvB,OAAAhB,MAAA,eAAe,UAAf,gBAAAA,IAAsB;AAAA,IACxB;AAEA,UAAM,eAAe,MAAM;AACzB,UAAI,YAAY,MAAO;AAEvB,YAAM,YAAY,iBAAiB;AACnC,UAAI,CAAC,UAAW;AAEhB,YAAM,EAAE,WAAW,cAAc,aAAA,IAAiB;AAClD,YAAM,eAAe,eAAe,YAAY;AAGhD,UAAI,eAAe,oBAAoB,YAAY,OAAO;AACxD,uBAAe,QAAQ,KAAK;AAAA,UAC1B,eAAe,QAAQ;AAAA,UACvB,aAAa,MAAM;AAAA,QAAA;AAAA,MAEvB;AAAA,IACF;AAEA,UAAM,MAAM,MAAM,SAAS,CAAC,cAAc;AACxC,UAAI,WAAW;AACb,uBAAe,QAAQ;AACvB,iBAAS,MAAM;;AACb,WAAAA,MAAA,eAAe,UAAf,gBAAAA,IAAsB;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,UAAM,MAAM,MAAM,MAAM,MAAM;AAC5B,qBAAe,QAAQ;AAAA,IACzB,CAAC;;0BA5JCqG,YAkDe,cAAA;AAAA,QAjDZ,SAAS,QAAA;AAAA,QACT,OAAO,MAAA;AAAA,QACP,UAAU,SAAA;AAAA,QACV,eAAa,QAAA,YAAO,YAAA,wBAAA;AAAA,QACpB,+CAAOP,KAAAA,MAAK,OAAA;AAAA,MAAA;QAEF,gBACT,MAqBM;AAAA,UArBNL,gBAqBM,OArBNC,cAqBM;AAAA,sCApBJD,gBAEM,OAAA;AAAA,cAFD,OAAM;AAAA,cAAc,SAAQ;AAAA,cAAY,MAAK;AAAA,YAAA;cAChDA,gBAAqM,QAAA,EAA/L,GAAE,6LAA2L;AAAA,YAAA;2BAErMA,gBAME,SAAA;AAAA,uBALI;AAAA,cAAJ,KAAI;AAAA,2EACK,YAAW,QAAA;AAAA,cACpB,MAAK;AAAA,cACL,OAAM;AAAA,cACN,aAAY;AAAA,YAAA;2BAHH,YAAA,KAAW;AAAA,YAAA;YAMd,YAAA,sBADRF,mBASS,UAAA;AAAA;cAPP,MAAK;AAAA,cACL,OAAM;AAAA,cACL,SAAO;AAAA,YAAA;cAERE,gBAEM,OAAA;AAAA,gBAFD,SAAQ;AAAA,gBAAY,MAAK;AAAA,cAAA;gBAC5BA,gBAA2M,QAAA,EAArM,GAAE,mMAAiM;AAAA,cAAA;;;;yBAMjN,MAiBM;AAAA,UAjBNA,gBAiBM,OAAA;AAAA,qBAjBG;AAAA,YAAJ,KAAI;AAAA,YAAmB,OAAM;AAAA,YAAkB,UAAQ;AAAA,UAAA;8BAC1DF,mBASSY,UAAA,MAAAC,WARO,YAAA,OAAW,CAAlB,QAAG;kCADZb,mBASS,UAAA;AAAA,gBAPN,KAAK,IAAI;AAAA,gBACV,MAAK;AAAA,gBACL,uBAAM,YAAU,EAAA,sBACgB,WAAW,IAAI,GAAG,EAAA,CAAA,CAAA;AAAA,gBACjD,SAAK,CAAA,WAAE,UAAU,IAAI,GAAG;AAAA,cAAA,GAEtBI,gBAAA,IAAI,GAAG,GAAA,IAAAE,YAAA;AAAA;YAED,YAAA,MAAY,WAAM,kBAA7BN,mBAEM,OAFNS,cAAwD,iBAExD;YACW,YAAA,sBAAXT,mBAEM,OAFNU,cAA+C,0BAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0BN,UAAM,QAAQ;AAQd,UAAMjF,QAAO;AAKb,UAAM,cAAc,SAAS,MAAM,MAAM,KAAK,YAAY,MAAM,KAAK,SAAS,SAAS,CAAC;AACxF,UAAM,aAAa,SAAS,MAAM,MAAM,SAAS,IAAI,MAAM,KAAK,GAAG,CAAC;AACpE,UAAM,aAAa,SAAS,MAAM,MAAM,SAAS,SAAS,MAAM,KAAK,GAAG,CAAC;AAGzE,UAAM,iBAAiB,CAAC,MAAkB;AACxC,YAAM,SAAS,EAAE;AACjB,UAAI,OAAO,QAAQ,4BAA4B,GAAG;AAChD;AAAA,MACF;AACA,MAAAA,MAAK,iBAAiB,MAAM,KAAK,GAAG;AAAA,IACtC;;;AAlGE,aAAA4E,UAAA,GAAAL,mBAmEM,OAnENG,cAmEM;AAAA,QAlEJD,gBAkDM,OAAA;AAAA,UAjDJ,uBAAM,mBAAiB;AAAA,gCACe,QAAA,OAAO;AAAA,2CAA2C,WAAA,MAAA;AAAA,UAAU;UAIjG,wCAAyB,QAAA,QAAK,KAAA,CAAA,MAAA;AAAA,UAC9B,SAAO;AAAA,QAAA;UAIA,YAAA,sBADRF,mBAcS,UAAA;AAAA;YAZP,MAAK;AAAA,YACL,OAAM;AAAA,YACL,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA4B,cAAA,CAAA,WAAOrB,KAAAA,MAAK,iBAAkB,QAAA,KAAK,GAAG,GAAA,CAAA,MAAA,CAAA;AAAA,UAAA;0BAE5CP,mBAOM,OAAA;AAAA,cANJ,OAAKC,eAAA,CAAC,0BAAwB,EAAA,oCACgB,WAAA,MAAA,CAAU,CAAA;AAAA,cACxD,SAAQ;AAAA,cACR,MAAK;AAAA,YAAA;cAELC,gBAAkI,QAAA,EAA5H,GAAE,yHAAA,GAAwH,MAAA,EAAA;AAAA,YAAA;iBAGpIG,UAAA,GAAAL,mBAAqD,QAArDM,YAAqD;AAAA,UAGrDJ,gBAYQ,SAZRO,cAYQ;AAAA,YAXNP,gBAKE,SAAA;AAAA,cAJA,MAAK;AAAA,cACL,OAAM;AAAA,cACL,SAAS,WAAA;AAAA,cACT,UAAM,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEK,KAAAA,MAAK,iBAAkB,QAAA,KAAK,GAAG;AAAA,YAAA;YAE1CL,gBAIO,QAAA;AAAA,cAJD,OAAKD,eAAA,CAAC,8BAA4B,+BAAwC,QAAA,OAAO,EAAA,CAAA;AAAA,YAAA;cAC1E,WAAA,SAAXI,aAAAL,mBAEM,OAFNW,cAEM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,gBADJT,gBAA0I,QAAA,EAApI,GAAE,iIAAA,GAAgI,MAAA,EAAA;AAAA,cAAA;;;oCAM9IA,gBAGM,OAAA;AAAA,YAHD,OAAM;AAAA,YAAyB,SAAQ;AAAA,YAAY,MAAK;AAAA,UAAA;YAC3DA,gBAAuZ,QAAA,EAAjZ,GAAE,+YAA6Y;AAAA,YACrZA,gBAA2F,QAAA,EAArF,GAAE,mFAAiF;AAAA,UAAA;UAI3FA,gBAAsD,QAAtDa,cAAsDX,gBAApB,QAAA,KAAK,KAAK,GAAA,CAAA;AAAA,QAAA;QAInC,YAAA,SAAe,WAAA,SAA1BC,aAAAL,mBAYM,OAZNgB,cAYM;AAAA,WAXJX,UAAA,IAAA,GAAAL,mBAUEY,UAAA,MAAAC,WATgB,QAAA,KAAK,WAAd,UAAK;gCADdC,YAUE,2BAAA;AAAA,cARC,KAAK,MAAM;AAAA,cACX,MAAM;AAAA,cACN,UAAU,QAAA;AAAA,cACV,UAAU,QAAA;AAAA,cACV,SAAS,QAAA;AAAA,cACT,OAAO,QAAA,QAAK;AAAA,cACZ,gBAAa,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEP,KAAAA,MAAK,iBAAkB,MAAM;AAAA,cAC5C,gBAAa,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,iBAAkB,MAAM;AAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;ACjBrD,UAAM,QAAQ;AAOd,UAAM9E,QAAO;AAKb,UAAM,cAAc,IAAI,EAAE;AAC1B,UAAM,eAAe,IAAiB,oBAAI,KAAK;AAG/C,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,CAAC,YAAY,OAAO;AACtB,eAAO,MAAM;AAAA,MACf;AACA,YAAM,QAAQ,YAAY,MAAM,YAAA;AAChC,aAAO,WAAW,MAAM,SAAS,KAAK;AAAA,IACxC,CAAC;AAGD,UAAM,aAAa,CAAC,OAA6B,UAAwC;AACvF,YAAM,SAA+B,CAAA;AAErC,iBAAW,QAAQ,OAAO;AACxB,cAAM,UAAU,KAAK,IAAI,YAAA,EAAc,SAAS,KAAK,KAAK,KAAK,MAAM,YAAA,EAAc,SAAS,KAAK;AACjG,cAAM,mBAAmB,KAAK,WAAW,WAAW,KAAK,UAAU,KAAK,IAAI,CAAA;AAE5E,YAAI,WAAW,iBAAiB,SAAS,GAAG;AAC1C,iBAAO,KAAK;AAAA,YACV,GAAG;AAAA,YACH,UAAU,iBAAiB,SAAS,IAAI,mBAAmB,KAAK;AAAA,UAAA,CACjE;AAED,cAAI,YAAY,SAAS,iBAAiB,SAAS,GAAG;AACpD,yBAAa,MAAM,IAAI,KAAK,GAAG;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAGA,UAAM,eAAe,CAAC,QAAgB;AACpC,UAAI,aAAa,MAAM,IAAI,GAAG,GAAG;AAC/B,qBAAa,MAAM,OAAO,GAAG;AAAA,MAC/B,OAAO;AACL,qBAAa,MAAM,IAAI,GAAG;AAAA,MAC5B;AAEA,mBAAa,QAAQ,IAAI,IAAI,aAAa,KAAK;AAAA,IACjD;AAGA,UAAM,eAAe,CAAC,QAAgB;AACpC,YAAM,cAAc,MAAM,SAAS,SAAS,GAAG,IAC3C,MAAM,SAAS,OAAO,CAAAQ,OAAKA,OAAM,GAAG,IACpC,CAAC,GAAG,MAAM,UAAU,GAAG;AAC3B,MAAAR,MAAK,mBAAmB,WAAW;AAAA,IACrC;AAGA,UAAM,MAAM,MAAM,SAAS,CAAC,cAAc;AACxC,UAAI,WAAW;AACb,oBAAY,QAAQ;AAEpB,qBAAa,4BAAY,IAAA;AAAA,MAC3B;AAAA,IACF,CAAC;;0BAxHCqF,YAsCe,cAAA;AAAA,QArCZ,SAAS,QAAA;AAAA,QACT,OAAO,QAAA,YAAO,YAAA,oBAAA;AAAA,QACd,UAAU,QAAA,YAAO,YAAA,4CAAA;AAAA,QACjB,+CAAOP,KAAAA,MAAK,OAAA;AAAA,MAAA;QAEF,gBACT,MAUM;AAAA,UAVNL,gBAUM,OAVNC,cAUM;AAAA,sCATJD,gBAEM,OAAA;AAAA,cAFD,OAAM;AAAA,cAAc,SAAQ;AAAA,cAAY,MAAK;AAAA,YAAA;cAChDA,gBAAqM,QAAA,EAA/L,GAAE,6LAA2L;AAAA,YAAA;2BAErMA,gBAKE,SAAA;AAAA,2EAJS,YAAW,QAAA;AAAA,cACpB,MAAK;AAAA,cACL,OAAM;AAAA,cACN,aAAY;AAAA,YAAA;2BAHH,YAAA,KAAW;AAAA,YAAA;;;yBAQ1B,MAiBM;AAAA,UAjBNA,gBAiBM,OAjBNI,cAiBM;AAAA,YAhBY,gBAAA,MAAgB,SAAM,sBACpCN,mBAUEY,UAAA,EAAA,KAAA,KAAAC,WATe,gBAAA,OAAe,CAAvB,SAAI;kCADbC,YAUE,gBAAA;AAAA,gBARC,KAAK,KAAK;AAAA,gBACV;AAAA,gBACA,UAAU,QAAA;AAAA,gBACV,UAAU,aAAA;AAAA,gBACV,SAAS,QAAA;AAAA,gBACT,OAAO;AAAA,gBACP,gBAAe;AAAA,gBACf,gBAAe;AAAA,cAAA;sCAGpBd,mBAEM,OAFNS,cAA+B,oBAE/B;AAAA,UAAA;;;;;;;;AClCC,SAAS,iBAAiB;AAC/B,QAAM,YAAY,IAAI,KAAK;AAE3B,QAAM,kBAAkB,OAAO,QAAQ,OAAmC;AACxE,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,mCAAmC,KAAK,EAAE;AACvE,YAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,aAAO,KAAK,eAAe,CAAA;AAAA,IAC7B,SAAS,OAAO;AACd,cAAQ,MAAM,8CAA8C,KAAK;AACjE,aAAO,CAAA;AAAA,IACT;AAAA,EACF;AAEA,QAAM,YAAY,OAAO,QAAQ,MAA4B;AAC3D,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,gCAAgC,KAAK,EAAE;AACpE,YAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,aAAO,KAAK,QAAQ,CAAA;AAAA,IACtB,SAAS,OAAO;AACd,cAAQ,MAAM,uCAAuC,KAAK;AAC1D,aAAO,CAAA;AAAA,IACT;AAAA,EACF;AAEA,QAAM,kBAAkB,YAAuC;AAC7D,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,mCAAmC;AAChE,YAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,aAAO,oBAAoB,KAAK,QAAQ,EAAE;AAAA,IAC5C,SAAS,OAAO;AACd,cAAQ,MAAM,8CAA8C,KAAK;AACjE,aAAO,CAAA;AAAA,IACT;AAAA,EACF;AAEA,QAAM,sBAAsB,CAAC,MAA2B,aAAa,OAAyB;AAC5F,QAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,aAAO,CAAA;AAAA,IACT;AAEA,WAAO,OAAO,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,QAAQ,MAAM;AACpD,YAAM,OAAO,aAAa,GAAG,UAAU,IAAI,IAAI,KAAK;AACpD,YAAM,aAAa,oBAAoB,UAAiC,IAAI;AAE5E,aAAO;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU,WAAW,SAAS,IAAI,aAAa;AAAA,MAAA;AAAA,IAEnD,CAAC;AAAA,EACH;AAiBA,QAAM,aAAa,OAAO,WAA4E;;AACpG,cAAU,QAAQ;AAClB,QAAI;AACF,YAAM,YAAY,IAAI,gBAAA;AACtB,gBAAU,IAAI,QAAQ,OAAO,OAAO,QAAQ,CAAC,CAAC;AAC9C,gBAAU,IAAI,aAAa,OAAO,OAAO,YAAY,CAAC,CAAC;AAEvD,OAAAhG,MAAA,OAAO,eAAP,gBAAAA,IAAmB,QAAQ,CAAA,OAAM,UAAU,OAAO,cAAc,EAAE;AAClE,mBAAO,gBAAP,mBAAoB,QAAQ,CAAA,QAAO,UAAU,OAAO,eAAe,GAAG;AACtE,mBAAO,gBAAP,mBAAoB,QAAQ,CAAA,QAAO,UAAU,OAAO,eAAe,GAAG;AAGtE,UAAI,OAAO,kBAAkB,OAAO,eAAe,SAAS,GAAG;AAC7D,eAAO,eAAe,QAAQ,CAAA,WAAU,UAAU,OAAO,kBAAkB,MAAM,CAAC;AAClF,kBAAU,IAAI,aAAa,MAAM;AAAA,MACnC;AACA,mBAAO,mBAAP,mBAAuB,QAAQ,CAAA,WAAU,UAAU,OAAO,kBAAkB,MAAM;AAElF,UAAI,OAAO,qBAAqB,QAAW;AACzC,kBAAU,IAAI,mBAAmB,OAAO,CAAC,OAAO,gBAAgB,CAAC;AAAA,MACnE;AAEA,UAAI,OAAO,iBAAiB,QAAW;AACrC,kBAAU,IAAI,mCAAmC,OAAO,OAAO,YAAY,CAAC;AAAA,MAC9E;AAGA,OAAAoH,MAAA,OAAO,wBAAP,gBAAAA,IAA4B,QAAQ,CAAA,YAAW,UAAU,OAAO,wBAAwB,OAAO;AAC/F,mBAAO,wBAAP,mBAA4B,QAAQ,CAAA,YAAW,UAAU,OAAO,wBAAwB,OAAO;AAC/F,UAAI,OAAO,yBAAyB,QAAW;AAC7C,kBAAU,IAAI,0BAA0B,OAAO,OAAO,oBAAoB,CAAC;AAAA,MAC7E;AAEA,YAAM,WAAW,MAAM,MAAM,sBAAsB,SAAS,EAAE;AAC9D,YAAM,OAAO,MAAM,SAAS,KAAA;AAE5B,aAAO;AAAA,QACL,OAAO,KAAK,SAAS,CAAA;AAAA,QACrB,OAAO,KAAK,SAAS;AAAA,MAAA;AAAA,IAEzB,SAAS,OAAO;AACd,cAAQ,MAAM,wCAAwC,KAAK;AAC3D,aAAO,EAAE,OAAO,IAAI,OAAO,EAAA;AAAA,IAC7B,UAAA;AACE,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;ACnHO,SAAS,iBAAiB,QAAyC;AACxE,QAAMC,OAAM,eAAA;AAIZ,MAAI,cAAc;AAGlB,QAAM,qBAAqB,IAAc,EAAE;AAC3C,QAAM,cAAc,IAAc,EAAE;AACpC,QAAM,cAAc,IAAc,EAAE;AACpC,QAAM,iBAAiB,IAAc,EAAE;AACvC,QAAM,iBAAiB,IAAc,EAAE;AACvC,QAAM,mBAAmB,IAAI,KAAK;AAClC,QAAM,eAAe,IAAI,KAAK;AAC9B,QAAM,kBAAkB,IAAc,EAAE;AACxC,QAAM,kBAAkB,IAAc,EAAE;AACxC,QAAM,WAAW,IAAI,KAAK;AAG1B,QAAM,sBAAsB,IAAuB,EAAE;AACrD,QAAM,gBAAgB,IAAiB,EAAE;AACzC,QAAM,aAAa,IAAsB,EAAE;AAG3C,QAAM,eAAe,IAAgB,EAAE;AACvC,QAAM,aAAa,IAAI,CAAC;AACxB,QAAM,YAAY,SAAS,MAAMA,KAAI,UAAU,KAAK;AAGpD,QAAM,cAAc,MAAsB;AACxC,UAAM,SAAyB;AAAA,MAC7B,SAAS;AAAA,MACT,SAAS;AAAA,QACP,YAAY,mBAAmB;AAAA,QAC/B,MAAM;AAAA,UACJ,SAAS,YAAY;AAAA,UACrB,SAAS,YAAY;AAAA,QAAA;AAAA,QAEvB,SAAS;AAAA,UACP,SAAS,eAAe;AAAA,UACxB,SAAS,eAAe;AAAA,QAAA;AAAA,QAE1B,SAAS;AAAA,UACP,kBAAkB,iBAAiB;AAAA,UACnC,cAAc,aAAa;AAAA,QAAA;AAAA,QAE7B,cAAc;AAAA,UACZ,SAAS,gBAAgB;AAAA,UACzB,SAAS,gBAAgB;AAAA,UACzB,UAAU,SAAS;AAAA,QAAA;AAAA,MACrB;AAAA,MAEF,SAAS;AAAA,QACP,YAAY,WAAW;AAAA,QACvB,aAAa,KAAK,IAAA;AAAA,MAAI;AAAA,IACxB;AAMF,QAAI,CAAC,aAAa;AAChB,aAAO,QAAQ;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAGA,QAAM,oBAAoB,CAAC,WAA2B;;AAGpD,kBAAc;AAEd,QAAI;AACF,UAAI,EAAC,iCAAQ,SAAS;AAEtB,YAAM,EAAE,SAAS,QAAA,IAAY;AAG7B,YAAM,kBAAkB,CAAI,UAAwB,aAAgB;AAClE,YAAI,KAAK,UAAU,SAAS,KAAK,MAAM,KAAK,UAAU,QAAQ,GAAG;AAC/D,mBAAS,QAAQ;AAAA,QACnB;AAAA,MACF;AAEA,sBAAgB,oBAAoB,QAAQ,cAAc,CAAA,CAAE;AAC5D,sBAAgB,eAAarH,MAAA,QAAQ,SAAR,gBAAAA,IAAc,YAAW,CAAA,CAAE;AACxD,sBAAgB,eAAa,aAAQ,SAAR,mBAAc,YAAW,CAAA,CAAE;AACxD,sBAAgB,kBAAgB,aAAQ,YAAR,mBAAiB,YAAW,CAAA,CAAE;AAC9D,sBAAgB,kBAAgB,aAAQ,YAAR,mBAAiB,YAAW,CAAA,CAAE;AAC9D,sBAAgB,oBAAkBoH,MAAA,QAAQ,YAAR,gBAAAA,IAAiB,qBAAoB,KAAK;AAC5E,sBAAgB,gBAAc,aAAQ,YAAR,mBAAiB,iBAAgB,KAAK;AACpE,sBAAgB,mBAAiB,aAAQ,iBAAR,mBAAsB,YAAW,CAAA,CAAE;AACpE,sBAAgB,mBAAiB,aAAQ,iBAAR,mBAAsB,YAAW,CAAA,CAAE;AACpE,sBAAgB,YAAU,aAAQ,iBAAR,mBAAsB,aAAY,KAAK;AAGjE,iBAAW,SAAQ,mCAAS,eAAc;AAAA,IAC5C,UAAA;AACE,oBAAc;AAAA,IAChB;AAAA,EACF;AAGA,QAAM,qBAAqB,YAAY;AACrC,UAAM,CAAC,YAAY,MAAM,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,MACpDC,KAAI,gBAAA;AAAA,MACJA,KAAI,UAAA;AAAA,MACJA,KAAI,gBAAA;AAAA,IAAgB,CACrB;AAED,wBAAoB,QAAQ;AAC5B,kBAAc,QAAQ;AACtB,eAAW,QAAQ;AAAA,EACrB;AAGA,QAAM,iBAAiB,YAAY;AACjC,UAAM,SAAS,MAAMA,KAAI,WAAW;AAAA,MAClC,YAAY,mBAAmB;AAAA,MAC/B,aAAa,YAAY;AAAA,MACzB,aAAa,YAAY;AAAA,MACzB,gBAAgB,eAAe;AAAA,MAC/B,gBAAgB,eAAe;AAAA,MAC/B,kBAAkB,iBAAiB,SAAS;AAAA,MAC5C,cAAc,aAAa,SAAS;AAAA,MACpC,qBAAqB,gBAAgB;AAAA,MACrC,qBAAqB,gBAAgB;AAAA,MACrC,sBAAsB,SAAS;AAAA,MAC/B,UAAU;AAAA,IAAA,CACX;AAED,iBAAa,QAAQ,OAAO;AAC5B,eAAW,QAAQ,OAAO;AAC1B,gBAAA;AAAA,EACF;AAGA,MAAI,gBAAsD;AAC1D,QAAM,iBAAiB,MAAM;AAC3B,QAAI,4BAA4B,aAAa;AAC7C,oBAAgB,WAAW,MAAM;AAC/B,qBAAA;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAGA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GACC,gBAAgB,EAAE,MAAM,MAAM;AAEjC,SAAO;AAAA;AAAA,IAEL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;ACrMO,SAAS,gBAAgB;AAC9B,QAAM,cAAc,IAAe,IAAI;AAEvC,QAAM,SAAS,SAAS,MAAM,YAAY,UAAU,IAAI;AAExD,QAAM,YAAY,CAAC,UAAqB;AACtC,gBAAY,QAAQ;AAAA,EACtB;AAEA,QAAM,aAAa,MAAM;AACvB,gBAAY,QAAQ;AAAA,EACtB;AAEA,QAAM,cAAc,CAAC,UAAqB;AACxC,WAAO,YAAY,UAAU;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;;;;;;;AC2DA,UAAM,QAAQ;AAMd,UAAM,QAAQ,iBAAiB,MAAM,MAAM;AAC3C,UAAM,aAAa,cAAA;AAGnB,UAAM,YAAY,CAAC,UAAqB;AACtC,iBAAW,UAAU,KAAK;AAAA,IAC5B;AAMA,UAAM,UAAU,CAAC,UAAsB;AAGrC,YAAM,SAAS,MAAM;AACrB,UAAI,iCAAQ,QAAQ,gCAAgC;AAGlD,cAAM,gBAAA;AACN;AAAA,MACF;AAGA,YAAMvG,OAAO,OAAe;AAC5B,UAAI,CAACA,QAAO,CAACA,KAAI,UAAU,OAAOA,KAAI,OAAO,sBAAsB,YAAY;AAC7E;AAAA,MACF;AAEA,YAAM,SAAS,MAAM;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,eAAe,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM;AAGvD,UAAI,MAAM,SAAS;AACjB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,UAAI,cAAc;AAChB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,YAAM,eAAA;AACN,YAAM,gBAAA;AACN,MAAAA,KAAI,OAAO,kBAAkB,KAAK;AAAA,IACpC;AAGA,cAAU,YAAY;AAKpB,YAAM,OAAO,WAAW,CAACf,OAAsB;AAC7C,YAAIA,IAAG;AACL,kBAAQ,IAAI,iDAAiD;AAC7D,gBAAM,kBAAkBA,EAAC;AAAA,QAE3B;AAAA,MACF;AAGA,UAAI,MAAM,OAAO,OAAO;AACtB,gBAAQ,IAAI,+CAA+C;AAC3D,cAAM,kBAAkB,MAAM,OAAO,KAAuB;AAAA,MAC9D;AAGA,YAAM,MAAM,mBAAA;AAIZ,YAAM,MAAM,eAAA;AAAA,IACd,CAAC;;0BA7KCwF,mBAwEM,OAAA;AAAA,QAxED,OAAM;AAAA,QAAoB;AAAA,MAAA;QAE7BQ,YAwBE,qBAAA;AAAA,UAvBC,wBAAsBuB,MAAA,KAAA,EAAM,mBAAmB;AAAA,UAC/C,yBAAuBA,MAAA,KAAA,EAAM,oBAAoB;AAAA,UACjD,gBAAcA,MAAA,KAAA,EAAM,YAAY;AAAA,UAChC,gBAAcA,MAAA,KAAA,EAAM,YAAY;AAAA,UAChC,mBAAiBA,MAAA,KAAA,EAAM,eAAe;AAAA,UACtC,mBAAiBA,MAAA,KAAA,EAAM,eAAe;AAAA,UACtC,oBAAkBA,MAAA,KAAA,EAAM,gBAAgB;AAAA,UACxC,oBAAkBA,MAAA,KAAA,EAAM,gBAAgB;AAAA,UACxC,aAAWA,MAAA,KAAA,EAAM,SAAS;AAAA,UAC1B,sBAAoBA,MAAA,KAAA,EAAM,iBAAiB;AAAA,UAC3C,iBAAeA,MAAA,KAAA,EAAM,aAAa;AAAA,UAClC,iBAAeA,MAAA,KAAA,EAAM,aAAa;AAAA,UAClC,eAAaA,MAAA,KAAA,EAAM,WAAW;AAAA,UAC9B,cAAYA,MAAA,KAAA,EAAM,UAAU;AAAA,UAC5B,aAAY;AAAA,UACZ,iEAAwBA,MAAA,KAAA,EAAM,eAAe,QAAQ;AAAA,UACrD,iEAAwBA,MAAA,KAAA,EAAM,eAAe,QAAQ;AAAA,UACrD,kEAAyBA,MAAA,KAAA,EAAM,gBAAgB,QAAQ;AAAA,UACvD,kEAAyBA,MAAA,KAAA,EAAM,gBAAgB,QAAQ;AAAA,UACvD,2DAAkBA,MAAA,KAAA,EAAM,SAAS,QAAQ;AAAA,UACzC,mEAA2BA,MAAA,KAAA,EAAM,iBAAiB,QAAQ;AAAA,UAC1D,+DAAsBA,MAAA,KAAA,EAAM,aAAa,QAAQ;AAAA,UACjD,WAASA,MAAA,KAAA,EAAM;AAAA,QAAA;QAIlBvB,YAME,gBAAA;AAAA,UALC,SAASuB,MAAA,UAAA,EAAW,YAAW,YAAA;AAAA,UAC/B,QAAQA,MAAA,KAAA,EAAM,oBAAoB;AAAA,UAClC,UAAUA,MAAA,KAAA,EAAM,mBAAmB;AAAA,UACnC,SAAOA,MAAA,UAAA,EAAW;AAAA,UAClB,2DAAiBA,MAAA,KAAA,EAAM,mBAAmB,QAAQ;AAAA,QAAA;QAGrDvB,YAOE,WAAA;AAAA,UANC,SAASuB,MAAA,UAAA,EAAW,YAAW,aAAA;AAAA,UAC/B,MAAMA,MAAA,KAAA,EAAM,cAAc;AAAA,UAC1B,UAAUA,MAAA,KAAA,EAAM,YAAY;AAAA,UAC7B,SAAQ;AAAA,UACP,SAAOA,MAAA,UAAA,EAAW;AAAA,UAClB,2DAAiBA,MAAA,KAAA,EAAM,YAAY,QAAQ;AAAA,QAAA;QAG9CvB,YAOE,WAAA;AAAA,UANC,SAASuB,MAAA,UAAA,EAAW,YAAW,aAAA;AAAA,UAC/B,MAAMA,MAAA,KAAA,EAAM,cAAc;AAAA,UAC1B,UAAUA,MAAA,KAAA,EAAM,YAAY;AAAA,UAC7B,SAAQ;AAAA,UACP,SAAOA,MAAA,UAAA,EAAW;AAAA,UAClB,2DAAiBA,MAAA,KAAA,EAAM,YAAY,QAAQ;AAAA,QAAA;QAG9CvB,YAOE,cAAA;AAAA,UANC,SAASuB,MAAA,UAAA,EAAW,YAAW,gBAAA;AAAA,UAC/B,SAASA,MAAA,KAAA,EAAM,WAAW;AAAA,UAC1B,UAAUA,MAAA,KAAA,EAAM,eAAe;AAAA,UAChC,SAAQ;AAAA,UACP,SAAOA,MAAA,UAAA,EAAW;AAAA,UAClB,6DAAiBA,MAAA,KAAA,EAAM,eAAe,QAAQ;AAAA,QAAA;QAGjDvB,YAOE,cAAA;AAAA,UANC,SAASuB,MAAA,UAAA,EAAW,YAAW,gBAAA;AAAA,UAC/B,SAASA,MAAA,KAAA,EAAM,WAAW;AAAA,UAC1B,UAAUA,MAAA,KAAA,EAAM,eAAe;AAAA,UAChC,SAAQ;AAAA,UACP,SAAOA,MAAA,UAAA,EAAW;AAAA,UAClB,6DAAiBA,MAAA,KAAA,EAAM,eAAe,QAAQ;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCrD,UAAM,QAAQ;AAId,UAAM,eAAe,SAAS,MAAM,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC;AAG3D,UAAM,cAAc,IAA4B,EAAE;AAGlD,UAAM,kBAAkB,OAAO,aAAqB;AAClD,UAAI;AACF,cAAM,WAAW,MAAM,MAAM,kCAAkC,mBAAmB,QAAQ,CAAC,EAAE;AAE7F,YAAI,SAAS,IAAI;AACf,gBAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,cAAI,KAAK,aAAa;AACpB,wBAAY,MAAM,QAAQ,IAAI,KAAK;AAAA,UACrC;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AAAA,MAEhB;AAAA,IACF;AAGA,UAAM,MAAM,QAAQ,CAAA,SAAQ;AAC1B,sBAAgB,KAAK,IAAI;AAAA,IAC3B,CAAC;AAED,UAAM,eAAe,CAAC,aAAqB;AACzC,kBAAY,MAAM,QAAQ,IAAI;AAAA,IAChC;;AArEE,aAAA1B,UAAA,GAAAL,mBA8BM,OA9BNG,cA8BM;AAAA,QA7BJD,gBA4BM,OA5BNI,cA4BM;AAAA,4BA3BJN,mBAuBMY,UAAA,MAAAC,WAtBW,aAAA,OAAY,CAApB,SAAI;gCADbb,mBAuBM,OAAA;AAAA,cArBH,KAAK,KAAK;AAAA,cACX,OAAM;AAAA,YAAA;cAGE,YAAA,MAAY,KAAK,IAAI,kBAD7BA,mBAKE,OAAA;AAAA;gBAHC,KAAK,YAAA,MAAY,KAAK,IAAI;AAAA,gBAC3B,OAAM;AAAA,gBACL,SAAK,CAAA,WAAE,aAAa,KAAK,IAAI;AAAA,cAAA,+BAEhCK,aAAAL,mBAKM,OALNU,cAKM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,gBAJJR,gBAGM,OAAA;AAAA,kBAHD,SAAQ;AAAA,kBAAY,MAAK;AAAA,gBAAA;kBAC5BA,gBAA2D,QAAA,EAArD,GAAE,mDAAiD;AAAA,kBACzDA,gBAAuN,QAAA,EAAjN,GAAE,+MAA6M;AAAA,gBAAA;;cAGzNA,gBAKM,OALNS,cAKM;AAAA,gBAJJT,gBAA4D,QAA5Da,cAA4DX,gBAAnB,KAAK,IAAI,GAAA,CAAA;AAAA,gBAClDF,gBAEO,QAFPc,cAA0C,SACrCZ,gBAAG,KAAK,QAAQ,IAAAA,gBAAM,KAAK,iBAAiB,SAAS,SAAY,KAAK,YAAY,KAAA,EAAA,GAAA,CAAA;AAAA,cAAA;;;UAIhF,QAAA,MAAM,SAAM,kBAAvBJ,mBAEM,OAFNiB,cAA6D,OAC1Db,iBAAI,QAAA,MAAM,SAAM,GAAM,eAAA,CAAc,IAAK,gBAC5C,CAAA;;;;;;;;;;;;;;;;;;;;ACMN,UAAM,QAAQ;AAWd,UAAM3E,QAAO;AAIb,UAAM,UAAU,IAAwB,IAAI;AAC5C,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,kBAAkB,IAAmB,IAAI;AAE/C,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,QAAQ,MAAM,OAAO,QAAS;AAAA,IAC/C,CAAC;AAED,UAAM,oBAAoB,SAAS,MAAM;AACvC,UAAI,CAAC,MAAM,aAAc,QAAO;AAChC,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,aAAa,MAAM,MAAM,OAAO,QAAS;AAAA,IAC1D,CAAC;AAED,UAAM,oBAAoB,SAAS,MAAM;AACvC,UAAI,CAAC,MAAM,aAAc,QAAO;AAChC,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,aAAa,MAAM,MAAM,OAAO,QAAS;AAAA,IAC1D,CAAC;AAED,UAAM,cAAc,CAAC,QAAwB;AAC3C,UAAI,OAAO,UAAU,GAAG,EAAG,QAAO,IAAI,SAAA;AACtC,aAAO,IAAI,QAAQ,eAAe,MAAM,IAAI,CAAC;AAAA,IAC/C;AAEA,UAAM,iBAAiB,CAAC,SAAyB;AAC/C,YAAM,MAAM,KAAK,SAAA;AACjB,YAAM,eAAe,IAAI,QAAQ,GAAG;AACpC,aAAO,iBAAiB,KAAK,IAAI,IAAI,SAAS,eAAe;AAAA,IAC/D;AAEA,UAAM,aAAa,CAAC,UAA0B;AAC5C,YAAM,QAAQ,KAAK,OAAO,QAAQ,MAAM,OAAO,MAAM,IAAI;AACzD,YAAM,WAAW,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,MAAM,IAAI,CAAC;AAExF,aAAO,KAAK,MAAM,WAAW,GAAG,IAAI;AAAA,IACtC;AAEA,UAAM,YAAY,CAAC,UAAwB;AACzC,UAAI,MAAM,SAAU;AAEpB,YAAM,eAAA;AACN,YAAM,gBAAA;AAEN,eAAS,QAAQ;AACjB,sBAAgB,QAAQ,MAAM;AAG9B,YAAM,SAAS,MAAM;AACrB,aAAO,kBAAkB,MAAM,SAAS;AAGxC,kBAAY,KAAK;AAAA,IACnB;AAEA,UAAM,SAAS,CAAC,UAAwB;AACtC,UAAI,CAAC,SAAS,MAAO;AACrB,YAAM,gBAAA;AACN,kBAAY,KAAK;AAAA,IACnB;AAEA,UAAM,cAAc,CAAC,UAAwB;AAC3C,UAAI,CAAC,QAAQ,SAAS,CAAC,SAAS,MAAO;AAEvC,YAAM,OAAO,QAAQ,MAAM,sBAAA;AAC3B,YAAMuG,WAAU,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,UAAU,KAAK,QAAQ,KAAK,KAAK,CAAC;AACjF,YAAM,WAAW,MAAM,MAAMA,YAAW,MAAM,MAAM,MAAM;AAC1D,YAAM,QAAQ,WAAW,QAAQ;AAEjC,MAAAvG,MAAK,gBAAgB,KAAK;AAAA,IAC5B;AAEA,UAAM,UAAU,CAAC,UAAsB;;AACrC,UAAI,MAAM,SAAU;AAEpB,YAAM,QAAOhB,MAAA,QAAQ,UAAR,gBAAAA,IAAe;AAC5B,UAAI,CAAC,KAAM;AAEX,YAAM,WAAY,MAAM,cAA8B,sBAAA;AACtD,UAAI,MAAM,UAAU,SAAS,QAAQ,MAAM,UAAU,SAAS,SAC1D,MAAM,UAAU,SAAS,OAAO,MAAM,UAAU,SAAS,OAAQ;AAGrE,YAAM,QAAQ,MAAM,SAAS,IAAI,KAAK;AACtC,YAAM,WAAW,WAAW,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAC5D,MAAAgB,MAAK,gBAAgB,QAAQ;AAG7B,YAAM,gBAAA;AAAA,IACR;AAEA,UAAM,WAAW,CAAC,UAAyB;AACzC,UAAI,CAAC,SAAS,MAAO;AAErB,UAAI,OAAO;AACT,cAAM,gBAAA;AAEN,cAAM,SAAS,MAAM;AACrB,YAAI,gBAAgB,UAAU,MAAM;AAClC,iBAAO,sBAAsB,gBAAgB,KAAK;AAAA,QACpD;AAAA,MACF;AAEA,eAAS,QAAQ;AACjB,sBAAgB,QAAQ;AAAA,IAC1B;;0BA3JEuE,mBA4BM,OAAA;AAAA,QA5BD,OAAKC,eAAA,CAAC,iBAAe,EAAA,UAAW,QAAA,yBAAyB,SAAA,MAAA,CAAQ,CAAA;AAAA,QAAI,sBAAmB;AAAA,QAAQ;AAAA,MAAA;QACnGC,gBAcM,OAAA;AAAA,UAdD,OAAM;AAAA,mBAAmB;AAAA,UAAJ,KAAI;AAAA,QAAA;oCAC5BA,gBAAoC,OAAA,EAA/B,OAAM,mBAAA,GAAkB,MAAA,EAAA;AAAA,UAC7BA,gBAGO,OAAA;AAAA,YAFL,OAAM;AAAA,YACL,+BAAgB,QAAA,QAAO,KAAA;AAAA,UAAA;UAGlB,QAAA,6BADRF,mBAOO,OAAA;AAAA;YALL,OAAM;AAAA,YACL,OAAKiC,eAAA;AAAA,oBAAoB,kBAAA,QAAiB;AAAA,cAA0B,OAAA,kBAAA,QAAoB,kBAAA,QAAiB;AAAA,YAAA;;;QAO9G/B,gBAUM,OAAA;AAAA,UATJ,OAAM;AAAA,UACL,8BAAe,QAAA,QAAO,KAAA;AAAA,UACtB,6BAAkB,WAAS,CAAA,MAAA,CAAA;AAAA,UAC3B,6BAAkB,QAAM,CAAA,MAAA,CAAA;AAAA,UACxB,2BAAgB,UAAQ,CAAA,MAAA,CAAA;AAAA,UACxB,+BAAoB,UAAQ,CAAA,MAAA,CAAA;AAAA,QAAA;oCAE7BA,gBAAwC,OAAA,EAAnC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,UACjCA,gBAAgE,OAAhEC,cAAgEC,gBAA3B,YAAY,QAAA,KAAK,CAAA,GAAA,CAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;ACgD5D,UAAM,QAAQ;AAkBd,UAAM3E,QAAO;AAKb,UAAM,UAAU,IAAwB,IAAI;AAC5C,UAAM,WAAW,IAA0B,IAAI;AAC/C,UAAM,kBAAkB,IAAmB,IAAI;AAE/C,UAAM,oBAAoB,SAAoB,MAAM;AAClD,UAAI,MAAM,cAAc,eAAe,MAAM,SAAS,SAAS,GAAG;AAChE,eAAO,MAAM;AAAA,MACf;AACA,aAAO,CAAA;AAAA,IACT,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,cAAc,eAAe,kBAAkB,MAAM,SAAS,GAAG;AACzE,eAAO,eAAe,MAAM,QAAQ;AAAA,MACtC;AACA,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,WAAW,MAAM,OAAO,QAAS;AAAA,IAClD,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,cAAc,eAAe,kBAAkB,MAAM,SAAS,GAAG;AACzE,eAAO,eAAe,MAAM,QAAQ;AAAA,MACtC;AACA,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,WAAW,MAAM,OAAO,QAAS;AAAA,IAClD,CAAC;AAED,UAAM,oBAAoB,SAAS,MAAM;AACvC,UAAI,CAAC,MAAM,aAAc,QAAO;AAChC,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,aAAa,MAAM,MAAM,OAAO,QAAS;AAAA,IAC1D,CAAC;AAED,UAAM,oBAAoB,SAAS,MAAM;AACvC,UAAI,CAAC,MAAM,aAAc,QAAO;AAChC,UAAI,MAAM,cAAc,eAAe,kBAAkB,MAAM,SAAS,GAAG;AACzE,eAAO,eAAe,MAAM,aAAa,GAAG;AAAA,MAC9C;AACA,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,cAAS,MAAM,aAAa,MAAM,MAAM,OAAO,QAAS;AAAA,IAC1D,CAAC;AAED,UAAM,iBAAiB,CAAC,UAA0B;AAChD,YAAM,WAAW,kBAAkB;AACnC,UAAI,SAAS,WAAW,GAAG;AACzB,cAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,gBAAS,QAAQ,MAAM,OAAO,QAAS;AAAA,MACzC;AAEA,UAAI,qBAAqB;AACzB,iBAAW,OAAO,UAAU;AAC1B,YAAI,SAAS,IAAI,KAAK;AACpB,gCAAsB,IAAI;AAAA,QAC5B,WAAW,SAAS,IAAI,KAAK;AAC3B,gBAAM,WAAW,IAAI,MAAM,IAAI;AAC/B,gBAAM,aAAa,QAAQ,IAAI;AAC/B,gCAAuB,aAAa,WAAY,IAAI;AACpD,iBAAO;AAAA,QACT,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,iBAAiB,CAAC,YAA4B;AAClD,YAAM,WAAW,kBAAkB;AACnC,UAAI,SAAS,WAAW,GAAG;AACzB,cAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,eAAO,MAAM,MAAO,UAAU,MAAO;AAAA,MACvC;AAEA,UAAI,qBAAqB;AACzB,iBAAW,OAAO,UAAU;AAC1B,cAAM,gBAAgB,qBAAqB,IAAI;AAC/C,YAAI,WAAW,eAAe;AAC5B,gBAAM,WAAW,IAAI,MAAM,IAAI;AAC/B,gBAAM,gBAAgB,UAAU,sBAAsB,IAAI;AAC1D,iBAAO,IAAI,MAAM,eAAe;AAAA,QAClC;AACA,6BAAqB;AAAA,MACvB;AACA,aAAO,MAAM;AAAA,IACf;AAEA,UAAM,kBAAkB,CAAC,KAAc,UAAkB;AACvD,UAAI,cAAc;AAClB,eAASxB,KAAI,GAAGA,KAAI,OAAOA,MAAK;AAC9B,uBAAe,kBAAkB,MAAMA,EAAC,EAAE;AAAA,MAC5C;AACA,aAAO;AAAA,QACL,MAAM,cAAc;AAAA,QACpB,OAAO,IAAI,eAAe;AAAA,MAAA;AAAA,IAE9B;AAEA,UAAM,cAAc,CAAC,QAAwB;AAC3C,UAAI,OAAO,UAAU,GAAG,EAAG,QAAO,IAAI,SAAA;AACtC,aAAO,IAAI,QAAQ,eAAe,MAAM,IAAI,CAAC;AAAA,IAC/C;AAEA,UAAM,iBAAiB,CAAC,SAAyB;AAC/C,YAAM,MAAM,KAAK,SAAA;AACjB,YAAM,eAAe,IAAI,QAAQ,GAAG;AACpC,aAAO,iBAAiB,KAAK,IAAI,IAAI,SAAS,eAAe;AAAA,IAC/D;AAEA,UAAM,aAAa,CAAC,OAAe,sBAAuC;AACxE,YAAM,gBAAgB,oBAAoB,MAAM,OAAO,oBAAoB,MAAM;AACjF,YAAM,QAAQ,KAAK,OAAO,QAAQ,MAAM,OAAO,aAAa;AAC5D,YAAM,WAAW,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,aAAa,CAAC;AAE3F,aAAO,KAAK,MAAM,WAAW,GAAG,IAAI;AAAA,IACtC;AAEA,UAAM,YAAY,CAAC,QAAuB,UAAwB;AAChE,UAAI,MAAM,SAAU;AAEpB,YAAM,eAAA;AACN,YAAM,gBAAA;AAEN,eAAS,QAAQ;AACjB,sBAAgB,QAAQ,MAAM;AAG9B,YAAM,SAAS,MAAM;AACrB,aAAO,kBAAkB,MAAM,SAAS;AAGxC,kBAAY,KAAK;AAAA,IACnB;AAEA,UAAM,SAAS,CAAC,UAAwB;AACtC,UAAI,CAAC,SAAS,MAAO;AACrB,YAAM,gBAAA;AACN,kBAAY,KAAK;AAAA,IACnB;AAEA,UAAM,cAAc,CAAC,UAAwB;AAC3C,UAAI,CAAC,QAAQ,SAAS,CAAC,SAAS,MAAO;AAEvC,YAAM,OAAO,QAAQ,MAAM,sBAAA;AAC3B,YAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,MAAM,UAAU,KAAK,QAAQ,KAAK,QAAQ,GAAG,CAAC;AAEzF,YAAM,WAAW,eAAe,OAAO;AACvC,YAAM,aAAa,yBAAyB,QAAQ;AACpD,YAAM,QAAQ,WAAW,UAAU,UAAU;AAE7C,UAAI,SAAS,UAAU,OAAO;AAC5B,cAAM,gBAAgB,yBAAyB,MAAM,QAAQ;AAC7D,cAAM,aAAa,MAAM,mBAAmB,MAAM,WAAW,MAAM,WAAY,MAAM,OAAO;AAC5F,cAAM,WAAW,KAAK,IAAI,OAAO,UAAU;AAC3C,QAAAwB,MAAK,mBAAmB,QAAQ;AAAA,MAClC,OAAO;AACL,cAAM,gBAAgB,yBAAyB,MAAM,QAAQ;AAC7D,cAAM,aAAa,MAAM,mBAAmB,MAAM,WAAW,MAAM,WAAY,MAAM,OAAO;AAC5F,cAAM,WAAW,KAAK,IAAI,OAAO,UAAU;AAC3C,QAAAA,MAAK,mBAAmB,QAAQ;AAAA,MAClC;AAAA,IACF;AAEA,UAAM,2BAA2B,CAAC,UAA0B;AAC1D,UAAI,MAAM,cAAc,eAAe,kBAAkB,MAAM,WAAW,GAAG;AAC3E,eAAO;AAAA,MACT;AAEA,iBAAW,OAAO,kBAAkB,OAAO;AACzC,YAAI,SAAS,IAAI,OAAO,QAAQ,IAAI,KAAK;AACvC,iBAAO,IAAI,uBAAuB;AAAA,QACpC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,CAAC,UAAsB;;AACrC,UAAI,MAAM,SAAU;AAEpB,YAAM,QAAOhB,MAAA,QAAQ,UAAR,gBAAAA,IAAe;AAC5B,UAAI,CAAC,KAAM;AAEX,YAAM,WAAY,MAAM,cAA8B,sBAAA;AACtD,UAAI,MAAM,UAAU,SAAS,QAAQ,MAAM,UAAU,SAAS,SAC1D,MAAM,UAAU,SAAS,OAAO,MAAM,UAAU,SAAS,OAAQ;AAGrE,YAAM,QAAQ,MAAM,SAAS,IAAI,KAAK;AACtC,YAAM,YAAY,MAAM,UAAU,KAAK;AACvC,YAAM,aAAa,KAAK;AAExB,YAAM,WAAY,WAAW,QAAQ,MAAO;AAC5C,YAAM,WAAY,WAAW,QAAQ,MAAO;AAE5C,UAAI,YAAY,UAAU;AACxB,cAAM,aAAa,yBAAyB,MAAM,QAAQ;AAC1D,cAAM,gBAAgB,MAAM,OAAO;AACnC,cAAM,WAAW,WAAW,MAAM,WAAW,QAAQ,eAAe,UAAU;AAC9E,cAAM,gBAAgB,yBAAyB,MAAM,QAAQ;AAC7D,cAAM,aAAa,MAAM,mBAAmB,MAAM,WAAW,MAAM,WAAY,MAAM,OAAO;AAC5F,QAAAgB,MAAK,mBAAmB,KAAK,IAAI,UAAU,UAAU,CAAC;AAAA,MACxD,WAAW,YAAY,UAAU;AAC/B,cAAM,aAAa,yBAAyB,MAAM,QAAQ;AAC1D,cAAM,gBAAgB,MAAM,OAAO;AACnC,cAAM,WAAW,WAAW,MAAM,WAAW,QAAQ,eAAe,UAAU;AAC9E,cAAM,gBAAgB,yBAAyB,MAAM,QAAQ;AAC7D,cAAM,aAAa,MAAM,mBAAmB,MAAM,WAAW,MAAM,WAAY,MAAM,OAAO;AAC5F,QAAAA,MAAK,mBAAmB,KAAK,IAAI,UAAU,UAAU,CAAC;AAAA,MACxD,OAAO;AACL,cAAM,gBAAgB,yBAAyB,MAAM,QAAQ;AAC7D,cAAM,gBAAgB,yBAAyB,MAAM,QAAQ;AAC7D,cAAM,SAAS,WAAW,MAAM,WAAW,QAAQ,MAAM,OAAO,eAAe,aAAa;AAC5F,cAAM,SAAS,WAAW,MAAM,WAAW,QAAQ,MAAM,OAAO,eAAe,aAAa;AAE5F,YAAI,SAAS,MAAM,UAAU;AAC3B,UAAAA,MAAK,mBAAmB,KAAK,IAAI,QAAQ,MAAM,GAAG,CAAC;AACnD,UAAAA,MAAK,mBAAmB,KAAK,IAAI,QAAQ,MAAM,GAAG,CAAC;AAAA,QACrD,OAAO;AACL,gBAAM,aAAa,MAAM,mBAAmB,SAAS,SAAU,MAAM,OAAO;AAC5E,cAAI,UAAU,YAAY;AACxB,YAAAA,MAAK,mBAAmB,MAAM;AAC9B,YAAAA,MAAK,mBAAmB,MAAM;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AAGA,YAAM,gBAAA;AAAA,IACR;AAEA,UAAM,WAAW,CAAC,UAAyB;AACzC,UAAI,CAAC,SAAS,MAAO;AAErB,UAAI,OAAO;AACT,cAAM,gBAAA;AAEN,cAAM,SAAS,MAAM;AACrB,YAAI,gBAAgB,UAAU,MAAM;AAClC,iBAAO,sBAAsB,gBAAgB,KAAK;AAAA,QACpD;AAAA,MACF;AAEA,eAAS,QAAQ;AACjB,sBAAgB,QAAQ;AAAA,IAC1B;;0BAnVEuE,mBA2DM,OAAA;AAAA,QA3DD,OAAKC,eAAA,CAAC,qBAAmB,EAAA,UAAW,QAAA,UAAQ,eAAiB,SAAA,UAAQ,MAAA,gBAA2B,QAAA,cAAS,eAAoB,kBAAA,MAAkB,SAAM,EAAA,CAAA,CAAA;AAAA,QAAQ,sBAAmB;AAAA,QAAQ;AAAA,MAAA;QAC3LC,gBAgCM,OAAA;AAAA,UAhCD,OAAM;AAAA,mBAAmB;AAAA,UAAJ,KAAI;AAAA,QAAA;oCAE5BA,gBAAoC,OAAA,EAA/B,OAAM,mBAAA,GAAkB,MAAA,EAAA;AAAA,UAGb,QAAA,cAAS,eAAoB,kBAAA,MAAkB,SAAM,KACnEG,UAAA,IAAA,GAAAL,mBASOY,UAAA,EAAA,KAAA,KAAAC,WARkB,kBAAA,OAAiB,CAAhC,KAAK,UAAK;gCADpBb,mBASO,OAAA;AAAA,cAPJ,kBAAkB;AAAA,cACnB,uBAAM,yBAAuB;AAAA,gBAC0B,iCAAA,IAAI,uBAAuB,IAAI,sBAAmB;AAAA,gBAAqD,mCAAA,IAAI,uBAAuB,IAAI,sBAAmB;AAAA,cAAA;cAI/M,OAAKiC,eAAE,gBAAgB,KAAK,KAAK,CAAA;AAAA,YAAA;;UAKtC/B,gBAGO,OAAA;AAAA,YAFL,OAAM;AAAA,YACL,OAAK+B,eAAA,EAAA,MAAU,WAAA,QAAU,KAAA,OAAgB,WAAA,QAAa,WAAA,QAAU,KAAA;AAAA,UAAA;UAI3D,QAAA,6BADRjC,mBAOO,OAAA;AAAA;YALL,OAAM;AAAA,YACL,OAAKiC,eAAA;AAAA,oBAAoB,kBAAA,QAAiB;AAAA,cAA0B,OAAA,kBAAA,QAAoB,kBAAA,QAAiB;AAAA,YAAA;;;QAQ9G/B,gBAUM,OAAA;AAAA,UATJ,OAAM;AAAA,UACL,8BAAe,WAAA,QAAU,KAAA;AAAA,UACzB,eAAW,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA0B,cAAA,CAAA,WAAO,UAAS,OAAQ,MAAM,GAAA,CAAA,MAAA,CAAA;AAAA,UACzC,6BAAkB,QAAM,CAAA,MAAA,CAAA;AAAA,UACxB,2BAAgB,UAAQ,CAAA,MAAA,CAAA;AAAA,UACxB,+BAAoB,UAAQ,CAAA,MAAA,CAAA;AAAA,QAAA;oCAE7B1B,gBAAwC,OAAA,EAAnC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,UACjCA,gBAAmE,OAAnEC,cAAmEC,gBAA9B,YAAY,QAAA,QAAQ,CAAA,GAAA,CAAA;AAAA,QAAA;QAG3DF,gBAUM,OAAA;AAAA,UATJ,OAAM;AAAA,UACL,8BAAe,WAAA,QAAU,KAAA;AAAA,UACzB,eAAW,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA0B,cAAA,CAAA,WAAO,UAAS,OAAQ,MAAM,GAAA,CAAA,MAAA,CAAA;AAAA,UACzC,6BAAkB,QAAM,CAAA,MAAA,CAAA;AAAA,UACxB,2BAAgB,UAAQ,CAAA,MAAA,CAAA;AAAA,UACxB,+BAAoB,UAAQ,CAAA,MAAA,CAAA;AAAA,QAAA;oCAE7B1B,gBAAwC,OAAA,EAAnC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,UACjCA,gBAAmE,OAAnEI,cAAmEF,gBAA9B,YAAY,QAAA,QAAQ,CAAA,GAAA,CAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgK/D,UAAM,mBAAmB;AAAA,MACvB,EAAE,KAAK,KAAK,KAAK,IAAI,cAAc,GAAA;AAAA,MACnC,EAAE,KAAK,IAAI,KAAK,GAAG,cAAc,IAAI,qBAAqB,IAAA;AAAA,MAC1D,EAAE,KAAK,GAAG,KAAK,IAAI,cAAc,GAAA;AAAA,IAAG;AA2CtC,UAAM,cAAc,IAAI,KAAK;AAE7B,UAAM,gBAAgB,CAAC/F,IAAuBC,OAAmC;AAC/E,UAAI,CAACD,MAAK,CAACC,GAAG,QAAO;AACrB,UAAID,GAAE,WAAWC,GAAE,OAAQ,QAAO;AAClC,YAAM,UAAU,CAAC,GAAGD,EAAC,EAAE,KAAK,CAAC,GAAG+C,OAAM,EAAE,KAAK,cAAcA,GAAE,IAAI,CAAC;AAClE,YAAM,UAAU,CAAC,GAAG9C,EAAC,EAAE,KAAK,CAAC,GAAG8C,OAAM,EAAE,KAAK,cAAcA,GAAE,IAAI,CAAC;AAClE,aAAO,QAAQ;AAAA,QAAM,CAAC,MAAMnD,OAC1B,KAAK,SAAS,QAAQA,EAAC,EAAE,QACzB,KAAK,aAAa,QAAQA,EAAC,EAAE,YAC7B,KAAK,iBAAiB,QAAQA,EAAC,EAAE;AAAA,MAAA;AAAA,IAErC;;AAnRE,aAAAoG,UAAA,GAAAL,mBA+MM,OA/MNG,cA+MM;AAAA,oCA9MJD,gBAEM,OAAA,EAFD,OAAM,qBAAiB;AAAA,UAC1BA,gBAAmD,MAAA,EAA/C,OAAM,iBAAA,GAAiB,qBAAmB;AAAA,QAAA;QAIhDA,gBAgDM,OAhDNI,cAgDM;AAAA,UA/CJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAJ,gBAA+C,SAAA,EAAxC,OAAM,gBAAA,GAAgB,cAAU,EAAA;AAAA,UACvCA,gBAqBM,OArBNO,cAqBM;AAAA,YApBJP,gBASQ,SAAA;AAAA,cATD,OAAKD,eAAA,CAAC,kBAAgB,EAAA,QAAmB,QAAA,cAAS,SAAA,CAAA;AAAA,YAAA;cACvDC,gBAME,SAAA;AAAA,gBALA,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,OAAM;AAAA,gBACL,SAAS,QAAA,cAAS;AAAA,gBAClB,gDAAQK,KAAAA,MAAK,oBAAA,OAAA;AAAA,cAAA;cAEhB,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAL,gBAA+C,QAAA,EAAzC,OAAM,0BAAuB,SAAK,EAAA;AAAA,YAAA;YAE1CA,gBASQ,SAAA;AAAA,cATD,OAAKD,eAAA,CAAC,kBAAgB,EAAA,QAAmB,QAAA,cAAS,SAAA,CAAA;AAAA,YAAA;cACvDC,gBAME,SAAA;AAAA,gBALA,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,OAAM;AAAA,gBACL,SAAS,QAAA,cAAS;AAAA,gBAClB,gDAAQK,KAAAA,MAAK,oBAAA,OAAA;AAAA,cAAA;cAEhB,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAL,gBAA+C,QAAA,EAAzC,OAAM,0BAAuB,SAAK,EAAA;AAAA,YAAA;;UAI5CA,gBAsBM,OAtBNa,cAsBM;AAAA,YApBI,QAAA,cAAS,wBADjBD,YAQE,cAAA;AAAA;cANC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,OAAO,QAAA;AAAA,cACP,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,GAAA,KAAA,EAAA;AAAA,cACf,kBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEP,KAAAA,MAAK,qBAAsB,MAAM;AAAA,YAAA,wCAElDO,YAWE,iBAAA;AAAA;cATC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,aAAW,QAAA;AAAA,cACX,aAAW,QAAA;AAAA,cACX,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,GAAA,KAAA,EAAA;AAAA,cACf,sBAAoB;AAAA,cACpB,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEP,KAAAA,MAAK,mBAAoB,MAAM;AAAA,cACjD,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,mBAAoB,MAAM;AAAA,YAAA;;;QAMxDL,gBAiBM,OAjBNc,cAiBM;AAAA,UAhBJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAd,gBAAyD,SAAA,EAAlD,OAAM,gBAAA,GAAgB,wBAAoB,EAAA;AAAA,UACjDA,gBAcM,OAdNe,cAcM;AAAA,YAbJT,YAYE,iBAAA;AAAA,cAXC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,aAAW,QAAA;AAAA,cACX,aAAW,QAAA;AAAA,cACX,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,IAAA,KAAA,EAAA;AAAA,cACf,cAAY;AAAA,cACZ,UAAU;AAAA,cACV,sBAAoB;AAAA,cACpB,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,2BAA4B,MAAM;AAAA,cACzD,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,2BAA4B,MAAM;AAAA,YAAA;;;QAMhEL,gBAgCM,OAhCNgB,cAgCM;AAAA,UA/BJhB,gBAgBM,OAhBNiB,eAgBM;AAAA,YAfJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAjB,gBAEQ,SAAA,EAFD,OAAM,gBAAA,GAAgB,2BAE7B,EAAA;AAAA,YACAA,gBAWS,UAAA;AAAA,cAVP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,uBAAA,CAAsB,CAAA;AAAA,cACxD,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,iCAAA,CAAmC,QAAA,sBAAsB;AAAA,cACtE,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,cACf,OAAM;AAAA,YAAA;cAENL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;UAGtCA,gBAaM,OAAA;AAAA,YAbD,OAAKD,eAAA,CAAC,oBAAkB,EAAA,8BAAA,CAA0C,QAAA,wBAAsB,CAAA;AAAA,UAAA;YAC3FO,YAWE,iBAAA;AAAA,cAVC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,aAAW,QAAA;AAAA,cACX,aAAW,QAAA;AAAA,cACX,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,KAAA,KAAA,EAAA;AAAA,cACf,WAAW,QAAA;AAAA,cACX,sBAAoB;AAAA,cACpB,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,sCAAuC,MAAM;AAAA,cACpE,qBAAgB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,sCAAuC,MAAM;AAAA,YAAA;;;QAM3EL,gBAkCM,OAlCNmB,eAkCM;AAAA,UAjCJnB,gBAgBM,OAhBNgC,eAgBM;AAAA,YAfJhC,gBAEQ,SAFRoB,eAA6B,4CACF,QAAA,qBAAkB,iBAAA,oBAAA,GAAA,CAAA;AAAA,YAE7CpB,gBAWS,UAAA;AAAA,cAVP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,mBAAA,CAAkB,CAAA;AAAA,cACpD,SAAK,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,6BAAA,CAA+B,QAAA,kBAAkB;AAAA,cAC9D,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,cACf,OAAM;AAAA,YAAA;cAENL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;UAGtCA,gBAeM,OAAA;AAAA,YAfD,OAAKD,eAAA,CAAC,oBAAkB,EAAA,8BAAyC,QAAA,wBAAsB,CAAA;AAAA,UAAA;YAC1FO,YAaE,iBAAA;AAAA,cAZC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,aAAW,QAAA;AAAA,cACX,aAAW,QAAA;AAAA,cACX,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,IAAA,KAAA,EAAA;AAAA,cACf,cAAY;AAAA,cACZ,UAAU;AAAA,cACV,UAAU,QAAA;AAAA,cACV,sBAAoB;AAAA,cACpB,qBAAgB,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,0BAA2B,MAAM;AAAA,cACxD,qBAAgB,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAEA,KAAAA,MAAK,0BAA2B,MAAM;AAAA,YAAA;;;QAM/DL,gBAyDM,OAzDNiC,eAyDM;AAAA,UAxDJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAjC,gBAA8C,SAAA,EAAvC,OAAM,gBAAA,GAAgB,aAAS,EAAA;AAAA,UACtCA,gBAsDM,OAtDNkC,eAsDM;AAAA,YArDJlC,gBA4CM,OA5CNmC,eA4CM;AAAA,cA3CJnC,gBAaS,UAAA;AAAA,gBAZP,OAAKD,eAAA,CAAC,eAAa,EAAA,UACC,QAAA,aAAQ,QAAA,CAAA,CAAA;AAAA,gBAC3B,UAAU,QAAA;AAAA,gBACV,iDAAOM,KAAAA,MAAK,gBAAA;AAAA,cAAA;;;cAUfL,gBAcS,UAAA;AAAA,gBAbP,OAAKD,eAAA,CAAC,eAAa,EAAA,UACC,QAAA,aAAQ,SAAA,CAAA,CAAA;AAAA,gBAC3B,UAAU,QAAA;AAAA,gBACV,iDAAOM,KAAAA,MAAK,kBAAA;AAAA,cAAA;;;cAWfL,gBAaS,UAAA;AAAA,gBAZP,OAAKD,eAAA,CAAC,eAAa,EAAA,UACC,QAAA,aAAQ,WAAgB,QAAA,gBAAgB,cAAc,QAAA,cAAc,QAAA,QAAQ,EAAA,CAAA,CAAA;AAAA,gBAC/F,WAAW,QAAA;AAAA,gBACX,sDAAY,YAAA,QAAW;AAAA,gBACvB,sDAAY,YAAA,QAAW;AAAA,gBACvB,iDAAOM,KAAAA,MAAK,YAAA;AAAA,cAAA;gBAEbL,gBAGM,OAAA;AAAA,kBAHD,OAAM;AAAA,kBAAoB,SAAQ;AAAA,kBAAY,MAAK;AAAA,kBAAO,QAAO;AAAA,kBAAe,gBAAa;AAAA,kBAAI,kBAAe;AAAA,kBAAQ,mBAAgB;AAAA,gBAAA;kBAC3IA,gBAAyB,QAAA,EAAnB,GAAE,iBAAe;AAAA,kBACvBA,gBAAsE,QAAA,EAAhE,GAAE,8DAA4D;AAAA,gBAAA;gBAEtEA,gBAAiD,QAAA,EAA3C,OAAM,oBAAA,GAAoB,cAAU,EAAA;AAAA,cAAA;;YAK9CM,YAKagB,YAAA,EALD,MAAK,aAAS;AAAA,+BACxB,MAGE;AAAA,gBAFM,YAAA,SAAe,QAAA,YAAY,QAAA,SAAS,SAAM,kBADlDV,YAGE,iBAAA;AAAA;kBADC,OAAO,QAAA;AAAA,gBAAA;;;;;;;;;;;ACxMb,SAAS,uBAAuB,QAA2C;AAGhF,MAAI,cAAc;AAGlB,QAAM,YAAY,IAAuB,OAAO;AAChD,QAAM,aAAa,IAAI,CAAC;AACxB,QAAM,WAAW,IAAI,CAAC;AACtB,QAAM,WAAW,IAAI,CAAC;AACtB,QAAM,mBAAmB,IAAI,CAAG;AAChC,QAAM,mBAAmB,IAAI,CAAG;AAChC,QAAM,qBAAqB,IAAI,KAAK;AACpC,QAAM,kBAAkB,IAAI,CAAG;AAC/B,QAAM,kBAAkB,IAAI,CAAG;AAC/B,QAAM,WAAW,IAAwB,OAAO;AAChD,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,yBAAyB,IAAI,KAAK;AACxC,QAAM,8BAA8B,IAAI,GAAG;AAC3C,QAAM,8BAA8B,IAAI,CAAG;AAG3C,QAAM,WAAW,IAAwB,IAAI;AAK7C,QAAM,gBAAgB,IAAmB,IAAI;AAC7C,QAAM,WAAW,IAAmB,IAAI;AAGxC,QAAM,cAAc,MAAwB;AAE1C,QAAI,aAAa;AACf,aAAO;AAAA,QACL,YAAY,UAAU;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,WAAW,SAAS;AAAA,QACpB,WAAW,SAAS;AAAA,QACpB,oBAAoB,iBAAiB;AAAA,QACrC,oBAAoB,iBAAiB;AAAA,QACrC,wBAAwB,CAAC,mBAAmB;AAAA,QAC5C,mBAAmB,gBAAgB;AAAA,QACnC,mBAAmB,gBAAgB;AAAA,QACnC,WAAW,SAAS;AAAA,QACpB,WAAW,SAAS;AAAA,QACpB,0BAA0B,uBAAuB;AAAA,QACjD,gCAAgC,4BAA4B;AAAA,QAC5D,gCAAgC,4BAA4B;AAAA,QAC5D,gBAAgB,cAAc;AAAA,QAC9B,WAAW,SAAS;AAAA,MAAA;AAAA,IAExB;AACA,WAAO;AAAA,MACP,YAAY,UAAU;AAAA,MACtB,aAAa,WAAW;AAAA,MACxB,WAAW,SAAS;AAAA,MACpB,WAAW,SAAS;AAAA,MACpB,oBAAoB,iBAAiB;AAAA,MACrC,oBAAoB,iBAAiB;AAAA,MACrC,wBAAwB,CAAC,mBAAmB;AAAA,MAC5C,mBAAmB,gBAAgB;AAAA,MACnC,mBAAmB,gBAAgB;AAAA,MACnC,WAAW,SAAS;AAAA,MACpB,WAAW,SAAS;AAAA,MACpB,0BAA0B,uBAAuB;AAAA,MACjD,gCAAgC,4BAA4B;AAAA,MAC5D,gCAAgC,4BAA4B;AAAA,MAC5D,gBAAgB,cAAc;AAAA,MAC9B,WAAW,SAAS;AAAA,IAAA;AAAA,EAEtB;AAIA,QAAM,kBAAkB,MAAM;AAC5B,kBAAc,QAAQ,SAAS;AAC/B,aAAS,QAAQ,KAAK,MAAM,KAAK,OAAA,IAAW,UAAU;AAAA,EACxD;AAGA,QAAM,qBAAqB,MAAM;AAC/B,QAAI,SAAS,UAAU,MAAM;AAC3B,eAAS,QAAQ,KAAK,MAAM,KAAK,OAAA,IAAW,UAAU;AAAA,IACxD;AAAA,EACF;AAGA,QAAM,oBAAoB,CAAC,WAA6B;AAEtD,kBAAc;AAEd,QAAI;AACF,gBAAU,QAAQ,OAAO,cAAc;AACvC,iBAAW,QAAQ,OAAO,eAAe;AACzC,eAAS,QAAQ,OAAO,aAAa;AACrC,eAAS,QAAQ,OAAO,aAAa;AACrC,uBAAiB,QAAQ,OAAO,sBAAsB;AACtD,uBAAiB,QAAQ,OAAO,sBAAsB;AACtD,yBAAmB,QAAQ,EAAE,OAAO,0BAA0B;AAC9D,sBAAgB,QAAQ,OAAO,qBAAqB;AACpD,sBAAgB,QAAQ,OAAO,qBAAqB;AAEpD,YAAM,cAAe,OAAe;AACpC,UAAI,gBAAgB,YAAY;AAC9B,iBAAS,QAAQ;AAAA,MACnB,WAAW,gBAAgB,WAAW;AACpC,iBAAS,QAAQ;AAAA,MACnB,WAAW,gBAAgB,WAAW,gBAAgB,UAAU;AAC9D,iBAAS,QAAQ;AAAA,MACnB,OAAO;AACL,iBAAS,QAAQ;AAAA,MACnB;AACA,eAAS,QAAQ,OAAO,aAAa;AACrC,6BAAuB,QAAQ,OAAO,4BAA4B;AAClE,kCAA4B,QAAQ,OAAO,kCAAkC;AAC7E,kCAA4B,QAAQ,OAAO,kCAAkC;AAAA,IAC/E,UAAA;AACE,oBAAc;AAAA,IAChB;AAAA,EACF;AAGA,QAAM,YAAY,OAChB,YACA,gBACyB;AACzB,QAAI;AACF,gBAAU,QAAQ;AAElB,YAAM,SAAS,YAAA;AAGf,YAAM,cAAmB;AAAA,QACvB,oBAAoB,OAAO;AAAA,QAC3B,oBAAoB,OAAO;AAAA,QAC3B,wBAAwB,CAAC,mBAAmB;AAAA,QAC5C,mBAAmB,OAAO;AAAA,QAC1B,mBAAmB,OAAO;AAAA,QAC1B,cAAc;AAAA,QACd,0BAA0B,OAAO;AAAA,QACjC,gCAAgC,OAAO;AAAA,QACvC,gCAAgC,OAAO;AAAA,MAAA;AAIzC,UAAI,OAAO,eAAe,SAAS;AACjC,oBAAY,QAAQ,OAAO;AAAA,MAC7B,OAAO;AACL,oBAAY,YAAY,OAAO;AAC/B,oBAAY,YAAY,OAAO;AAAA,MACjC;AAGA,UAAI,YAAY;AACd,oBAAY,cAAc,WAAW,WAAW,CAAA;AAAA,MAClD;AAGA,YAAM,WAAW,MAAM,MAAM,+BAA+B;AAAA,QAC1D,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAAA;AAAA,QAElB,MAAM,KAAK,UAAU,WAAW;AAAA,MAAA,CACjC;AAED,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,YAAY,MAAM,SAAS,KAAA;AACjC,cAAM,IAAI,MAAM,UAAU,SAAS,8BAA8B;AAAA,MACnE;AAEA,YAAM,OAAO,MAAM,SAAS,KAAA;AAE5B,UAAI,CAAC,KAAK,SAAS;AACjB,cAAM,IAAI,MAAM,KAAK,SAAS,4BAA4B;AAAA,MAC5D;AAEA,aAAO,KAAK,SAAS,CAAA;AAAA,IACvB,SAAS,OAAO;AACd,cAAQ,MAAM,8CAA8C,KAAK;AACjE,YAAM;AAAA,IACR,UAAA;AACE,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AAGA,QAAM,cAAc,MAAM;AACxB,QAAI,SAAS,SAAS,SAAS,MAAM,SAAS,GAAG;AAC/C,aAAO,SAAS;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AAGA,QAAM,yBAAyB,SAAS,MAAM,CAAC,mBAAmB,KAAK;AACvE,QAAM,+BAA+B,SAAS,MAAM,uBAAuB,KAAK;AAGhF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GACC,MAAM;AACP,WAAO,QAAQ,YAAA;AAAA,EACjB,GAAG,EAAE,MAAM,MAAM;AAEjB,SAAO;AAAA;AAAA,IAEL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;;;;;;;;AC3MA,UAAM,QAAQ;AAOd,UAAM,QAAQ,uBAAuB,MAAM,MAAM;AAGjD,UAAM,eAAe,OAAO,cAAc;AAG1C,UAAM,eAAe,IAAiB,EAAE;AAGxC,UAAM,YAAY,IAAI,KAAK;AAO3B,UAAM,oBAAwC,CAAA;AAG9C,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS;AAChC,UAAI,CAAC,YAAY,SAAS,WAAW,EAAG,QAAO;AAC/C,aAAO,CAAC,cAAc,aAAa,OAAO,QAAQ;AAAA,IACpD,CAAC;AAGD,UAAM,gBAAgB,CAACzG,IAAgBC,OAA4B;AACjE,UAAID,GAAE,WAAWC,GAAE,OAAQ,QAAO;AAClC,YAAM,UAAU,CAAC,GAAGD,EAAC,EAAE,KAAK,CAAC,GAAG+C,OAAM,EAAE,KAAK,cAAcA,GAAE,IAAI,CAAC;AAClE,YAAM,UAAU,CAAC,GAAG9C,EAAC,EAAE,KAAK,CAAC,GAAG8C,OAAM,EAAE,KAAK,cAAcA,GAAE,IAAI,CAAC;AAClE,aAAO,QAAQ;AAAA,QAAM,CAAC,MAAMnD,OAC1B,KAAK,SAAS,QAAQA,EAAC,EAAE,QACzB,KAAK,aAAa,QAAQA,EAAC,EAAE,YAC7B,KAAK,iBAAiB,QAAQA,EAAC,EAAE;AAAA,MAAA;AAAA,IAErC;AAGA,UAAM,sBAAsB,YAAY;;AACtC,UAAI;AAEF,cAAM,eAAc,MAAAQ,MAAA,MAAM,MAAa,kBAAnB,wBAAAA,SAAwC;AAG5D,cAAM,eAAc,WAAM,KAAK,YAAX,mBAAoB,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AACpE,cAAM,gBAA4B,2CAAa,UAAS,CAAA,GAAI,OAAO,CAAC,SAAoB,KAAK,WAAW,IAAI;AAG5G,cAAM,cAAc,MAAM,MAAM,UAAU,YAAY,WAAW;AAGjE,YAAI,aAAa;AACf,sBAAY,QAAQ;AACpB,uBAAa,QAAQ;AAAA,QACvB;AAGA,cAAM,SAAS,QAAQ;AAAA,MACzB,SAAS,OAAO;AACd,gBAAQ,MAAM,wDAAwD,KAAK;AAC3E,cAAM,+BAAgC,MAAgB,OAAO;AAAA,MAC/D;AAAA,IACF;AAGA,UAAM,wBAAwB,YAAY;;AACxC,UAAI;AAEF,cAAM,eAAc,MAAA7H,MAAA,MAAM,MAAa,kBAAnB,wBAAAA,SAAwC;AAG5D,cAAM,eAAc,WAAM,KAAK,YAAX,mBAAoB,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AACpE,cAAM,gBAA4B,2CAAa,UAAS,CAAA,GAAI,OAAO,CAAC,SAAoB,KAAK,WAAW,IAAI;AAG5G,cAAM,cAAc,MAAM,MAAM,UAAU,YAAY,WAAW;AAGjE,YAAI,aAAa;AACf,sBAAY,QAAQ;AACpB,uBAAa,QAAQ;AAAA,QACvB;AAGA,cAAM,SAAS,QAAQ;AAAA,MACzB,SAAS,OAAO;AACd,gBAAQ,MAAM,yDAAyD,KAAK;AAC5E,cAAM,+BAAgC,MAAgB,OAAO;AAAA,MAC/D;AAAA,IACF;AAGA,UAAM,kBAAkB,MAAM;;AAC5B,YAAM,gBAAgB,MAAM,YAAA;AAC5B,UAAI,eAAe;AAEjB,cAAM,eAAc7H,MAAA,MAAM,KAAK,YAAX,gBAAAA,IAAoB,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AACpE,YAAI,aAAa;AACf,sBAAY,QAAQ;AACpB,uBAAa,QAAQ;AAAA,QACvB;AAGA,cAAM,SAAS,QAAQ;AAAA,MACzB;AAAA,IACF;AAMA,UAAM,UAAU,CAAC,UAAsB;AAGrC,YAAM,SAAS,MAAM;AACrB,UAAI,iCAAQ,QAAQ,gCAAgC;AAGlD,cAAM,gBAAA;AACN;AAAA,MACF;AAGA,YAAM/G,OAAO,OAAe;AAC5B,UAAI,CAACA,QAAO,CAACA,KAAI,UAAU,OAAOA,KAAI,OAAO,sBAAsB,YAAY;AAC7E;AAAA,MACF;AAEA,YAAM,SAAS,MAAM;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,eAAe,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM;AAGvD,UAAI,MAAM,SAAS;AACjB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,UAAI,cAAc;AAChB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,YAAM,eAAA;AACN,YAAM,gBAAA;AACN,MAAAA,KAAI,OAAO,kBAAkB,KAAK;AAAA,IACpC;AAGA,UAAM,MAAA;;AAAM,oBAAAd,MAAA,MAAM,KAAK,YAAX,gBAAAA,IAAoB,KAAK,CAAC6H,OAAWA,GAAE,SAAS,aAAhD,mBAA0D;AAAA,OAAO,CAAC,WAAW;AAEvF,UAAI,UAAU,OAAO;AACnB,YAAI,UAAU,MAAM,QAAQ,MAAM,GAAG;AACnC,uBAAa,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,IACF,GAAG,EAAE,WAAW,MAAM,MAAM,MAAM;AAGlC,cAAU,YAAY;;AAGpB,YAAM,eAAc7H,MAAA,MAAM,KAAK,YAAX,gBAAAA,IAAoB,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AACpE,UAAI,aAAa;AACf,cAAM,qBAAqB,YAAY;AACvC,YAAI,sBAAsB,MAAM,QAAQ,kBAAkB,KAAK,mBAAmB,SAAS,GAAG;AAC5F,uBAAa,QAAQ;AAAA,QACvB;AAAA,MACF;AAGA,gBAAU,QAAQ;AAIlB,YAAM,OAAO,WAAW,CAAC9H,OAAwB;AAC/C,YAAIA,IAAG;AACL,gBAAM,kBAAkBA,EAAC;AAAA,QAC3B;AAAA,MACF;AAGA,UAAI,MAAM,OAAO,OAAO;AACtB,cAAM,kBAAkB,MAAM,OAAO,KAAK;AAAA,MAC5C;AAIE,YAAM,OAAe,eAAe,MAAM;AAE1C,YAAI,MAAM,SAAS,UAAU,UAAU;AACrC,cAAK,MAAM,OAAe,YAAY,GAAG;AAEvC,kBAAM,gBAAA;AAAA,UACR,OAAO;AAGL,kBAAM,mBAAA;AACJ,kBAAM,OAAe,YAAY,IAAI;AAAA,UACzC;AAGA,gBAAM,OAAO,QAAQ,MAAM,YAAA;AAAA,QAC7B;AAAA,MACF;AAGA,YAAM,sBAAsB,WAAM,KAAa,eAAnB,mBAA+B,KAAK,MAAM;AAEpE,YAAM,KAAa,aAAa,SAAS,QAAa;AACtD,gBAAQ,IAAI,qDAAqD,MAAM;AAEvE,cAAM,gBAAkC,CAAA;AAExC,aAAI,iCAAQ,eAAc,QAAW;AACnC,wBAAc,WAAW,OAAO;AAChC,kBAAQ,IAAI,mDAAmD,OAAO,YAAY,OAAO,UAAU,SAAS,CAAC,QAAQ;AAAA,QACvH;AAEA,aAAI,iCAAQ,UAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAChD,wBAAc,QAAQ,OAAO;AAC7B,kBAAQ,IAAI,0DAA0D,OAAO,KAAK;AAAA,QACpF;AAEA,YAAI,cAAc,aAAa,UAAa,cAAc,UAAU,QAAW;AAC7E,4BAAkB,KAAK,aAAa;AAAA,QACtC;AAGA,YAAI,oBAAoB;AACtB,iBAAO,mBAAmB,MAAM;AAAA,QAClC;AAAA,MACF;AAEA,UAAI,MAAM,KAAK;AACb,cAAM,0BAA0B,MAAM;;AACpC,cAAI,kBAAkB,WAAW,GAAG;AAClC;AAAA,UACF;AAEA,gBAAM,UAAU,kBAAkB,MAAA;AAElC,cAAI,QAAQ,aAAa,QAAW;AAClC,kBAAM,SAAS,QAAQ,QAAQ;AAAA,UACjC;AAEA,cAAI,QAAQ,UAAU,QAAW;AAC/B,kBAAM+H,gBAAc9H,MAAA,MAAM,KAAK,YAAX,gBAAAA,IAAoB,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AACpE,gBAAIC,cAAa;AACfA,2BAAY,QAAQ,QAAQ;AAAA,YAC9B;AACA,yBAAa,QAAQ,QAAQ;AAAA,UAC/B;AAAA,QACF;AAEA,cAAM,IAAI,iBAAiB,qBAAqB,uBAAuB;AACvE,cAAM,IAAI,iBAAiB,mBAAmB,uBAAuB;AACrE,cAAM,IAAI,iBAAiB,yBAAyB,uBAAuB;AAE3E,cAAM,aAAa,MAAM;AACvB,gBAAM,IAAI,oBAAoB,qBAAqB,uBAAuB;AAC1E,gBAAM,IAAI,oBAAoB,mBAAmB,uBAAuB;AACxE,gBAAM,IAAI,oBAAoB,yBAAyB,uBAAuB;AAAA,QAChF;AAEA,cAAM,kBAAmB,MAAM,OAAe;AAC5C,cAAM,OAAe,kBAAkB,MAAM;AAC7C;AACA,qBAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;;0BA7UCvC,mBAqCM,OAAA;AAAA,QArCD,OAAM;AAAA,QAA0B;AAAA,MAAA;QACnCQ,YAmCE,4BAAA;AAAA,UAlCC,cAAYuB,MAAA,KAAA,EAAM,UAAU;AAAA,UAC5B,eAAaA,MAAA,KAAA,EAAM,WAAW;AAAA,UAC9B,aAAWA,MAAA,KAAA,EAAM,SAAS;AAAA,UAC1B,aAAWA,MAAA,KAAA,EAAM,SAAS;AAAA,UAC1B,sBAAoBA,MAAA,KAAA,EAAM,iBAAiB;AAAA,UAC3C,sBAAoBA,MAAA,KAAA,EAAM,iBAAiB;AAAA,UAC3C,yBAAuBA,MAAA,KAAA,EAAM,mBAAmB;AAAA,UAChD,qBAAmBA,MAAA,KAAA,EAAM,gBAAgB;AAAA,UACzC,qBAAmBA,MAAA,KAAA,EAAM,gBAAgB;AAAA,UACzC,aAAWA,MAAA,KAAA,EAAM,SAAS;AAAA,UAC1B,cAAYA,MAAA,KAAA,EAAM,UAAU;AAAA,UAC5B,6BAA2BA,MAAA,KAAA,EAAM,uBAAuB;AAAA,UACxD,aAAWA,MAAA,KAAA,EAAM,SAAS;AAAA,UAC1B,iBAAe,aAAA;AAAA,UACf,kBAAgB,aAAA;AAAA,UAChB,4BAA0BA,MAAA,KAAA,EAAM,uBAAuB;AAAA,UACvD,kCAAgCA,MAAA,KAAA,EAAM,4BAA4B;AAAA,UAClE,kCAAgCA,MAAA,KAAA,EAAM,4BAA4B;AAAA,UAClE,4DAAmBA,MAAA,KAAA,EAAM,UAAU,QAAQ;AAAA,UAC3C,6DAAoBA,MAAA,KAAA,EAAM,WAAW,QAAQ;AAAA,UAC7C,2DAAkBA,MAAA,KAAA,EAAM,SAAS,QAAQ;AAAA,UACzC,2DAAkBA,MAAA,KAAA,EAAM,SAAS,QAAQ;AAAA,UACzC,mEAA2BA,MAAA,KAAA,EAAM,iBAAiB,QAAQ;AAAA,UAC1D,mEAA2BA,MAAA,KAAA,EAAM,iBAAiB,QAAQ;AAAA,UAC1D,qEAA8BA,MAAA,KAAA,EAAM,mBAAmB,QAAQ;AAAA,UAC/D,kEAA0BA,MAAA,KAAA,EAAM,gBAAgB,QAAQ;AAAA,UACxD,kEAA0BA,MAAA,KAAA,EAAM,gBAAgB,QAAQ;AAAA,UACxD,2DAAkBA,MAAA,KAAA,EAAM,SAAS,QAAQ;AAAA,UACzC,2EAAiCA,MAAA,KAAA,EAAM,uBAAuB,QAAQ;AAAA,UACtE,gFAAuCA,MAAA,KAAA,EAAM,4BAA4B,QAAQ;AAAA,UACjF,gFAAuCA,MAAA,KAAA,EAAM,4BAA4B,QAAQ;AAAA,UACjF,iBAAgB;AAAA,UAChB,mBAAkB;AAAA,UAClB,aAAY;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC4LnB,UAAM,QAAQ;AAqBd,UAAMtG,QAAO;AAeb,UAAM,YAAY,IAAY,EAAE;AAChC,UAAM,aAAa,IAAY,EAAE;AAEjC,UAAM,qBAAqB,MAAM;AAC/B,UAAI,MAAM,iBAAiB;AACzB;AAAA,MACF;AACA,MAAAA,MAAK,oBAAoB;AAAA,IAC3B;AAEA,UAAM,eAAe,CAAC,UAAiB;AACrC,YAAM,QAAQ,MAAM;AACpB,gBAAU,QAAQ,MAAM;AAAA,IAC1B;AAEA,UAAM,cAAc,CAAC,UAAiB;AACpC,YAAM,QAAQ,MAAM;AACpB,YAAM,QAAQ,SAAS,MAAM,OAAO,EAAE;AAEtC,UAAI,CAAC,MAAM,KAAK,GAAG;AACjB,cAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,MAAM,cAAc,CAAC,CAAC;AACvE,QAAAA,MAAK,uBAAuB,YAAY;AACxC,cAAM,QAAQ,aAAa,SAAA;AAAA,MAC7B,OAAO;AACL,cAAM,QAAQ,MAAM,aAAa,SAAA;AAAA,MACnC;AACA,gBAAU,QAAQ;AAAA,IACpB;AAEA,UAAM,gBAAgB,CAAC,UAAiB;AACtC,YAAM,QAAQ,MAAM;AACpB,iBAAW,QAAQ,MAAM;AAAA,IAC3B;AAEA,UAAM,eAAe,CAAC,UAAiB;AACrC,YAAM,QAAQ,MAAM;AACpB,YAAM,QAAQ,SAAS,MAAM,OAAO,EAAE;AAEtC,UAAI,CAAC,MAAM,KAAK,GAAG;AACjB,cAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;AACpD,QAAAA,MAAK,sBAAsB,YAAY;AACvC,cAAM,QAAQ,aAAa,SAAA;AAAA,MAC7B,OAAO;AACL,cAAM,QAAQ,MAAM,YAAY,SAAA;AAAA,MAClC;AACA,iBAAW,QAAQ;AAAA,IACrB;;AAjTE,aAAA4E,UAAA,GAAAL,mBAwNM,OAxNNG,cAwNM;AAAA,oCAvNJD,gBAEM,OAAA,EAFD,OAAM,qBAAiB;AAAA,UAC1BA,gBAA+C,MAAA,EAA3C,OAAM,iBAAA,GAAiB,iBAAe;AAAA,QAAA;QAI5CA,gBAmCM,OAnCNI,cAmCM;AAAA,UAlCJJ,gBAiCM,OAAA;AAAA,YAjCD,OAAKD,eAAA,CAAC,oBAAkB,EAAA,WAAsB,QAAA,qBAAmB,CAAA;AAAA,UAAA;YACpEC,gBAcM,OAAA;AAAA,cAbJ,OAAKD,eAAA,CAAC,iBAAe,EAAA,UACD,QAAA,gBAAA,CAAe,CAAA;AAAA,cAClC,SAAO;AAAA,YAAA;cAERC,gBAA4F,QAA5FO,cAA4FL,gBAA5D,QAAA,sBAAmB,gBAAA,YAAA,GAAA,CAAA;AAAA,cACnDF,gBAOO,QAAA;AAAA,gBAPD,OAAKD,eAAA,CAAC,2BAAyB,EAAA,UACX,QAAA,4BAA4B,QAAA,SAAA,CAAQ,CAAA;AAAA,gBACvD,OAAO,QAAA;AAAA,cAAA;gBACTuC,gBAAApC,gBAAA,QAAA,6BAA4B,KAC/B,CAAA;AAAA,4CAAAF,gBAEM,OAAA;AAAA,kBAFD,OAAM;AAAA,kBAAgB,SAAQ;AAAA,kBAAY,MAAK;AAAA,gBAAA;kBAClDA,gBAA0B,QAAA,EAApB,GAAE,kBAAgB;AAAA,gBAAA;;;YAI9BA,gBAgBM,OAhBNS,cAgBM;AAAA,cAfJT,gBAAsD,QAAtDa,cAAsDX,gBAAtB,QAAA,YAAY,GAAA,CAAA;AAAA,cAC5C,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAF,gBAAyC,QAAA,EAAnC,OAAM,qBAAA,GAAqB,KAAC,EAAA;AAAA,cAClCA,gBAAoD,QAApDc,cAAoDZ,gBAApB,QAAA,UAAU,GAAA,CAAA;AAAA,cAG/B,QAAA,cAAW,KAAtBC,aAAAL,mBASM,OATNiB,cASM;AAAA,gBARJf,gBAMM,OANNgB,cAMM;AAAA,kBALJhB,gBAIO,OAAA;AAAA,oBAHL,OAAKD,eAAA,CAAC,wBAAsB,EAAA,eAEH,QAAA,cAAc,QAAA,YAAA,CAAW,CAAA;AAAA,oBADjD,OAAKgC,eAAA,EAAA,OAAA,GAAe,QAAA,aAAa,QAAA,cAAW,GAAA,IAAA,CAAA;AAAA,kBAAA;;gBAIjD/B,gBAA4E,QAA5EiB,eAA4Ef,gBAAtC,kBAAU,IAAG,sBAAI,QAAA,WAAW,GAAA,CAAA;AAAA,cAAA;;;;QAO1EF,gBAuEM,OAvENkB,eAuEM;AAAA,UAtEJlB,gBAqEM,OArENmB,eAqEM;AAAA,YAnEJnB,gBAkBM,OAlBNgC,eAkBM;AAAA,cAjBJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAhC,gBAAyD,SAAA,EAAlD,OAAM,sBAAA,GAAsB,kBAAc,EAAA;AAAA,cACjDA,gBAeM,OAfNoB,eAeM;AAAA,gBAdJpB,gBAYE,SAAA;AAAA,kBAXA,MAAK;AAAA,kBACL,OAAM;AAAA,kBACL,KAAK;AAAA,kBACL,KAAK,QAAA,cAAU;AAAA,kBACf,OAAO,QAAA;AAAA,kBACP,UAAU,QAAA,eAAU;AAAA,kBACpB,SAAO;AAAA,kBACP,QAAM;AAAA,kBACN,uDAAD,MAAA;AAAA,kBAAA,GAAiB,CAAA,MAAA,CAAA;AAAA,kBAChB,uDAAD,MAAA;AAAA,kBAAA,GAAiB,CAAA,MAAA,CAAA;AAAA,kBAChB,qDAAD,MAAA;AAAA,kBAAA,GAAe,CAAA,MAAA,CAAA;AAAA,gBAAA;gBAEjBA,gBAAuD,QAAvDiC,eAAyB,uBAAK,QAAA,cAAU,CAAA,GAAA,CAAA;AAAA,cAAA;;YAK5CjC,gBAkBM,OAlBNkC,eAkBM;AAAA,cAjBJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAlC,gBAAiD,SAAA,EAA1C,OAAM,sBAAA,GAAsB,UAAM,EAAA;AAAA,cACzCA,gBAeM,OAfN,aAeM;AAAA,gBAdJA,gBAYE,SAAA;AAAA,kBAXA,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,KAAI;AAAA,kBACJ,KAAI;AAAA,kBACH,OAAO,QAAA;AAAA,kBACP,SAAO;AAAA,kBACP,QAAM;AAAA,kBACN,uDAAD,MAAA;AAAA,kBAAA,GAAiB,CAAA,MAAA,CAAA;AAAA,kBAChB,uDAAD,MAAA;AAAA,kBAAA,GAAiB,CAAA,MAAA,CAAA;AAAA,kBAChB,qDAAD,MAAA;AAAA,kBAAA,GAAe,CAAA,MAAA,CAAA;AAAA,kBACf,OAAM;AAAA,gBAAA;gBAER,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAA,gBAAoC,QAAA,EAA9B,OAAM,mBAAgB,KAAC,EAAA;AAAA,cAAA;;YAKjCA,gBAwBM,OAxBN,aAwBM;AAAA,cAvBJA,gBAaS,UAAA;AAAA,gBAZP,OAAKD,eAAA,CAAC,eAAa,EAAA,QACD,QAAA,SAAA,CAAQ,CAAA;AAAA,gBACzB,UAAU,QAAA;AAAA,gBACV,+CAAOM,KAAAA,MAAK,cAAA;AAAA,gBACZ,OAAO,QAAA,kBAAe,0CAA8C,QAAA,WAAQ,uBAAA;AAAA,cAAA;gBAElE,QAAA,YAAXF,aAAAL,mBAEM,OAFN,aAEM,CAAA,GAAA,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA;AAAA,kBADJE,gBAAyB,QAAA,EAAnB,GAAE,gBAAA,GAAe,MAAA,EAAA;AAAA,gBAAA,SAEzBG,aAAAL,mBAEM,OAFN,aAEM,CAAA,GAAA,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA;AAAA,kBADJE,gBAAqC,QAAA,EAA/B,GAAE,4BAAA,GAA2B,MAAA,EAAA;AAAA,gBAAA;;cAGvCA,gBAQS,UAAA;AAAA,gBAPP,OAAM;AAAA,gBACL,+CAAOK,KAAAA,MAAK,aAAA;AAAA,gBACb,OAAM;AAAA,cAAA;gBAENL,gBAEM,OAAA;AAAA,kBAFD,SAAQ;AAAA,kBAAY,MAAK;AAAA,kBAAe,OAAM;AAAA,gBAAA;kBACjDA,gBAAiH,QAAA,EAA3G,GAAE,yGAAuG;AAAA,gBAAA;;;;;QAQzHA,gBAYM,OAZN,aAYM;AAAA,UAXJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAA,gBAAmD,SAAA,EAA5C,OAAM,gBAAA,GAAgB,kBAAc,EAAA;AAAA,UAC3CA,gBASM,OATN,aASM;AAAA,YARJM,YAOE,cAAA;AAAA,cANC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,OAAO,QAAA;AAAA,cACP,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,KAAA,KAAA,IAAA;AAAA,cACf,kBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,wBAAyB,MAAM;AAAA,YAAA;;;QAMzDL,gBA6BM,OA7BN,aA6BM;AAAA,UA5BJA,gBAgBM,OAhBN,aAgBM;AAAA,YAfJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAA,gBAEQ,SAAA,EAFD,OAAM,gBAAA,GAAgB,2BAE7B,EAAA;AAAA,YACAA,gBAWS,UAAA;AAAA,cAVP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,kBAAA,CAAiB,CAAA;AAAA,cACnD,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,4BAAA,CAA8B,QAAA,iBAAiB;AAAA,cAC5D,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,cACf,OAAM;AAAA,YAAA;cAENL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;UAGtCA,gBAUM,OAAA;AAAA,YAVD,OAAKD,eAAA,CAAC,oBAAkB,EAAA,8BAAA,CAA0C,QAAA,mBAAiB,CAAA;AAAA,UAAA;YACtFO,YAQE,cAAA;AAAA,cAPC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,OAAO,QAAA;AAAA,cACP,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,KAAA,KAAA,EAAA;AAAA,cACf,WAAW,QAAA;AAAA,cACX,kBAAY,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,8BAA+B,MAAM;AAAA,YAAA;;;QAM/DL,gBA6BM,OA7BN,aA6BM;AAAA,UA5BJA,gBAgBM,OAhBN,aAgBM;AAAA,YAfJA,gBAEQ,SAFR,aAA6B,sCACR,QAAA,qBAAkB,iBAAA,oBAAA,GAAA,CAAA;AAAA,YAEvCA,gBAWS,UAAA;AAAA,cAVP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,mBAAA,CAAkB,CAAA;AAAA,cACpD,SAAK,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,6BAAA,CAA+B,QAAA,kBAAkB;AAAA,cAC9D,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,cACf,OAAM;AAAA,YAAA;cAENL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;UAGtCA,gBAUM,OAAA;AAAA,YAVD,OAAKD,eAAA,CAAC,oBAAkB,EAAA,8BAAyC,QAAA,wBAAsB,CAAA;AAAA,UAAA;YAC1FO,YAQE,cAAA;AAAA,cAPC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,OAAO,QAAA;AAAA,cACP,MAAM;AAAA,cACN,iBAAe,EAAA,KAAA,KAAA,KAAA,IAAA;AAAA,cACf,UAAU,QAAA;AAAA,cACV,kBAAY,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAED,KAAAA,MAAK,uBAAwB,MAAM;AAAA,YAAA;;;QAMxDL,gBAkBM,OAlBN,aAkBM;AAAA,UAjBJA,gBAgBM,OAhBN,aAgBM;AAAA,YAfJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAA,gBAEQ,SAAA,EAFD,OAAM,gBAAA,GAAgB,wBAE7B,EAAA;AAAA,YACAA,gBAWS,UAAA;AAAA,cAVP,MAAK;AAAA,cACL,OAAKD,eAAA,CAAC,iBAAe,EAAA,yBACc,QAAA,cAAA,CAAa,CAAA;AAAA,cAC/C,SAAK,OAAA,EAAA,MAAA,OAAA,EAAA,IAAA,CAAA,WAAEM,KAAAA,MAAK,wBAAA,CAA0B,QAAA,aAAa;AAAA,cACpD,MAAK;AAAA,cACJ,gBAAc,QAAA;AAAA,cACf,OAAM;AAAA,YAAA;cAENL,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,cAClCA,gBAA0C,QAAA,EAApC,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnJ5C,UAAM,QAAQ;AAOd,UAAMzE,QAAO;AAKb,UAAM,cAAc,IAAI,EAAE;AAC1B,UAAM,iBAAiB,IAA6B,IAAI;AAGxD,QAAI,iBAAsB;AAE1B,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,YAAY,MAAM,SAAS;AACjC,YAAM,QAAQ,MAAM,gBAAgB,YAAY,IAAI;AACpD,YAAM,WAAW,aAAa,MAAM;AACpC,UAAI,aAAa,OAAO;AACtB,eAAO,UAAU,KAAK,QAAQ,UAAU,IAAI,MAAM,EAAE;AAAA,MACtD;AACA,aAAO,WAAW,QAAQ,OAAO,KAAK,QAAQ,UAAU,IAAI,MAAM,EAAE;AAAA,IACtE,CAAC;AAED,UAAM,eAAe,SAAyB,MAAM;AAClD,YAAM,OAAuB,MAAM,SAAS,IAAI,CAAC,MAAM,SAAS;AAAA,QAC9D,OAAO,MAAM;AAAA,QACb;AAAA,MAAA,EACA;AAGF,UAAI,MAAM,eAAe;AACvB,aAAK,KAAK;AAAA,UACR,OAAO,KAAK,SAAS;AAAA,UACrB,MAAM,EAAE,WAAW,UAAA;AAAA,QAAU,CAC9B;AAAA,MACH;AAEA,UAAI,CAAC,YAAY,MAAM,QAAQ;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,YAAY,MAAM,YAAA;AAChC,aAAO,KAAK;AAAA,QAAO,UACjB,KAAK,KAAK,UAAU,YAAA,EAAc,SAAS,KAAK;AAAA,MAAA;AAAA,IAEpD,CAAC;AAED,UAAM,cAAc,MAAM;;AACxB,kBAAY,QAAQ;AACpB,OAAAhB,MAAA,eAAe,UAAf,gBAAAA,IAAsB;AAAA,IACxB;AAEA,UAAM,aAAa,CAAC,UAAkB;AACpC,MAAAgB,MAAK,UAAU,KAAK;AACpB,MAAAA,MAAK,OAAO;AAAA,IACd;AAKA,UAAM,2BAA2B,OAAO,cAAsB;AAC5D,YAAM,WAAW,MAAM;AAAA,QACrB,kCAAkC,mBAAmB,SAAS,CAAC;AAAA,MAAA;AAEjE,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AACA,YAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,UAAI,CAAC,KAAK,WAAW,CAAC,KAAK,aAAa;AACtC,cAAM,IAAI,MAAM,sBAAsB;AAAA,MACxC;AACA,aAAO;AAAA,QACL,YAAY,KAAK;AAAA,QACjB,aAAa,KAAK,gBAAgB;AAAA,QAClC,cAAc,KAAK;AAAA,MAAA;AAAA,IAEvB;AAGA,UAAM,oBAAoB,YAAY;AACpC,UAAI,CAAC,gBAAgB;AACnB,cAAM,EAAE,eAAA,IAAmB,MAAM;AAAA;AAAA,UAA0B,GAAG,uBAAuB;AAAA;AACrF,yBAAiB,IAAI,eAAe;AAAA,UAClC,WAAW;AAAA,UACX,sBAAsB,CAAC,SAAiB;AAAA,UACxC,oBAAoB;AAAA,QAAA,CACrB;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAEA,UAAM,cAAc,OAAO,UAAkB,UAAsB;AACjE,YAAM,UAAU,MAAM,kBAAA;AACtB,YAAM,OAAQ,MAAM,OAAuB,sBAAA;AAE3C,cAAQ,KAAK,UAAU,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,SAAS,CAAC;AAAA,IACpE;AAEA,UAAM,cAAc,YAAY;AAC9B,UAAI,gBAAgB;AAClB,uBAAe,KAAA;AAAA,MACjB;AAAA,IACF;AAGA,UAAM,MAAM,MAAM,SAAS,CAAC,cAAc;AACxC,UAAI,WAAW;AACb,oBAAY,QAAQ;AACpB,iBAAS,MAAM;;AACb,WAAAhB,MAAA,eAAe,UAAf,gBAAAA,IAAsB;AAAA,QACxB,CAAC;AAAA,MACH,OAAO;AAEL,oBAAA;AAAA,MACF;AAAA,IACF,CAAC;AAGD,gBAAY,MAAM;AAChB,UAAI,gBAAgB;AAClB,uBAAe,QAAA;AACf,yBAAiB;AAAA,MACnB;AAAA,IACF,CAAC;;0BAjMCqG,YAoDe,cAAA;AAAA,QAnDZ,SAAS,QAAA;AAAA,QACV,OAAM;AAAA,QACL,UAAU,aAAA;AAAA,QACV,+CAAOP,KAAAA,MAAK,OAAA;AAAA,MAAA;QAEF,gBACT,MAqBM;AAAA,UArBNL,gBAqBM,OArBNC,cAqBM;AAAA,sCApBJD,gBAEM,OAAA;AAAA,cAFD,OAAM;AAAA,cAAc,SAAQ;AAAA,cAAY,MAAK;AAAA,YAAA;cAChDA,gBAAqM,QAAA,EAA/L,GAAE,6LAA2L;AAAA,YAAA;2BAErMA,gBAME,SAAA;AAAA,uBALI;AAAA,cAAJ,KAAI;AAAA,2EACK,YAAW,QAAA;AAAA,cACpB,MAAK;AAAA,cACL,OAAM;AAAA,cACN,aAAY;AAAA,YAAA;2BAHH,YAAA,KAAW;AAAA,YAAA;YAMd,YAAA,sBADRF,mBASS,UAAA;AAAA;cAPP,MAAK;AAAA,cACL,OAAM;AAAA,cACL,SAAO;AAAA,YAAA;cAERE,gBAEM,OAAA;AAAA,gBAFD,SAAQ;AAAA,gBAAY,MAAK;AAAA,cAAA;gBAC5BA,gBAA2M,QAAA,EAArM,GAAE,mMAAiM;AAAA,cAAA;;;;yBAMjN,MAoBM;AAAA,UApBNA,gBAoBM,OApBNI,cAoBM;AAAA,8BAnBJN,mBAeMY,UAAA,MAAAC,WAdW,aAAA,OAAY,CAApB,SAAI;kCADbb,mBAeM,OAAA;AAAA,gBAbH,KAAK,KAAK;AAAA,gBACX,uBAAM,aAAW;AAAA,0BACY,QAAA,iBAAiB,KAAK;AAAA,kCAAiC,KAAK,KAAK,cAAS;AAAA,gBAAA;gBAItG,cAAU,CAAA,WAAE,YAAY,KAAK,KAAK,WAAW,MAAM;AAAA,gBACnD,cAAY;AAAA,gBACZ,SAAK,CAAA,WAAE,WAAW,KAAK,KAAK;AAAA,cAAA;gBAE7BE,gBAAgD,QAAhDQ,cAAgDN,gBAApB,KAAK,KAAK,GAAA,CAAA;AAAA,gBACtCF,gBAAqF,QAAA;AAAA,kBAA/E,OAAM;AAAA,kBAAa,OAAO,KAAK,KAAK;AAAA,gBAAA,mBAAc,KAAK,KAAK,SAAS,GAAA,GAAAS,YAAA;AAAA,gBAC/D,QAAA,iBAAiB,KAAK,sBAAlCX,mBAA6E,QAA7Ee,cAA+D,SAAO;;;YAE7D,aAAA,MAAa,WAAM,kBAA9Bf,mBAEM,OAFNgB,cAAyD,kBAEzD;;;;;;;;;AC1CC,SAAS,mBAAmB,QAAuC;AAGxE,MAAI,cAAc;AAGlB,QAAM,eAAe,IAAI,CAAC;AAC1B,QAAM,aAAa,IAAI,CAAC;AACxB,QAAM,iBAAiB,IAAI,EAAE;AAC7B,QAAM,gBAAgB,IAAI,CAAG;AAC7B,QAAM,eAAe,IAAI,CAAG;AAC5B,QAAM,qBAAqB,IAAI,KAAK;AACpC,QAAM,oBAAoB,IAAI,KAAK;AACnC,QAAM,sBAAsB,IAAI,CAAG;AACnC,QAAM,SAAS,IAA+B,UAAU;AACxD,QAAM,kBAAkB,IAAI,EAAE;AAC9B,QAAM,sBAAsB,IAAI,EAAE;AAClC,QAAM,YAAY,IAAI,KAAK;AAK3B,QAAM,iBAAiB,IAAmB,IAAI;AAC9C,QAAM,YAAY,IAAmB,IAAI;AAGzC,QAAM,cAAc,IAAI,CAAC;AACzB,QAAM,aAAa,IAAI,CAAC;AACxB,QAAM,oBAAoB,IAAI,CAAC;AAC/B,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,gBAAgB,IAAI,KAAK;AAG/B,QAAM,sBAAsB,IAAI,KAAK;AACrC,QAAM,sBAAsB,IAAI,CAAC;AAGjC,QAAM,cAAc,MAAoB;AAEtC,QAAI,aAAa;AACf,aAAO;AAAA,QACL,eAAe,aAAa;AAAA,QAC5B,aAAa,WAAW;AAAA,QACxB,kBAAkB,eAAe;AAAA,QACjC,gBAAgB,cAAc;AAAA,QAC9B,eAAe,aAAa;AAAA,QAC5B,wBAAwB,CAAC,mBAAmB;AAAA,QAC5C,qBAAqB,kBAAkB;AAAA,QACvC,uBAAuB,oBAAoB;AAAA,QAC3C,SAAS,OAAO;AAAA,QAChB,mBAAmB,gBAAgB;AAAA,QACnC,uBAAuB,oBAAoB;AAAA,QAC3C,iBAAiB,eAAe;AAAA,QAChC,YAAY,UAAU;AAAA,QACtB,cAAc,YAAY;AAAA,QAC1B,aAAa,WAAW;AAAA,QACxB,WAAW,SAAS;AAAA,QACpB,iBAAiB,cAAc;AAAA,MAAA;AAAA,IAEnC;AACA,WAAO;AAAA,MACL,eAAe,aAAa;AAAA,MAC5B,aAAa,WAAW;AAAA,MACxB,kBAAkB,eAAe;AAAA,MACjC,gBAAgB,cAAc;AAAA,MAC9B,eAAe,aAAa;AAAA,MAC5B,wBAAwB,CAAC,mBAAmB;AAAA,MAC5C,qBAAqB,kBAAkB;AAAA,MACvC,uBAAuB,oBAAoB;AAAA,MAC3C,SAAS,OAAO;AAAA,MAChB,mBAAmB,gBAAgB;AAAA,MACnC,uBAAuB,oBAAoB;AAAA,MAC3C,iBAAiB,eAAe;AAAA,MAChC,YAAY,UAAU;AAAA,MACtB,cAAc,YAAY;AAAA,MAC1B,aAAa,WAAW;AAAA,MACxB,WAAW,SAAS;AAAA,MACpB,iBAAiB,cAAc;AAAA,IAAA;AAAA,EAEnC;AAGA,QAAM,oBAAoB,CAAC,WAAyB;AAElD,kBAAc;AAEd,QAAI;AACF,mBAAa,QAAQ,OAAO,iBAAiB;AAC7C,iBAAW,QAAQ,OAAO,eAAe;AACzC,qBAAe,QAAQ,OAAO,oBAAoB;AAClD,oBAAc,QAAQ,OAAO,kBAAkB;AAC/C,mBAAa,QAAQ,OAAO,iBAAiB;AAC7C,yBAAmB,QAAQ,EAAE,OAAO,0BAA0B;AAC9D,wBAAkB,QAAQ,OAAO,uBAAuB;AACxD,0BAAoB,QAAQ,OAAO,yBAAyB;AAC5D,aAAO,QAAQ,OAAO,WAAW;AACjC,sBAAgB,QAAQ,OAAO,qBAAqB;AACpD,0BAAoB,QAAQ,OAAO,yBAAyB;AAE9D,kBAAY,QAAQ,OAAO,gBAAgB;AAC3C,iBAAW,QAAQ,OAAO,eAAe;AACzC,eAAS,QAAQ,OAAO,aAAa;AACrC,oBAAc,QAAQ,OAAO,mBAAmB;AAAA,IAGhD,UAAA;AACE,oBAAc;AAAA,IAChB;AAAA,EACF;AAIA,QAAM,oBAAoB,MAAM;AAC9B,mBAAe,QAAQ,UAAU;AAEjC,UAAM,UAAU,eAAe,SAAS,aAAa;AACrD,QAAI,OAAO,UAAU;AAErB,UAAM,sBAAsB,cAAc,QAAQ,WAAW,QAAQ,IAAI,WAAW;AACpF,QAAI,sBAAsB,KAAK,OAAO,qBAAqB;AACzD,aAAO;AAAA,IACT;AACA,cAAU,QAAQ;AAAA,EACpB;AAGA,QAAM,sBAAsB,MAAM;AAChC,QAAI,UAAU,UAAU,MAAM;AAE5B,UAAI,OAAO,aAAa,QAAQ;AAEhC,YAAM,sBAAsB,cAAc,QAAQ,WAAW,QAAQ,IAAI,WAAW;AACpF,UAAI,sBAAsB,KAAK,OAAO,qBAAqB;AACzD,eAAO;AAAA,MACT;AACA,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AAGA,QAAM,iBAAiB,CAAC,eAA8C;AACpE,QAAI,CAAC,cAAc,CAAC,WAAW,SAAS;AACtC,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,KAAK,KAAK,UAAU,WAAW,OAAO,CAAC;AAAA,IAChD,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAGA,QAAM,kBAAkB,OACtB,eAC8B;AAC9B,QAAI;AACF,gBAAU,QAAQ;AAElB,YAAM,cAAuC;AAAA,QAC3C,SAAS,OAAO;AAAA,MAAA;AAGlB,UAAI,yCAAY,SAAS;AACvB,oBAAY,cAAc,WAAW;AAAA,MACvC;AAEA,YAAM,WAAW,MAAM,MAAM,6BAA6B;AAAA,QACxD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAAA;AAAA,QAElB,MAAM,KAAK,UAAU,WAAW;AAAA,MAAA,CACjC;AAED,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,YAAY,MAAM,SAAS,KAAA;AACjC,cAAM,IAAI,MAAM,UAAU,SAAS,6BAA6B;AAAA,MAClE;AAEA,YAAM,OAAO,MAAM,SAAS,KAAA;AAE5B,UAAI,CAAC,KAAK,SAAS;AACjB,cAAM,IAAI,MAAM,KAAK,SAAS,2BAA2B;AAAA,MAC3D;AAEA,aAAO,KAAK,SAAS,CAAA;AAAA,IACvB,SAAS,OAAO;AACd,cAAQ,MAAM,iDAAiD,KAAK;AACpE,YAAM;AAAA,IACR,UAAA;AACE,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AAGA,QAAM,cAAc,OAAO,eAAsC;AAC/D,QAAI;AACF,YAAM,UAAU,eAAe,UAAU;AACzC,YAAM,cAAc,YAAY,eAAe;AAG/C,YAAM,WAAW,MAAM,gBAAgB,UAAU;AAGjD,iBAAW,QAAQ,SAAS;AAG5B,UAAI,aAAa;AACf,qBAAa,QAAQ;AACrB,uBAAe,QAAQ;AAAA,MACzB;AAGA,UAAI,aAAa,QAAQ,WAAW,OAAO;AACzC,qBAAa,QAAQ,KAAK,IAAI,GAAG,WAAW,KAAK;AAAA,MACnD;AAGA,UAAI,SAAS,SAAS,KAAK,aAAa,QAAQ,GAAG;AACjD,cAAM,cAAc,SAAS,aAAa,QAAQ,CAAC;AACnD,YAAI,aAAa;AACf,0BAAgB,QAAQ,OAAO,UAAU,aACrC,YAAY,YACX,YAAY,cAAc,YAAY;AAC3C,8BAAoB,QAAQ,YAAY;AAAA,QAC1C;AAAA,MACF,OAAO;AACL,wBAAgB,QAAQ;AACxB,4BAAoB,QAAQ;AAAA,MAC9B;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,4CAA4C,KAAK;AAC/D,YAAM;AAAA,IACR;AAAA,EACF;AAGA,QAAM,WAAW,CAAC,UAAkB;AAElC,UAAM,sBAAsB,cAAc,QAAQ,WAAW,QAAQ,IAAI,WAAW;AACpF,QAAI,SAAS,KAAK,SAAS,qBAAqB;AAC9C,mBAAa,QAAQ;AAAA,IACvB;AAAA,EACF;AAGA,QAAM,aAAa,MAAM;AACvB,iBAAa,QAAQ;AACrB,eAAW,QAAQ;AACnB,sBAAkB,QAAQ;AAAA,EAE5B;AAGA,QAAM,cAAc,MAAM;AACxB,aAAS,QAAQ,CAAC,SAAS;AAAA,EAC7B;AAGA,QAAM,yBAAyB,SAAS,MAAM,CAAC,mBAAmB,KAAK;AAGvE,QAAM,eAAe,CAAC,aAAa;AACjC,QAAI,CAAC,mBAAmB,OAAO;AAC7B,mBAAa,QAAQ;AAAA,IACvB;AAAA,EACF,CAAC;AAGD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GACC,MAAM;AACP,WAAO,QAAQ,YAAA;AAAA,EACjB,GAAG,EAAE,MAAM,MAAM;AAEjB,SAAO;AAAA;AAAA,IAEL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;;;;;;;;AC3RA,UAAM,QAAQ;AAOd,UAAM,QAAQ,mBAAmB,MAAM,MAAM;AAG7C,UAAM,eAAe,OAAO,cAAc;AAY1C,UAAM,iBAAqC,CAAA;AAG3C,UAAM,mBAAmB,IAAI,KAAK;AAiBlC,UAAM,oBAAwC,CAAA;AAG9C,UAAM,qBAAqB,IAAI,EAAE;AAGjC,UAAM,YAAY,IAAI,KAAK;AAG3B,UAAM,cAAc,IAAI,KAAK;AAG7B,UAAM,iBAAiB,IAAgB,EAAE;AAGzC,UAAM,oBAAoB,SAAS,MAAM;AACvC,YAAM,YAAY,MAAM,WAAW;AACnC,aAAO,MAAM,cAAc,QAAQ,YAAY,IAAI;AAAA,IACrD,CAAC;AAGD,UAAM,kBAAkB,SAAS,MAAM;AACrC,YAAM,eAAe,MAAM,aAAa;AACxC,YAAM,aAAa,MAAM,WAAW;AAGpC,UAAI,MAAM,cAAc,SAAS,iBAAiB,aAAa,GAAG;AAChE,eAAO;AAAA,MACT;AAGA,aAAO,MAAM,gBAAgB;AAAA,IAC/B,CAAC;AAGD,UAAM,WAAW,SAAS,MAAM;AAC9B,aAAO,MAAM,cAAc,SAAS,MAAM,aAAa,UAAU,MAAM,WAAW,QAAQ;AAAA,IAC5F,CAAC;AAGD,UAAM,gBAAgB,MAA6B;AAEjD,UAAK,MAAM,KAAa,eAAe;AACrC,eAAQ,MAAM,KAAa,cAAA;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AAGA,UAAM,4BAA4B,CAAC,UAAsB,UAAkB;AACzE,YAAM,kBAAkB,SAAS;AAGjC,UAAI,MAAM,cAAc,SAAS,UAAU,kBAAkB,GAAG;AAC9D,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,oBAAoB,QAAQ;AAClC;AAAA,MACF;AAGA,UAAI,kBAAkB,KAAK,QAAQ,KAAK,SAAS,iBAAiB;AAChE,cAAM,cAAc,SAAS,QAAQ,CAAC;AACtC,YAAI,aAAa;AACf,gBAAM,gBAAgB,QAAQ,YAAY;AAC1C,gBAAM,oBAAoB,QAAQ,YAAY;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAGA,UAAM,oBAAoB,OAAO,aAAqB;AAEpD,YAAM,WAAW,MAAM,cAAc,QACjC,MAAM,WAAW,QAAQ,IACzB,MAAM,WAAW;AAGrB,YAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,UAAU,YAAY,CAAC,CAAC;AAIhE,YAAM,OAAe,YAAY,IAAI;AACvC,YAAM,eAAe,QAAQ;AAC7B,YAAM,UAAU,QAAQ;AAGxB,qBAAe,SAAS;AACxB,uBAAiB,QAAQ;AAEzB,YAAM,SAAS,YAAY;AAG3B,UAAI;AACF,cAAM,aAAa,cAAA;AACnB,cAAM,WAAW,MAAM,MAAM,gBAAgB,UAAU;AACvD,uBAAe,QAAQ;AACvB,kCAA0B,UAAU,YAAY;AAAA,MAClD,SAAS,OAAO;AACd,gBAAQ,MAAM,4CAA4C,KAAK;AAAA,MACjE;AAAA,IACF;AAGA,UAAM,oBAAoB,CAAC,UAAkB;AAC3C,wBAAkB,KAAK;AAAA,IACzB;AAGA,UAAM,iCAAiC,CAAC,aAAsB;AAC5D,YAAM,mBAAmB,QAAQ;AAEjC,UAAI,CAAC,UAAU;AACb,cAAM,aAAa,QAAQ,MAAM,cAAc;AAAA,MACjD;AAAA,IACF;AAGA,UAAM,0BAA0B,CAAC,aAAqB;AACpD,YAAM,YAAY,QAAQ;AAE1B,YAAM,WAAW,QAAQ;AACzB,YAAM,kBAAkB,QAAQ;AAAA,IAClC;AAGA,UAAM,4BAA4B,CAAC,aAAsB;AACvD,YAAM,cAAc,QAAQ;AAI5B,UAAI,CAAC,YAAY,MAAM,aAAa,QAAQ,MAAM,WAAW,OAAO;AAClE,cAAM,aAAa,QAAQ,KAAK,IAAI,GAAG,MAAM,WAAW,KAAK;AAAA,MAC/D;AAAA,IACF;AAGA,UAAM,oBAAoB,MAAM;AAC9B,YAAM,YAAA;AAAA,IACR;AAGA,UAAM,mBAAmB,YAAY;AAEjC,YAAM,OAAe,YAAY,IAAI;AACvC,YAAM,eAAe,QAAQ;AAC7B,YAAM,UAAU,QAAQ;AAGxB,qBAAe,SAAS;AACxB,uBAAiB,QAAQ;AAGzB,YAAM,WAAA;AAGN,UAAI;AACF,cAAM,aAAa,cAAA;AACnB,cAAM,WAAW,MAAM,MAAM,gBAAgB,UAAU;AACvD,uBAAe,QAAQ;AACvB,kCAA0B,UAAU,CAAC;AAAA,MACvC,SAAS,OAAO;AACd,gBAAQ,MAAM,6CAA6C,KAAK;AAAA,MAClE;AAAA,IACF;AAMA,UAAM,UAAU,CAAC,UAAsB;AAGrC,YAAM,SAAS,MAAM;AACrB,UAAI,iCAAQ,QAAQ,gCAAgC;AAGlD,cAAM,gBAAA;AACN;AAAA,MACF;AAGA,YAAMzF,OAAO,OAAe;AAC5B,UAAI,CAACA,QAAO,CAACA,KAAI,UAAU,OAAOA,KAAI,OAAO,sBAAsB,YAAY;AAC7E;AAAA,MACF;AAEA,YAAM,SAAS,MAAM;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,eAAe,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM;AAGvD,UAAI,MAAM,SAAS;AACjB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,UAAI,cAAc;AAChB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,YAAM,eAAA;AACN,YAAM,gBAAA;AACN,MAAAA,KAAI,OAAO,kBAAkB,KAAK;AAAA,IACpC;AAGA,UAAM,yBAAyB,YAAY;AACzC,UAAI,CAAC,UAAU,MAAO;AAEtB,YAAM,aAAa,cAAA;AACnB,YAAM,UAAU,MAAM,eAAe,UAAU;AAE/C,UAAI,YAAY,mBAAmB,OAAO;AACxC,gBAAQ,IAAI,yDAAyD;AACrE,2BAAmB,QAAQ;AAC3B,YAAI;AACF,gBAAM,MAAM,YAAY,UAAU;AAElC,gBAAM,WAAW,MAAM,MAAM,gBAAgB,UAAU;AACvD,yBAAe,QAAQ;AAAA,QACzB,SAAS,OAAO;AACd,kBAAQ,MAAM,mDAAmD,KAAK;AAAA,QACxE;AAAA,MACF;AAAA,IACF;AAGA,cAAU,YAAY;;AAGpB,YAAM,OAAO,WAAW,CAACf,OAAoB;AAC3C,YAAIA,IAAG;AACL,gBAAM,kBAAkBA,EAAC;AAAA,QAC3B;AAAA,MACF;AAGA,UAAI,MAAM,OAAO,OAAO;AACtB,cAAM,kBAAkB,MAAM,OAAO,KAAK;AAAA,MAC5C;AASE,YAAM,OAAe,eAAe,MAAM;AAC1C,YAAI,MAAM,SAAS,OAAO;AAGxB,yBAAe,KAAK;AAAA,YAClB,UAAU;AAAA,YACV,YAAY,MAAM,WAAW;AAAA,YAC7B,aAAa,MAAM,YAAY;AAAA,YAC/B,sBAAsB;AAAA,YACtB,mBAAmB,MAAM,kBAAkB;AAAA;AAAA,UAAA,CAC5C;AACD,2BAAiB,QAAQ;AAIzB,gBAAM,eAAe,MAAM,YAAA;AAC3B,uBAAa,kBAAkB;AAC/B,gBAAM,OAAO,QAAQ;AACrB;AAAA,QACF;AAEA,YAAK,MAAM,OAAe,YAAY,GAAG;AAEvC,cAAI,MAAM,WAAW,QAAQ,MAAM,YAAY,OAAO;AAEpD,kBAAM,WAAW;AAAA,UACnB,OAAO;AAEL,kBAAM,WAAW,QAAQ;AACzB,kBAAM,kBAAA;AAAA,UACR;AAAA,QACF,OAAO;AAEL,gBAAM,WAAW,QAAQ;AACzB,gBAAM,oBAAA;AACJ,gBAAM,OAAe,YAAY,IAAI;AAAA,QACzC;AAIA,cAAM,uBAAuB,MAAM,WAAW,SAAS,MAAM,YAAY;AAKzE,cAAM,oBAAoB,uBAAuB,IAAI,MAAM,WAAW;AAGtE,uBAAe,KAAK;AAAA,UAClB,UAAU;AAAA,UACV,YAAY,MAAM,WAAW;AAAA,UAC7B,aAAa,MAAM,YAAY;AAAA,UAC/B;AAAA,UACA;AAAA,QAAA,CACD;AACD,yBAAiB,QAAQ;AAGzB,cAAM,OAAO,QAAQ,MAAM,YAAA;AAAA,MAC7B;AAGA,gBAAU,QAAQ;AAGlB,UAAI;AACF,cAAM,aAAa,cAAA;AACnB,2BAAmB,QAAQ,MAAM,eAAe,UAAU;AAC1D,cAAM,MAAM,YAAY,UAAU;AAElC,cAAM,WAAW,MAAM,MAAM,gBAAgB,UAAU;AACvD,uBAAe,QAAQ;AAAA,MACzB,SAAS,OAAO;AACd,gBAAQ,MAAM,6CAA6C,KAAK;AAAA,MAClE;AAIA,YAAM,sBAAsBC,MAAA,MAAM,KAAa,eAAnB,gBAAAA,IAA+B,KAAK,MAAM;AAEpE,YAAM,KAAa,aAAa,SAAS,QAAa;AACtD,gBAAQ,IAAI,iDAAiD,MAAM;AAGnE,cAAM,UAAU,eAAe,MAAA;AAC/B,yBAAiB,QAAQ,eAAe,SAAS;AAGjD,cAAM,uBAAuB,UACzB,QAAQ,uBACP,CAAC,MAAM,SAAS,SAAS,MAAM,WAAW,SAAS,MAAM,YAAY;AAG1E,cAAM,aAAY,iCAAQ,gBAAe,SACpC,MAAM,QAAQ,OAAO,UAAU,IAAI,OAAO,WAAW,CAAC,IAAI,OAAO,aAClE,MAAM,aAAa;AACvB,cAAM,gBAAe,iCAAQ,oBAAmB,SAC3C,MAAM,QAAQ,OAAO,cAAc,IAAI,OAAO,eAAe,CAAC,IAAI,OAAO,iBAC1E;AACJ,cAAM,oBAAmB,iCAAQ,wBAAuB,SACnD,MAAM,QAAQ,OAAO,kBAAkB,IAAI,OAAO,mBAAmB,CAAC,IAAI,OAAO,qBAClF;AACJ,cAAM,mBAAkB,iCAAQ,uBAAsB,SACjD,MAAM,QAAQ,OAAO,iBAAiB,IAAI,OAAO,kBAAkB,CAAC,IAAI,OAAO,oBAChF;AACJ,cAAM,uBAAsB,iCAAQ,2BAA0B,SACzD,MAAM,QAAQ,OAAO,qBAAqB,IAAI,OAAO,sBAAsB,CAAC,IAAI,OAAO,wBACxF;AAGJ,aAAI,iCAAQ,iBAAgB,QAAW;AACrC,gBAAM,MAAM,MAAM,QAAQ,OAAO,WAAW,IAAI,OAAO,YAAY,CAAC,IAAI,OAAO;AAC/E,gBAAM,WAAW,QAAQ;AAAA,QAC3B;AAGA,YAAI,SAAS;AACX,4BAAkB,KAAK;AAAA,YACrB,YAAY,QAAQ;AAAA,YACpB,aAAa,QAAQ;AAAA,YACrB;AAAA,YACA,mBAAmB,QAAQ;AAAA,YAC3B,QAAQ;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UACF,CACD;AAGD,gBAAM,oBAAoB,QAAQ,QAAQ;AAC1C,gBAAM,oBAAoB,QAAQ;AAAA,QACpC;AAGA,YAAI,oBAAoB;AACtB,iBAAO,mBAAmB,MAAM;AAAA,QAClC;AAAA,MACF;AAGA,UAAI,MAAM,KAAK;AAKb,cAAM,0BAA0B,MAAM;AAEpC,cAAI,kBAAkB,WAAW,GAAG;AAClC;AAAA,UACF;AAEA,gBAAM,UAAU,kBAAkB,MAAA;AAIlC,gBAAM,kBAAkB,QAAQ,QAAQ;AAExC,cAAI,QAAQ,QAAQ;AAClB,gBAAI,QAAQ,sBAAsB;AAChC,oBAAM,aAAa,QAAQ,QAAQ,OAAO;AAC1C,oBAAM,gBAAgB,QAAQ,QAAQ,OAAO;AAC7C,oBAAM,oBAAoB,QAAQ,QAAQ,OAAO;AAAA,YACnD,OAAO;AAEL,oBAAM,gBAAgB,QAAQ,QAAQ,OAAO;AAC7C,oBAAM,oBAAoB,QAAQ,QAAQ,OAAO;AAAA,YACnD;AAAA,UACF;AAGA,cAAI,kBAAkB,WAAW,GAAG;AAClC,kBAAM,oBAAoB,QAAQ;AAClC,kBAAM,oBAAoB,QAAQ;AAAA,UACpC;AAAA,QACF;AAEA,cAAM,IAAI,iBAAiB,qBAAqB,uBAAuB;AACvE,cAAM,IAAI,iBAAiB,mBAAmB,uBAAuB;AACrE,cAAM,IAAI,iBAAiB,yBAAyB,uBAAuB;AAG3E,cAAM,aAAa,MAAM;AACvB,gBAAM,IAAI,oBAAoB,qBAAqB,uBAAuB;AAC1E,gBAAM,IAAI,oBAAoB,mBAAmB,uBAAuB;AACxE,gBAAM,IAAI,oBAAoB,yBAAyB,uBAAuB;AAAA,QAChF;AAGA,cAAM,kBAAmB,MAAM,OAAe;AAC5C,cAAM,OAAe,kBAAkB,MAAM;AAC7C;AACA,qBAAA;AAAA,QACF;AAAA,MACF;AAGA,YAAM,gBAAgB,YAAY,wBAAwB,GAAI;AAG9D,YAAM,6BAA8B,MAAM,OAAe;AACvD,YAAM,OAAe,kBAAkB,MAAM;AAC7C;AACA,sBAAc,aAAa;AAAA,MAC7B;AAAA,IACF,CAAC;;0BA/iBCuF,mBA0CM,OAAA;AAAA,QA1CD,OAAM;AAAA,QAAsB;AAAA,MAAA;QAC/BQ,YA+BE,wBAAA;AAAA,UA9BC,iBAAeuB,MAAA,KAAA,EAAM,aAAa;AAAA,UAClC,eAAa,kBAAA;AAAA,UACb,qBAAmB,gBAAA;AAAA,UACnB,yBAAuBA,MAAA,KAAA,EAAM,oBAAoB;AAAA,UACjD,kBAAgBA,MAAA,KAAA,EAAM,cAAc;AAAA,UACpC,iBAAeA,MAAA,KAAA,EAAM,aAAa;AAAA,UAClC,yBAAuBA,MAAA,KAAA,EAAM,mBAAmB;AAAA,UAChD,uBAAqBA,MAAA,KAAA,EAAM,kBAAkB;AAAA,UAC7C,yBAAuBA,MAAA,KAAA,EAAM,oBAAoB;AAAA,UACjD,6BAA2BA,MAAA,KAAA,EAAM,uBAAuB;AAAA,UACxD,cAAYA,MAAA,KAAA,EAAM,UAAU;AAAA,UAC5B,gBAAcA,MAAA,KAAA,EAAM,YAAY;AAAA,UAChC,eAAaA,MAAA,KAAA,EAAM,kBAAkB;AAAA,UACrC,aAAWA,MAAA,KAAA,EAAM,SAAS;AAAA,UAC1B,qBAAmB,iBAAA;AAAA,UACnB,yBAAuBA,MAAA,KAAA,EAAM,oBAAoB;AAAA,UACjD,yBAAuBA,MAAA,KAAA,EAAM,oBAAoB;AAAA,UACjD,mBAAiBA,MAAA,KAAA,EAAM,cAAc;AAAA,UACrC,cAAY,SAAA;AAAA,UACZ,yBAAsB;AAAA,UACtB,gEAAuBA,MAAA,KAAA,EAAM,cAAc,QAAQ;AAAA,UACnD,+DAAsBA,MAAA,KAAA,EAAM,aAAa,QAAQ;AAAA,UACjD,+BAA8B;AAAA,UAC9B,oEAA4BA,MAAA,KAAA,EAAM,kBAAkB,QAAQ;AAAA,UAC5D,sEAA8BA,MAAA,KAAA,EAAM,oBAAoB,QAAQ;AAAA,UAChE,wBAAqB;AAAA,UACrB,0BAAwB;AAAA,UACxB,eAAc;AAAA,UACd,cAAa;AAAA,UACb,0DAAoB,YAAA,QAAW;AAAA,QAAA;QAGlCvB,YAOE,eAAA;AAAA,UANC,SAAS,YAAA;AAAA,UACT,aAAW,eAAA;AAAA,UACX,iBAAeuB,MAAA,KAAA,EAAM,aAAa;AAAA,UAClC,mBAAiBA,MAAA,KAAA,EAAM,cAAc;AAAA,UACrC,+CAAO,YAAA,QAAW;AAAA,UAClB,UAAQ;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;ACvBf,UAAM,QAAQ;AAKd,UAAM,WAAW,IAAoC,IAAI;AAEzD,UAAM,cAAc;AAAA,MAAS,MAC3B,SAAS,UAAU,QAAQ,OAAO,KAAK,SAAS,KAAK,EAAE,SAAS;AAAA,IAAA;AAGlE,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,CAAC,SAAS,MAAO,QAAO;AAC5B,YAAM,UAAU,KAAK,UAAU,SAAS,OAAO,MAAM,CAAC;AACtD,aAAO,gBAAgB,OAAO;AAAA,IAChC,CAAC;AAGD,UAAM,SAAS;AAAA,MACb,KAAK;AAAA;AAAA,MACL,QAAQ;AAAA;AAAA,MACR,QAAQ;AAAA;AAAA,MACR,SAAS;AAAA;AAAA,MACT,MAAM;AAAA;AAAA,IAAA;AAGR,aAAS,gBAAgB,MAAsB;AAE7C,aAAO,KAAK,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAG7E,aAAO,KAAK;AAAA,QACV;AAAA,QACA,CAAC,UAAU;AACT,cAAI,QAAQ,OAAO;AAEnB,cAAI,KAAK,KAAK,KAAK,GAAG;AACpB,gBAAI,KAAK,KAAK,KAAK,GAAG;AAEpB,sBAAQ,OAAO;AACf,sBAAQ,MAAM,QAAQ,MAAM,EAAE;AAC9B,qBAAO,sBAAsB,KAAK,MAAM,KAAK;AAAA,YAC/C,OAAO;AAEL,sBAAQ,OAAO;AAAA,YACjB;AAAA,UACF,WAAW,aAAa,KAAK,KAAK,GAAG;AACnC,oBAAQ,OAAO;AAAA,UACjB,WAAW,OAAO,KAAK,KAAK,GAAG;AAC7B,oBAAQ,OAAO;AAAA,UACjB;AAEA,iBAAO,sBAAsB,KAAK,MAAM,KAAK;AAAA,QAC/C;AAAA,MAAA;AAAA,IAEJ;AAEA,cAAU,MAAM;;AAEd,YAAM,OAAO,iBAAiB,YAAY;AAG1C,YAAM,OAAO,aAAa,CAACvH,OAAM;AAC/B,YAAIA,MAAK,OAAOA,OAAM,UAAU;AAC9B,mBAAS,QAAQA;AAAA,QACnB;AAAA,MACF;AAGA,UAAI,MAAM,OAAO,SAAS,OAAO,MAAM,OAAO,UAAU,UAAU;AAChE,iBAAS,QAAQ,MAAM,OAAO;AAAA,MAChC;AAIA,YAAM,sBAAsBC,MAAA,MAAM,KAAa,eAAnB,gBAAAA,IAA+B,KAAK,MAAM;AAEpE,YAAM,KAAa,aAAa,SAAS,QAAa;AAEtD,aAAI,iCAAQ,cAAa,QAAW;AAClC,cAAI,gBAAgB,OAAO;AAG3B,cAAI,MAAM,QAAQ,aAAa,GAAG;AAChC,4BAAgB,cAAc,CAAC;AAAA,UACjC;AAGA,cAAI,OAAO,kBAAkB,UAAU;AACrC,gBAAI;AACF,8BAAgB,KAAK,MAAM,aAAa;AAAA,YAC1C,SAAS,GAAG;AACV,sBAAQ,MAAM,6CAA6C,CAAC;AAAA,YAC9D;AAAA,UACF;AAEA,mBAAS,QAAQ;AAAA,QACnB;AAGA,YAAI,oBAAoB;AACtB,iBAAO,mBAAmB,MAAM;AAAA,QAClC;AAAA,MACF;AAAA,IACF,CAAC;;AAzHC,aAAA4F,UAAA,GAAAL,mBAKM,OALNG,cAKM;AAAA,QAJJD,gBAGM,OAHNI,cAGM;AAAA,UAFO,YAAA,sBAAXN,mBAAuD,OAAA;AAAA;YAA/B,WAAQ,gBAAA;AAAA,UAAA,2CAChCA,mBAA2D,OAA3DU,cAAgC,uBAAqB;AAAA,QAAA;;;;;;ACyBpD,SAAS,gBACd,aACA,YAAgE,SAChE,UAAkC,CAAA,GAClC;AACA,QAAM,uBAAuB,IAAiC,IAAI;AAClE,QAAM,gBAAgB,IAAI,KAAK;AAE/B,QAAM+B,kBAAsC;AAAA,IAC1C,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,GAAG;AAAA,EAAA;AAGL,QAAM,mBAAmB,YAAY;AACnC,QAAI,CAAC,YAAY,OAAO;AACtB,cAAQ,KAAK,2DAA2D;AACxE;AAAA,IACF;AAEA,QAAI,qBAAqB,OAAO;AAC9B,cAAQ,IAAI,iDAAiD;AAC7D;AAAA,IACF;AAEA,QAAI;AAEF,YAAM,SAAS,MAAM;AAAA;AAAA,QAA0B,GAAG,oBAAoB;AAAA;AACtE,YAAM,eAAkC,OAAO;AAE/C,2BAAqB,QAAQ,IAAI;AAAA,QAC/B,YAAY;AAAA,QACZ;AAAA,QACAA;AAAA,MAAA;AAEF,oBAAc,QAAQ;AACtB,cAAQ,IAAI,qCAAqC,SAAS,EAAE;AAAA,IAC9D,SAAS,OAAO;AACd,cAAQ,MAAM,2CAA2C,KAAK;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,sBAAsB,MAAM;AAChC,QAAI,qBAAqB,OAAO;AAC9B,2BAAqB,MAAM,QAAA;AAC3B,2BAAqB,QAAQ;AAC7B,oBAAc,QAAQ;AACtB,cAAQ,IAAI,6BAA6B;AAAA,IAC3C;AAAA,EACF;AAEA,QAAM,qBAAqB,MAAM;AAC/B,QAAI,qBAAqB,OAAO;AAC9B,2BAAqB,MAAM,mBAAA;AAAA,IAC7B;AAAA,EACF;AAEA,YAAU,MAAM;AAGd,eAAW,MAAM;AACf,uBAAA;AAAA,IACF,GAAG,CAAC;AAAA,EACN,CAAC;AAED,cAAY,MAAM;AAChB,wBAAA;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;;;;;;;;;;;;;;;AC/DA,UAAM,QAAQ;AAWd,UAAM,eAAe,IAAI,OAAO,cAAc,eAAe,UAAU,iBAAiB,IAAI;AAG5F,UAAM,eAAe,CAAC,UAAiB;AACrC,YAAM,cAAc;AACpB,mBAAa,QAAQ,YAAY,OAAO;AAAA,IAC1C;AAEA,UAAM,cAAc,IAAgC,IAAI;AACxD,UAAM,UAAU,IAAI,KAAK;AAGzB,UAAM,kBAAkB,SAAS,MAAM,QAAQ,KAAK;AAGpD;AAAA,MACE;AAAA,MACA,MAAM,aAAa;AAAA,MACnB,EAAE,aAAa,MAAM,eAAe,KAAA;AAAA,IAAK;AAG3C,UAAM,qBAAqB,MAAM;AAC/B,cAAQ,QAAQ,YAAY,QAAQ,YAAY,MAAM,MAAM,SAAS,IAAI;AAAA,IAC3E;AAEA,UAAM,UAAU,MAAM;AAEpB,yBAAA;AAGA,UAAI,YAAY,SAAS,OAAO,MAAM,OAAO,aAAa,YAAY;AACpE,cAAM,OAAO,SAAS,YAAY,MAAM,KAAK;AAAA,MAC/C;AAAA,IACF;AAUA,UAAM,UAAU,CAAC,UAAsB;AACrC,YAAM,WAAW,YAAY;AAC7B,UAAI,CAAC,SAAU;AAGf,YAAM,aAAa,SAAS,eAAe,SAAS;AACpD,YAAM,SAAS,MAAM;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,eAAe,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM;AAGvD,YAAMlH,OAAO,OAAe;AAC5B,UAAI,CAACA,QAAO,CAACA,KAAI,UAAU,OAAOA,KAAI,OAAO,sBAAsB,YAAY;AAC7E;AAAA,MACF;AAGA,UAAI,MAAM,SAAS;AACjB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,UAAI,cAAc;AAChB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAClC;AAAA,MACF;AAGA,UAAI,YAAY;AAGd,cAAM,gBAAA;AAAA,MACR,OAAO;AAGL,cAAM,eAAA;AACN,QAAAA,KAAI,OAAO,kBAAkB,KAAK;AAAA,MACpC;AAAA,IACF;AAGA,UAAM,wBAAwB,MAAM;AAClC,yBAAA;AAAA,IACF;AAGA,UAAM,wBAAwB,MAAM;AAClC,UAAI,MAAM,QAAQ;AAChB,cAAM,OAAO,aAAa,CAAC,UAAkB;AAE3C,kBAAQ,QAAQ,MAAM,SAAS;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,MAAM;AACtB,UAAI,YAAY,OAAO;AACrB,oBAAY,MAAM,QAAQ;AAC1B,gBAAQ,QAAQ;AAChB,oBAAY,MAAM,MAAA;AAGlB,YAAI,OAAO,MAAM,OAAO,aAAa,YAAY;AAC/C,gBAAM,OAAO,SAAS,EAAE;AAAA,QAC1B;AAGA,oBAAY,MAAM,cAAc,IAAI,MAAM,OAAO,CAAC;AAAA,MACpD;AAAA,IACF;AAEA,cAAU,MAAM;AAEd,UAAI,YAAY,OAAO;AACrB,cAAM,OAAO,UAAU,YAAY;AACjC,oBAAY,MAAc,0BAA0B,MAAM;AAC1D,oBAAY,MAAc,8BAA8B,MAAM,OAAO;AACrE,oBAAY,MAAc,8BAA8B,MAAM,OAAO,QAAQ;AAM/E,cAAM,YAAY,YAAY,MAAM,QAAQ,mCAAmC;AAC/E,YAAI,aAAc,UAAkB,iBAAiB;AAClD,oBAAkB,gBAAgB,UAAU,YAAY;AAAA,QAC3D;AAGA,cAAM,eAAgB,MAAM,OAAe;AAC3C,YAAI,iBAAiB,QAAW;AAC9B,sBAAY,MAAM,QAAQ;AAC1B,kBAAQ,QAAQ,aAAa,SAAS;AACtC,iBAAQ,MAAM,OAAe;AAE7B,sBAAY,MAAM,cAAc,IAAI,YAAY,2CAA2C;AAAA,YACzF,QAAQ,EAAE,OAAO,aAAA;AAAA,UAAa,CAC/B,CAAC;AAAA,QACJ;AAGA,YAAI,iBAAiB,QAAW;AAC9B,kBAAQ,QAAQ,YAAY,MAAM,MAAM,SAAS;AAAA,QACnD;AAGA,oBAAY,MAAM,iBAAiB,2CAA2C,qBAAsC;AAAA,MACtH;AAGA,UAAI,YAAY,SAAS,OAAO,MAAM,OAAO,aAAa,YAAY;AACpE,cAAM,OAAO,SAAS,YAAY,MAAM,KAAK;AAAA,MAC/C;AAGA,4BAAA;AAGA,eAAS,iBAAiB,gCAAgC,YAAY;AAAA,IACxE,CAAC;AAED,gBAAY,MAAM;AAEhB,UAAI,MAAM,OAAO,YAAY,YAAY,OAAO;AAC9C,cAAM,OAAO,UAAU;AAAA,MACzB;AAGA,UAAI,YAAY,OAAO;AACrB,eAAQ,YAAY,MAAc;AAClC,eAAQ,YAAY,MAAc;AAClC,eAAQ,YAAY,MAAc;AAClC,oBAAY,MAAM,oBAAoB,2CAA2C,qBAAsC;AAAA,MACzH;AAGA,UAAI,MAAM,QAAQ;AAChB,cAAM,OAAO,aAAa;AAAA,MAC5B;AAGA,eAAS,oBAAoB,gCAAgC,YAAY;AAAA,IAC3E,CAAC;;AApPC,aAAA8E,UAAA,GAAAL,mBAyBM,OAzBNG,cAyBM;AAAA,QAxBJD,gBAuBM,OAvBNI,cAuBM;AAAA,UAtBJJ,gBASE,YAAA;AAAA,qBARI;AAAA,YAAJ,KAAI;AAAA,YACH,aAAa,QAAA;AAAA,YACb,YAAY,QAAA,cAAU;AAAA,YACtB,OAAKD,eAAA,CAAA,cAAA,EAAA,gBAAmC,aAAA,OAAY,uBAAyB,aAAA,MAAA,CAAY,CAAA;AAAA,YACzF,sBAAO,QAAA,aAAa,qBAAY,EAAA,WAAgB,QAAA,qBAAqB,MAAS;AAAA,YAC/E,sBAAmB;AAAA,YAClB;AAAA,YACA;AAAA,UAAA;UAGK,gBAAA,sBADRD,mBAWS,UAAA;AAAA;YATP,MAAK;AAAA,YACL,OAAM;AAAA,YACN,OAAM;AAAA,YACL,SAAO;AAAA,UAAA;YAERE,gBAGM,OAAA;AAAA,cAHD,SAAQ;AAAA,cAAY,MAAK;AAAA,cAAO,QAAO;AAAA,cAAe,gBAAa;AAAA,YAAA;cACtEA,gBAAsC,QAAA;AAAA,gBAAhC,IAAG;AAAA,gBAAK,IAAG;AAAA,gBAAI,IAAG;AAAA,gBAAI,IAAG;AAAA,cAAA;cAC/BA,gBAAsC,QAAA;AAAA,gBAAhC,IAAG;AAAA,gBAAI,IAAG;AAAA,gBAAI,IAAG;AAAA,gBAAK,IAAG;AAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACwFzC,UAAM,QAAQ;AAQd,UAAM,WAAW,IAAY,EAAE;AAC/B,UAAM,QAAQ,IAAY,EAAE;AAC5B,UAAM,gBAAgB,IAAY,EAAE;AACpC,UAAM,WAAW,IAAY,EAAE;AAC/B,UAAM,SAAS,IAAa,KAAK;AACjC,UAAM,YAAY,IAAY,OAAO;AAGrC,UAAM,qBAAqB,IAAY,EAAE;AACzC,UAAM,mBAAmB,IAAY,EAAE;AACvC,UAAM,qBAAqB,IAAa,KAAK;AAC7C,UAAM,mBAAmB,IAAa,KAAK;AAC3C,UAAM,oBAAoB,IAAa,KAAK;AAE5C,UAAM,iBAAiB;AAAA,MAAS,MAC9B,CAAC,EAAE,mBAAmB,SAAS,iBAAiB;AAAA,IAAA;AAIlD,UAAM,UAAU,CAAC,YAAY;AAC3B,wBAAkB,QAAQ;AAC1B,uBAAiB,QAAQ;AACzB,yBAAmB,QAAQ;AAC3B,uBAAiB,QAAQ;AACzB,UAAI,WAAW,UAAU,UAAU,eAAe;AAChD,yBAAA;AAAA,MACF;AAAA,IACF,CAAC;AAED,aAAS,4BAA4B;AACnC,UAAI,CAAC,kBAAkB,SAAS,SAAS,OAAO;AAC9C,yBAAA;AAAA,MACF;AAAA,IACF;AAEA,mBAAe,mBAAmB;;AAChC,UAAI,mBAAmB,SAAS,CAAC,SAAS,MAAO;AAEjD,yBAAmB,QAAQ;AAC3B,uBAAiB,QAAQ;AAEzB,UAAI;AACF,cAAM,WAAW,MAAM,MAAM,IAAI;AAAA,UAC/B,gCAAgC,mBAAmB,SAAS,KAAK,CAAC;AAAA,UAClE,EAAE,QAAQ,MAAA;AAAA,QAAM;AAGlB,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,6BAA6B,SAAS,UAAU,EAAE;AAAA,QACpE;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,YAAI,KAAK,WAAW,KAAK,UAAU;AACjC,6BAAmB,QAAQ,KAAK,SAAS,eAAe;AACxD,2BAAiB,UAAQzF,MAAA,KAAK,SAAS,UAAd,gBAAAA,IAAqB,gBAAe;AAC7D,4BAAkB,QAAQ;AAAA,QAC5B,OAAO;AAEL,4BAAkB,QAAQ;AAAA,QAC5B;AAAA,MACF,SAAS,GAAG;AACV,gBAAQ,MAAM,iDAAiD,CAAC;AAChE,yBAAiB,QAAQ;AAAA,MAE3B,UAAA;AACE,2BAAmB,QAAQ;AAAA,MAC7B;AAAA,IACF;AAEA,mBAAe,YAAY;AACzB,UAAI,MAAM,UAAU,cAAc,SAAS,OAAO,MAAO;AACzD,UAAI,CAAC,SAAS,MAAO;AAErB,aAAO,QAAQ;AACf,UAAI;AACF,cAAM,WAAW,MAAM,MAAM,IAAI,SAAS,2BAA2B;AAAA,UACnE,QAAQ;AAAA,UACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,UAC3B,MAAM,KAAK,UAAU,EAAE,WAAW,SAAS,OAAO,OAAO,MAAM,MAAA,CAAO;AAAA,QAAA,CACvE;AACD,cAAM,SAAS,MAAM,SAAS,KAAA;AAC9B,YAAI,OAAO,SAAS;AAClB,gBAAM,IAAI,iBAAiB,MAAM,IAAI;AAAA,YACnC,UAAU;AAAA,YACV,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,MAAM;AAAA,UAAA,CACP;AACD,wBAAc,QAAQ,MAAM;AAAA,QAC9B,OAAO;AACL,gBAAM,IAAI,iBAAiB,MAAM,IAAI;AAAA,YACnC,UAAU;AAAA,YACV,SAAS;AAAA,YACT,QAAQ,OAAO,WAAW,OAAO,SAAS;AAAA,YAC1C,MAAM;AAAA,UAAA,CACP;AAAA,QACH;AAAA,MACF,SAAS,GAAG;AACV,gBAAQ,MAAM,0CAA0C,CAAC;AACzD,cAAM,IAAI,iBAAiB,MAAM,IAAI;AAAA,UACnC,UAAU;AAAA,UACV,SAAS;AAAA,UACT,QAAS,EAAY,WAAW;AAAA,UAChC,MAAM;AAAA,QAAA,CACP;AAAA,MACH,UAAA;AACE,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAEA,aAAS,QAAQ,OAAmB;;AAClC,YAAM,SAAS,MAAM;AACrB,UAAI,CAAC,OAAQ;AAEb,YAAM,WAAY,OAA6F;AAC/G,UAAI,GAACA,MAAA,qCAAU,WAAV,gBAAAA,IAAkB,mBAAmB;AAG1C,UAAI,MAAM,SAAS;AACjB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,iBAAS,OAAO,kBAAkB,KAAK;AACvC;AAAA,MACF;AAGA,UAAI,KAAK,IAAI,MAAM,MAAM,IAAI,KAAK,IAAI,MAAM,MAAM,GAAG;AACnD,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,iBAAS,OAAO,kBAAkB,KAAK;AACvC;AAAA,MACF;AAGA,YAAM,eAAe,OAAO,QAAQ,+BAA+B;AACnE,UAAI,cAAc;AAChB,cAAM,aAAa,aAAa,eAAe,aAAa;AAC5D,YAAI,YAAY;AAEd,gBAAM,gBAAA;AACN;AAAA,QACF;AAAA,MACF;AAGA,YAAM,eAAA;AACN,YAAM,gBAAA;AACN,eAAS,OAAO,kBAAkB,KAAK;AAAA,IACzC;AAEA,cAAU,MAAM;AAEd,YAAM,OAAO,iBAAiB,aAA2C;AAAA,QACvE,MAAM,SAAS;AAAA,QACf,OAAO,MAAM;AAAA,QACb,UAAU,SAAS;AAAA,QACnB,WAAW,UAAU;AAAA,MAAA;AAIvB,YAAM,OAAO,aAAa,CAACD,OAAe;AACxC,YAAIA,MAAK,OAAOA,OAAM,UAAU;AAC9B,gBAAM,OAAOA;AACb,cAAI,KAAK,SAAS,OAAW,UAAS,QAAQ,KAAK;AACnD,cAAI,KAAK,UAAU,QAAW;AAC5B,kBAAM,QAAQ,KAAK;AACnB,0BAAc,QAAQ,KAAK;AAAA,UAC7B;AACA,cAAI,KAAK,aAAa,OAAW,UAAS,QAAQ,KAAK;AACvD,cAAI,KAAK,cAAc,OAAW,WAAU,QAAQ,KAAK;AAAA,QAC3D;AAAA,MACF;AAGA,UAAI,MAAM,OAAO,SAAS,OAAO,MAAM,OAAO,UAAU,UAAU;AAChE,cAAM,OAAO,MAAM,OAAO;AAC1B,YAAI,KAAK,SAAS,OAAW,UAAS,QAAQ,KAAK;AACnD,YAAI,KAAK,UAAU,QAAW;AAC5B,gBAAM,QAAQ,KAAK;AACnB,wBAAc,QAAQ,KAAK;AAAA,QAC7B;AACA,YAAI,KAAK,aAAa,OAAW,UAAS,QAAQ,KAAK;AACvD,YAAI,KAAK,cAAc,OAAW,WAAU,QAAQ,KAAK;AAAA,MAC3D;AAIA,YAAM,OAAO,eAAe,CAAC,SAAuF;AAClH,YAAI,MAAM;AACR,mBAAS,QAAQ,KAAK;AACtB,gBAAM,QAAQ,KAAK;AACnB,wBAAc,QAAQ,KAAK;AAC3B,mBAAS,QAAQ,KAAK;AAEtB,cAAI,KAAK,cAAc,QAAW;AAChC,sBAAU,QAAQ,KAAK;AAAA,UACzB;AAAA,QACF,OAAO;AACL,mBAAS,QAAQ;AACjB,gBAAM,QAAQ;AACd,wBAAc,QAAQ;AACtB,mBAAS,QAAQ;AAAA,QAEnB;AAAA,MACF;AAGA,UAAI,MAAM,OAAO,mBAAmB;AAClC,cAAM,OAAO,aAAa,MAAM,OAAO,iBAAiB;AACxD,eAAO,MAAM,OAAO;AAAA,MACtB;AAAA,IACF,CAAC;;0BAxUCwF,mBAuFM,OAAA;AAAA,QAvFD,OAAKC,eAAA,CAAC,oBAAkB,EAAA,eAA0B,QAAA,UAAA,CAAS,CAAA;AAAA,QAAK;AAAA,MAAA;QACnD,SAAA,sBAAhBD,mBAoFWY,UAAA,EAAA,KAAA,KAAA;AAAA,UAlFTV,gBA0BM,OA1BN,YA0BM;AAAA,YAzBJA,gBAWQ,SAAA;AAAA,cAVN,OAAKD,eAAA,CAAC,iBAAe,EAAA,QACH,UAAA,UAAS,SAAA,CAAA;AAAA,YAAA;6BAE3BC,gBAKE,SAAA;AAAA,gBAJA,MAAK;AAAA,6EACI,UAAS,QAAA;AAAA,gBAClB,OAAM;AAAA,gBACN,OAAM;AAAA,cAAA;8BAFG,UAAA,KAAS;AAAA,cAAA;cAIpB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,gBAA8C,QAAA,EAAxC,OAAM,yBAAsB,SAAK,EAAA;AAAA,YAAA;YAEzCA,gBAYQ,SAAA;AAAA,cAXN,OAAKD,eAAA,CAAC,iBAAe,EAAA,QACH,UAAA,UAAS,eAAA,CAAA;AAAA,YAAA;6BAE3BC,gBAME,SAAA;AAAA,gBALA,MAAK;AAAA,6EACI,UAAS,QAAA;AAAA,gBAClB,OAAM;AAAA,gBACN,OAAM;AAAA,gBACL,UAAQ;AAAA,cAAA;8BAHA,UAAA,KAAS;AAAA,cAAA;cAKpB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,gBAAoD,QAAA,EAA9C,OAAM,yBAAsB,eAAW,EAAA;AAAA,YAAA;;UAKjDwC,eAAAxC,gBAqBM,OArBN,YAqBM;AAAA,YApBJA,gBAGM,OAHN,YAGM;AAAA,cAFJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,gBAA0C,SAAA,EAAnC,OAAM,aAAA,GAAa,YAAQ,EAAA;AAAA,cAClCA,gBAA+C,OAA/C,YAA+CE,gBAAjB,SAAA,KAAQ,GAAA,CAAA;AAAA,YAAA;YAExCF,gBAQM,OARN,YAQM;AAAA,cAPJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,gBAAuC,SAAA,EAAhC,OAAM,aAAA,GAAa,SAAK,EAAA;AAAA,6BAC/BA,gBAKY,YAAA;AAAA,6EAJD,MAAK,QAAA;AAAA,gBACd,OAAM;AAAA,gBACN,aAAY;AAAA,gBACX,UAAU,OAAA;AAAA,cAAA;6BAHF,MAAA,KAAK;AAAA,cAAA;;YAMlBA,gBAMS,UAAA;AAAA,cALP,OAAM;AAAA,cACL,UAAU,MAAA,UAAU,cAAA,SAAiB,OAAA;AAAA,cACrC,SAAO;AAAA,YAAA,mBAEL,OAAA,QAAM,cAAA,MAAA,GAAA,GAAA,UAAA;AAAA,UAAA;oBAnBA,UAAA,UAAS,OAAA;AAAA,UAAA;UAwBtBwC,eAAAxC,gBA4BM,OA5BN,YA4BM;AAAA,YA1BO,mBAAA,SAAXG,aAAAL,mBAGM,OAHN,YAGM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,cAFJE,gBAAsC,KAAA,EAAnC,OAAM,yBAAA,GAAwB,MAAA,EAAA;AAAA,cACjCA,gBAAmC,cAA7B,0BAAsB,EAAA;AAAA,YAAA,QAId,iBAAA,SAAhBG,aAAAL,mBAEM,OAFN,aAEM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,cADJE,gBAAuC,cAAjC,8BAA0B,EAAA;AAAA,YAAA,SAIjB,eAAA,SAAjBG,aAAAL,mBAEM,OAFN,aAEM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,cADJE,gBAAqC,cAA/B,4BAAwB,EAAA;AAAA,YAAA,SAIhCG,aAAAL,mBASM,OATN,aASM;AAAA,cARO,mBAAA,SAAXK,UAAA,GAAAL,mBAGM,OAHN,aAGM;AAAA,gBAFJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAE,gBAAoD,SAAA,EAA7C,OAAM,aAAA,GAAa,sBAAkB,EAAA;AAAA,gBAC5CA,gBAAgE,OAAA;AAAA,kBAA3D,OAAM;AAAA,kBAAmB,WAAQ,mBAAA;AAAA,gBAAA;;cAE7B,iBAAA,SAAXG,UAAA,GAAAL,mBAGM,OAHN,aAGM;AAAA,gBAFJ,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAE,gBAAmD,SAAA,EAA5C,OAAM,aAAA,GAAa,qBAAiB,EAAA;AAAA,gBAC3CA,gBAA8D,OAAA;AAAA,kBAAzD,OAAM;AAAA,kBAAmB,WAAQ,iBAAA;AAAA,gBAAA;;;;oBAzB/B,UAAA,UAAS,aAAA;AAAA,UAAA;gCA8BxBF,mBAAsD,OAAtD,aAAgC,kBAAgB;AAAA,MAAA;;;;;ACrF7C,SAAS,uBAAuB,QAAgB,WAAwB;AAC7E,MAAI,aAAa;AAEjB,SAAO,MAAM;AACX,QAAI,YAAY;AACd;AAAA,IACF;AAEA,WAAO,QAAA;AACP,iBAAa;AACb;AAAA,EACF;AACF;ACAO,MAAM2C,6BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF;AAMO,MAAMC,qCAAmC;AAAA,EAC9C;AACF;AAEO,MAAMC,0BAAwB;AAAA,EACnC,GAAGF;AAAAA,EACH,GAAGC;AACL;AAaO,SAASE,4BACd,YAC2C;AAC3C,SAAOF,mCAAiC,SAAS,UAAyC;AAC5F;AAYO,SAAS,6BAA6B,MAAwB;AACnE,QAAM,aAAa,6BAAM;AAEzB,MAAI,eAAe,6BAA6B;AAC9C,WAAO,wBAAwB,IAAI;AAAA,EACrC;AAEA,MAAIE,4BAA0B,UAAU,GAAG;AACzC,+BAAW,IAAA;AAAA,EACb;AAGA,SAAO,uBAAuB,IAAI;AACpC;AAMA,SAAS,uBAAuB,MAAwB;;AACtD,QAAM,sCAAsB,IAAA;AAC5B,QAAM,cAAc,KAAK,iBAAerI,MAAA,KAAK,YAAL,gBAAAA,IAAc,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AAElF,MAAI,2CAAa,OAAO;AACtB,gBAAY,MAAM,QAAQ,CAAC,SAAc;AACvC,UAAI,KAAK,QAAQ;AACf,wBAAgB,IAAI,KAAK,IAAI;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAMA,SAAS,wBAAwB,MAAwB;;AACvD,QAAM,sCAAsB,IAAA;AAC5B,QAAM,gBAAe7H,MAAA,KAAK,YAAL,gBAAAA,IAAc,KAAK,CAAC6H,OAAWA,GAAE,SAAS;AAE/D,OAAI,kDAAc,UAAd,mBAAqB,uBAAuB;AAC9C,oBAAgB,IAAI,aAAa,MAAM,qBAAqB;AAAA,EAC9D;AAEA,SAAO;AACT;AAOO,SAAS,aAAa,MAAmC;AAC9D,SAAO,SAAS,UAAa,SAAS,KAAK,SAAS;AACtD;AAWO,SAAS,uBACd,MACA,cACM;AACN,MAAI,QAAQ,KAAK;AAEjB,SAAO,eAAe,MAAM,QAAQ;AAAA,IAClC,MAAM;AACJ,aAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAe;AACjB,YAAM,WAAW;AACjB,cAAQ;AAER,UAAI,aAAa,OAAO;AACtB,qBAAa,OAAO,QAAQ;AAAA,MAC9B;AAAA,IACF;AAAA,EAAA,CACD;AACH;AAgBO,SAAS,yBACd,MACAS,0BACA,sBAC4C;AAC5C,SAAO,CAAC,SAAiB,aAAqB;AAC5C,UAAM,wBAAwB,aAAa,OAAO;AAClD,UAAM,kBAAkB,wBACpB,6BAA6B,IAAI,wBAC7B,IAAA;AAGR,QAAI,sBAAsB;AACxB,2BAAqB,eAAe;AAAA,IACtC;AAGA,IAAAA,yBAAwB,IAAI;AAAA,EAC9B;AACF;ACnLO,MAAM,MAAM,CAenB;ACjBO,MAAM,MAAM;AAAA,EACjB,UAAU,IAAI,SAAS,MAAM,GAAG,IAAI;AAAA,EACpC,kBAAkB,CAAC,WAAW,YAAY,SAAS,iBAAiB,WAAW,OAAO;AAAA,EACtF,qBAAqB,CAAC,WAAW,YAAY,SAAS,oBAAoB,WAAW,OAAO;AAC9F;ACsGA,IAAI,yBAAyB;AAC7B,IAAI,kCAAkC;AAStC,eAAe,yBAAyB;AACpC,MAAI;AACA,UAAM,WAAW,MAAM,IAAI,SAAS,cAAc;AAClD,QAAI,SAAS,IAAI;AACb,YAAM,OAAO,MAAM,SAAS,KAAI;AAChC,UAAI,KAAK,WAAW,KAAK,UAAU;AAC/B,iCAAyB,KAAK,SAAS,sBAAsB;AAC7D;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,SAAS,GAAG;AAAA,EACZ;AACA,MAAI,2BAA2B,MAAM;AACjC,6BAAyB;AAAA,EAC7B;AACJ;AAEA,SAAS,4BAA4B;AACjC,MAAI,iCAAiC;AACjC;AAAA,EACJ;AACA,oCAAkC,yBAAyB,QAAQ,MAAM;AACrE,sCAAkC;AAAA,EACtC,CAAC;AACL;AAMA,SAAS,wBAAwB;AAC7B,4BAAyB;AAC7B;AACA,sBAAqB;AAErB,SAAS,gCAAgC;AACrC,SAAO,iBAAiB,WAAW,CAAC,MAAM;AACtC,QAAI,EAAE,QAAQ,iCAAiC;AAC3C,gCAAyB;AAAA,IAC7B;AAAA,EACJ,CAAC;AAED,WAAS,iBAAiB,oBAAoB,MAAM;AAChD,QAAI,SAAS,oBAAoB,WAAW;AACxC,gCAAyB;AAAA,IAC7B;AAAA,EACJ,CAAC;AACL;AACA,8BAA6B;AChK7B,MAAM,gBAAgB;AAEf,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,mCAAmC;AAAA,EAC9C;AACF;AAEO,MAAM,wBAAwB;AAAA,EACnC,GAAG;AAAA,EACH,GAAG;AACL;AAMO,SAAS,0BAA0B,YAAY;AAClD,SAAO,iCAAiC,SAAS,UAAU;AAC/D;AAEO,SAAS,gBAAgB,YAAY;AACxC,SAAO,sBAAsB,SAAS,UAAU;AACpD;AAEA,SAAS,UAAU,YAAY;AAC3B,SAAO,cAAc,OAAO,WAAW,YAAY,cAAc,OAAO,WAAW,WAAW;AAClG;AAkCO,SAAS,WAAW,OAAO;AAC9B,UAAO,+BAAO,OAAM;AACxB;AAEO,SAAS,eAAe,MAAM;AACjC,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,SAAO,WAAW,KAAK,SAAS,IAAI,KAAK;AAC7C;AAsCO,SAAS,iBAAiB,MAAM;AACnC,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IACH,SAAS,KAAK;AAAA,IACd,UAAU,eAAe,IAAI;AAAA,EACrC;AACA;AAEO,SAAS,WAAW,MAAM;AAC7B,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,SAAO,GAAG,eAAe,IAAI,CAAC,IAAI,KAAK,EAAE;AAC7C;AAuBO,SAAS,iBAAiB,OAAO,QAAQ;AAC5C,MAAI,CAAC,SAAS,MAAM,SAAS,MAAM;AAC/B,WAAO;AAAA,EACX;AAEA,MAAI,UAAU,MAAM,KAAK,GAAG;AACxB,WAAO,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,EACtC;AAEA,SAAO,MAAM,MAAM,MAAM,KAAK;AAClC;AAoGA,SAAS,iBAAiB,OAAO;AAC7B,UAAO,+BAAO,UAAS;AAC3B;AAGO,SAAS,gCAAgC,MAAM;;AAClD,QAAM,iBAAiB,CAAA;AAEvB,MAAI,EAAC,6BAAM,SAAQ;AACf,WAAO;AAAA,EACX;AAEA,aAAW,SAAS,KAAK,QAAQ;AAC7B,QAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,MAAM,MAAM;AACzC;AAAA,IACJ;AAEA,UAAM,OAAO,iBAAiB,KAAK,OAAO,MAAM,IAAI;AACpD,QAAI,CAAC,MAAM;AACP;AAAA,IACJ;AAEA,UAAM,cAAa,MAAAtI,MAAA,KAAK,UAAL,gBAAAA,IAAY,gBAAZ,wBAAAA,KAA0B,KAAK;AAClD,QAAI,cAAc,gBAAgB,WAAW,UAAU,GAAG;AACtD,qBAAe,KAAK,UAAU;AAAA,IAClC;AAAA,EACJ;AAEA,SAAO;AACX;AAGO,SAAS,+BAA+B,MAAM;;AACjD,QAAM,iBAAiB,CAAA;AAEvB,MAAI,EAAC,6BAAM,UAAS;AAChB,WAAO;AAAA,EACX;AAEA,aAAW,UAAU,KAAK,SAAS;AAC/B,QAAI,GAACA,MAAA,iCAAQ,UAAR,gBAAAA,IAAe,SAAQ;AACxB;AAAA,IACJ;AAEA,eAAW,UAAU,OAAO,OAAO;AAC/B,YAAM,OAAO,iBAAiB,KAAK,OAAO,MAAM;AAChD,UAAI,CAAC,MAAM;AACP;AAAA,MACJ;AAEA,YAAM,cAAa,gBAAK,UAAL,mBAAY,gBAAZ,4BAA0B,KAAK;AAClD,UAAI,cAAc,WAAW,eAAe,oCAAoC;AAC5E,uBAAe,KAAK,UAAU;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAGO,SAAS,uBAAuB,MAAM;;AACzC,QAAM,kBAAkB,oBAAI,IAAG;AAG/B,MAAI,KAAK,eAAe,6BAA6B;AACjD,UAAM,gBAAeA,MAAA,KAAK,YAAL,gBAAAA,IAAc,KAAK,CAAA6H,OAAKA,GAAE,SAAS;AACxD,SAAI,kDAAc,UAAd,mBAAqB,uBAAuB;AAC5C,sBAAgB,IAAI,aAAa,MAAM,qBAAqB;AAAA,IAChE;AACA,WAAO;AAAA,EACX;AAGA,MAAI,0BAA0B,KAAK,UAAU,GAAG;AAC5C,WAAO;AAAA,EACX;AAGA,MAAI,cAAc,KAAK;AACvB,MAAI,CAAC,eAAe,KAAK,SAAS;AAC9B,kBAAc,KAAK,QAAQ,KAAK,CAAAA,OAAKA,GAAE,SAAS,OAAO;AAAA,EAC3D;AAEA,MAAI,eAAe,YAAY,OAAO;AAClC,gBAAY,MAAM,QAAQ,UAAQ;AAC9B,UAAI,KAAK,QAAQ;AACb,wBAAgB,IAAI,KAAK,IAAI;AAAA,MACjC;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAIO,SAAS,4BAA4B,MAAM,UAAU,oBAAI,IAAG,GAAI;AAEnE,QAAM,UAAU,WAAW,IAAI;AAC/B,MAAI,CAAC,SAAS;AACV,WAAO,oBAAI,IAAG;AAAA,EAClB;AACA,MAAI,QAAQ,IAAI,OAAO,GAAG;AACtB,WAAO,oBAAI,IAAG;AAAA,EAClB;AACA,UAAQ,IAAI,OAAO;AAInB,QAAMU,gBAAe,KAAK,SAAS,UAAa,KAAK,SAAS,KAAK,KAAK,SAAS;AAEjF,MAAI,CAACA,eAAc;AACf,WAAO,oBAAI,IAAG;AAAA,EAClB;AAGA,QAAM,qBAAqB,uBAAuB,IAAI;AAGtD,QAAM,kBAAkB,gCAAgC,IAAI;AAC5D,aAAW,aAAa,iBAAiB;AACrC,UAAM,gBAAgB,4BAA4B,WAAW,OAAO;AACpE,kBAAc,QAAQ,UAAQ,mBAAmB,IAAI,IAAI,CAAC;AAAA,EAC9D;AAEA,SAAO;AACX;AAGO,SAAS,4BAA4B,MAAM,WAAW;AACzD,QAAM,iBAAiB,+BAA+B,IAAI;AAC1D,MAAI,eAAe,SAAS,GAAG;AAC3B,UAAM,UAAU,eACX,IAAI,CAAC,kBAAkB,iBAAiB,aAAa,CAAC,EACtD,OAAO,CAAC,cAAc,cAAc,IAAI;AAE7C,QAAI,QAAQ,WAAW,GAAG;AACtB;AAAA,IACJ;AAEA,UAAM,mCAAmC;AAAA,MACrC,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAkB;AAAA,MAC7C,MAAM,KAAK,UAAU;AAAA,QACjB,YAAY,MAAM,KAAK,SAAS;AAAA,QAChC,UAAU;AAAA,MAC1B,CAAa;AAAA,IACb,CAAS,EAAE,MAAM,SAAO,QAAQ,MAAM,iCAAiC,GAAG,CAAC;AAAA,EACvE;AACJ;AAkaO,SAAS,2BAA2B,MAAM;;AAC7C,MAAI,EAAC,6BAAM,SAAQ;AACf,WAAO;AAAA,EACX;AAEA,aAAW,SAAS,KAAK,QAAQ;AAC7B,QAAI,MAAM,SAAS,iBAAiB,CAAC,MAAM,MAAM;AAC7C;AAAA,IACJ;AAEA,UAAM,OAAO,iBAAiB,KAAK,OAAO,MAAM,IAAI;AACpD,QAAI,CAAC,MAAM;AACP;AAAA,IACJ;AAEA,UAAM,cAAa,MAAAvI,MAAA,KAAK,UAAL,gBAAAA,IAAY,gBAAZ,wBAAAA,KAA0B,KAAK;AAClD,QAAI,cAAc,WAAW,eAAe,2BAA2B;AACnE,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,SAAO;AACX;AAGO,SAAS,+BAA+B,MAAM;;AACjD,QAAM,WAAW,2BAA2B,IAAI;AAChD,MAAI,CAAC,UAAU;AACX,WAAO;AAAA,EACX;AAEA,QAAMuI,gBAAe,SAAS,SAAS,UAAa,SAAS,SAAS,KAAK,SAAS,SAAS;AAC7F,MAAI,CAACA,eAAc;AACf,WAAO;AAAA,EACX;AAEA,QAAM,cAAavI,MAAA,SAAS,YAAT,gBAAAA,IAAkB,KAAK,CAAA6H,OAAKA,GAAE,SAAS;AAC1D,UAAO,yCAAY,UAAS;AAChC;AAGO,SAAS,wBAAwB,WAAW,UAAU,oBAAI,IAAG,GAAI;;AACtE,QAAM,UAAU,WAAW,SAAS;AACpC,MAAI,CAAC,WAAW,QAAQ,IAAI,OAAO,EAAG;AACtC,UAAQ,IAAI,OAAO;AAGnB,MAAI,UAAU,SAAS;AACrB,eAAW,UAAU,UAAU,SAAS;AACtC,UAAI,OAAO,OAAO;AAChB,mBAAW,UAAU,OAAO,OAAO;AACjC,gBAAM,OAAO,iBAAiB,UAAU,OAAO,MAAM;AACrD,cAAI,MAAM;AACR,kBAAM,cAAa,MAAA7H,MAAA,UAAU,UAAV,gBAAAA,IAAiB,gBAAjB,wBAAAA,KAA+B,KAAK;AAGvD,gBACE,cACA,WAAW,eAAe,6BAC1B;AACA,oBAAM,qBACJ,4BAA4B,UAAU;AACxC,0CAA4B,YAAY,kBAAkB;AAAA,YAC5D,WAES,cAAc,gBAAgB,WAAW,UAAU,GAAG;AAC7D,sCAAwB,YAAY,OAAO;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;ACz3BA,MAAM,6BAA6B;AACnC,MAAM,8BAA8B;AACpC,MAAM,mCAAmC;AACzC,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAC1C,MAAM,+BAA+B;AACrC,MAAM,gCAAgC;AACtC,MAAM,gCAAgC;AACtC,MAAM,gCAAgC;AACtC,MAAM,iCAAiC;AACvC,MAAM,6BAA6B;AACnC,MAAM,8BAA8B;AACpC,MAAM,sCAAsC;AAC5C,MAAM,sCAAsC;AAI5C,MAAM,sCAAsC;AAC5C,MAAM,uCAAuC;AAC7C,MAAM,gCAAgC;AACtC,MAAM,mCAAmC;AASzC,SAAS,2BAA2B,WAAwB;AAC1D,MAAI,CAAC,UAAW;AAEhB,YAAU,iBAAiB,eAAe,CAAC,UAAU;AACnD,QAAI,MAAM,WAAW,GAAG;AACtB,YAAM,SAASc,MAAI;AACnB,UAAI,UAAU,OAAO,OAAO,qBAAqB,YAAY;AAC3D,eAAO,iBAAiB,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC;AAED,YAAU,iBAAiB,eAAe,CAAC,UAAU;AACnD,SAAK,MAAM,UAAU,OAAO,GAAG;AAC7B,YAAM,SAASA,MAAI;AACnB,UAAI,UAAU,OAAO,OAAO,qBAAqB,YAAY;AAC3D,eAAO,iBAAiB,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC;AAED,YAAU,iBAAiB,aAAa,CAAC,UAAU;AACjD,QAAI,MAAM,WAAW,GAAG;AACtB,YAAM,SAASA,MAAI;AACnB,UAAI,UAAU,OAAO,OAAO,mBAAmB,YAAY;AACzD,eAAO,eAAe,KAAK;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,MAAM,8BAAc,IAAA;AACpB,IAAI,mCAAmC;AAEhC,SAAS,yCAAyC;AACvD,sCAAoC;AACpC,SAAO;AACT;AAGA,IAAI,sBAA2B;AAG/B,SAAS,qBAAqB,MAAM;AAClC,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,KAAK,oBAAoB,KAAK,EAAE;AAC1C,YAAU,MAAM,QAAQ;AACxB,YAAU,MAAM,SAAS;AACzB,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,gBAAgB;AAChC,YAAU,MAAM,WAAW;AAE3B,6BAA2B,SAAS;AAEpC,MAAI;AAEJ,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAW;AACT,eAAO;AAAA,MACT;AAAA,MACA,SAASf,IAAmB;AAC1B,wBAAgBA;AAAA,MAGlB;AAAA,MACA,WAAW;AAAA;AAAA;AAAA,MAGX,eAAe;AACb,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,SAAS,UAAU,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,EAAA,CACD;AAED,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA,CACT;AAED,SAAO,MAAM,SAAS;AACtB,UAAQ,IAAI,KAAK,IAAI,MAAM;AAE3B,SAAO,oBAAoB,MAAM;AAC/B,UAAM,WAAW;AACjB,UAAM,YAAY;AAElB,WAAO,EAAE,WAAW,SAAA;AAAA,EACtB;AAEA,SAAO,WAAW,MAAM;AACtB,UAAMyI,UAAS,QAAQ,IAAI,KAAK,EAAE;AAClC,QAAIA,SAAQ;AACVA,cAAO,QAAA;AACP,cAAQ,OAAO,KAAK,EAAE;AAAA,IACxB;AAAA,EACF;AAEA,SAAO,EAAE,OAAA;AACX;AAGA,SAAS,2BAA2B,MAAM;AACxC,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,KAAK,0BAA0B,KAAK,EAAE;AAChD,YAAU,MAAM,QAAQ;AACxB,YAAU,MAAM,SAAS;AACzB,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,gBAAgB;AAChC,YAAU,MAAM,WAAW;AAE3B,6BAA2B,SAAS;AAGpC,QAAM,gBAAkC;AAAA,IACtC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,wBAAwB;AAAA,IACxB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,0BAA0B;AAAA,IAC1B,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAAA;AAElC,MAAI,gBAAkC;AAEtC,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAW;AACT,eAAO;AAAA,MACT;AAAA,MACA,SAASzI,IAAqB;AAC5B,wBAAgBA;AAAA,MAGlB;AAAA,MACA,WAAW;AAAA,MACX,eAAe;AACb,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAIF,OAAK,gBAAgB,MAAM,+BAA+B,IAAI;AAG9D,SAAO,SAAS,CAAC,gBAAuB;AAEtC,UAAM,cAAc,KAAK,QAAQ,KAAK,CAAC8H,OAAWA,GAAE,SAAS,OAAO;AACpE,QAAI,aAAa;AACf,kBAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,SAAS,UAAU,sBAAsB;AAAA,IAC7C;AAAA,IACA;AAAA,IAAA,KACAR;AAAAA,EAAA,CACD;AAED,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA,CACT;AAED,SAAO,MAAM,SAAS;AACtB,UAAQ,IAAI,KAAK,KAAK,KAAO,MAAM;AAEnC,SAAO,oBAAoB,MAAM;AAC/B,UAAM,WAAW;AACjB,UAAM,YAAY;AAClB,UAAM,YAAY;AAElB,WAAO,EAAE,WAAW,UAAU,UAAA;AAAA,EAChC;AAEA,SAAO,WAAW,MAAM;AACtB,UAAMmB,UAAS,QAAQ,IAAI,KAAK,KAAK,GAAK;AAC1C,QAAIA,SAAQ;AACVA,cAAO,QAAA;AACP,cAAQ,OAAO,KAAK,KAAK,GAAK;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,EAAE,OAAA;AACX;AAGA,SAAS,uBAAuB,MAAM;AACpC,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,KAAK,sBAAsB,KAAK,EAAE;AAC5C,YAAU,MAAM,QAAQ;AACxB,YAAU,MAAM,SAAS;AACzB,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,gBAAgB;AAChC,YAAU,MAAM,WAAW;AAE3B,6BAA2B,SAAS;AAEpC,QAAM,gBAA8B;AAAA,IAClC,eAAe;AAAA,IACf,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,wBAAwB;AAAA,IACxB,qBAAqB;AAAA,IACrB,uBAAuB;AAAA,IACvB,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,EAAA;AAEnB,MAAI,gBAA0C;AAE9C,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAW;AACT,eAAO;AAAA,MACT;AAAA,MACA,SAASzI,IAAiB;AACxB,cAAM,cAAc,+CAAe;AACnC,wBAAgBA;AAIhB,YAAI,iBAAgBA,MAAA,gBAAAA,GAAG,wBAAuB;AAC5C,kCAAwB,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,eAAe;AACb,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAIF,OAAK,gBAAgB,MAAM,+BAA+B,IAAI;AAE9D,QAAM,SAAS,UAAU,kBAAkB;AAAA,IACzC;AAAA,IACA;AAAA,IAAA,KACAsH;AAAAA,EAAA,CACD;AAED,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA,CACT;AAED,SAAO,MAAM,SAAS;AACtB,UAAQ,IAAI,KAAK,KAAK,KAAO,MAAM;AAEnC,SAAO,oBAAoB,MAAM;AAC/B,UAAM,WAAW;AACjB,UAAM,YAAY;AAClB,UAAM,YAAY;AAElB,WAAO,EAAE,WAAW,UAAU,UAAA;AAAA,EAChC;AAEA,SAAO,WAAW,MAAM;AACtB,UAAMmB,UAAS,QAAQ,IAAI,KAAK,KAAK,GAAK;AAC1C,QAAIA,SAAQ;AACVA,cAAO,QAAA;AACP,cAAQ,OAAO,KAAK,KAAK,GAAK;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,EAAE,OAAA;AACX;AAGA,SAAS,wBAAwB,MAAM;AACrC,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,KAAK,uBAAuB,KAAK,EAAE;AAC7C,YAAU,MAAM,QAAQ;AACxB,YAAU,MAAM,SAAS;AACzB,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,gBAAgB;AAChC,YAAU,MAAM,WAAW;AAE3B,6BAA2B,SAAS;AAEpC,MAAI;AAEJ,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAW;AACT,eAAO;AAAA,MACT;AAAA,MACA,SAASzI,IAA4B;AACnC,wBAAgBA;AAChB,YAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,iBAAO,WAAWA,EAAC;AAAA,QACrB;AAAA,MACF;AAAA,MACA,WAAW;AAAA;AAAA,MACX,eAAe;AACb,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,SAAS,UAAU,mBAAmB;AAAA,IAC1C;AAAA,IACA;AAAA,EAAA,CACD;AAED,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA,CACT;AAED,SAAO,MAAM,SAAS;AACtB,UAAQ,IAAI,KAAK,KAAK,KAAO,MAAM;AAEnC,SAAO,oBAAoB,MAAM;AAC/B,UAAM,WAAW;AACjB,UAAM,YAAY;AAElB,WAAO,EAAE,WAAW,SAAA;AAAA,EACtB;AAEA,SAAO,WAAW,MAAM;AACtB,UAAMyI,UAAS,QAAQ,IAAI,KAAK,KAAK,GAAK;AAC1C,QAAIA,SAAQ;AACVA,cAAO,QAAA;AACP,cAAQ,OAAO,KAAK,KAAK,GAAK;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,EAAE,OAAA;AACX;AAEA,MAAM,yCAAgE,IAAA;AAEtE,SAAS,2BAA2B,MAAqB;AACvD,UAAQ,KAAK,WAAW,CAAA,GACrB,OAAO,CAAC,WAAgB,UAAU,OAAO,cAAc,KAAK,EAC5D,IAAI,CAAC,WAAgB,OAAO,IAAI;AACrC;AAEA,SAAS,gCAAgC,iBAAiB,QAAQ;AAChE,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EAAA;AAEJ;AAEA,SAAS,wCACP,MACA,cACS;;AACT,QAAM,aAAY,MAAAxI,MAAA,6BAAM,gBAAN,gBAAAA,IAAmB,aAAnB,mBAA6B;AAC/C,MAAI,CAAC,aAAa,CAAC,MAAM,QAAQ,YAAY,GAAG;AAC9C,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,IAAI,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,WAAgB,iCAAQ,IAAI,CAAC;AACnF,QAAM,gCAAgC,MAAM,KAAK,WAAW,EAAE;AAAA,IAAK,CAAC,SAClE,OAAO,SAAS,YAAY,KAAK,WAAW,yBAAyB;AAAA,EAAA;AAGvE,MAAI,CAAC,+BAA+B;AAClC,WAAO;AAAA,EACT;AAEA,QAAM,wBAAwB,OAAO,OAAO,SAAS,EAAE;AAAA,IAAO,CAAC,UAC7D,YAAY,IAAI,MAAM,IAAI,KAAK,MAAM;AAAA,EAAA;AAGvC,QAAM,2BAA2B,sBAAsB;AAAA,IAAQ,CAAC,UAC9D,MAAM,yBACF,CAAC,CAAC,CAAC,MAAM,YAAY,KAAK,IAC1B,CAAC,CAAC,CAAC,MAAM,UAAU;AAAA,EAAA;AAGzB,QAAM,SACJ,yBAAyB,KAAK,OAAO,KACrC,yBAAyB,WAAW,aAAa;AAGnD,SAAO;AACT;AAEA,SAAS,wBACP,cACA,kBACA,oBACW;AACX,QAAM,kCAAkB,IAAA;AACxB,mBAAiB,QAAQ,CAAC,MAAM,UAAU;AACxC,QAAI,QAAQ,aAAa,QAAQ;AAC/B,kBAAY,IAAI,MAAM,aAAa,KAAK,CAAC;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,QAAM,uBAAuB,IAAI,IAAI,kBAAkB;AACvD,QAAM,iBAA4B,CAAA;AAClC,aAAW,QAAQ,oBAAoB;AACrC,QAAI,YAAY,IAAI,IAAI,GAAG;AACzB,qBAAe,KAAK,YAAY,IAAI,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AAQA,aAAW,QAAQ,kBAAkB;AACnC,QAAI,CAAC,qBAAqB,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC5D,qBAAe,KAAK,YAAY,IAAI,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,wCACP,cACA,oBACW;AACX,QAAM,iBAA4B,CAAA;AAClC,MAAI,mBAAmB;AAEvB,aAAW,cAAc,oBAAoB;AAC3C,QAAI,WAAW,WAAW,yBAAyB,GAAG;AACpD,YAAM,iBAAiB,WAAW,QAAQ,2BAA2B,EAAE,KAAK;AAC5E,qBAAe,KAAK,gCAAgC,cAAc,CAAC;AACnE;AAAA,IACF;AAEA,QAAI,mBAAmB,aAAa,QAAQ;AAC1C,qBAAe,KAAK,aAAa,gBAAgB,CAAC;AAClD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kCAAkC,MAAW,MAAW;;AAC/D,MAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,KAAK,cAAc,GAAG;AAChD;AAAA,EACF;AAEA,QAAM,qBAAqB,2BAA2B,IAAI;AAE1D,MAAI,mBAAmB,WAAW,GAAG;AACnC;AAAA,EACF;AAEA,QAAM,oBAAmBA,MAAA,KAAK,eAAL,gBAAAA,IAAkB;AAE3C,MAAI,MAAM,QAAQ,gBAAgB,KAAK,iBAAiB,SAAS,GAAG;AAClE,UAAM,iBAAiB;AAAA,MACrB,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IAAA;AAEF,SAAK,iBAAiB;AACtB;AAAA,EACF;AAEA,QAAM,sBAAsB,mBAAmB;AAAA,IAAO,CAAC,SACrD,KAAK,WAAW,yBAAyB;AAAA,EAAA,EACzC;AAEF,MACE,sBAAsB,KACtB,KAAK,eAAe,WAAW,mBAAmB,SAAS,qBAC3D;AACA,UAAM,iBAAiB;AAAA,MACrB,KAAK;AAAA,MACL;AAAA,IAAA;AAEF,SAAK,iBAAiB;AAAA,EACxB;AACF;AAEA,SAAS,+BACP,QACA,YACA,WACM;AAON,MAAI,WAAW;AACX,WAAe,oBAAoB;AACrC,WAAO,cAAc,CAAC,UACpB,CAAC,SAAS,KAAK,sCAAsC,CAAC;AAAA,EAC1D,OAAO;AACL,WAAQ,OAAe;AACvB,WAAQ,OAAe;AAAA,EACzB;AACF;AAGA,MAAM,yBAAyB,MAAM;;AACnC,OAAIc,MAAAA,MAAAA,MAAI,OAAJA,gBAAAA,IAAQ,aAARA,mBAAkB,kBAAkB;AACtCA,UAAI,GAAG,SAAS,iBAAiB,iCAAiC,MAAM;AAGtE,4BAAsB,MAAM;;AAC1B,cAAM,iBAAeA,MAAAA,OAAAA,MAAAA,MAAI,OAAJA,gBAAAA,IAAQ,aAARA,gBAAAA,IAAkB,oBAAlBA,wBAAAA,KAAoC,8BAA6B;AAEtF,aAAIA,WAAI,UAAJA,mBAAW,OAAO;AACpB,qBAAW,QAAQA,MAAI,MAAM,OAAO;AAClC,kBAAM,cAAasG,MAAA,KAAK,YAAL,gBAAAA,IAAc;AAAA,cAC/B,CAACS,OAAWA,GAAE,SAAS;AAAA;AAEzB,gBAAI,CAAC,WAAY;AACjB,kBAAM,YAAa,WAAmB;AACtC,2CAA+B,YAAY,WAAW,YAAY;AAAA,UACpE;AAAA,QACF;AAEA,8BAAsB,MAAM;;AAC1B,qBAAW,UAAU,SAAS,iBAAiB,gBAAgB,GAAG;AAChE,kBAAM,OAAO,OAAO,cAAc,8BAA8B;AAChE,gBAAI,CAAC,KAAM;AACX,kBAAM,SAAS,OAAO,aAAa,cAAc;AACjD,kBAAM,QAAO/G,MAAAA,MAAI,UAAJA,gBAAAA,IAAW,YAAY;AACpC,gBAAI,CAAC,KAAM;AACX,kBAAM,OAAiB,CAAA;AACvB,gBAAI,WAAW;AACf,uBAAW+G,MAAK,KAAK,WAAW,CAAA,GAAI;AAClC,kBAAIA,GAAE,SAAS,sCAAsC;AACnD,qBAAK,KAAK,aAAa;AAAA,cACzB,WAAWA,GAAE,SAAS,SAAS;AAC7B,qBAAK,KAAK,MAAM;AAAA,cAClB,WAAWA,GAAE,SAAS,UAAUA,GAAE,SAAS,2BAA2B;AACpE,qBAAK,KAAK,eAAe,gBAAgB,MAAM;AAC/C,2BAAW;AAAA,cACb,OAAO;AACL,qBAAK,KAAK,MAAM;AAAA,cAClB;AAAA,YACF;AACA,gBAAI,UAAU;AACZ,mBAAK,MAAM,mBAAmB,KAAK,KAAK,GAAG;AAAA,YAC7C;AAAA,UACF;AAAA,QACF,CAAC;AAED/G,oBAAI,WAAJA,mBAAY,SAAS,MAAM;AAE3B,iBAAS,cAAc,IAAI,YAAY,gCAAgC;AAAA,UACrE,QAAQ,EAAE,aAAA;AAAA,QAAa,CACxB,CAAC;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAGA,KAAIA,WAAI,OAAJA,mBAAQ,UAAU;AACpB,yBAAA;AACF,OAAO;AAEL,QAAM,gBAAgB,YAAY,MAAM;;AACtC,SAAIA,MAAAA,MAAI,OAAJA,gBAAAA,IAAQ,UAAU;AACpB,6BAAA;AACA,oBAAc,aAAa;AAAA,IAC7B;AAAA,EACF,GAAG,GAAG;AACR;AAGA,SAAS,qBAAqB,MAAW;AACvC,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,KAAK,oBAAoB,KAAK,EAAE;AAC1C,YAAU,MAAM,QAAQ;AACxB,YAAU,MAAM,SAAS;AACzB,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,gBAAgB;AAChC,YAAU,MAAM,WAAW;AAE3B,6BAA2B,SAAS;AAEpC,MAAI;AAEJ,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAW;AACT,eAAO;AAAA,MACT;AAAA,MACA,SAASf,IAA6E;AACpF,wBAAgBA;AAChB,YAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,iBAAO,WAAWA,EAAC;AAAA,QACrB;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,eAAe;AACb,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,SAAS,UAAU,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,IAAA,KACAsH;AAAAA,IAAA,KACAvG;AAAAA,IACA,WAAW,OAAO,cAAc,eAAe,UAAU;AAAA,EAAA,CAC1D;AAED,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA,CACT;AAED,SAAO,MAAM,SAAS;AACtB,UAAQ,IAAI,KAAK,KAAK,KAAO,MAAM;AAEnC,SAAO,oBAAoB,MAAM;AAC/B,UAAM,WAAW;AACjB,UAAM,YAAY;AAElB,WAAO,EAAE,WAAW,SAAA;AAAA,EACtB;AAEA,SAAO,WAAW,MAAM;AACtB,UAAM0H,UAAS,QAAQ,IAAI,KAAK,KAAK,GAAK;AAC1C,QAAIA,SAAQ;AACVA,cAAO,QAAA;AACP,cAAQ,OAAO,KAAK,KAAK,GAAK;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,EAAE,OAAA;AACX;AAIA,SAAS,oCACP,MACA,YACA,WACA,eAAyC,CAAA,GACzC;;AACA,QAAM,qBAAqB,0BAA0B,UAAU;AAE/D,MAAI,YAAgC;AAEpC,QAAM,qBAAqB,SAAS;AAAA,IAClC;AAAA,EAAA;AAEF,aAAW,MAAM,oBAAoB;AACnC,QAAI,GAAG,SAAS,WAAW,GAAG;AAC5B,kBAAY;AACZ;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,WAAW;AACd,UAAM,aAAa,OAAO,wCAAwC;AAClE,gBAAY,SAAS,cAAc,KAAK;AACxC,cAAU,KAAK,4BAA4B,UAAU;AACrD,cAAU,MAAM,QAAQ;AACxB,cAAU,MAAM,SAAS;AACzB,cAAU,MAAM,UAAU;AAC1B,cAAU,MAAM,gBAAgB;AAChC,cAAU,MAAM,WAAW;AAC3B,+BAA2B,SAAS;AAAA,EACtC;AAKA,QAAM,mBAAmB,EAAE,SAAS,OAAA;AAClC,YAAkB,kBAAkB;AAEtC,QAAM,iBAAiB,KAAK,UAAU,QAAQ,oBAAoB;AAAA,IAChE,SAAS;AAAA,IACT,gBAAgB;AAAA,EAAA,CACjB;AACD,iBAAe,QAAQ,gCAAgC,UAAU;AACjE,iBAAe,OAAO;AACtB,iBAAe,SAAS;AACxB,iBAAe,cAAc,MAAM,CAAC,GAAG,EAAE;AACzC,iBAAe,iBAAiB,MAAM,eAAe;AAErD,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA,qBAAqB,UAAU,YAAA,CAAa;AAAA,IAC5C;AAAA,IACA;AAAA,MACE,WAAW;;AAET,cAAM,UAAU,OAAO,aAAYxI,MAAA,UAAkB,oBAAlB,gBAAAA,IAAmC;AACtE,gBAAO,mCAAS,UAAS;AAAA,MAC3B;AAAA,MACA,SAASD,IAAW;;AAElB,cAAM,UAAU,OAAO,aAAYC,MAAA,UAAkB,oBAAlB,gBAAAA,IAAmC;AACtE,YAAI,SAAS;AACX,kBAAQ,QAAQD,MAAK;AAErB,kBAAQ,cAAc,IAAI,YAAY,2CAA2C;AAAA,YAC/E,QAAQ,EAAE,OAAOA,MAAK,GAAA;AAAA,UAAG,CAC1B,CAAC;AAAA,QACJ,OAAO;AACH,iBAAe,gBAAgBA,MAAK;AAAA,QACxC;AAEA,YAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,iBAAO,WAAWA,MAAK,EAAE;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,eAAe;AACb,eAAO;AAAA,MACT;AAAA,MACA,GAAI,cAAc,WAAW;AAAA,QAC3B,eAAe;AACb,iBAAO;AAAA,QACT;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEF,SAAO,iBAAiB;AAGxB,QAAM,eAAae,YAAAA,MAAAA,MAAI,OAAJA,gBAAAA,IAAQ,aAARA,mBAAkB,oBAAlBA,4BAAoC,uCAAsC;AAE7F,QAAM,YAAY,cAAc,UAAU,sCAAsC;AAEhF,QAAM,SAAS,UAAU,wBAAwB;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,aAAa,eAAe;AAAA,IACzC,aAAa;AAAA,IACb;AAAA,IACA;AAAA,EAAA,CACD;AAED,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA,CACT;AAED,SAAO,MAAM,SAAS;AACtB,QAAM,SAAS,UAAU;AACzB,UAAQ,IAAI,QAAQ,MAAM;AAE1B,MAAI,WAAW;AACb,cAAU,MAAM,YAAY,GAAG,mCAAmC;AAAA,EACpE;AAEA,MAAI,cAAc,SAAS;AACzB;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO,cAAc,eAAe,UAAU;AAAA,IAAA;AAAA,EAElD;AAEA,QAAM,aAAa,uBAAuB,QAAQ,MAAM;AACtD,YAAQ,OAAO,MAAM;AAAA,EACvB,CAAC;AAED,SAAO,WAAW,MAAM;AACtB,eAAA;AAAA,EACF;AAKA,QAAM,WAAW;AACjB,QAAM,YAAY,cAAc,UAAU,SAAY;AAEtD,SAAO,EAAE,QAAQ,UAAU,UAAA;AAC7B;AAEAA,MAAI,kBAAkB;AAAA,EACpB,MAAM;AAAA,EAEJ,mBAAmB;AACnB,WAAO;AAAA;AAAA,MAEL,iBAAiB,MAAM;AACrB,eAAO,qBAAqB,IAAI;AAAA,MAClC;AAAA;AAAA,MAEA,kBAAkB,MAAM;AACtB,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA;AAAA,MAEA,cAAc,MAAM;AAClB,eAAO,uBAAuB,IAAI;AAAA,MACpC;AAAA;AAAA,MAEA,MAAM,MAAM,MAAW;AACrB,YAAI,CAAC,qBAAqB;AAExB,gBAAM,SAAS,MAAM;AAAA;AAAA,YAA0B;AAAA,UAAA;AAC/C,gCAAsB,OAAO;AAAA,QAC/B;AAEA,cAAM,mBAAmB,KAAK,eAAe;AAG7C,cAAM,WAAW,mBAAmB,MAAM;AACxC,kCAAwB,IAAI;AAAA,QAC9B,IAAI;AAEJ,cAAM,OAAqF;AAAA,UACzF;AAAA,QAAA;AAEF,YAAI,kBAAkB;AACpB,eAAK,oBAAoB,OAAO,cAAmB;;AACjD,gBAAI,EAAC,uCAAW,SAAQ,EAAC,uCAAW,QAAQ;AAG5C,kBAAM,YAAmB,CAAA;AACzB,gBAAI,KAAK,SAAS;AAChB,yBAAW,UAAU,KAAK,SAAS;AACjC,oBAAI,GAACd,MAAA,iCAAQ,UAAR,gBAAAA,IAAe,QAAQ;AAC5B,2BAAW,UAAU,OAAO,OAAO;AACjC,wBAAM,SAAQ,UAAK,UAAL,mBAAY;AAC1B,sBAAI,CAAC,MAAO;AACZ,wBAAM,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,KAAI,WAAM,QAAN,+BAAY;AAChE,sBAAI,CAAC,KAAM;AACX,wBAAM,cAAaoH,OAAA,UAAK,UAAL,mBAAY,gBAAZ,gBAAAA,IAAA,SAA0B,KAAK;AAClD,uBAAI,yCAAY,gBAAe,2BAA2B;AACxD,8BAAU,KAAK,UAAU;AAAA,kBAC3B;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,UAAU,WAAW,EAAG;AAG5B,uBAAW,YAAY,WAAW;AAChC,uBAAS,mBAAmB,SAAS,mBAAmB,KAAK;AAAA,YAC/D;AACA,kBAAM,oCAAoB,IAAA;AAC1B,uBAAW,YAAY,WAAW;AAChC,4BAAc,IAAI,UAAU,SAAS,eAAe;AAAA,YACtD;AAGA,gBAAI;AACJ,gBAAI;AACF,oBAAM,WAAW,MAAMC,MAAI;AAAA,gBACzB,4BAA4B,mBAAmB,UAAU,IAAI,CAAC;AAAA,gBAC9D,EAAE,QAAQ,MAAA;AAAA,cAAM;AAElB,kBAAI,qCAAU,IAAI;AAChB,sBAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,2BAAW;AAAA,kBACT,MAAM,UAAU;AAAA,kBAChB,QAAO,6BAAM,UAAS;AAAA,kBACtB,WAAU,6BAAM,cAAa;AAAA,gBAAA;AAAA,cAEjC,OAAO;AACL,2BAAW,EAAE,MAAM,UAAU,MAAM,OAAO,yBAAyB,UAAU,GAAA;AAAA,cAC/E;AAAA,YACF,QAAQ;AACN,yBAAW,EAAE,MAAM,UAAU,MAAM,OAAO,yBAAyB,UAAU,GAAA;AAAA,YAC/E;AAEA,uBAAW,YAAY,WAAW;AAChC,kBAAI,SAAS,oBAAoB,cAAc,IAAI,QAAQ,GAAG;AAC5D;AAAA,cACF;AACA,kBAAI,OAAO,SAAS,iBAAiB,YAAY;AAC/C,yBAAS,aAAa,QAAQ;AAAA,cAChC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,eAAO,oBAAoB,MAAM,SAAS,MAAM,QAAQ;AAAA,MAC1D;AAAA;AAAA;AAAA,MAGA,wBAAwB,MAAM;AAC5B,cAAM,UAAU,mBAAmB,IAAI,GAAG,KAAK,UAAU,OAAO,KAAK,CAAA;AACrE,eAAO,oCAAoC,MAAM,QAAQ,SAAS,OAAO;AAAA,MAC3E;AAAA;AAAA;AAAA,MAGA,6BAA6B,MAAM;AACjC,cAAM,UAAU,mBAAmB,IAAI,GAAG,KAAK,UAAU,OAAO,KAAK,CAAA;AACrE,eAAO,oCAAoC,MAAM,QAAQ,cAAc,OAAO;AAAA,MAChF;AAAA;AAAA;AAAA,MAGA,yBAAyB,MAAM;AAC7B,cAAM,UAAU,mBAAmB,IAAI,GAAG,KAAK,UAAU,OAAO,KAAK,CAAA;AACrE,eAAO,oCAAoC,MAAM,QAAQ,UAAU,OAAO;AAAA,MAC5E;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,UAAU,UAAU;;AAC9C,UAAM,aAAa,SAAS;AAC5B,UAAM,SAAS,EAAE,IAAGrH,MAAA,SAAS,UAAT,gBAAAA,IAAgB,UAAU,IAAG,cAAS,UAAT,mBAAgB,SAAA;AACjE,QAAI,wBAAwB;AAG5B,eAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,MAAM,GAAG;AAE1D,UAAI,MAAM,QAAQ,QAAQ,KAAK,OAAO,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,EAAE,WAAW,oBAAoB,GAAG;AAE9G,cAAM,UAAU,SAAS,CAAC,KAAK,CAAA;AAC/B,2BAAmB,IAAI,GAAG,SAAS,IAAI,IAAI,SAAS,IAAI,OAAO;AAC/D,gCAAwB;AAAA,MAC1B;AAAA,IACF;AAEA,QAAI,uBAAuB;AACzB,YAAM,sBAAsB,SAAS,UAAU;AAC/C,YAAM,oBAAoB,SAAS,UAAU;AAE7C,eAAS,UAAU,cAAc,SAAU,YAAiB;AAC1D,mEAAqB,MAAM,MAAM;AAEjC,mBAAW,aAAa,WAAW,cAAc,CAAA;AACjD,cAAM,YAAY,2BAA2B,IAAI;AACjD,mBAAW,WAAW,gCAAgC,IAAI;AAAA,MAC5D;AAEA,eAAS,UAAU,YAAY,SAAU,MAAW;AAClD,0CAAkC,MAAM,IAAI;AAE5C,cAAM,eAAe,wCAAwC,OAAM,6BAAM,mBAAkB,CAAA,CAAE;AAE7F,YAAI,cAAc;AAChB,eAAK,iBAAiB,CAAC,GAAI,KAAK,kBAAkB,CAAA,GAAK,IAAI;AAAA,QAC7D;AAEA,eAAO,uDAAmB,MAAM,MAAM;AAAA,MACxC;AAAA,IACF;AAGA,QAAIoI,wBAAsB,SAAS,UAAU,GAAG;AAC9C,YAAM,wBAAwB,SAAS,UAAU;AAEjD,eAAS,UAAU,gBAAgB,WAAY;AAC7C,uEAAuB,MAAM,MAAM;AAGnC,cAAM,uBAAuB,eAAe,+BACxC,CAAC,oBAAiC,4BAA4B,MAAM,eAAe,IACnF;AAGJ,cAAM,eAAe,yBAAyB,MAAM,yBAAyB,oBAAoB;AACjG,+BAAuB,MAAM,YAAY;AAAA,MAC3C;AAAA,IACF;AAGA,QAAI,SAAS,SAAS,gCAAgC;AACpD,YAAM,gBAAgB,SAAS,UAAU;AAEzC,eAAS,UAAU,gBAAgB,WAAY;AAC7C,uDAAe,MAAM,MAAM;AAG3B,gCAAwB,IAAI;AAAA,MAC9B;AAAA,IACF;AAGA,QAAI,SAAS,SAAS,2BAA2B;AAC/C,YAAM,gBAAgB,SAAS,UAAU;AAEzC,eAAS,UAAU,gBAAgB,WAAY;AAC7C,uDAAe,MAAM,MAAM;AAG3B,6BAAqB,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACF,CAAC;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
\ No newline at end of file