sygnal 5.4.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +646 -0
- package/README.md +24 -9
- package/dist/astro/client.cjs.js +16 -9
- package/dist/astro/client.cjs.js.map +1 -1
- package/dist/astro/client.mjs +16 -9
- package/dist/astro/client.mjs.map +1 -1
- package/dist/astro/index.cjs.js +362 -91
- package/dist/astro/index.cjs.js.map +1 -1
- package/dist/astro/index.mjs +362 -92
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/server.cjs.js +3396 -165
- package/dist/astro/server.cjs.js.map +1 -1
- package/dist/astro/server.mjs +3396 -165
- package/dist/astro/server.mjs.map +1 -1
- package/dist/devtools.cjs.js +1431 -0
- package/dist/devtools.cjs.js.map +1 -0
- package/dist/devtools.esm.js +1419 -0
- package/dist/devtools.esm.js.map +1 -0
- package/dist/diagnostics.cjs.js +3032 -296
- package/dist/diagnostics.cjs.js.map +1 -1
- package/dist/diagnostics.esm.js +3032 -296
- package/dist/diagnostics.esm.js.map +1 -1
- package/dist/element.cjs.js +230 -0
- package/dist/element.cjs.js.map +1 -0
- package/dist/element.esm.js +228 -0
- package/dist/element.esm.js.map +1 -0
- package/dist/guide/accessibility.md +257 -0
- package/dist/guide/adapters.md +221 -0
- package/dist/guide/behaviors.md +312 -0
- package/dist/guide/browser-sources.md +203 -0
- package/dist/guide/drag-and-drop.md +342 -0
- package/dist/guide/element-commands.md +306 -0
- package/dist/guide/error-boundaries.md +169 -0
- package/dist/guide/forms-reference.md +381 -0
- package/dist/guide/forms.md +250 -0
- package/dist/guide/http.md +299 -0
- package/dist/guide/inputs.md +173 -0
- package/dist/guide/persistence.md +245 -0
- package/dist/guide/recipes/carousel.md +155 -0
- package/dist/guide/recipes/charts.md +177 -0
- package/dist/guide/recipes/code-editor.md +135 -0
- package/dist/guide/recipes/data-grid.md +155 -0
- package/dist/guide/recipes/data-table.md +196 -0
- package/dist/guide/recipes/i18n.md +222 -0
- package/dist/guide/recipes/icons.md +115 -0
- package/dist/guide/recipes/overview.md +33 -0
- package/dist/guide/recipes/rich-text.md +154 -0
- package/dist/guide/resources.md +471 -0
- package/dist/guide/ssr.md +255 -0
- package/dist/guide/timers.md +178 -0
- package/dist/guide/ui/accordion.md +93 -0
- package/dist/guide/ui/combobox.md +144 -0
- package/dist/guide/ui/dialog.md +124 -0
- package/dist/guide/ui/disclosure.md +60 -0
- package/dist/guide/ui/menu.md +125 -0
- package/dist/guide/ui/overview.md +166 -0
- package/dist/guide/ui/popover.md +101 -0
- package/dist/guide/ui/select.md +114 -0
- package/dist/guide/ui/tabs.md +161 -0
- package/dist/guide/ui/toaster.md +152 -0
- package/dist/guide/ui/tooltip.md +103 -0
- package/dist/guide/undo.md +178 -0
- package/dist/guide/virtual-collections.md +183 -0
- package/dist/guide/web-components.md +179 -0
- package/dist/guide/widgets.md +217 -0
- package/dist/index.cjs.js +13178 -5769
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2908 -276
- package/dist/index.esm.js +13149 -5779
- package/dist/index.esm.js.map +1 -1
- package/dist/jsx-dev-runtime.cjs.js +26 -334
- package/dist/jsx-dev-runtime.cjs.js.map +1 -1
- package/dist/jsx-dev-runtime.esm.js +19 -327
- package/dist/jsx-dev-runtime.esm.js.map +1 -1
- package/dist/jsx-runtime.cjs.js +26 -334
- package/dist/jsx-runtime.cjs.js.map +1 -1
- package/dist/jsx-runtime.esm.js +19 -327
- package/dist/jsx-runtime.esm.js.map +1 -1
- package/dist/jsx.cjs.js +10 -314
- package/dist/jsx.cjs.js.map +1 -1
- package/dist/jsx.esm.js +8 -315
- package/dist/jsx.esm.js.map +1 -1
- package/dist/react.cjs.js +117 -0
- package/dist/react.cjs.js.map +1 -0
- package/dist/react.esm.js +115 -0
- package/dist/react.esm.js.map +1 -0
- package/dist/shims/globalthis.cjs +20 -0
- package/dist/sygnal.min.js +1 -1
- package/dist/sygnal.min.js.map +1 -1
- package/dist/ui-combobox.cjs.js +169 -0
- package/dist/ui-combobox.cjs.js.map +1 -0
- package/dist/ui-combobox.esm.js +148 -0
- package/dist/ui-combobox.esm.js.map +1 -0
- package/dist/ui-menu.cjs.js +87 -0
- package/dist/ui-menu.cjs.js.map +1 -0
- package/dist/ui-menu.esm.js +66 -0
- package/dist/ui-menu.esm.js.map +1 -0
- package/dist/ui-select.cjs.js +104 -0
- package/dist/ui-select.cjs.js.map +1 -0
- package/dist/ui-select.esm.js +83 -0
- package/dist/ui-select.esm.js.map +1 -0
- package/dist/ui.cjs.js +738 -0
- package/dist/ui.cjs.js.map +1 -0
- package/dist/ui.esm.js +727 -0
- package/dist/ui.esm.js.map +1 -0
- package/dist/vike/ClientOnly.cjs.js +4 -14
- package/dist/vike/ClientOnly.cjs.js.map +1 -1
- package/dist/vike/ClientOnly.mjs +4 -14
- package/dist/vike/ClientOnly.mjs.map +1 -1
- package/dist/vike/{+config.js → config/+config.js} +9 -1
- package/dist/vike/config/+config.js.map +1 -0
- package/dist/vike/config/package.json +6 -0
- package/dist/vike/onRenderClient.cjs.js +165 -95
- package/dist/vike/onRenderClient.cjs.js.map +1 -1
- package/dist/vike/onRenderClient.mjs +165 -95
- package/dist/vike/onRenderClient.mjs.map +1 -1
- package/dist/vike/onRenderHtml.cjs.js +59 -24
- package/dist/vike/onRenderHtml.cjs.js.map +1 -1
- package/dist/vike/onRenderHtml.mjs +60 -25
- package/dist/vike/onRenderHtml.mjs.map +1 -1
- package/dist/vite/plugin.cjs.js +323 -88
- package/dist/vite/plugin.cjs.js.map +1 -1
- package/dist/vite/plugin.mjs +323 -89
- package/dist/vite/plugin.mjs.map +1 -1
- package/dist/zag.cjs.js +408 -0
- package/dist/zag.cjs.js.map +1 -0
- package/dist/zag.esm.js +405 -0
- package/dist/zag.esm.js.map +1 -0
- package/llms.txt +166 -103
- package/package.json +98 -14
- package/src/astro/client.ts +27 -16
- package/src/astro/index.d.ts +24 -0
- package/src/astro/index.ts +69 -3
- package/src/astro/server.ts +8 -2
- package/src/collection.ts +6 -93
- package/src/core/actions.ts +134 -0
- package/src/core/cell.ts +202 -0
- package/src/core/debug.ts +23 -0
- package/src/core/define.ts +242 -0
- package/src/core/hooks.ts +314 -0
- package/src/core/hosts/collection.ts +325 -0
- package/src/core/hosts/switchable.ts +146 -0
- package/src/core/instance.ts +592 -0
- package/src/core/markers/clientonly.ts +13 -0
- package/src/core/markers/lazy.ts +40 -0
- package/src/core/markers/portal.ts +96 -0
- package/src/core/markers/suspense.ts +41 -0
- package/src/core/markers/transition.ts +70 -0
- package/src/core/registry.ts +25 -0
- package/src/core/runtime.ts +573 -0
- package/src/core/statics.ts +104 -0
- package/src/core/teardown.ts +60 -0
- package/src/core/view.ts +37 -0
- package/src/cycle/dom/DocumentDOMSource.ts +13 -8
- package/src/cycle/dom/ElementFinder.ts +7 -9
- package/src/cycle/dom/EventDelegator.ts +174 -223
- package/src/cycle/dom/IsolateModule.ts +65 -35
- package/src/cycle/dom/MainDOMSource.ts +9 -2
- package/src/cycle/dom/PriorityQueue.ts +4 -2
- package/src/cycle/dom/SymbolTree.ts +18 -47
- package/src/cycle/dom/classNameModule.ts +9 -7
- package/src/cycle/dom/controlledInputModule.ts +23 -6
- package/src/cycle/dom/enrichEventStream.ts +25 -47
- package/src/cycle/dom/fragment.ts +7 -0
- package/src/cycle/dom/isolate.ts +30 -27
- package/src/cycle/dom/makeDOMDriver.ts +115 -56
- package/src/cycle/dom/mockDOMSource.ts +21 -1
- package/src/cycle/dom/modules.ts +16 -3
- package/src/cycle/dom/propsModule.ts +65 -0
- package/src/cycle/dom/selectModule.ts +22 -17
- package/src/cycle/dom/snabbdom.ts +1 -6
- package/src/cycle/dom/thunk.ts +3 -0
- package/src/cycle/dom/utils.ts +98 -0
- package/src/cycle/dom/viewTransition.ts +43 -0
- package/src/cycle/state/StateSource.ts +19 -3
- package/src/cycle/state/objIsEqual.ts +50 -0
- package/src/cycle/state/types.ts +0 -10
- package/src/defineComponent.ts +34 -0
- package/src/devtools.d.ts +151 -0
- package/src/devtools.ts +34 -0
- package/src/element.d.ts +59 -0
- package/src/element.ts +235 -0
- package/src/extra/backoff.ts +9 -0
- package/src/extra/behaviors.ts +169 -0
- package/src/extra/browserSignals.ts +23 -0
- package/src/extra/browserSources.ts +326 -0
- package/src/extra/command.ts +3 -3
- package/src/extra/controls.ts +47 -0
- package/src/extra/copyAsTest.ts +286 -0
- package/src/extra/devtools.ts +101 -31
- package/src/extra/devtoolsActions.ts +379 -0
- package/src/extra/devtoolsHook.ts +9 -0
- package/src/extra/devtoolsNext.ts +83 -0
- package/src/extra/diagnostics/checks/actionLog.ts +108 -0
- package/src/extra/diagnostics/checks/behaviors.ts +49 -0
- package/src/extra/diagnostics/checks/browserSources.ts +96 -0
- package/src/extra/diagnostics/checks/collections.ts +1 -1
- package/src/extra/diagnostics/checks/controls.ts +148 -0
- package/src/extra/diagnostics/checks/dataset.ts +57 -0
- package/src/extra/diagnostics/checks/dom.ts +20 -11
- package/src/extra/diagnostics/checks/elementCommands.ts +175 -0
- package/src/extra/diagnostics/checks/events.ts +17 -2
- package/src/extra/diagnostics/checks/fetch.ts +135 -0
- package/src/extra/diagnostics/checks/forms.ts +163 -0
- package/src/extra/diagnostics/checks/index.ts +97 -4
- package/src/extra/diagnostics/checks/inspect.ts +140 -32
- package/src/extra/diagnostics/checks/next.ts +417 -0
- package/src/extra/diagnostics/checks/persist.ts +54 -0
- package/src/extra/diagnostics/checks/props.ts +10 -5
- package/src/extra/diagnostics/checks/public.d.ts +98 -7
- package/src/extra/diagnostics/checks/replies.ts +128 -0
- package/src/extra/diagnostics/checks/router.ts +100 -0
- package/src/extra/diagnostics/checks/rxjsHints.ts +1 -1
- package/src/extra/diagnostics/checks/shared.ts +86 -2
- package/src/extra/diagnostics/checks/shorthand.ts +115 -0
- package/src/extra/diagnostics/checks/sortable.ts +129 -0
- package/src/extra/diagnostics/checks/state.ts +100 -7
- package/src/extra/diagnostics/checks/statics.ts +48 -0
- package/src/extra/diagnostics/checks/strict.ts +10 -67
- package/src/extra/diagnostics/checks/timers.ts +80 -0
- package/src/extra/diagnostics/checks/viewTransitions.ts +47 -0
- package/src/extra/diagnostics/checks/virtual.ts +73 -0
- package/src/extra/diagnostics/checks/widgets.ts +109 -0
- package/src/extra/diagnostics/checks/wiring.ts +66 -10
- package/src/extra/diagnostics/codes.ts +268 -23
- package/src/extra/diagnostics/index.ts +34 -9
- package/src/extra/diagnostics/legacy.ts +17 -0
- package/src/extra/driverFactories.ts +83 -19
- package/src/extra/elementCommands.ts +53 -0
- package/src/extra/fetchDriver.ts +519 -0
- package/src/extra/focusWithin.ts +27 -0
- package/src/extra/form.ts +268 -0
- package/src/extra/formHelpers.ts +139 -0
- package/src/extra/head.ts +106 -0
- package/src/extra/hmr.ts +2 -3
- package/src/extra/owned.ts +24 -0
- package/src/extra/pager.ts +50 -0
- package/src/extra/persist.ts +133 -0
- package/src/extra/pwa.ts +1 -1
- package/src/extra/queryCache.ts +107 -0
- package/src/extra/reducers.ts +1 -1
- package/src/extra/reduxDevtools.ts +92 -0
- package/src/extra/replies.ts +54 -0
- package/src/extra/router.ts +323 -0
- package/src/extra/run.ts +90 -217
- package/src/extra/selection.ts +76 -0
- package/src/extra/socketDriver.ts +265 -0
- package/src/extra/sortable.ts +377 -0
- package/src/extra/ssr.ts +427 -160
- package/src/extra/standardSchema.ts +27 -0
- package/src/extra/testing.ts +2433 -175
- package/src/extra/timers.ts +95 -0
- package/src/extra/undo.ts +261 -0
- package/src/extra/viewTransitions.ts +38 -0
- package/src/extra/virtual.ts +513 -0
- package/src/extra/widget.ts +201 -0
- package/src/index.d.ts +2631 -117
- package/src/index.ts +25 -4
- package/src/jsx-runtime.ts +15 -1
- package/src/jsx.ts +2 -1
- package/src/lazy.ts +50 -7
- package/src/portal.ts +3 -1
- package/src/pragma/index.ts +256 -133
- package/src/react-peers.d.ts +5 -0
- package/src/react.d.ts +43 -0
- package/src/react.ts +110 -0
- package/src/shared.ts +48 -0
- package/src/slot.ts +1 -1
- package/src/suspense.ts +3 -1
- package/src/switchable.ts +6 -121
- package/src/transition.ts +3 -1
- package/src/ui/accordion.ts +64 -0
- package/src/ui/dialog.ts +129 -0
- package/src/ui/disclosure.ts +35 -0
- package/src/ui/popover.ts +45 -0
- package/src/ui/shared.ts +94 -0
- package/src/ui/tabs.ts +82 -0
- package/src/ui/toaster.ts +198 -0
- package/src/ui/tooltip.ts +70 -0
- package/src/ui/zag/combobox.ts +115 -0
- package/src/ui/zag/menu.ts +40 -0
- package/src/ui/zag/select.ts +54 -0
- package/src/ui/zag/shared.ts +43 -0
- package/src/ui-combobox.d.ts +20 -0
- package/src/ui-combobox.ts +6 -0
- package/src/ui-menu.d.ts +30 -0
- package/src/ui-menu.ts +6 -0
- package/src/ui-select.d.ts +17 -0
- package/src/ui-select.ts +6 -0
- package/src/ui-zag-types.d.ts +42 -0
- package/src/ui.d.ts +208 -0
- package/src/ui.ts +15 -0
- package/src/vike/+config.ts +9 -1
- package/src/vike/ClientOnly.ts +1 -1
- package/src/vike/onRenderClient.ts +144 -96
- package/src/vike/onRenderHtml.ts +69 -26
- package/src/vike/types.ts +7 -1
- package/src/vite/globalthis-shim.ts +18 -0
- package/src/vite/globalthis.ts +56 -0
- package/src/vite/plugin.d.ts +22 -3
- package/src/vite/plugin.ts +222 -24
- package/src/zag.d.ts +64 -0
- package/src/zag.ts +238 -0
- package/dist/vike/+config.cjs.js +0 -66
- package/dist/vike/+config.cjs.js.map +0 -1
- package/dist/vike/+config.js.map +0 -1
- package/src/component.ts +0 -2301
- package/src/cycle/isolate/index.ts +0 -196
- package/src/cycle/run/index.ts +0 -151
- package/src/cycle/run/internals.ts +0 -143
- package/src/cycle/state/Collection.ts +0 -184
- package/src/cycle/state/index.ts +0 -5
- package/src/cycle/state/pickCombine.ts +0 -201
- package/src/cycle/state/pickMerge.ts +0 -122
- package/src/cycle/state/withState.ts +0 -47
- package/src/pragma/fn.ts +0 -55
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs.js","sources":["../../src/extra/ssr.ts","../../src/astro/server.ts"],"sourcesContent":["/**\n * Server-Side Rendering utilities for Sygnal components.\n *\n * Renders Sygnal component trees to HTML strings without a browser DOM.\n * Handles sub-components, Collections, Suspense boundaries, and Portals.\n */\n\n// Void elements that must not have closing tags\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr',\n])\n\n// Characters that need escaping in HTML text and attribute values\nconst ESC_MAP: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n}\n\nfunction escapeHtml(str: string): string {\n return String(str).replace(/[&<>\"']/g, (ch) => ESC_MAP[ch])\n}\n\n/**\n * Convert a CSS property name from camelCase to kebab-case.\n * E.g. \"backgroundColor\" → \"background-color\"\n * Handles vendor prefixes: \"WebkitTransform\" → \"-webkit-transform\"\n */\nfunction camelToKebab(str: string): string {\n return str\n .replace(/^(Webkit|Moz|Ms|O)/, (m) => '-' + m.toLowerCase())\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n}\n\n/**\n * Serialize an inline style object to a CSS string.\n */\nfunction serializeStyle(style: Record<string, any>): string {\n const parts: string[] = []\n for (const key of Object.keys(style)) {\n const val = style[key]\n if (val == null || val === '') continue\n // Skip snabbdom's delayed/remove/destroy style hooks\n if (key === 'delayed' || key === 'remove' || key === 'destroy') continue\n const cssKey = camelToKebab(key)\n parts.push(`${cssKey}: ${val}`)\n }\n return parts.join('; ')\n}\n\nexport interface RenderToStringOptions {\n /** Initial state for the root component */\n state?: any\n /** Props to pass to the root component */\n props?: Record<string, any>\n /** Context from a parent (for nested rendering) */\n context?: Record<string, any>\n /**\n * Embed serialized state in a <script> tag for client hydration.\n * When true, appends `<script>window.__SYGNAL_STATE__=...</script>`.\n * When a string, uses that as the variable name instead.\n */\n hydrateState?: boolean | string\n}\n\n/**\n * Render a Sygnal component to an HTML string.\n *\n * Calls the component's view function with the provided (or initial) state,\n * recursively renders sub-components, and serializes the VNode tree to HTML.\n *\n * ```ts\n * import { renderToString } from 'sygnal'\n *\n * const html = renderToString(App, { state: { count: 0 } })\n * // → '<div><h1>Count: 0</h1></div>'\n * ```\n */\nexport function renderToString(\n componentDef: any,\n options: RenderToStringOptions = {}\n): string {\n const {state, props = {}, context = {}, hydrateState} = options\n\n const resolvedState = state !== undefined ? state : componentDef.initialState\n\n // Build context: merge parent context with component's own context definitions\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n // Call the view function\n let vnode: any\n try {\n vnode = componentDef({\n ...props,\n state: resolvedState,\n children: props.children || [],\n slots: props.slots || {},\n context: mergedContext,\n peers: {},\n }, resolvedState, mergedContext, {})\n } catch (err: any) {\n // Error boundary\n if (typeof componentDef.onError === 'function') {\n const name = componentDef.componentName || componentDef.name || 'Component'\n try {\n vnode = componentDef.onError(err, {componentName: name})\n } catch (_) {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Process special components in the VNode tree\n vnode = processSSRTree(vnode, mergedContext, resolvedState)\n\n // Serialize to HTML\n let html = vnodeToHtml(vnode)\n\n // Optionally embed state for hydration\n if (hydrateState && resolvedState != null) {\n const varName = typeof hydrateState === 'string' ? hydrateState : '__SYGNAL_STATE__'\n const serialized = escapeHtml(JSON.stringify(resolvedState))\n html += `<script>window.${varName}=${JSON.stringify(resolvedState)}</script>`\n }\n\n return html\n}\n\n/**\n * Walk the VNode tree and recursively render sub-components,\n * handle Suspense/Portal/Transition markers, and process Collections.\n */\nfunction processSSRTree(vnode: any, context: Record<string, any>, parentState?: any): any {\n if (!vnode) return vnode\n if (typeof vnode === 'string' || vnode.text != null) return vnode\n\n const sel = vnode.sel\n\n // Fragment: no selector, recurse into children\n if (!sel && vnode.children && Array.isArray(vnode.children)) {\n vnode.children = vnode.children\n .map((c: any) => processSSRTree(c, context, parentState))\n .filter((c: any) => c != null)\n return vnode\n }\n\n // Portal: render children inline (no target container on server)\n if (sel === 'portal') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-portal': ''}},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Transition: unwrap to child (no animation on server)\n if (sel === 'transition') {\n const children = vnode.children || []\n const child = children[0]\n if (!child) return null\n return processSSRTree(child, context, parentState)\n }\n\n // Suspense: render children (SSR always shows content, not fallback)\n if (sel === 'suspense') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-suspense': 'resolved'}},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // ClientOnly: render fallback during SSR, skip children (they need a browser)\n if (sel === 'clientonly') {\n const props = vnode.data?.props || {}\n const fallback = props.fallback\n if (fallback) {\n // fallback can be a VNode or a string\n return processSSRTree(fallback, context, parentState)\n }\n // No fallback — render an empty placeholder div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-clientonly': ''}},\n children: [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Slot: unwrap to children\n if (sel === 'slot') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Sub-component: render recursively\n const props = vnode.data?.props || {}\n if (props.sygnalOptions || typeof props.sygnalFactory === 'function') {\n return renderSubComponent(vnode, context, parentState)\n }\n\n // Collection: render each item\n if (sel === 'collection') {\n return renderCollection(vnode, context, parentState)\n }\n\n // Switchable: render the active component\n if (sel === 'switchable') {\n return renderSwitchable(vnode, context, parentState)\n }\n\n // Regular element: recurse into children\n if (vnode.children) {\n if (Array.isArray(vnode.children)) {\n if (vnode.children.length > 0) {\n vnode.children = vnode.children\n .map((c: any) => processSSRTree(c, context, parentState))\n .filter((c: any) => c != null)\n }\n } else if (vnode.children && typeof vnode.children === 'object') {\n // Single child object (text element)\n vnode.children = processSSRTree(vnode.children, context, parentState)\n }\n }\n\n return vnode\n}\n\n/**\n * Render a sub-component (identified by sygnalOptions or sygnalFactory in props).\n */\nfunction renderSubComponent(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {sygnalOptions, sygnalFactory, ...childProps} = props\n\n // Get the component definition (view function with static properties)\n let componentDef: any\n if (sygnalOptions) {\n componentDef = sygnalOptions.view\n // Copy static properties\n if (!componentDef.initialState && sygnalOptions.initialState) {\n componentDef = Object.assign(componentDef, {\n initialState: sygnalOptions.initialState,\n model: sygnalOptions.model,\n intent: sygnalOptions.intent,\n context: sygnalOptions.context,\n onError: sygnalOptions.onError,\n calculated: sygnalOptions.calculated,\n })\n }\n } else if (sygnalFactory && sygnalFactory.componentName) {\n // Factory-created component — we can't easily extract the view from an already-wrapped factory.\n // Return a placeholder.\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n if (!componentDef || typeof componentDef !== 'function') {\n // Can't render — return children or empty div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Determine child state via state lens\n let childState = componentDef.initialState\n const stateProp = childProps.state\n if (typeof stateProp === 'string' && parentState != null && parentState[stateProp] != null) {\n childState = parentState[stateProp]\n } else if (stateProp != null && typeof stateProp !== 'string') {\n // State passed directly\n childState = stateProp\n }\n\n // Build child context\n const childContext: Record<string, any> = {...context}\n const componentContext = componentDef.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && childState != null) {\n try {\n childContext[key] = contextFn(childState)\n } catch (_) {}\n }\n }\n\n // Extract slots from children\n const slots: Record<string, any[]> = {}\n const defaultSlotChildren: any[] = []\n const vnodeChildren = vnode.children || []\n for (const child of vnodeChildren) {\n if (child && child.sel === 'slot') {\n const slotName = child.data?.props?.name || 'default'\n if (!slots[slotName]) slots[slotName] = []\n const slotChildren = child.children || []\n slots[slotName].push(...slotChildren)\n } else {\n defaultSlotChildren.push(child)\n }\n }\n if (defaultSlotChildren.length > 0) {\n if (!slots.default) slots.default = []\n slots.default.push(...defaultSlotChildren)\n }\n\n // Call the view function\n let result: any\n try {\n result = componentDef({\n ...childProps,\n state: childState,\n children: slots.default || vnodeChildren,\n slots,\n context: childContext,\n peers: {},\n }, childState, childContext, {})\n } catch (err: any) {\n if (typeof componentDef.onError === 'function') {\n const name = componentDef.componentName || componentDef.name || 'Component'\n try {\n result = componentDef.onError(err, {componentName: name})\n } catch (_) {\n result = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n result = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!result) {\n result = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Recursively process the rendered sub-tree\n return processSSRTree(result, childContext, childState)\n}\n\n/**\n * Render a Collection by iterating over the state array.\n */\nfunction renderCollection(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {of: itemComponent, from, className} = props\n\n if (!itemComponent || !from || !parentState) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n const items = parentState[from]\n if (!Array.isArray(items)) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n const renderedItems = items.map((itemState: any, index: number) => {\n // Build context for this item\n const itemContext: Record<string, any> = {...context}\n const componentContext = itemComponent.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function') {\n try {\n itemContext[key] = contextFn(itemState)\n } catch (_) {}\n }\n }\n\n let itemVnode: any\n try {\n itemVnode = itemComponent({\n state: itemState,\n children: [],\n slots: {},\n context: itemContext,\n peers: {},\n }, itemState, itemContext, {})\n } catch (err: any) {\n if (typeof itemComponent.onError === 'function') {\n try {\n itemVnode = itemComponent.onError(err, {componentName: itemComponent.name || 'CollectionItem'})\n } catch (_) {\n itemVnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n itemVnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n return processSSRTree(itemVnode, itemContext, itemState)\n }).filter((v: any) => v != null)\n\n const containerData: any = {}\n if (className) {\n containerData.props = {className}\n }\n\n return {\n sel: 'div',\n data: containerData,\n children: renderedItems,\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n}\n\n/**\n * Render a Switchable by determining the active component from state.\n */\nfunction renderSwitchable(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {components, active, initial} = props\n\n if (!components) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Determine which component to render\n let activeName: string | undefined\n if (typeof active === 'string') {\n // Direct name or state property\n if (components[active]) {\n activeName = active\n } else if (parentState && typeof parentState[active] === 'string') {\n activeName = parentState[active]\n }\n }\n if (!activeName && initial) {\n activeName = initial\n }\n if (!activeName) {\n activeName = Object.keys(components)[0]\n }\n\n const activeComponent = components[activeName]\n if (!activeComponent || typeof activeComponent !== 'function') {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return renderToStringInternal(activeComponent, parentState, context)\n}\n\n/**\n * Internal helper: render a component def to a VNode (not HTML string).\n */\nfunction renderToStringInternal(componentDef: any, state: any, context: Record<string, any>): any {\n const resolvedState = state !== undefined ? state : componentDef.initialState\n\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n let vnode: any\n try {\n vnode = componentDef({\n state: resolvedState,\n children: [],\n slots: {},\n context: mergedContext,\n peers: {},\n }, resolvedState, mergedContext, {})\n } catch (err: any) {\n if (typeof componentDef.onError === 'function') {\n try {\n vnode = componentDef.onError(err, {componentName: componentDef.name || 'Component'})\n } catch (_) {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return processSSRTree(vnode, mergedContext, resolvedState)\n}\n\n/**\n * Serialize a VNode tree to an HTML string.\n */\nfunction vnodeToHtml(vnode: any): string {\n if (vnode == null) return ''\n\n // Text node\n if (typeof vnode === 'string') return escapeHtml(vnode)\n if (vnode.text != null && !vnode.sel) return escapeHtml(String(vnode.text))\n\n // VNode with text content and a selector\n const sel = vnode.sel\n if (!sel) {\n if (vnode.text != null) return escapeHtml(String(vnode.text))\n // Fragment: no selector, but has children — concatenate child HTML\n if (vnode.children && Array.isArray(vnode.children)) {\n return vnode.children.map((c: any) => vnodeToHtml(c)).join('')\n }\n return ''\n }\n\n // Parse selector: tag#id.class1.class2\n const {tag, id, selectorClasses} = parseSelector(sel)\n\n // Build attributes from VNode data\n const attrs = buildAttributes(vnode.data || {}, id, selectorClasses)\n\n // Opening tag\n let html = `<${tag}`\n for (const [key, val] of attrs) {\n if (val === true) {\n html += ` ${key}`\n } else if (val !== false && val != null) {\n html += ` ${key}=\"${escapeHtml(String(val))}\"`\n }\n }\n html += '>'\n\n // Void elements\n if (VOID_ELEMENTS.has(tag)) {\n return html\n }\n\n // If innerHTML is set via props, use it as raw content (no escaping)\n if (vnode.data?.props?.innerHTML != null) {\n html += String(vnode.data.props.innerHTML)\n html += `</${tag}>`\n return html\n }\n\n // Children — snabbdom uses `text` for single text children (even when\n // `children` holds a text element object). Prioritize `text` when set.\n if (vnode.text != null) {\n html += escapeHtml(String(vnode.text))\n } else if (vnode.children) {\n // children can be an array or a single text element object\n const kids = Array.isArray(vnode.children) ? vnode.children : [vnode.children]\n for (const child of kids) {\n html += vnodeToHtml(child)\n }\n }\n\n html += `</${tag}>`\n return html\n}\n\n/**\n * Parse a snabbdom selector string like \"div#myId.foo.bar\" into parts.\n */\nfunction parseSelector(sel: string): {tag: string; id: string | null; selectorClasses: string[]} {\n let tag = sel\n let id: string | null = null\n const selectorClasses: string[] = []\n\n // Extract id\n const hashIdx = sel.indexOf('#')\n if (hashIdx !== -1) {\n const rest = sel.slice(hashIdx + 1)\n const dotIdx = rest.indexOf('.')\n if (dotIdx !== -1) {\n id = rest.slice(0, dotIdx)\n tag = sel.slice(0, hashIdx)\n // Classes after #id\n const classStr = rest.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n } else {\n id = rest\n tag = sel.slice(0, hashIdx)\n }\n } else {\n // Extract classes from selector\n const dotIdx = sel.indexOf('.')\n if (dotIdx !== -1) {\n tag = sel.slice(0, dotIdx)\n const classStr = sel.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n }\n }\n\n if (!tag) tag = 'div'\n\n return {tag, id, selectorClasses}\n}\n\n/**\n * Build an ordered list of [attrName, attrValue] from VNode data.\n */\nfunction buildAttributes(\n data: any,\n selectorId: string | null,\n selectorClasses: string[]\n): Array<[string, any]> {\n const result: Array<[string, any]> = []\n const classNames: string[] = [...selectorClasses]\n\n // From data.props (DOM properties like className, htmlFor, etc.)\n if (data.props) {\n for (const [key, val] of Object.entries(data.props)) {\n if (key === 'className') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (key === 'htmlFor') {\n result.push(['for', val])\n } else if (key === 'innerHTML' || key === 'textContent') {\n // Skip — handled separately if needed\n } else if (key === 'sygnalOptions' || key === 'sygnalFactory') {\n // Internal — skip\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.attrs (HTML attributes)\n if (data.attrs) {\n for (const [key, val] of Object.entries(data.attrs)) {\n if (key === 'class') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.class (conditional class map: { active: true, disabled: false })\n if (data.class) {\n for (const [key, val] of Object.entries(data.class)) {\n if (val) classNames.push(key)\n }\n }\n\n // From data.dataset (data-* attributes)\n if (data.dataset) {\n for (const [key, val] of Object.entries(data.dataset)) {\n if (val != null) {\n result.push([`data-${camelToKebab(key)}`, val])\n }\n }\n }\n\n // ID (selector id takes precedence, then props/attrs)\n if (selectorId) {\n result.unshift(['id', selectorId])\n }\n\n // Class attribute\n if (classNames.length > 0) {\n const unique = [...new Set(classNames)]\n result.unshift(['class', unique.join(' ')])\n }\n\n // Style\n if (data.style && typeof data.style === 'object') {\n const styleStr = serializeStyle(data.style)\n if (styleStr) {\n result.push(['style', styleStr])\n }\n }\n\n return result\n}\n","import {renderToString} from '../extra/ssr'\n\nfunction looksLikeSygnalComponent(Component: any): boolean {\n if (typeof Component !== 'function') return false\n return Boolean(\n Component.isSygnalComponent ||\n Component.model ||\n Component.intent ||\n Component.initialState ||\n Component.componentName\n )\n}\n\nexport function check(Component: any): boolean {\n return looksLikeSygnalComponent(Component)\n}\n\nexport function renderToStaticMarkup(\n Component: any,\n props: Record<string, any> = {},\n _slotted?: any,\n _metadata?: any\n): { html: string; attrs: Record<string, any> } {\n try {\n // Props are spread top-level by renderToString (`{ state, ...props }`);\n // `props` is also passed, as on the client, for `({ state, props })` views.\n const html = renderToString(Component, {\n state: props.initialState || Component.initialState,\n props: {...props, props},\n })\n return {html, attrs: {}}\n } catch (err: any) {\n console.error('[sygnal/astro] SSR error:', err.message || err)\n return {html: '', attrs: {}}\n }\n}\n\nexport const supportsAstroStaticSlot = true\n\nexport default {\n check,\n renderToStaticMarkup,\n supportsAstroStaticSlot,\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.cjs.js","sources":["../../src/shared.ts","../../node_modules/symbol-observable/lib/ponyfill.js","../../node_modules/symbol-observable/ponyfill.js","../../node_modules/object-keys/isArguments.js","../../node_modules/object-keys/implementation.js","../../node_modules/object-keys/index.js","../../node_modules/has-symbols/shams.js","../../node_modules/has-symbols/index.js","../../node_modules/has-proto/index.js","../../node_modules/function-bind/implementation.js","../../node_modules/function-bind/index.js","../../node_modules/has/src/index.js","../../node_modules/get-intrinsic/index.js","../../node_modules/has-property-descriptors/index.js","../../node_modules/define-properties/index.js","../../node_modules/globalthis/implementation.js","../../node_modules/globalthis/polyfill.js","../../node_modules/globalthis/shim.js","../../node_modules/globalthis/index.js","../../node_modules/xstream/index.js","../../src/extra/xstreamCompat.ts","../../src/extra/diagnostics/codes.ts","../../src/extra/diagnostics/index.ts","../../src/extra/diagnostics/legacy.ts","../../src/core/define.ts","../../src/core/cell.ts","../../src/core/debug.ts","../../src/core/hosts/collection.ts","../../src/extra/ssr.ts","../../src/astro/server.ts"],"sourcesContent":["/*\n * Tiny helpers shared by the core and the helper modules (behaviors, undo, the dev entry), kept\n * out of the core so importing them never pulls it in.\n */\n\n/** The \"no change / send nothing\" sentinel (a registered symbol: the same in every copy) */\nexport const ABORT = Symbol.for('sygnal.ABORT')\n\n/**\n * Whether a value is ABORT. Compares the description, not the identity, in case bundlers (e.g.\n * Vite) create duplicate module instances with separate Symbol.for() registries. (G-214: the\n * one copy, for the core, behaviors, undo and the action log)\n */\nexport const isAbort = (v: any): boolean => typeof v == 'symbol' && v.description == 'sygnal.ABORT'\n\n/**\n * Set on a dev-only wrapper of a model function (SYG222's) to the function it wraps, so the\n * action log and t.explain() show the user's reducer (G-214 follow-up)\n */\nexport const ORIGINAL = Symbol.for('sygnal.original')\n\n/**\n * PLAN-4 GS-9 / G-214: one part of a uid() path (a child's path or `id` prop, a Collection item\n * key, a Switchable page name), encoded injectively into [A-Za-z0-9_]: letters and digits stay,\n * anything else (including '_' and '-') becomes '_<UTF-16 code>_' ('0.2' → '0_46_2', 'a_b' →\n * 'a_95_b'), so the '-' between parts is unambiguous too. renderToString encodes the same way\n * (ssr.ts).\n */\nexport const uidPart = (s: any): string => (s + '').replace(/\\W|_/g, c => '_' + c.charCodeAt(0) + '_')\n\n/**\n * PLAN-5 A-1: a Collection item's style with its view-transition name and class\n * (`viewTransitionName=\"card\"`): `card-<id>`, the id escaped as uidPart does (a valid CSS\n * identifier, unique per id), and the class `card`; the item's own style wins, except its\n * `undefined` values (G-418: no value is no override; snabbdom would leave the old one). The\n * core's Collection host and SSR share it\n */\nexport const vtStyle = (p: string, id: any, style?: any) => {\n const o: any = {viewTransitionName: p + '-' + uidPart(id), viewTransitionClass: p}\n for (const k in style) if (style[k] !== undefined) o[k] = style[k]\n return o\n}\n\n/**\n * P45-D: sources that aren't drivers get no sinks: props$, children$, dispose$, commands$, CHILD;\n * PARENT, EFFECT and ELEMENT are built-in sinks; __k, __d, __uid... are internal\n */\nexport const NOT_SINK = /^(__|(props|children|dispose|commands)\\$$|(CHILD|PARENT|EFFECT|ELEMENT)$)/\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\n\t\t\t// This just needs to be something that won't trample other user's Symbol.for use\n\t\t\t// It also will guide people to the source of their issues, if this is problematic.\n\t\t\t// META: It's a resource locator!\n\t\t\tresult = _Symbol['for']('https://github.com/benlesh/symbol-observable');\n\t\t\ttry {\n\t\t\t\t_Symbol.observable = result;\n\t\t\t} catch (err) {\n\t\t\t\t// Do nothing. In some environments, users have frozen `Symbol` for security reasons,\n\t\t\t\t// if it is frozen assigning to it will throw. In this case, we don't care, because\n\t\t\t\t// they will need to use the returned value from the ponyfill.\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};","module.exports = require('./lib/ponyfill');\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nmodule.exports = global;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) {\n\t\treturn implementation;\n\t}\n\treturn global;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimGlobal() {\n\tvar polyfill = getPolyfill();\n\tif (define.supportsDescriptors) {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(polyfill, 'globalThis');\n\t\tif (!descriptor || (descriptor.configurable && (descriptor.enumerable || !descriptor.writable || globalThis !== polyfill))) { // eslint-disable-line max-len\n\t\t\tObject.defineProperty(polyfill, 'globalThis', {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: polyfill,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t} else if (typeof globalThis !== 'object' || globalThis !== polyfill) {\n\t\tpolyfill.globalThis = polyfill;\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = getPolyfill();\n\nvar getGlobal = function () { return polyfill; };\n\ndefineProperties(getGlobal, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = getGlobal;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NO_IL = exports.NO = exports.MemoryStream = exports.Stream = void 0;\nvar ponyfill_1 = require(\"symbol-observable/ponyfill\");\nvar globalthis_1 = require(\"globalthis\");\nvar $$observable = ponyfill_1.default(globalthis_1.getPolyfill());\nvar NO = {};\nexports.NO = NO;\nfunction noop() { }\nfunction cp(a) {\n var l = a.length;\n var b = Array(l);\n for (var i = 0; i < l; ++i)\n b[i] = a[i];\n return b;\n}\nfunction and(f1, f2) {\n return function andFn(t) {\n return f1(t) && f2(t);\n };\n}\nfunction _try(c, t, u) {\n try {\n return c.f(t);\n }\n catch (e) {\n u._e(e);\n return NO;\n }\n}\nvar NO_IL = {\n _n: noop,\n _e: noop,\n _c: noop,\n};\nexports.NO_IL = NO_IL;\n// mutates the input\nfunction internalizeProducer(producer) {\n producer._start = function _start(il) {\n il.next = il._n;\n il.error = il._e;\n il.complete = il._c;\n this.start(il);\n };\n producer._stop = producer.stop;\n}\nvar StreamSub = /** @class */ (function () {\n function StreamSub(_stream, _listener) {\n this._stream = _stream;\n this._listener = _listener;\n }\n StreamSub.prototype.unsubscribe = function () {\n this._stream._remove(this._listener);\n };\n return StreamSub;\n}());\nvar Observer = /** @class */ (function () {\n function Observer(_listener) {\n this._listener = _listener;\n }\n Observer.prototype.next = function (value) {\n this._listener._n(value);\n };\n Observer.prototype.error = function (err) {\n this._listener._e(err);\n };\n Observer.prototype.complete = function () {\n this._listener._c();\n };\n return Observer;\n}());\nvar FromObservable = /** @class */ (function () {\n function FromObservable(observable) {\n this.type = 'fromObservable';\n this.ins = observable;\n this.active = false;\n }\n FromObservable.prototype._start = function (out) {\n this.out = out;\n this.active = true;\n this._sub = this.ins.subscribe(new Observer(out));\n if (!this.active)\n this._sub.unsubscribe();\n };\n FromObservable.prototype._stop = function () {\n if (this._sub)\n this._sub.unsubscribe();\n this.active = false;\n };\n return FromObservable;\n}());\nvar Merge = /** @class */ (function () {\n function Merge(insArr) {\n this.type = 'merge';\n this.insArr = insArr;\n this.out = NO;\n this.ac = 0;\n }\n Merge.prototype._start = function (out) {\n this.out = out;\n var s = this.insArr;\n var L = s.length;\n this.ac = L;\n for (var i = 0; i < L; i++)\n s[i]._add(this);\n };\n Merge.prototype._stop = function () {\n var s = this.insArr;\n var L = s.length;\n for (var i = 0; i < L; i++)\n s[i]._remove(this);\n this.out = NO;\n };\n Merge.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n u._n(t);\n };\n Merge.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Merge.prototype._c = function () {\n if (--this.ac <= 0) {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n }\n };\n return Merge;\n}());\nvar CombineListener = /** @class */ (function () {\n function CombineListener(i, out, p) {\n this.i = i;\n this.out = out;\n this.p = p;\n p.ils.push(this);\n }\n CombineListener.prototype._n = function (t) {\n var p = this.p, out = this.out;\n if (out === NO)\n return;\n if (p.up(t, this.i)) {\n var b = cp(p.vals);\n out._n(b);\n }\n };\n CombineListener.prototype._e = function (err) {\n var out = this.out;\n if (out === NO)\n return;\n out._e(err);\n };\n CombineListener.prototype._c = function () {\n var p = this.p;\n if (p.out === NO)\n return;\n if (--p.Nc === 0)\n p.out._c();\n };\n return CombineListener;\n}());\nvar Combine = /** @class */ (function () {\n function Combine(insArr) {\n this.type = 'combine';\n this.insArr = insArr;\n this.out = NO;\n this.ils = [];\n this.Nc = this.Nn = 0;\n this.vals = [];\n }\n Combine.prototype.up = function (t, i) {\n var v = this.vals[i];\n var Nn = !this.Nn ? 0 : v === NO ? --this.Nn : this.Nn;\n this.vals[i] = t;\n return Nn === 0;\n };\n Combine.prototype._start = function (out) {\n this.out = out;\n var s = this.insArr;\n var n = this.Nc = this.Nn = s.length;\n var vals = this.vals = new Array(n);\n if (n === 0) {\n out._n([]);\n out._c();\n }\n else {\n for (var i = 0; i < n; i++) {\n vals[i] = NO;\n s[i]._add(new CombineListener(i, out, this));\n }\n }\n };\n Combine.prototype._stop = function () {\n var s = this.insArr;\n var n = s.length;\n var ils = this.ils;\n for (var i = 0; i < n; i++)\n s[i]._remove(ils[i]);\n this.out = NO;\n this.ils = [];\n this.vals = [];\n };\n return Combine;\n}());\nvar FromArray = /** @class */ (function () {\n function FromArray(a) {\n this.type = 'fromArray';\n this.a = a;\n }\n FromArray.prototype._start = function (out) {\n var a = this.a;\n for (var i = 0, n = a.length; i < n; i++)\n out._n(a[i]);\n out._c();\n };\n FromArray.prototype._stop = function () {\n };\n return FromArray;\n}());\nvar FromPromise = /** @class */ (function () {\n function FromPromise(p) {\n this.type = 'fromPromise';\n this.on = false;\n this.p = p;\n }\n FromPromise.prototype._start = function (out) {\n var prod = this;\n this.on = true;\n this.p.then(function (v) {\n if (prod.on) {\n out._n(v);\n out._c();\n }\n }, function (e) {\n out._e(e);\n }).then(noop, function (err) {\n setTimeout(function () { throw err; });\n });\n };\n FromPromise.prototype._stop = function () {\n this.on = false;\n };\n return FromPromise;\n}());\nvar Periodic = /** @class */ (function () {\n function Periodic(period) {\n this.type = 'periodic';\n this.period = period;\n this.intervalID = -1;\n this.i = 0;\n }\n Periodic.prototype._start = function (out) {\n var self = this;\n function intervalHandler() { out._n(self.i++); }\n this.intervalID = setInterval(intervalHandler, this.period);\n };\n Periodic.prototype._stop = function () {\n if (this.intervalID !== -1)\n clearInterval(this.intervalID);\n this.intervalID = -1;\n this.i = 0;\n };\n return Periodic;\n}());\nvar Debug = /** @class */ (function () {\n function Debug(ins, arg) {\n this.type = 'debug';\n this.ins = ins;\n this.out = NO;\n this.s = noop;\n this.l = '';\n if (typeof arg === 'string')\n this.l = arg;\n else if (typeof arg === 'function')\n this.s = arg;\n }\n Debug.prototype._start = function (out) {\n this.out = out;\n this.ins._add(this);\n };\n Debug.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n };\n Debug.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n var s = this.s, l = this.l;\n if (s !== noop) {\n try {\n s(t);\n }\n catch (e) {\n u._e(e);\n }\n }\n else if (l)\n console.log(l + ':', t);\n else\n console.log(t);\n u._n(t);\n };\n Debug.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Debug.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return Debug;\n}());\nvar Drop = /** @class */ (function () {\n function Drop(max, ins) {\n this.type = 'drop';\n this.ins = ins;\n this.out = NO;\n this.max = max;\n this.dropped = 0;\n }\n Drop.prototype._start = function (out) {\n this.out = out;\n this.dropped = 0;\n this.ins._add(this);\n };\n Drop.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n };\n Drop.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n if (this.dropped++ >= this.max)\n u._n(t);\n };\n Drop.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Drop.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return Drop;\n}());\nvar EndWhenListener = /** @class */ (function () {\n function EndWhenListener(out, op) {\n this.out = out;\n this.op = op;\n }\n EndWhenListener.prototype._n = function () {\n this.op.end();\n };\n EndWhenListener.prototype._e = function (err) {\n this.out._e(err);\n };\n EndWhenListener.prototype._c = function () {\n this.op.end();\n };\n return EndWhenListener;\n}());\nvar EndWhen = /** @class */ (function () {\n function EndWhen(o, ins) {\n this.type = 'endWhen';\n this.ins = ins;\n this.out = NO;\n this.o = o;\n this.oil = NO_IL;\n }\n EndWhen.prototype._start = function (out) {\n this.out = out;\n this.o._add(this.oil = new EndWhenListener(out, this));\n this.ins._add(this);\n };\n EndWhen.prototype._stop = function () {\n this.ins._remove(this);\n this.o._remove(this.oil);\n this.out = NO;\n this.oil = NO_IL;\n };\n EndWhen.prototype.end = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n EndWhen.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n u._n(t);\n };\n EndWhen.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n EndWhen.prototype._c = function () {\n this.end();\n };\n return EndWhen;\n}());\nvar Filter = /** @class */ (function () {\n function Filter(passes, ins) {\n this.type = 'filter';\n this.ins = ins;\n this.out = NO;\n this.f = passes;\n }\n Filter.prototype._start = function (out) {\n this.out = out;\n this.ins._add(this);\n };\n Filter.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n };\n Filter.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n var r = _try(this, t, u);\n if (r === NO || !r)\n return;\n u._n(t);\n };\n Filter.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Filter.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return Filter;\n}());\nvar FlattenListener = /** @class */ (function () {\n function FlattenListener(out, op) {\n this.out = out;\n this.op = op;\n }\n FlattenListener.prototype._n = function (t) {\n this.out._n(t);\n };\n FlattenListener.prototype._e = function (err) {\n this.out._e(err);\n };\n FlattenListener.prototype._c = function () {\n this.op.inner = NO;\n this.op.less();\n };\n return FlattenListener;\n}());\nvar Flatten = /** @class */ (function () {\n function Flatten(ins) {\n this.type = 'flatten';\n this.ins = ins;\n this.out = NO;\n this.open = true;\n this.inner = NO;\n this.il = NO_IL;\n }\n Flatten.prototype._start = function (out) {\n this.out = out;\n this.open = true;\n this.inner = NO;\n this.il = NO_IL;\n this.ins._add(this);\n };\n Flatten.prototype._stop = function () {\n this.ins._remove(this);\n if (this.inner !== NO)\n this.inner._remove(this.il);\n this.out = NO;\n this.open = true;\n this.inner = NO;\n this.il = NO_IL;\n };\n Flatten.prototype.less = function () {\n var u = this.out;\n if (u === NO)\n return;\n if (!this.open && this.inner === NO)\n u._c();\n };\n Flatten.prototype._n = function (s) {\n var u = this.out;\n if (u === NO)\n return;\n var _a = this, inner = _a.inner, il = _a.il;\n if (inner !== NO && il !== NO_IL)\n inner._remove(il);\n (this.inner = s)._add(this.il = new FlattenListener(u, this));\n };\n Flatten.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Flatten.prototype._c = function () {\n this.open = false;\n this.less();\n };\n return Flatten;\n}());\nvar Fold = /** @class */ (function () {\n function Fold(f, seed, ins) {\n var _this = this;\n this.type = 'fold';\n this.ins = ins;\n this.out = NO;\n this.f = function (t) { return f(_this.acc, t); };\n this.acc = this.seed = seed;\n }\n Fold.prototype._start = function (out) {\n this.out = out;\n this.acc = this.seed;\n out._n(this.acc);\n this.ins._add(this);\n };\n Fold.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n this.acc = this.seed;\n };\n Fold.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n var r = _try(this, t, u);\n if (r === NO)\n return;\n u._n(this.acc = r);\n };\n Fold.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Fold.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return Fold;\n}());\nvar Last = /** @class */ (function () {\n function Last(ins) {\n this.type = 'last';\n this.ins = ins;\n this.out = NO;\n this.has = false;\n this.val = NO;\n }\n Last.prototype._start = function (out) {\n this.out = out;\n this.has = false;\n this.ins._add(this);\n };\n Last.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n this.val = NO;\n };\n Last.prototype._n = function (t) {\n this.has = true;\n this.val = t;\n };\n Last.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Last.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n if (this.has) {\n u._n(this.val);\n u._c();\n }\n else\n u._e(new Error('last() failed because input stream completed'));\n };\n return Last;\n}());\nvar MapOp = /** @class */ (function () {\n function MapOp(project, ins) {\n this.type = 'map';\n this.ins = ins;\n this.out = NO;\n this.f = project;\n }\n MapOp.prototype._start = function (out) {\n this.out = out;\n this.ins._add(this);\n };\n MapOp.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n };\n MapOp.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n var r = _try(this, t, u);\n if (r === NO)\n return;\n u._n(r);\n };\n MapOp.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n MapOp.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return MapOp;\n}());\nvar Remember = /** @class */ (function () {\n function Remember(ins) {\n this.type = 'remember';\n this.ins = ins;\n this.out = NO;\n }\n Remember.prototype._start = function (out) {\n this.out = out;\n this.ins._add(out);\n };\n Remember.prototype._stop = function () {\n this.ins._remove(this.out);\n this.out = NO;\n };\n return Remember;\n}());\nvar ReplaceError = /** @class */ (function () {\n function ReplaceError(replacer, ins) {\n this.type = 'replaceError';\n this.ins = ins;\n this.out = NO;\n this.f = replacer;\n }\n ReplaceError.prototype._start = function (out) {\n this.out = out;\n this.ins._add(this);\n };\n ReplaceError.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n };\n ReplaceError.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n u._n(t);\n };\n ReplaceError.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n try {\n this.ins._remove(this);\n (this.ins = this.f(err))._add(this);\n }\n catch (e) {\n u._e(e);\n }\n };\n ReplaceError.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return ReplaceError;\n}());\nvar StartWith = /** @class */ (function () {\n function StartWith(ins, val) {\n this.type = 'startWith';\n this.ins = ins;\n this.out = NO;\n this.val = val;\n }\n StartWith.prototype._start = function (out) {\n this.out = out;\n this.out._n(this.val);\n this.ins._add(out);\n };\n StartWith.prototype._stop = function () {\n this.ins._remove(this.out);\n this.out = NO;\n };\n return StartWith;\n}());\nvar Take = /** @class */ (function () {\n function Take(max, ins) {\n this.type = 'take';\n this.ins = ins;\n this.out = NO;\n this.max = max;\n this.taken = 0;\n }\n Take.prototype._start = function (out) {\n this.out = out;\n this.taken = 0;\n if (this.max <= 0)\n out._c();\n else\n this.ins._add(this);\n };\n Take.prototype._stop = function () {\n this.ins._remove(this);\n this.out = NO;\n };\n Take.prototype._n = function (t) {\n var u = this.out;\n if (u === NO)\n return;\n var m = ++this.taken;\n if (m < this.max)\n u._n(t);\n else if (m === this.max) {\n u._n(t);\n u._c();\n }\n };\n Take.prototype._e = function (err) {\n var u = this.out;\n if (u === NO)\n return;\n u._e(err);\n };\n Take.prototype._c = function () {\n var u = this.out;\n if (u === NO)\n return;\n u._c();\n };\n return Take;\n}());\nvar Stream = /** @class */ (function () {\n function Stream(producer) {\n this._prod = producer || NO;\n this._ils = [];\n this._stopID = NO;\n this._dl = NO;\n this._d = false;\n this._target = null;\n this._err = NO;\n }\n Stream.prototype._n = function (t) {\n var a = this._ils;\n var L = a.length;\n if (this._d)\n this._dl._n(t);\n if (L == 1)\n a[0]._n(t);\n else if (L == 0)\n return;\n else {\n var b = cp(a);\n for (var i = 0; i < L; i++)\n b[i]._n(t);\n }\n };\n Stream.prototype._e = function (err) {\n if (this._err !== NO)\n return;\n this._err = err;\n var a = this._ils;\n var L = a.length;\n this._x();\n if (this._d)\n this._dl._e(err);\n if (L == 1)\n a[0]._e(err);\n else if (L == 0)\n return;\n else {\n var b = cp(a);\n for (var i = 0; i < L; i++)\n b[i]._e(err);\n }\n if (!this._d && L == 0)\n throw this._err;\n };\n Stream.prototype._c = function () {\n var a = this._ils;\n var L = a.length;\n this._x();\n if (this._d)\n this._dl._c();\n if (L == 1)\n a[0]._c();\n else if (L == 0)\n return;\n else {\n var b = cp(a);\n for (var i = 0; i < L; i++)\n b[i]._c();\n }\n };\n Stream.prototype._x = function () {\n if (this._ils.length === 0)\n return;\n if (this._prod !== NO)\n this._prod._stop();\n this._err = NO;\n this._ils = [];\n };\n Stream.prototype._stopNow = function () {\n // WARNING: code that calls this method should\n // first check if this._prod is valid (not `NO`)\n this._prod._stop();\n this._err = NO;\n this._stopID = NO;\n };\n Stream.prototype._add = function (il) {\n var ta = this._target;\n if (ta)\n return ta._add(il);\n var a = this._ils;\n a.push(il);\n if (a.length > 1)\n return;\n if (this._stopID !== NO) {\n clearTimeout(this._stopID);\n this._stopID = NO;\n }\n else {\n var p = this._prod;\n if (p !== NO)\n p._start(this);\n }\n };\n Stream.prototype._remove = function (il) {\n var _this = this;\n var ta = this._target;\n if (ta)\n return ta._remove(il);\n var a = this._ils;\n var i = a.indexOf(il);\n if (i > -1) {\n a.splice(i, 1);\n if (this._prod !== NO && a.length <= 0) {\n this._err = NO;\n this._stopID = setTimeout(function () { return _this._stopNow(); });\n }\n else if (a.length === 1) {\n this._pruneCycles();\n }\n }\n };\n // If all paths stemming from `this` stream eventually end at `this`\n // stream, then we remove the single listener of `this` stream, to\n // force it to end its execution and dispose resources. This method\n // assumes as a precondition that this._ils has just one listener.\n Stream.prototype._pruneCycles = function () {\n if (this._hasNoSinks(this, []))\n this._remove(this._ils[0]);\n };\n // Checks whether *there is no* path starting from `x` that leads to an end\n // listener (sink) in the stream graph, following edges A->B where B is a\n // listener of A. This means these paths constitute a cycle somehow. Is given\n // a trace of all visited nodes so far.\n Stream.prototype._hasNoSinks = function (x, trace) {\n if (trace.indexOf(x) !== -1)\n return true;\n else if (x.out === this)\n return true;\n else if (x.out && x.out !== NO)\n return this._hasNoSinks(x.out, trace.concat(x));\n else if (x._ils) {\n for (var i = 0, N = x._ils.length; i < N; i++)\n if (!this._hasNoSinks(x._ils[i], trace.concat(x)))\n return false;\n return true;\n }\n else\n return false;\n };\n Stream.prototype.ctor = function () {\n return this instanceof MemoryStream ? MemoryStream : Stream;\n };\n /**\n * Adds a Listener to the Stream.\n *\n * @param {Listener} listener\n */\n Stream.prototype.addListener = function (listener) {\n listener._n = listener.next || noop;\n listener._e = listener.error || noop;\n listener._c = listener.complete || noop;\n this._add(listener);\n };\n /**\n * Removes a Listener from the Stream, assuming the Listener was added to it.\n *\n * @param {Listener<T>} listener\n */\n Stream.prototype.removeListener = function (listener) {\n this._remove(listener);\n };\n /**\n * Adds a Listener to the Stream returning a Subscription to remove that\n * listener.\n *\n * @param {Listener} listener\n * @returns {Subscription}\n */\n Stream.prototype.subscribe = function (listener) {\n this.addListener(listener);\n return new StreamSub(this, listener);\n };\n /**\n * Add interop between most.js and RxJS 5\n *\n * @returns {Stream}\n */\n Stream.prototype[$$observable] = function () {\n return this;\n };\n /**\n * Creates a new Stream given a Producer.\n *\n * @factory true\n * @param {Producer} producer An optional Producer that dictates how to\n * start, generate events, and stop the Stream.\n * @return {Stream}\n */\n Stream.create = function (producer) {\n if (producer) {\n if (typeof producer.start !== 'function'\n || typeof producer.stop !== 'function')\n throw new Error('producer requires both start and stop functions');\n internalizeProducer(producer); // mutates the input\n }\n return new Stream(producer);\n };\n /**\n * Creates a new MemoryStream given a Producer.\n *\n * @factory true\n * @param {Producer} producer An optional Producer that dictates how to\n * start, generate events, and stop the Stream.\n * @return {MemoryStream}\n */\n Stream.createWithMemory = function (producer) {\n if (producer)\n internalizeProducer(producer); // mutates the input\n return new MemoryStream(producer);\n };\n /**\n * Creates a Stream that does nothing when started. It never emits any event.\n *\n * Marble diagram:\n *\n * ```text\n * never\n * -----------------------\n * ```\n *\n * @factory true\n * @return {Stream}\n */\n Stream.never = function () {\n return new Stream({ _start: noop, _stop: noop });\n };\n /**\n * Creates a Stream that immediately emits the \"complete\" notification when\n * started, and that's it.\n *\n * Marble diagram:\n *\n * ```text\n * empty\n * -|\n * ```\n *\n * @factory true\n * @return {Stream}\n */\n Stream.empty = function () {\n return new Stream({\n _start: function (il) { il._c(); },\n _stop: noop,\n });\n };\n /**\n * Creates a Stream that immediately emits an \"error\" notification with the\n * value you passed as the `error` argument when the stream starts, and that's\n * it.\n *\n * Marble diagram:\n *\n * ```text\n * throw(X)\n * -X\n * ```\n *\n * @factory true\n * @param error The error event to emit on the created stream.\n * @return {Stream}\n */\n Stream.throw = function (error) {\n return new Stream({\n _start: function (il) { il._e(error); },\n _stop: noop,\n });\n };\n /**\n * Creates a stream from an Array, Promise, or an Observable.\n *\n * @factory true\n * @param {Array|PromiseLike|Observable} input The input to make a stream from.\n * @return {Stream}\n */\n Stream.from = function (input) {\n if (typeof input[$$observable] === 'function')\n return Stream.fromObservable(input);\n else if (typeof input.then === 'function')\n return Stream.fromPromise(input);\n else if (Array.isArray(input))\n return Stream.fromArray(input);\n throw new TypeError(\"Type of input to from() must be an Array, Promise, or Observable\");\n };\n /**\n * Creates a Stream that immediately emits the arguments that you give to\n * *of*, then completes.\n *\n * Marble diagram:\n *\n * ```text\n * of(1,2,3)\n * 123|\n * ```\n *\n * @factory true\n * @param a The first value you want to emit as an event on the stream.\n * @param b The second value you want to emit as an event on the stream. One\n * or more of these values may be given as arguments.\n * @return {Stream}\n */\n Stream.of = function () {\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n return Stream.fromArray(items);\n };\n /**\n * Converts an array to a stream. The returned stream will emit synchronously\n * all the items in the array, and then complete.\n *\n * Marble diagram:\n *\n * ```text\n * fromArray([1,2,3])\n * 123|\n * ```\n *\n * @factory true\n * @param {Array} array The array to be converted as a stream.\n * @return {Stream}\n */\n Stream.fromArray = function (array) {\n return new Stream(new FromArray(array));\n };\n /**\n * Converts a promise to a stream. The returned stream will emit the resolved\n * value of the promise, and then complete. However, if the promise is\n * rejected, the stream will emit the corresponding error.\n *\n * Marble diagram:\n *\n * ```text\n * fromPromise( ----42 )\n * -----------------42|\n * ```\n *\n * @factory true\n * @param {PromiseLike} promise The promise to be converted as a stream.\n * @return {Stream}\n */\n Stream.fromPromise = function (promise) {\n return new Stream(new FromPromise(promise));\n };\n /**\n * Converts an Observable into a Stream.\n *\n * @factory true\n * @param {any} observable The observable to be converted as a stream.\n * @return {Stream}\n */\n Stream.fromObservable = function (obs) {\n if (obs.endWhen !== undefined)\n return obs;\n var o = typeof obs[$$observable] === 'function' ? obs[$$observable]() : obs;\n return new Stream(new FromObservable(o));\n };\n /**\n * Creates a stream that periodically emits incremental numbers, every\n * `period` milliseconds.\n *\n * Marble diagram:\n *\n * ```text\n * periodic(1000)\n * ---0---1---2---3---4---...\n * ```\n *\n * @factory true\n * @param {number} period The interval in milliseconds to use as a rate of\n * emission.\n * @return {Stream}\n */\n Stream.periodic = function (period) {\n return new Stream(new Periodic(period));\n };\n Stream.prototype._map = function (project) {\n return new (this.ctor())(new MapOp(project, this));\n };\n /**\n * Transforms each event from the input Stream through a `project` function,\n * to get a Stream that emits those transformed events.\n *\n * Marble diagram:\n *\n * ```text\n * --1---3--5-----7------\n * map(i => i * 10)\n * --10--30-50----70-----\n * ```\n *\n * @param {Function} project A function of type `(t: T) => U` that takes event\n * `t` of type `T` from the input Stream and produces an event of type `U`, to\n * be emitted on the output Stream.\n * @return {Stream}\n */\n Stream.prototype.map = function (project) {\n return this._map(project);\n };\n /**\n * It's like `map`, but transforms each input event to always the same\n * constant value on the output Stream.\n *\n * Marble diagram:\n *\n * ```text\n * --1---3--5-----7-----\n * mapTo(10)\n * --10--10-10----10----\n * ```\n *\n * @param projectedValue A value to emit on the output Stream whenever the\n * input Stream emits any value.\n * @return {Stream}\n */\n Stream.prototype.mapTo = function (projectedValue) {\n var s = this.map(function () { return projectedValue; });\n var op = s._prod;\n op.type = 'mapTo';\n return s;\n };\n /**\n * Only allows events that pass the test given by the `passes` argument.\n *\n * Each event from the input stream is given to the `passes` function. If the\n * function returns `true`, the event is forwarded to the output stream,\n * otherwise it is ignored and not forwarded.\n *\n * Marble diagram:\n *\n * ```text\n * --1---2--3-----4-----5---6--7-8--\n * filter(i => i % 2 === 0)\n * ------2--------4---------6----8--\n * ```\n *\n * @param {Function} passes A function of type `(t: T) => boolean` that takes\n * an event from the input stream and checks if it passes, by returning a\n * boolean.\n * @return {Stream}\n */\n Stream.prototype.filter = function (passes) {\n var p = this._prod;\n if (p instanceof Filter)\n return new Stream(new Filter(and(p.f, passes), p.ins));\n return new Stream(new Filter(passes, this));\n };\n /**\n * Lets the first `amount` many events from the input stream pass to the\n * output stream, then makes the output stream complete.\n *\n * Marble diagram:\n *\n * ```text\n * --a---b--c----d---e--\n * take(3)\n * --a---b--c|\n * ```\n *\n * @param {number} amount How many events to allow from the input stream\n * before completing the output stream.\n * @return {Stream}\n */\n Stream.prototype.take = function (amount) {\n return new (this.ctor())(new Take(amount, this));\n };\n /**\n * Ignores the first `amount` many events from the input stream, and then\n * after that starts forwarding events from the input stream to the output\n * stream.\n *\n * Marble diagram:\n *\n * ```text\n * --a---b--c----d---e--\n * drop(3)\n * --------------d---e--\n * ```\n *\n * @param {number} amount How many events to ignore from the input stream\n * before forwarding all events from the input stream to the output stream.\n * @return {Stream}\n */\n Stream.prototype.drop = function (amount) {\n return new Stream(new Drop(amount, this));\n };\n /**\n * When the input stream completes, the output stream will emit the last event\n * emitted by the input stream, and then will also complete.\n *\n * Marble diagram:\n *\n * ```text\n * --a---b--c--d----|\n * last()\n * -----------------d|\n * ```\n *\n * @return {Stream}\n */\n Stream.prototype.last = function () {\n return new Stream(new Last(this));\n };\n /**\n * Prepends the given `initial` value to the sequence of events emitted by the\n * input stream. The returned stream is a MemoryStream, which means it is\n * already `remember()`'d.\n *\n * Marble diagram:\n *\n * ```text\n * ---1---2-----3---\n * startWith(0)\n * 0--1---2-----3---\n * ```\n *\n * @param initial The value or event to prepend.\n * @return {MemoryStream}\n */\n Stream.prototype.startWith = function (initial) {\n return new MemoryStream(new StartWith(this, initial));\n };\n /**\n * Uses another stream to determine when to complete the current stream.\n *\n * When the given `other` stream emits an event or completes, the output\n * stream will complete. Before that happens, the output stream will behaves\n * like the input stream.\n *\n * Marble diagram:\n *\n * ```text\n * ---1---2-----3--4----5----6---\n * endWhen( --------a--b--| )\n * ---1---2-----3--4--|\n * ```\n *\n * @param other Some other stream that is used to know when should the output\n * stream of this operator complete.\n * @return {Stream}\n */\n Stream.prototype.endWhen = function (other) {\n return new (this.ctor())(new EndWhen(other, this));\n };\n /**\n * \"Folds\" the stream onto itself.\n *\n * Combines events from the past throughout\n * the entire execution of the input stream, allowing you to accumulate them\n * together. It's essentially like `Array.prototype.reduce`. The returned\n * stream is a MemoryStream, which means it is already `remember()`'d.\n *\n * The output stream starts by emitting the `seed` which you give as argument.\n * Then, when an event happens on the input stream, it is combined with that\n * seed value through the `accumulate` function, and the output value is\n * emitted on the output stream. `fold` remembers that output value as `acc`\n * (\"accumulator\"), and then when a new input event `t` happens, `acc` will be\n * combined with that to produce the new `acc` and so forth.\n *\n * Marble diagram:\n *\n * ```text\n * ------1-----1--2----1----1------\n * fold((acc, x) => acc + x, 3)\n * 3-----4-----5--7----8----9------\n * ```\n *\n * @param {Function} accumulate A function of type `(acc: R, t: T) => R` that\n * takes the previous accumulated value `acc` and the incoming event from the\n * input stream and produces the new accumulated value.\n * @param seed The initial accumulated value, of type `R`.\n * @return {MemoryStream}\n */\n Stream.prototype.fold = function (accumulate, seed) {\n return new MemoryStream(new Fold(accumulate, seed, this));\n };\n /**\n * Replaces an error with another stream.\n *\n * When (and if) an error happens on the input stream, instead of forwarding\n * that error to the output stream, *replaceError* will call the `replace`\n * function which returns the stream that the output stream will replicate.\n * And, in case that new stream also emits an error, `replace` will be called\n * again to get another stream to start replicating.\n *\n * Marble diagram:\n *\n * ```text\n * --1---2-----3--4-----X\n * replaceError( () => --10--| )\n * --1---2-----3--4--------10--|\n * ```\n *\n * @param {Function} replace A function of type `(err) => Stream` that takes\n * the error that occurred on the input stream or on the previous replacement\n * stream and returns a new stream. The output stream will behave like the\n * stream that this function returns.\n * @return {Stream}\n */\n Stream.prototype.replaceError = function (replace) {\n return new (this.ctor())(new ReplaceError(replace, this));\n };\n /**\n * Flattens a \"stream of streams\", handling only one nested stream at a time\n * (no concurrency).\n *\n * If the input stream is a stream that emits streams, then this operator will\n * return an output stream which is a flat stream: emits regular events. The\n * flattening happens without concurrency. It works like this: when the input\n * stream emits a nested stream, *flatten* will start imitating that nested\n * one. However, as soon as the next nested stream is emitted on the input\n * stream, *flatten* will forget the previous nested one it was imitating, and\n * will start imitating the new nested one.\n *\n * Marble diagram:\n *\n * ```text\n * --+--------+---------------\n * \\ \\\n * \\ ----1----2---3--\n * --a--b----c----d--------\n * flatten\n * -----a--b------1----2---3--\n * ```\n *\n * @return {Stream}\n */\n Stream.prototype.flatten = function () {\n return new Stream(new Flatten(this));\n };\n /**\n * Passes the input stream to a custom operator, to produce an output stream.\n *\n * *compose* is a handy way of using an existing function in a chained style.\n * Instead of writing `outStream = f(inStream)` you can write\n * `outStream = inStream.compose(f)`.\n *\n * @param {function} operator A function that takes a stream as input and\n * returns a stream as well.\n * @return {Stream}\n */\n Stream.prototype.compose = function (operator) {\n return operator(this);\n };\n /**\n * Returns an output stream that behaves like the input stream, but also\n * remembers the most recent event that happens on the input stream, so that a\n * newly added listener will immediately receive that memorised event.\n *\n * @return {MemoryStream}\n */\n Stream.prototype.remember = function () {\n return new MemoryStream(new Remember(this));\n };\n /**\n * Returns an output stream that identically behaves like the input stream,\n * but also runs a `spy` function for each event, to help you debug your app.\n *\n * *debug* takes a `spy` function as argument, and runs that for each event\n * happening on the input stream. If you don't provide the `spy` argument,\n * then *debug* will just `console.log` each event. This helps you to\n * understand the flow of events through some operator chain.\n *\n * Please note that if the output stream has no listeners, then it will not\n * start, which means `spy` will never run because no actual event happens in\n * that case.\n *\n * Marble diagram:\n *\n * ```text\n * --1----2-----3-----4--\n * debug\n * --1----2-----3-----4--\n * ```\n *\n * @param {function} labelOrSpy A string to use as the label when printing\n * debug information on the console, or a 'spy' function that takes an event\n * as argument, and does not need to return anything.\n * @return {Stream}\n */\n Stream.prototype.debug = function (labelOrSpy) {\n return new (this.ctor())(new Debug(this, labelOrSpy));\n };\n /**\n * *imitate* changes this current Stream to emit the same events that the\n * `other` given Stream does. This method returns nothing.\n *\n * This method exists to allow one thing: **circular dependency of streams**.\n * For instance, let's imagine that for some reason you need to create a\n * circular dependency where stream `first$` depends on stream `second$`\n * which in turn depends on `first$`:\n *\n * <!-- skip-example -->\n * ```js\n * import delay from 'xstream/extra/delay'\n *\n * var first$ = second$.map(x => x * 10).take(3);\n * var second$ = first$.map(x => x + 1).startWith(1).compose(delay(100));\n * ```\n *\n * However, that is invalid JavaScript, because `second$` is undefined\n * on the first line. This is how *imitate* can help solve it:\n *\n * ```js\n * import delay from 'xstream/extra/delay'\n *\n * var secondProxy$ = xs.create();\n * var first$ = secondProxy$.map(x => x * 10).take(3);\n * var second$ = first$.map(x => x + 1).startWith(1).compose(delay(100));\n * secondProxy$.imitate(second$);\n * ```\n *\n * We create `secondProxy$` before the others, so it can be used in the\n * declaration of `first$`. Then, after both `first$` and `second$` are\n * defined, we hook `secondProxy$` with `second$` with `imitate()` to tell\n * that they are \"the same\". `imitate` will not trigger the start of any\n * stream, it just binds `secondProxy$` and `second$` together.\n *\n * The following is an example where `imitate()` is important in Cycle.js\n * applications. A parent component contains some child components. A child\n * has an action stream which is given to the parent to define its state:\n *\n * <!-- skip-example -->\n * ```js\n * const childActionProxy$ = xs.create();\n * const parent = Parent({...sources, childAction$: childActionProxy$});\n * const childAction$ = parent.state$.map(s => s.child.action$).flatten();\n * childActionProxy$.imitate(childAction$);\n * ```\n *\n * Note, though, that **`imitate()` does not support MemoryStreams**. If we\n * would attempt to imitate a MemoryStream in a circular dependency, we would\n * either get a race condition (where the symptom would be \"nothing happens\")\n * or an infinite cyclic emission of values. It's useful to think about\n * MemoryStreams as cells in a spreadsheet. It doesn't make any sense to\n * define a spreadsheet cell `A1` with a formula that depends on `B1` and\n * cell `B1` defined with a formula that depends on `A1`.\n *\n * If you find yourself wanting to use `imitate()` with a\n * MemoryStream, you should rework your code around `imitate()` to use a\n * Stream instead. Look for the stream in the circular dependency that\n * represents an event stream, and that would be a candidate for creating a\n * proxy Stream which then imitates the target Stream.\n *\n * @param {Stream} target The other stream to imitate on the current one. Must\n * not be a MemoryStream.\n */\n Stream.prototype.imitate = function (target) {\n if (target instanceof MemoryStream)\n throw new Error('A MemoryStream was given to imitate(), but it only ' +\n 'supports a Stream. Read more about this restriction here: ' +\n 'https://github.com/staltz/xstream#faq');\n this._target = target;\n for (var ils = this._ils, N = ils.length, i = 0; i < N; i++)\n target._add(ils[i]);\n this._ils = [];\n };\n /**\n * Forces the Stream to emit the given value to its listeners.\n *\n * As the name indicates, if you use this, you are most likely doing something\n * The Wrong Way. Please try to understand the reactive way before using this\n * method. Use it only when you know what you are doing.\n *\n * @param value The \"next\" value you want to broadcast to all listeners of\n * this Stream.\n */\n Stream.prototype.shamefullySendNext = function (value) {\n this._n(value);\n };\n /**\n * Forces the Stream to emit the given error to its listeners.\n *\n * As the name indicates, if you use this, you are most likely doing something\n * The Wrong Way. Please try to understand the reactive way before using this\n * method. Use it only when you know what you are doing.\n *\n * @param {any} error The error you want to broadcast to all the listeners of\n * this Stream.\n */\n Stream.prototype.shamefullySendError = function (error) {\n this._e(error);\n };\n /**\n * Forces the Stream to emit the \"completed\" event to its listeners.\n *\n * As the name indicates, if you use this, you are most likely doing something\n * The Wrong Way. Please try to understand the reactive way before using this\n * method. Use it only when you know what you are doing.\n */\n Stream.prototype.shamefullySendComplete = function () {\n this._c();\n };\n /**\n * Adds a \"debug\" listener to the stream. There can only be one debug\n * listener, that's why this is 'setDebugListener'. To remove the debug\n * listener, just call setDebugListener(null).\n *\n * A debug listener is like any other listener. The only difference is that a\n * debug listener is \"stealthy\": its presence/absence does not trigger the\n * start/stop of the stream (or the producer inside the stream). This is\n * useful so you can inspect what is going on without changing the behavior\n * of the program. If you have an idle stream and you add a normal listener to\n * it, the stream will start executing. But if you set a debug listener on an\n * idle stream, it won't start executing (not until the first normal listener\n * is added).\n *\n * As the name indicates, we don't recommend using this method to build app\n * logic. In fact, in most cases the debug operator works just fine. Only use\n * this one if you know what you're doing.\n *\n * @param {Listener<T>} listener\n */\n Stream.prototype.setDebugListener = function (listener) {\n if (!listener) {\n this._d = false;\n this._dl = NO;\n }\n else {\n this._d = true;\n listener._n = listener.next || noop;\n listener._e = listener.error || noop;\n listener._c = listener.complete || noop;\n this._dl = listener;\n }\n };\n /**\n * Blends multiple streams together, emitting events from all of them\n * concurrently.\n *\n * *merge* takes multiple streams as arguments, and creates a stream that\n * behaves like each of the argument streams, in parallel.\n *\n * Marble diagram:\n *\n * ```text\n * --1----2-----3--------4---\n * ----a-----b----c---d------\n * merge\n * --1-a--2--b--3-c---d--4---\n * ```\n *\n * @factory true\n * @param {Stream} stream1 A stream to merge together with other streams.\n * @param {Stream} stream2 A stream to merge together with other streams. Two\n * or more streams may be given as arguments.\n * @return {Stream}\n */\n Stream.merge = function merge() {\n var streams = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n streams[_i] = arguments[_i];\n }\n return new Stream(new Merge(streams));\n };\n /**\n * Combines multiple input streams together to return a stream whose events\n * are arrays that collect the latest events from each input stream.\n *\n * *combine* internally remembers the most recent event from each of the input\n * streams. When any of the input streams emits an event, that event together\n * with all the other saved events are combined into an array. That array will\n * be emitted on the output stream. It's essentially a way of joining together\n * the events from multiple streams.\n *\n * Marble diagram:\n *\n * ```text\n * --1----2-----3--------4---\n * ----a-----b-----c--d------\n * combine\n * ----1a-2a-2b-3b-3c-3d-4d--\n * ```\n *\n * @factory true\n * @param {Stream} stream1 A stream to combine together with other streams.\n * @param {Stream} stream2 A stream to combine together with other streams.\n * Multiple streams, not just two, may be given as arguments.\n * @return {Stream}\n */\n Stream.combine = function combine() {\n var streams = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n streams[_i] = arguments[_i];\n }\n return new Stream(new Combine(streams));\n };\n return Stream;\n}());\nexports.Stream = Stream;\nvar MemoryStream = /** @class */ (function (_super) {\n __extends(MemoryStream, _super);\n function MemoryStream(producer) {\n var _this = _super.call(this, producer) || this;\n _this._has = false;\n return _this;\n }\n MemoryStream.prototype._n = function (x) {\n this._v = x;\n this._has = true;\n _super.prototype._n.call(this, x);\n };\n MemoryStream.prototype._add = function (il) {\n var ta = this._target;\n if (ta)\n return ta._add(il);\n var a = this._ils;\n a.push(il);\n if (a.length > 1) {\n if (this._has)\n il._n(this._v);\n return;\n }\n if (this._stopID !== NO) {\n if (this._has)\n il._n(this._v);\n clearTimeout(this._stopID);\n this._stopID = NO;\n }\n else if (this._has)\n il._n(this._v);\n else {\n var p = this._prod;\n if (p !== NO)\n p._start(this);\n }\n };\n MemoryStream.prototype._stopNow = function () {\n this._has = false;\n _super.prototype._stopNow.call(this);\n };\n MemoryStream.prototype._x = function () {\n this._has = false;\n _super.prototype._x.call(this);\n };\n MemoryStream.prototype.map = function (project) {\n return this._map(project);\n };\n MemoryStream.prototype.mapTo = function (projectedValue) {\n return _super.prototype.mapTo.call(this, projectedValue);\n };\n MemoryStream.prototype.take = function (amount) {\n return _super.prototype.take.call(this, amount);\n };\n MemoryStream.prototype.endWhen = function (other) {\n return _super.prototype.endWhen.call(this, other);\n };\n MemoryStream.prototype.replaceError = function (replace) {\n return _super.prototype.replaceError.call(this, replace);\n };\n MemoryStream.prototype.remember = function () {\n return this;\n };\n MemoryStream.prototype.debug = function (labelOrSpy) {\n return _super.prototype.debug.call(this, labelOrSpy);\n };\n return MemoryStream;\n}(Stream));\nexports.MemoryStream = MemoryStream;\nvar xs = Stream;\nexports.default = xs;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFrRTtBQUNsRSx5Q0FBMEQ7QUFFMUQsSUFBTSxZQUFZLEdBQUcsa0JBQXdCLENBQUMsd0JBQWEsRUFBRSxDQUFDLENBQUM7QUFFL0QsSUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBOC9ETCxnQkFBRTtBQTcvRFgsU0FBUyxJQUFJLEtBQUssQ0FBQztBQUVuQixTQUFTLEVBQUUsQ0FBSSxDQUFXO0lBQ3hCLElBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkIsSUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBSSxFQUFxQixFQUFFLEVBQXFCO0lBQzFELE9BQU8sU0FBUyxLQUFLLENBQUMsQ0FBSTtRQUN4QixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQU1ELFNBQVMsSUFBSSxDQUFPLENBQW1CLEVBQUUsQ0FBSSxFQUFFLENBQWM7SUFDM0QsSUFBSTtRQUNGLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNmO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUM7S0FDWDtBQUNILENBQUM7QUFRRCxJQUFNLEtBQUss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TCxVQUFNLFVBQWlEO1FBQ3JELE9BQU8saUJBQU0sS0FBSyxZQUFDLFVBQWlCLENBQW9CLENBQUM7SUFDM0QsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXhFRCxDQUFxQyxNQUFNLEdBd0UxQztBQXhFWSxvQ0FBWTtBQTJFekIsSUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBRWxCLGtCQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwb255ZmlsbFN5bWJvbE9ic2VydmFibGUgZnJvbSAnc3ltYm9sLW9ic2VydmFibGUvcG9ueWZpbGwnO1xuaW1wb3J0IHsgZ2V0UG9seWZpbGwgYXMgZ2V0R2xvYmFsVGhpcyB9IGZyb20gJ2dsb2JhbHRoaXMnO1xuXG5jb25zdCAkJG9ic2VydmFibGUgPSBwb255ZmlsbFN5bWJvbE9ic2VydmFibGUoZ2V0R2xvYmFsVGhpcygpKTtcblxuY29uc3QgTk8gPSB7fTtcbmZ1bmN0aW9uIG5vb3AoKSB7IH1cblxuZnVuY3Rpb24gY3A8VD4oYTogQXJyYXk8VD4pOiBBcnJheTxUPiB7XG4gIGNvbnN0IGwgPSBhLmxlbmd0aDtcbiAgY29uc3QgYiA9IEFycmF5KGwpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGw7ICsraSkgYltpXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG5mdW5jdGlvbiBhbmQ8VD4oZjE6ICh0OiBUKSA9PiBib29sZWFuLCBmMjogKHQ6IFQpID0+IGJvb2xlYW4pOiAodDogVCkgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbiBhbmRGbih0OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGYxKHQpICYmIGYyKHQpO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgRkNvbnRhaW5lcjxULCBSPiB7XG4gIGYodDogVCk6IFI7XG59XG5cbmZ1bmN0aW9uIF90cnk8VCwgUj4oYzogRkNvbnRhaW5lcjxULCBSPiwgdDogVCwgdTogU3RyZWFtPGFueT4pOiBSIHwge30ge1xuICB0cnkge1xuICAgIHJldHVybiBjLmYodCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB1Ll9lKGUpO1xuICAgIHJldHVybiBOTztcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsTGlzdGVuZXI8VD4ge1xuICBfbjogKHY6IFQpID0+IHZvaWQ7XG4gIF9lOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIF9jOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBOT19JTDogSW50ZXJuYWxMaXN0ZW5lcjxhbnk+ID0ge1xuICBfbjogbm9vcCxcbiAgX2U6IG5vb3AsXG4gIF9jOiBub29wLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFByb2R1Y2VyPFQ+IHtcbiAgX3N0YXJ0KGxpc3RlbmVyOiBJbnRlcm5hbExpc3RlbmVyPFQ+KTogdm9pZDtcbiAgX3N0b3A6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0U2VuZGVyPFQ+IHtcbiAgb3V0OiBTdHJlYW08VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0b3I8VCwgUj4gZXh0ZW5kcyBJbnRlcm5hbFByb2R1Y2VyPFI+LCBJbnRlcm5hbExpc3RlbmVyPFQ+LCBPdXRTZW5kZXI8Uj4ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGluczogU3RyZWFtPFQ+O1xuICBfc3RhcnQob3V0OiBTdHJlYW08Uj4pOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0b3I8VCwgVT4gZXh0ZW5kcyBJbnRlcm5hbFByb2R1Y2VyPFU+LCBPdXRTZW5kZXI8VT4ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGluc0FycjogQXJyYXk8U3RyZWFtPFQ+PjtcbiAgX3N0YXJ0KG91dDogU3RyZWFtPFU+KTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWNlcjxUPiB7XG4gIHN0YXJ0OiAobGlzdGVuZXI6IExpc3RlbmVyPFQ+KSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RlbmVyPFQ+IHtcbiAgbmV4dDogKHg6IFQpID0+IHZvaWQ7XG4gIGVycm9yOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIGNvbXBsZXRlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmlwdGlvbiB7XG4gIHVuc3Vic2NyaWJlKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJsZTxUPiB7XG4gIHN1YnNjcmliZShsaXN0ZW5lcjogTGlzdGVuZXI8VD4pOiBTdWJzY3JpcHRpb247XG59XG5cbi8vIG11dGF0ZXMgdGhlIGlucHV0XG5mdW5jdGlvbiBpbnRlcm5hbGl6ZVByb2R1Y2VyPFQ+KHByb2R1Y2VyOiBQcm9kdWNlcjxUPiAmIFBhcnRpYWw8SW50ZXJuYWxQcm9kdWNlcjxUPj4pIHtcbiAgcHJvZHVjZXIuX3N0YXJ0ID0gZnVuY3Rpb24gX3N0YXJ0KGlsOiBJbnRlcm5hbExpc3RlbmVyPFQ+ICYgUGFydGlhbDxMaXN0ZW5lcjxUPj4pIHtcbiAgICBpbC5uZXh0ID0gaWwuX247XG4gICAgaWwuZXJyb3IgPSBpbC5fZTtcbiAgICBpbC5jb21wbGV0ZSA9IGlsLl9jO1xuICAgIHRoaXMuc3RhcnQoaWwgYXMgTGlzdGVuZXI8VD4pO1xuICB9O1xuICBwcm9kdWNlci5fc3RvcCA9IHByb2R1Y2VyLnN0b3A7XG59XG5cbmNsYXNzIFN0cmVhbVN1YjxUPiBpbXBsZW1lbnRzIFN1YnNjcmlwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N0cmVhbTogU3RyZWFtPFQ+LCBwcml2YXRlIF9saXN0ZW5lcjogSW50ZXJuYWxMaXN0ZW5lcjxUPikgeyB9XG5cbiAgdW5zdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RyZWFtLl9yZW1vdmUodGhpcy5fbGlzdGVuZXIpO1xuICB9XG59XG5cbmNsYXNzIE9ic2VydmVyPFQ+IGltcGxlbWVudHMgTGlzdGVuZXI8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9saXN0ZW5lcjogSW50ZXJuYWxMaXN0ZW5lcjxUPikgeyB9XG5cbiAgbmV4dCh2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVyLl9uKHZhbHVlKTtcbiAgfVxuXG4gIGVycm9yKGVycjogYW55KSB7XG4gICAgdGhpcy5fbGlzdGVuZXIuX2UoZXJyKTtcbiAgfVxuXG4gIGNvbXBsZXRlKCkge1xuICAgIHRoaXMuX2xpc3RlbmVyLl9jKCk7XG4gIH1cbn1cblxuY2xhc3MgRnJvbU9ic2VydmFibGU8VD4gaW1wbGVtZW50cyBJbnRlcm5hbFByb2R1Y2VyPFQ+IHtcbiAgcHVibGljIHR5cGUgPSAnZnJvbU9ic2VydmFibGUnO1xuICBwdWJsaWMgaW5zOiBPYnNlcnZhYmxlPFQ+O1xuICBwdWJsaWMgb3V0PzogU3RyZWFtPFQ+O1xuICBwcml2YXRlIGFjdGl2ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Iob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHRoaXMuaW5zID0gb2JzZXJ2YWJsZTtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFQ+KSB7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuX3N1YiA9IHRoaXMuaW5zLnN1YnNjcmliZShuZXcgT2JzZXJ2ZXIob3V0KSk7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSkgdGhpcy5fc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBfc3RvcCgpIHtcbiAgICBpZiAodGhpcy5fc3ViKSB0aGlzLl9zdWIudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVyZ2VTaWduYXR1cmUge1xuICAoKTogU3RyZWFtPGFueT47XG4gIDxUMT4oczE6IFN0cmVhbTxUMT4pOiBTdHJlYW08VDE+O1xuICA8VDEsIFQyPihcbiAgICBzMTogU3RyZWFtPFQxPixcbiAgICBzMjogU3RyZWFtPFQyPik6IFN0cmVhbTxUMSB8IFQyPjtcbiAgPFQxLCBUMiwgVDM+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+KTogU3RyZWFtPFQxIHwgVDIgfCBUMz47XG4gIDxUMSwgVDIsIFQzLCBUND4oXG4gICAgczE6IFN0cmVhbTxUMT4sXG4gICAgczI6IFN0cmVhbTxUMj4sXG4gICAgczM6IFN0cmVhbTxUMz4sXG4gICAgczQ6IFN0cmVhbTxUND4pOiBTdHJlYW08VDEgfCBUMiB8IFQzIHwgVDQ+O1xuICA8VDEsIFQyLCBUMywgVDQsIFQ1PihcbiAgICBzMTogU3RyZWFtPFQxPixcbiAgICBzMjogU3RyZWFtPFQyPixcbiAgICBzMzogU3RyZWFtPFQzPixcbiAgICBzNDogU3RyZWFtPFQ0PixcbiAgICBzNTogU3RyZWFtPFQ1Pik6IFN0cmVhbTxUMSB8IFQyIHwgVDMgfCBUNCB8IFQ1PjtcbiAgPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+KTogU3RyZWFtPFQxIHwgVDIgfCBUMyB8IFQ0IHwgVDUgfCBUNj47XG4gIDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4oXG4gICAgczE6IFN0cmVhbTxUMT4sXG4gICAgczI6IFN0cmVhbTxUMj4sXG4gICAgczM6IFN0cmVhbTxUMz4sXG4gICAgczQ6IFN0cmVhbTxUND4sXG4gICAgczU6IFN0cmVhbTxUNT4sXG4gICAgczY6IFN0cmVhbTxUNj4sXG4gICAgczc6IFN0cmVhbTxUNz4pOiBTdHJlYW08VDEgfCBUMiB8IFQzIHwgVDQgfCBUNSB8IFQ2IHwgVDc+O1xuICA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PihcbiAgICBzMTogU3RyZWFtPFQxPixcbiAgICBzMjogU3RyZWFtPFQyPixcbiAgICBzMzogU3RyZWFtPFQzPixcbiAgICBzNDogU3RyZWFtPFQ0PixcbiAgICBzNTogU3RyZWFtPFQ1PixcbiAgICBzNjogU3RyZWFtPFQ2PixcbiAgICBzNzogU3RyZWFtPFQ3PixcbiAgICBzODogU3RyZWFtPFQ4Pik6IFN0cmVhbTxUMSB8IFQyIHwgVDMgfCBUNCB8IFQ1IHwgVDYgfCBUNyB8IFQ4PjtcbiAgPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+LFxuICAgIHM3OiBTdHJlYW08VDc+LFxuICAgIHM4OiBTdHJlYW08VDg+LFxuICAgIHM5OiBTdHJlYW08VDk+KTogU3RyZWFtPFQxIHwgVDIgfCBUMyB8IFQ0IHwgVDUgfCBUNiB8IFQ3IHwgVDggfCBUOT47XG4gIDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+LFxuICAgIHM3OiBTdHJlYW08VDc+LFxuICAgIHM4OiBTdHJlYW08VDg+LFxuICAgIHM5OiBTdHJlYW08VDk+LFxuICAgIHMxMDogU3RyZWFtPFQxMD4pOiBTdHJlYW08VDEgfCBUMiB8IFQzIHwgVDQgfCBUNSB8IFQ2IHwgVDcgfCBUOCB8IFQ5IHwgVDEwPjtcbiAgPFQ+KC4uLnN0cmVhbTogQXJyYXk8U3RyZWFtPFQ+Pik6IFN0cmVhbTxUPjtcbn1cblxuY2xhc3MgTWVyZ2U8VD4gaW1wbGVtZW50cyBBZ2dyZWdhdG9yPFQsIFQ+LCBJbnRlcm5hbExpc3RlbmVyPFQ+IHtcbiAgcHVibGljIHR5cGUgPSAnbWVyZ2UnO1xuICBwdWJsaWMgaW5zQXJyOiBBcnJheTxTdHJlYW08VD4+O1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD47XG4gIHByaXZhdGUgYWM6IG51bWJlcjsgLy8gYWMgaXMgYWN0aXZlQ291bnRcblxuICBjb25zdHJ1Y3RvcihpbnNBcnI6IEFycmF5PFN0cmVhbTxUPj4pIHtcbiAgICB0aGlzLmluc0FyciA9IGluc0FycjtcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgICB0aGlzLmFjID0gMDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxUPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIGNvbnN0IHMgPSB0aGlzLmluc0FycjtcbiAgICBjb25zdCBMID0gcy5sZW5ndGg7XG4gICAgdGhpcy5hYyA9IEw7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBMOyBpKyspIHNbaV0uX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIGNvbnN0IHMgPSB0aGlzLmluc0FycjtcbiAgICBjb25zdCBMID0gcy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBMOyBpKyspIHNbaV0uX3JlbW92ZSh0aGlzKTtcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgfVxuXG4gIF9uKHQ6IFQpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIGlmICgtLXRoaXMuYWMgPD0gMCkge1xuICAgICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgICB1Ll9jKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluZVNpZ25hdHVyZSB7XG4gICgpOiBTdHJlYW08QXJyYXk8YW55Pj47XG4gIDxUMT4oczE6IFN0cmVhbTxUMT4pOiBTdHJlYW08W1QxXT47XG4gIDxUMSwgVDI+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+KTogU3RyZWFtPFtUMSwgVDJdPjtcbiAgPFQxLCBUMiwgVDM+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+KTogU3RyZWFtPFtUMSwgVDIsIFQzXT47XG4gIDxUMSwgVDIsIFQzLCBUND4oXG4gICAgczE6IFN0cmVhbTxUMT4sXG4gICAgczI6IFN0cmVhbTxUMj4sXG4gICAgczM6IFN0cmVhbTxUMz4sXG4gICAgczQ6IFN0cmVhbTxUND4pOiBTdHJlYW08W1QxLCBUMiwgVDMsIFQ0XT47XG4gIDxUMSwgVDIsIFQzLCBUNCwgVDU+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+KTogU3RyZWFtPFtUMSwgVDIsIFQzLCBUNCwgVDVdPjtcbiAgPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+KTogU3RyZWFtPFtUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2XT47XG4gIDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4oXG4gICAgczE6IFN0cmVhbTxUMT4sXG4gICAgczI6IFN0cmVhbTxUMj4sXG4gICAgczM6IFN0cmVhbTxUMz4sXG4gICAgczQ6IFN0cmVhbTxUND4sXG4gICAgczU6IFN0cmVhbTxUNT4sXG4gICAgczY6IFN0cmVhbTxUNj4sXG4gICAgczc6IFN0cmVhbTxUNz4pOiBTdHJlYW08W1QxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3XT47XG4gIDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+LFxuICAgIHM3OiBTdHJlYW08VDc+LFxuICAgIHM4OiBTdHJlYW08VDg+KTogU3RyZWFtPFtUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDhdPjtcbiAgPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+LFxuICAgIHM3OiBTdHJlYW08VDc+LFxuICAgIHM4OiBTdHJlYW08VDg+LFxuICAgIHM5OiBTdHJlYW08VDk+KTogU3RyZWFtPFtUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5XT47XG4gIDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+KFxuICAgIHMxOiBTdHJlYW08VDE+LFxuICAgIHMyOiBTdHJlYW08VDI+LFxuICAgIHMzOiBTdHJlYW08VDM+LFxuICAgIHM0OiBTdHJlYW08VDQ+LFxuICAgIHM1OiBTdHJlYW08VDU+LFxuICAgIHM2OiBTdHJlYW08VDY+LFxuICAgIHM3OiBTdHJlYW08VDc+LFxuICAgIHM4OiBTdHJlYW08VDg+LFxuICAgIHM5OiBTdHJlYW08VDk+LFxuICAgIHMxMDogU3RyZWFtPFQxMD4pOiBTdHJlYW08W1QxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMF0+O1xuICA8VD4oLi4uc3RyZWFtOiBBcnJheTxTdHJlYW08VD4+KTogU3RyZWFtPEFycmF5PFQ+PjtcbiAgKC4uLnN0cmVhbTogQXJyYXk8U3RyZWFtPGFueT4+KTogU3RyZWFtPEFycmF5PGFueT4+O1xufVxuXG5jbGFzcyBDb21iaW5lTGlzdGVuZXI8VD4gaW1wbGVtZW50cyBJbnRlcm5hbExpc3RlbmVyPFQ+LCBPdXRTZW5kZXI8QXJyYXk8VD4+IHtcbiAgcHJpdmF0ZSBpOiBudW1iZXI7XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxBcnJheTxUPj47XG4gIHByaXZhdGUgcDogQ29tYmluZTxUPjtcblxuICBjb25zdHJ1Y3RvcihpOiBudW1iZXIsIG91dDogU3RyZWFtPEFycmF5PFQ+PiwgcDogQ29tYmluZTxUPikge1xuICAgIHRoaXMuaSA9IGk7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5wID0gcDtcbiAgICBwLmlscy5wdXNoKHRoaXMpO1xuICB9XG5cbiAgX24odDogVCk6IHZvaWQge1xuICAgIGNvbnN0IHAgPSB0aGlzLnAsIG91dCA9IHRoaXMub3V0O1xuICAgIGlmIChvdXQgPT09IE5PKSByZXR1cm47XG4gICAgaWYgKHAudXAodCwgdGhpcy5pKSkge1xuICAgICAgY29uc3QgYiA9IGNwKHAudmFscyk7XG4gICAgICBvdXQuX24oYik7XG4gICAgfVxuICB9XG5cbiAgX2UoZXJyOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBvdXQgPSB0aGlzLm91dDtcbiAgICBpZiAob3V0ID09PSBOTykgcmV0dXJuO1xuICAgIG91dC5fZShlcnIpO1xuICB9XG5cbiAgX2MoKTogdm9pZCB7XG4gICAgY29uc3QgcCA9IHRoaXMucDtcbiAgICBpZiAocC5vdXQgPT09IE5PKSByZXR1cm47XG4gICAgaWYgKC0tcC5OYyA9PT0gMCkgcC5vdXQuX2MoKTtcbiAgfVxufVxuXG5jbGFzcyBDb21iaW5lPFI+IGltcGxlbWVudHMgQWdncmVnYXRvcjxhbnksIEFycmF5PFI+PiB7XG4gIHB1YmxpYyB0eXBlID0gJ2NvbWJpbmUnO1xuICBwdWJsaWMgaW5zQXJyOiBBcnJheTxTdHJlYW08YW55Pj47XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxBcnJheTxSPj47XG4gIHB1YmxpYyBpbHM6IEFycmF5PENvbWJpbmVMaXN0ZW5lcjxhbnk+PjtcbiAgcHVibGljIE5jOiBudW1iZXI7IC8vICpOKnVtYmVyIG9mIHN0cmVhbXMgc3RpbGwgdG8gc2VuZCAqYypvbXBsZXRlXG4gIHB1YmxpYyBObjogbnVtYmVyOyAvLyAqTip1bWJlciBvZiBzdHJlYW1zIHN0aWxsIHRvIHNlbmQgKm4qZXh0XG4gIHB1YmxpYyB2YWxzOiBBcnJheTxSPjtcblxuICBjb25zdHJ1Y3RvcihpbnNBcnI6IEFycmF5PFN0cmVhbTxhbnk+Pikge1xuICAgIHRoaXMuaW5zQXJyID0gaW5zQXJyO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPEFycmF5PFI+PjtcbiAgICB0aGlzLmlscyA9IFtdO1xuICAgIHRoaXMuTmMgPSB0aGlzLk5uID0gMDtcbiAgICB0aGlzLnZhbHMgPSBbXTtcbiAgfVxuXG4gIHVwKHQ6IGFueSwgaTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdiA9IHRoaXMudmFsc1tpXTtcbiAgICBjb25zdCBObiA9ICF0aGlzLk5uID8gMCA6IHYgPT09IE5PID8gLS10aGlzLk5uIDogdGhpcy5ObjtcbiAgICB0aGlzLnZhbHNbaV0gPSB0O1xuICAgIHJldHVybiBObiA9PT0gMDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxBcnJheTxSPj4pOiB2b2lkIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICBjb25zdCBzID0gdGhpcy5pbnNBcnI7XG4gICAgY29uc3QgbiA9IHRoaXMuTmMgPSB0aGlzLk5uID0gcy5sZW5ndGg7XG4gICAgY29uc3QgdmFscyA9IHRoaXMudmFscyA9IG5ldyBBcnJheShuKTtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgb3V0Ll9uKFtdKTtcbiAgICAgIG91dC5fYygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YWxzW2ldID0gTk87XG4gICAgICAgIHNbaV0uX2FkZChuZXcgQ29tYmluZUxpc3RlbmVyKGksIG91dCwgdGhpcykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIGNvbnN0IHMgPSB0aGlzLmluc0FycjtcbiAgICBjb25zdCBuID0gcy5sZW5ndGg7XG4gICAgY29uc3QgaWxzID0gdGhpcy5pbHM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHNbaV0uX3JlbW92ZShpbHNbaV0pO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPEFycmF5PFI+PjtcbiAgICB0aGlzLmlscyA9IFtdO1xuICAgIHRoaXMudmFscyA9IFtdO1xuICB9XG59XG5cbmNsYXNzIEZyb21BcnJheTxUPiBpbXBsZW1lbnRzIEludGVybmFsUHJvZHVjZXI8VD4ge1xuICBwdWJsaWMgdHlwZSA9ICdmcm9tQXJyYXknO1xuICBwdWJsaWMgYTogQXJyYXk8VD47XG5cbiAgY29uc3RydWN0b3IoYTogQXJyYXk8VD4pIHtcbiAgICB0aGlzLmEgPSBhO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogSW50ZXJuYWxMaXN0ZW5lcjxUPik6IHZvaWQge1xuICAgIGNvbnN0IGEgPSB0aGlzLmE7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBhLmxlbmd0aDsgaSA8IG47IGkrKykgb3V0Ll9uKGFbaV0pO1xuICAgIG91dC5fYygpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gIH1cbn1cblxuY2xhc3MgRnJvbVByb21pc2U8VD4gaW1wbGVtZW50cyBJbnRlcm5hbFByb2R1Y2VyPFQ+IHtcbiAgcHVibGljIHR5cGUgPSAnZnJvbVByb21pc2UnO1xuICBwdWJsaWMgb246IGJvb2xlYW47XG4gIHB1YmxpYyBwOiBQcm9taXNlTGlrZTxUPjtcblxuICBjb25zdHJ1Y3RvcihwOiBQcm9taXNlTGlrZTxUPikge1xuICAgIHRoaXMub24gPSBmYWxzZTtcbiAgICB0aGlzLnAgPSBwO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogSW50ZXJuYWxMaXN0ZW5lcjxUPik6IHZvaWQge1xuICAgIGNvbnN0IHByb2QgPSB0aGlzO1xuICAgIHRoaXMub24gPSB0cnVlO1xuICAgIHRoaXMucC50aGVuKFxuICAgICAgKHY6IFQpID0+IHtcbiAgICAgICAgaWYgKHByb2Qub24pIHtcbiAgICAgICAgICBvdXQuX24odik7XG4gICAgICAgICAgb3V0Ll9jKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZTogYW55KSA9PiB7XG4gICAgICAgIG91dC5fZShlKTtcbiAgICAgIH0sXG4gICAgKS50aGVuKG5vb3AsIChlcnI6IGFueSkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRocm93IGVycjsgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uID0gZmFsc2U7XG4gIH1cbn1cblxuY2xhc3MgUGVyaW9kaWMgaW1wbGVtZW50cyBJbnRlcm5hbFByb2R1Y2VyPG51bWJlcj4ge1xuICBwdWJsaWMgdHlwZSA9ICdwZXJpb2RpYyc7XG4gIHB1YmxpYyBwZXJpb2Q6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbnRlcnZhbElEOiBhbnk7XG4gIHByaXZhdGUgaTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHBlcmlvZDogbnVtYmVyKSB7XG4gICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG4gICAgdGhpcy5pbnRlcnZhbElEID0gLTE7XG4gICAgdGhpcy5pID0gMDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IEludGVybmFsTGlzdGVuZXI8bnVtYmVyPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGZ1bmN0aW9uIGludGVydmFsSGFuZGxlcigpIHsgb3V0Ll9uKHNlbGYuaSsrKTsgfVxuICAgIHRoaXMuaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGludGVydmFsSGFuZGxlciwgdGhpcy5wZXJpb2QpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxJRCAhPT0gLTEpIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElEKTtcbiAgICB0aGlzLmludGVydmFsSUQgPSAtMTtcbiAgICB0aGlzLmkgPSAwO1xuICB9XG59XG5cbmNsYXNzIERlYnVnPFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdkZWJ1Zyc7XG4gIHB1YmxpYyBpbnM6IFN0cmVhbTxUPjtcbiAgcHVibGljIG91dDogU3RyZWFtPFQ+O1xuICBwcml2YXRlIHM6ICh0OiBUKSA9PiBhbnk7IC8vIHNweVxuICBwcml2YXRlIGw6IHN0cmluZzsgLy8gbGFiZWxcblxuICBjb25zdHJ1Y3RvcihpbnM6IFN0cmVhbTxUPik7XG4gIGNvbnN0cnVjdG9yKGluczogU3RyZWFtPFQ+LCBhcmc/OiBzdHJpbmcpO1xuICBjb25zdHJ1Y3RvcihpbnM6IFN0cmVhbTxUPiwgYXJnPzogKHQ6IFQpID0+IGFueSk7XG4gIGNvbnN0cnVjdG9yKGluczogU3RyZWFtPFQ+LCBhcmc/OiBzdHJpbmcgfCAoKHQ6IFQpID0+IGFueSkpO1xuICBjb25zdHJ1Y3RvcihpbnM6IFN0cmVhbTxUPiwgYXJnPzogc3RyaW5nIHwgKCh0OiBUKSA9PiBhbnkpIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy5zID0gbm9vcDtcbiAgICB0aGlzLmwgPSAnJztcbiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHRoaXMubCA9IGFyZzsgZWxzZSBpZiAodHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5zID0gYXJnO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIGNvbnN0IHMgPSB0aGlzLnMsIGwgPSB0aGlzLmw7XG4gICAgaWYgKHMgIT09IG5vb3ApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHModCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHUuX2UoZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsKSBjb25zb2xlLmxvZyhsICsgJzonLCB0KTsgZWxzZSBjb25zb2xlLmxvZyh0KTtcbiAgICB1Ll9uKHQpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2MoKTtcbiAgfVxufVxuXG5jbGFzcyBEcm9wPFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdkcm9wJztcbiAgcHVibGljIGluczogU3RyZWFtPFQ+O1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD47XG4gIHB1YmxpYyBtYXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBkcm9wcGVkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobWF4OiBudW1iZXIsIGluczogU3RyZWFtPFQ+KSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy5tYXggPSBtYXg7XG4gICAgdGhpcy5kcm9wcGVkID0gMDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxUPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuZHJvcHBlZCA9IDA7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmRyb3BwZWQrKyA+PSB0aGlzLm1heCkgdS5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICB1Ll9jKCk7XG4gIH1cbn1cblxuY2xhc3MgRW5kV2hlbkxpc3RlbmVyPFQ+IGltcGxlbWVudHMgSW50ZXJuYWxMaXN0ZW5lcjxhbnk+IHtcbiAgcHJpdmF0ZSBvdXQ6IFN0cmVhbTxUPjtcbiAgcHJpdmF0ZSBvcDogRW5kV2hlbjxUPjtcblxuICBjb25zdHJ1Y3RvcihvdXQ6IFN0cmVhbTxUPiwgb3A6IEVuZFdoZW48VD4pIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICB0aGlzLm9wID0gb3A7XG4gIH1cblxuICBfbigpIHtcbiAgICB0aGlzLm9wLmVuZCgpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICB0aGlzLm91dC5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgdGhpcy5vcC5lbmQoKTtcbiAgfVxufVxuXG5jbGFzcyBFbmRXaGVuPFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdlbmRXaGVuJztcbiAgcHVibGljIGluczogU3RyZWFtPFQ+O1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD47XG4gIHB1YmxpYyBvOiBTdHJlYW08YW55PjsgLy8gbyA9IG90aGVyXG4gIHByaXZhdGUgb2lsOiBJbnRlcm5hbExpc3RlbmVyPGFueT47IC8vIG9pbCA9IG90aGVyIEludGVybmFsTGlzdGVuZXJcblxuICBjb25zdHJ1Y3RvcihvOiBTdHJlYW08YW55PiwgaW5zOiBTdHJlYW08VD4pIHtcbiAgICB0aGlzLmlucyA9IGlucztcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgICB0aGlzLm8gPSBvO1xuICAgIHRoaXMub2lsID0gTk9fSUw7XG4gIH1cblxuICBfc3RhcnQob3V0OiBTdHJlYW08VD4pOiB2b2lkIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICB0aGlzLm8uX2FkZCh0aGlzLm9pbCA9IG5ldyBFbmRXaGVuTGlzdGVuZXIob3V0LCB0aGlzKSk7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vLl9yZW1vdmUodGhpcy5vaWwpO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPFQ+O1xuICAgIHRoaXMub2lsID0gTk9fSUw7XG4gIH1cblxuICBlbmQoKTogdm9pZCB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2MoKTtcbiAgfVxuXG4gIF9uKHQ6IFQpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIHRoaXMuZW5kKCk7XG4gIH1cbn1cblxuY2xhc3MgRmlsdGVyPFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdmaWx0ZXInO1xuICBwdWJsaWMgaW5zOiBTdHJlYW08VD47XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxUPjtcbiAgcHVibGljIGY6ICh0OiBUKSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHBhc3NlczogKHQ6IFQpID0+IGJvb2xlYW4sIGluczogU3RyZWFtPFQ+KSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy5mID0gcGFzc2VzO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIGNvbnN0IHIgPSBfdHJ5KHRoaXMsIHQsIHUpO1xuICAgIGlmIChyID09PSBOTyB8fCAhcikgcmV0dXJuO1xuICAgIHUuX24odCk7XG4gIH1cblxuICBfZShlcnI6IGFueSkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICB1Ll9lKGVycik7XG4gIH1cblxuICBfYygpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fYygpO1xuICB9XG59XG5cbmNsYXNzIEZsYXR0ZW5MaXN0ZW5lcjxUPiBpbXBsZW1lbnRzIEludGVybmFsTGlzdGVuZXI8VD4ge1xuICBwcml2YXRlIG91dDogU3RyZWFtPFQ+O1xuICBwcml2YXRlIG9wOiBGbGF0dGVuPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG91dDogU3RyZWFtPFQ+LCBvcDogRmxhdHRlbjxUPikge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMub3AgPSBvcDtcbiAgfVxuXG4gIF9uKHQ6IFQpIHtcbiAgICB0aGlzLm91dC5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgdGhpcy5vdXQuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIHRoaXMub3AuaW5uZXIgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy5vcC5sZXNzKCk7XG4gIH1cbn1cblxuY2xhc3MgRmxhdHRlbjxUPiBpbXBsZW1lbnRzIE9wZXJhdG9yPFN0cmVhbTxUPiwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdmbGF0dGVuJztcbiAgcHVibGljIGluczogU3RyZWFtPFN0cmVhbTxUPj47XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxUPjtcbiAgcHJpdmF0ZSBvcGVuOiBib29sZWFuO1xuICBwdWJsaWMgaW5uZXI6IFN0cmVhbTxUPjsgLy8gQ3VycmVudCBpbm5lciBTdHJlYW1cbiAgcHJpdmF0ZSBpbDogSW50ZXJuYWxMaXN0ZW5lcjxUPjsgLy8gQ3VycmVudCBpbm5lciBJbnRlcm5hbExpc3RlbmVyXG5cbiAgY29uc3RydWN0b3IoaW5zOiBTdHJlYW08U3RyZWFtPFQ+Pikge1xuICAgIHRoaXMuaW5zID0gaW5zO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPFQ+O1xuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgdGhpcy5pbm5lciA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgICB0aGlzLmlsID0gTk9fSUw7XG4gIH1cblxuICBfc3RhcnQob3V0OiBTdHJlYW08VD4pOiB2b2lkIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgIHRoaXMuaW5uZXIgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy5pbCA9IE5PX0lMO1xuICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gIH1cblxuICBfc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgIGlmICh0aGlzLmlubmVyICE9PSBOTykgdGhpcy5pbm5lci5fcmVtb3ZlKHRoaXMuaWwpO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPFQ+O1xuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgdGhpcy5pbm5lciA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgICB0aGlzLmlsID0gTk9fSUw7XG4gIH1cblxuICBsZXNzKCk6IHZvaWQge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLmlubmVyID09PSBOTykgdS5fYygpO1xuICB9XG5cbiAgX24oczogU3RyZWFtPFQ+KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIGNvbnN0IHsgaW5uZXIsIGlsIH0gPSB0aGlzO1xuICAgIGlmIChpbm5lciAhPT0gTk8gJiYgaWwgIT09IE5PX0lMKSBpbm5lci5fcmVtb3ZlKGlsKTtcbiAgICAodGhpcy5pbm5lciA9IHMpLl9hZGQodGhpcy5pbCA9IG5ldyBGbGF0dGVuTGlzdGVuZXIodSwgdGhpcykpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5sZXNzKCk7XG4gIH1cbn1cblxuY2xhc3MgRm9sZDxULCBSPiBpbXBsZW1lbnRzIE9wZXJhdG9yPFQsIFI+IHtcbiAgcHVibGljIHR5cGUgPSAnZm9sZCc7XG4gIHB1YmxpYyBpbnM6IFN0cmVhbTxUPjtcbiAgcHVibGljIG91dDogU3RyZWFtPFI+O1xuICBwdWJsaWMgZjogKHQ6IFQpID0+IFI7XG4gIHB1YmxpYyBzZWVkOiBSO1xuICBwcml2YXRlIGFjYzogUjsgLy8gaW5pdGlhbGl6ZWQgYXMgc2VlZFxuXG4gIGNvbnN0cnVjdG9yKGY6IChhY2M6IFIsIHQ6IFQpID0+IFIsIHNlZWQ6IFIsIGluczogU3RyZWFtPFQ+KSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08Uj47XG4gICAgdGhpcy5mID0gKHQ6IFQpID0+IGYodGhpcy5hY2MsIHQpO1xuICAgIHRoaXMuYWNjID0gdGhpcy5zZWVkID0gc2VlZDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxSPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuYWNjID0gdGhpcy5zZWVkO1xuICAgIG91dC5fbih0aGlzLmFjYyk7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08Uj47XG4gICAgdGhpcy5hY2MgPSB0aGlzLnNlZWQ7XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIGNvbnN0IHIgPSBfdHJ5KHRoaXMsIHQsIHUpO1xuICAgIGlmIChyID09PSBOTykgcmV0dXJuO1xuICAgIHUuX24odGhpcy5hY2MgPSByIGFzIFIpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2MoKTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0PFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdsYXN0JztcbiAgcHVibGljIGluczogU3RyZWFtPFQ+O1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD47XG4gIHByaXZhdGUgaGFzOiBib29sZWFuO1xuICBwcml2YXRlIHZhbDogVDtcblxuICBjb25zdHJ1Y3RvcihpbnM6IFN0cmVhbTxUPikge1xuICAgIHRoaXMuaW5zID0gaW5zO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPFQ+O1xuICAgIHRoaXMuaGFzID0gZmFsc2U7XG4gICAgdGhpcy52YWwgPSBOTyBhcyBUO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5oYXMgPSBmYWxzZTtcbiAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgICB0aGlzLnZhbCA9IE5PIGFzIFQ7XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgdGhpcy5oYXMgPSB0cnVlO1xuICAgIHRoaXMudmFsID0gdDtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHUuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICBpZiAodGhpcy5oYXMpIHtcbiAgICAgIHUuX24odGhpcy52YWwpO1xuICAgICAgdS5fYygpO1xuICAgIH0gZWxzZSB1Ll9lKG5ldyBFcnJvcignbGFzdCgpIGZhaWxlZCBiZWNhdXNlIGlucHV0IHN0cmVhbSBjb21wbGV0ZWQnKSk7XG4gIH1cbn1cblxuY2xhc3MgTWFwT3A8VCwgUj4gaW1wbGVtZW50cyBPcGVyYXRvcjxULCBSPiB7XG4gIHB1YmxpYyB0eXBlID0gJ21hcCc7XG4gIHB1YmxpYyBpbnM6IFN0cmVhbTxUPjtcbiAgcHVibGljIG91dDogU3RyZWFtPFI+O1xuICBwdWJsaWMgZjogKHQ6IFQpID0+IFI7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogKHQ6IFQpID0+IFIsIGluczogU3RyZWFtPFQ+KSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08Uj47XG4gICAgdGhpcy5mID0gcHJvamVjdDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxSPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gIH1cblxuICBfc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPFI+O1xuICB9XG5cbiAgX24odDogVCkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICBjb25zdCByID0gX3RyeSh0aGlzLCB0LCB1KTtcbiAgICBpZiAociA9PT0gTk8pIHJldHVybjtcbiAgICB1Ll9uKHIgYXMgUik7XG4gIH1cblxuICBfZShlcnI6IGFueSkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICB1Ll9lKGVycik7XG4gIH1cblxuICBfYygpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fYygpO1xuICB9XG59XG5cbmNsYXNzIFJlbWVtYmVyPFQ+IGltcGxlbWVudHMgSW50ZXJuYWxQcm9kdWNlcjxUPiB7XG4gIHB1YmxpYyB0eXBlID0gJ3JlbWVtYmVyJztcbiAgcHVibGljIGluczogU3RyZWFtPFQ+O1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD47XG5cbiAgY29uc3RydWN0b3IoaW5zOiBTdHJlYW08VD4pIHtcbiAgICB0aGlzLmlucyA9IGlucztcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxUPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuaW5zLl9hZGQob3V0KTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcy5vdXQpO1xuICAgIHRoaXMub3V0ID0gTk8gYXMgU3RyZWFtPFQ+O1xuICB9XG59XG5cbmNsYXNzIFJlcGxhY2VFcnJvcjxUPiBpbXBsZW1lbnRzIE9wZXJhdG9yPFQsIFQ+IHtcbiAgcHVibGljIHR5cGUgPSAncmVwbGFjZUVycm9yJztcbiAgcHVibGljIGluczogU3RyZWFtPFQ+O1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD47XG4gIHB1YmxpYyBmOiAoZXJyOiBhbnkpID0+IFN0cmVhbTxUPjtcblxuICBjb25zdHJ1Y3RvcihyZXBsYWNlcjogKGVycjogYW55KSA9PiBTdHJlYW08VD4sIGluczogU3RyZWFtPFQ+KSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy5mID0gcmVwbGFjZXI7XG4gIH1cblxuICBfc3RhcnQob3V0OiBTdHJlYW08VD4pOiB2b2lkIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgfVxuXG4gIF9uKHQ6IFQpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICh1ID09PSBOTykgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgKHRoaXMuaW5zID0gdGhpcy5mKGVycikpLl9hZGQodGhpcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdS5fZShlKTtcbiAgICB9XG4gIH1cblxuICBfYygpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fYygpO1xuICB9XG59XG5cbmNsYXNzIFN0YXJ0V2l0aDxUPiBpbXBsZW1lbnRzIEludGVybmFsUHJvZHVjZXI8VD4ge1xuICBwdWJsaWMgdHlwZSA9ICdzdGFydFdpdGgnO1xuICBwdWJsaWMgaW5zOiBTdHJlYW08VD47XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxUPjtcbiAgcHVibGljIHZhbDogVDtcblxuICBjb25zdHJ1Y3RvcihpbnM6IFN0cmVhbTxUPiwgdmFsOiBUKSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gICAgdGhpcy52YWwgPSB2YWw7XG4gIH1cblxuICBfc3RhcnQob3V0OiBTdHJlYW08VD4pOiB2b2lkIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICB0aGlzLm91dC5fbih0aGlzLnZhbCk7XG4gICAgdGhpcy5pbnMuX2FkZChvdXQpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzLm91dCk7XG4gICAgdGhpcy5vdXQgPSBOTyBhcyBTdHJlYW08VD47XG4gIH1cbn1cblxuY2xhc3MgVGFrZTxUPiBpbXBsZW1lbnRzIE9wZXJhdG9yPFQsIFQ+IHtcbiAgcHVibGljIHR5cGUgPSAndGFrZSc7XG4gIHB1YmxpYyBpbnM6IFN0cmVhbTxUPjtcbiAgcHVibGljIG91dDogU3RyZWFtPFQ+O1xuICBwdWJsaWMgbWF4OiBudW1iZXI7XG4gIHByaXZhdGUgdGFrZW46IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihtYXg6IG51bWJlciwgaW5zOiBTdHJlYW08VD4pIHtcbiAgICB0aGlzLmlucyA9IGlucztcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgICB0aGlzLm1heCA9IG1heDtcbiAgICB0aGlzLnRha2VuID0gMDtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxUPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMudGFrZW4gPSAwO1xuICAgIGlmICh0aGlzLm1heCA8PSAwKSBvdXQuX2MoKTsgZWxzZSB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICB0aGlzLm91dCA9IE5PIGFzIFN0cmVhbTxUPjtcbiAgfVxuXG4gIF9uKHQ6IFQpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgY29uc3QgbSA9ICsrdGhpcy50YWtlbjtcbiAgICBpZiAobSA8IHRoaXMubWF4KSB1Ll9uKHQpOyBlbHNlIGlmIChtID09PSB0aGlzLm1heCkge1xuICAgICAgdS5fbih0KTtcbiAgICAgIHUuX2MoKTtcbiAgICB9XG4gIH1cblxuICBfZShlcnI6IGFueSkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAodSA9PT0gTk8pIHJldHVybjtcbiAgICB1Ll9lKGVycik7XG4gIH1cblxuICBfYygpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKHUgPT09IE5PKSByZXR1cm47XG4gICAgdS5fYygpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJlYW08VD4gaW1wbGVtZW50cyBJbnRlcm5hbExpc3RlbmVyPFQ+IHtcbiAgcHVibGljIF9wcm9kOiBJbnRlcm5hbFByb2R1Y2VyPFQ+O1xuICBwcm90ZWN0ZWQgX2lsczogQXJyYXk8SW50ZXJuYWxMaXN0ZW5lcjxUPj47IC8vICdpbHMnID0gSW50ZXJuYWwgbGlzdGVuZXJzXG4gIHByb3RlY3RlZCBfc3RvcElEOiBhbnk7XG4gIHByb3RlY3RlZCBfZGw6IEludGVybmFsTGlzdGVuZXI8VD47IC8vIHRoZSBkZWJ1ZyBsaXN0ZW5lclxuICBwcm90ZWN0ZWQgX2Q6IGJvb2xlYW47IC8vIGZsYWcgaW5kaWNhdGluZyB0aGUgZXhpc3RlbmNlIG9mIHRoZSBkZWJ1ZyBsaXN0ZW5lclxuICBwcm90ZWN0ZWQgX3RhcmdldDogU3RyZWFtPFQ+IHwgbnVsbDsgLy8gaW1pdGF0aW9uIHRhcmdldCBpZiB0aGlzIFN0cmVhbSB3aWxsIGltaXRhdGVcbiAgcHJvdGVjdGVkIF9lcnI6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcm9kdWNlcj86IEludGVybmFsUHJvZHVjZXI8VD4pIHtcbiAgICB0aGlzLl9wcm9kID0gcHJvZHVjZXIgfHwgTk8gYXMgSW50ZXJuYWxQcm9kdWNlcjxUPjtcbiAgICB0aGlzLl9pbHMgPSBbXTtcbiAgICB0aGlzLl9zdG9wSUQgPSBOTztcbiAgICB0aGlzLl9kbCA9IE5PIGFzIEludGVybmFsTGlzdGVuZXI8VD47XG4gICAgdGhpcy5fZCA9IGZhbHNlO1xuICAgIHRoaXMuX3RhcmdldCA9IG51bGw7XG4gICAgdGhpcy5fZXJyID0gTk87XG4gIH1cblxuICBfbih0OiBUKTogdm9pZCB7XG4gICAgY29uc3QgYSA9IHRoaXMuX2lscztcbiAgICBjb25zdCBMID0gYS5sZW5ndGg7XG4gICAgaWYgKHRoaXMuX2QpIHRoaXMuX2RsLl9uKHQpO1xuICAgIGlmIChMID09IDEpIGFbMF0uX24odCk7IGVsc2UgaWYgKEwgPT0gMCkgcmV0dXJuOyBlbHNlIHtcbiAgICAgIGNvbnN0IGIgPSBjcChhKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTDsgaSsrKSBiW2ldLl9uKHQpO1xuICAgIH1cbiAgfVxuXG4gIF9lKGVycjogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2VyciAhPT0gTk8pIHJldHVybjtcbiAgICB0aGlzLl9lcnIgPSBlcnI7XG4gICAgY29uc3QgYSA9IHRoaXMuX2lscztcbiAgICBjb25zdCBMID0gYS5sZW5ndGg7XG4gICAgdGhpcy5feCgpO1xuICAgIGlmICh0aGlzLl9kKSB0aGlzLl9kbC5fZShlcnIpO1xuICAgIGlmIChMID09IDEpIGFbMF0uX2UoZXJyKTsgZWxzZSBpZiAoTCA9PSAwKSByZXR1cm47IGVsc2Uge1xuICAgICAgY29uc3QgYiA9IGNwKGEpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBMOyBpKyspIGJbaV0uX2UoZXJyKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9kICYmIEwgPT0gMCkgdGhyb3cgdGhpcy5fZXJyO1xuICB9XG5cbiAgX2MoKTogdm9pZCB7XG4gICAgY29uc3QgYSA9IHRoaXMuX2lscztcbiAgICBjb25zdCBMID0gYS5sZW5ndGg7XG4gICAgdGhpcy5feCgpO1xuICAgIGlmICh0aGlzLl9kKSB0aGlzLl9kbC5fYygpO1xuICAgIGlmIChMID09IDEpIGFbMF0uX2MoKTsgZWxzZSBpZiAoTCA9PSAwKSByZXR1cm47IGVsc2Uge1xuICAgICAgY29uc3QgYiA9IGNwKGEpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBMOyBpKyspIGJbaV0uX2MoKTtcbiAgICB9XG4gIH1cblxuICBfeCgpOiB2b2lkIHsgLy8gdGVhciBkb3duIGxvZ2ljLCBhZnRlciBlcnJvciBvciBjb21wbGV0ZVxuICAgIGlmICh0aGlzLl9pbHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgaWYgKHRoaXMuX3Byb2QgIT09IE5PKSB0aGlzLl9wcm9kLl9zdG9wKCk7XG4gICAgdGhpcy5fZXJyID0gTk87XG4gICAgdGhpcy5faWxzID0gW107XG4gIH1cblxuICBfc3RvcE5vdygpIHtcbiAgICAvLyBXQVJOSU5HOiBjb2RlIHRoYXQgY2FsbHMgdGhpcyBtZXRob2Qgc2hvdWxkXG4gICAgLy8gZmlyc3QgY2hlY2sgaWYgdGhpcy5fcHJvZCBpcyB2YWxpZCAobm90IGBOT2ApXG4gICAgdGhpcy5fcHJvZC5fc3RvcCgpO1xuICAgIHRoaXMuX2VyciA9IE5PO1xuICAgIHRoaXMuX3N0b3BJRCA9IE5PO1xuICB9XG5cbiAgX2FkZChpbDogSW50ZXJuYWxMaXN0ZW5lcjxUPik6IHZvaWQge1xuICAgIGNvbnN0IHRhID0gdGhpcy5fdGFyZ2V0O1xuICAgIGlmICh0YSkgcmV0dXJuIHRhLl9hZGQoaWwpO1xuICAgIGNvbnN0IGEgPSB0aGlzLl9pbHM7XG4gICAgYS5wdXNoKGlsKTtcbiAgICBpZiAoYS5sZW5ndGggPiAxKSByZXR1cm47XG4gICAgaWYgKHRoaXMuX3N0b3BJRCAhPT0gTk8pIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zdG9wSUQpO1xuICAgICAgdGhpcy5fc3RvcElEID0gTk87XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAgPSB0aGlzLl9wcm9kO1xuICAgICAgaWYgKHAgIT09IE5PKSBwLl9zdGFydCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBfcmVtb3ZlKGlsOiBJbnRlcm5hbExpc3RlbmVyPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgdGEgPSB0aGlzLl90YXJnZXQ7XG4gICAgaWYgKHRhKSByZXR1cm4gdGEuX3JlbW92ZShpbCk7XG4gICAgY29uc3QgYSA9IHRoaXMuX2lscztcbiAgICBjb25zdCBpID0gYS5pbmRleE9mKGlsKTtcbiAgICBpZiAoaSA+IC0xKSB7XG4gICAgICBhLnNwbGljZShpLCAxKTtcbiAgICAgIGlmICh0aGlzLl9wcm9kICE9PSBOTyAmJiBhLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgIHRoaXMuX2VyciA9IE5PO1xuICAgICAgICB0aGlzLl9zdG9wSUQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3N0b3BOb3coKSk7XG4gICAgICB9IGVsc2UgaWYgKGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRoaXMuX3BydW5lQ3ljbGVzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgYWxsIHBhdGhzIHN0ZW1taW5nIGZyb20gYHRoaXNgIHN0cmVhbSBldmVudHVhbGx5IGVuZCBhdCBgdGhpc2BcbiAgLy8gc3RyZWFtLCB0aGVuIHdlIHJlbW92ZSB0aGUgc2luZ2xlIGxpc3RlbmVyIG9mIGB0aGlzYCBzdHJlYW0sIHRvXG4gIC8vIGZvcmNlIGl0IHRvIGVuZCBpdHMgZXhlY3V0aW9uIGFuZCBkaXNwb3NlIHJlc291cmNlcy4gVGhpcyBtZXRob2RcbiAgLy8gYXNzdW1lcyBhcyBhIHByZWNvbmRpdGlvbiB0aGF0IHRoaXMuX2lscyBoYXMganVzdCBvbmUgbGlzdGVuZXIuXG4gIF9wcnVuZUN5Y2xlcygpIHtcbiAgICBpZiAodGhpcy5faGFzTm9TaW5rcyh0aGlzLCBbXSkpIHRoaXMuX3JlbW92ZSh0aGlzLl9pbHNbMF0pO1xuICB9XG5cbiAgLy8gQ2hlY2tzIHdoZXRoZXIgKnRoZXJlIGlzIG5vKiBwYXRoIHN0YXJ0aW5nIGZyb20gYHhgIHRoYXQgbGVhZHMgdG8gYW4gZW5kXG4gIC8vIGxpc3RlbmVyIChzaW5rKSBpbiB0aGUgc3RyZWFtIGdyYXBoLCBmb2xsb3dpbmcgZWRnZXMgQS0+QiB3aGVyZSBCIGlzIGFcbiAgLy8gbGlzdGVuZXIgb2YgQS4gVGhpcyBtZWFucyB0aGVzZSBwYXRocyBjb25zdGl0dXRlIGEgY3ljbGUgc29tZWhvdy4gSXMgZ2l2ZW5cbiAgLy8gYSB0cmFjZSBvZiBhbGwgdmlzaXRlZCBub2RlcyBzbyBmYXIuXG4gIF9oYXNOb1NpbmtzKHg6IEludGVybmFsTGlzdGVuZXI8YW55PiwgdHJhY2U6IEFycmF5PGFueT4pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2UuaW5kZXhPZih4KSAhPT0gLTEpXG4gICAgICByZXR1cm4gdHJ1ZTsgZWxzZVxuICAgICAgaWYgKCh4IGFzIGFueSBhcyBPdXRTZW5kZXI8YW55Pikub3V0ID09PSB0aGlzKVxuICAgICAgICByZXR1cm4gdHJ1ZTsgZWxzZVxuICAgICAgICBpZiAoKHggYXMgYW55IGFzIE91dFNlbmRlcjxhbnk+KS5vdXQgJiYgKHggYXMgYW55IGFzIE91dFNlbmRlcjxhbnk+KS5vdXQgIT09IE5PKVxuICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNOb1NpbmtzKCh4IGFzIGFueSBhcyBPdXRTZW5kZXI8YW55Pikub3V0LCB0cmFjZS5jb25jYXQoeCkpOyBlbHNlXG4gICAgICAgICAgaWYgKCh4IGFzIFN0cmVhbTxhbnk+KS5faWxzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgTiA9ICh4IGFzIFN0cmVhbTxhbnk+KS5faWxzLmxlbmd0aDsgaSA8IE47IGkrKylcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLl9oYXNOb1NpbmtzKCh4IGFzIFN0cmVhbTxhbnk+KS5faWxzW2ldLCB0cmFjZS5jb25jYXQoeCkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGN0b3IoKTogdHlwZW9mIFN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBNZW1vcnlTdHJlYW0gPyBNZW1vcnlTdHJlYW0gOiBTdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIExpc3RlbmVyIHRvIHRoZSBTdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB7TGlzdGVuZXJ9IGxpc3RlbmVyXG4gICAqL1xuICBhZGRMaXN0ZW5lcihsaXN0ZW5lcjogUGFydGlhbDxMaXN0ZW5lcjxUPj4pOiB2b2lkIHtcbiAgICAobGlzdGVuZXIgYXMgSW50ZXJuYWxMaXN0ZW5lcjxUPikuX24gPSBsaXN0ZW5lci5uZXh0IHx8IG5vb3A7XG4gICAgKGxpc3RlbmVyIGFzIEludGVybmFsTGlzdGVuZXI8VD4pLl9lID0gbGlzdGVuZXIuZXJyb3IgfHwgbm9vcDtcbiAgICAobGlzdGVuZXIgYXMgSW50ZXJuYWxMaXN0ZW5lcjxUPikuX2MgPSBsaXN0ZW5lci5jb21wbGV0ZSB8fCBub29wO1xuICAgIHRoaXMuX2FkZChsaXN0ZW5lciBhcyBJbnRlcm5hbExpc3RlbmVyPFQ+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgTGlzdGVuZXIgZnJvbSB0aGUgU3RyZWFtLCBhc3N1bWluZyB0aGUgTGlzdGVuZXIgd2FzIGFkZGVkIHRvIGl0LlxuICAgKlxuICAgKiBAcGFyYW0ge0xpc3RlbmVyPFQ+fSBsaXN0ZW5lclxuICAgKi9cbiAgcmVtb3ZlTGlzdGVuZXIobGlzdGVuZXI6IFBhcnRpYWw8TGlzdGVuZXI8VD4+KTogdm9pZCB7XG4gICAgdGhpcy5fcmVtb3ZlKGxpc3RlbmVyIGFzIEludGVybmFsTGlzdGVuZXI8VD4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBMaXN0ZW5lciB0byB0aGUgU3RyZWFtIHJldHVybmluZyBhIFN1YnNjcmlwdGlvbiB0byByZW1vdmUgdGhhdFxuICAgKiBsaXN0ZW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtMaXN0ZW5lcn0gbGlzdGVuZXJcbiAgICogQHJldHVybnMge1N1YnNjcmlwdGlvbn1cbiAgICovXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogUGFydGlhbDxMaXN0ZW5lcjxUPj4pOiBTdWJzY3JpcHRpb24ge1xuICAgIHRoaXMuYWRkTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgIHJldHVybiBuZXcgU3RyZWFtU3ViPFQ+KHRoaXMsIGxpc3RlbmVyIGFzIEludGVybmFsTGlzdGVuZXI8VD4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBpbnRlcm9wIGJldHdlZW4gbW9zdC5qcyBhbmQgUnhKUyA1XG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJlYW19XG4gICAqL1xuICBbJCRvYnNlcnZhYmxlXSgpOiBTdHJlYW08VD4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU3RyZWFtIGdpdmVuIGEgUHJvZHVjZXIuXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIHtQcm9kdWNlcn0gcHJvZHVjZXIgQW4gb3B0aW9uYWwgUHJvZHVjZXIgdGhhdCBkaWN0YXRlcyBob3cgdG9cbiAgICogc3RhcnQsIGdlbmVyYXRlIGV2ZW50cywgYW5kIHN0b3AgdGhlIFN0cmVhbS5cbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZTxUPihwcm9kdWNlcj86IFByb2R1Y2VyPFQ+KTogU3RyZWFtPFQ+IHtcbiAgICBpZiAocHJvZHVjZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJvZHVjZXIuc3RhcnQgIT09ICdmdW5jdGlvbidcbiAgICAgICAgfHwgdHlwZW9mIHByb2R1Y2VyLnN0b3AgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvZHVjZXIgcmVxdWlyZXMgYm90aCBzdGFydCBhbmQgc3RvcCBmdW5jdGlvbnMnKTtcbiAgICAgIGludGVybmFsaXplUHJvZHVjZXIocHJvZHVjZXIpOyAvLyBtdXRhdGVzIHRoZSBpbnB1dFxuICAgIH1cbiAgICByZXR1cm4gbmV3IFN0cmVhbShwcm9kdWNlciBhcyBJbnRlcm5hbFByb2R1Y2VyPFQ+ICYgUHJvZHVjZXI8VD4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTWVtb3J5U3RyZWFtIGdpdmVuIGEgUHJvZHVjZXIuXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIHtQcm9kdWNlcn0gcHJvZHVjZXIgQW4gb3B0aW9uYWwgUHJvZHVjZXIgdGhhdCBkaWN0YXRlcyBob3cgdG9cbiAgICogc3RhcnQsIGdlbmVyYXRlIGV2ZW50cywgYW5kIHN0b3AgdGhlIFN0cmVhbS5cbiAgICogQHJldHVybiB7TWVtb3J5U3RyZWFtfVxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVdpdGhNZW1vcnk8VD4ocHJvZHVjZXI/OiBQcm9kdWNlcjxUPik6IE1lbW9yeVN0cmVhbTxUPiB7XG4gICAgaWYgKHByb2R1Y2VyKSBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKTsgLy8gbXV0YXRlcyB0aGUgaW5wdXRcbiAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbTxUPihwcm9kdWNlciBhcyBJbnRlcm5hbFByb2R1Y2VyPFQ+ICYgUHJvZHVjZXI8VD4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBTdHJlYW0gdGhhdCBkb2VzIG5vdGhpbmcgd2hlbiBzdGFydGVkLiBJdCBuZXZlciBlbWl0cyBhbnkgZXZlbnQuXG4gICAqXG4gICAqIE1hcmJsZSBkaWFncmFtOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqICAgICAgICAgIG5ldmVyXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZmFjdG9yeSB0cnVlXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHN0YXRpYyBuZXZlcjxUID0gYW55PigpOiBTdHJlYW08VD4ge1xuICAgIHJldHVybiBuZXcgU3RyZWFtPFQ+KHsgX3N0YXJ0OiBub29wLCBfc3RvcDogbm9vcCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgU3RyZWFtIHRoYXQgaW1tZWRpYXRlbHkgZW1pdHMgdGhlIFwiY29tcGxldGVcIiBub3RpZmljYXRpb24gd2hlblxuICAgKiBzdGFydGVkLCBhbmQgdGhhdCdzIGl0LlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiBlbXB0eVxuICAgKiAtfFxuICAgKiBgYGBcbiAgICpcbiAgICogQGZhY3RvcnkgdHJ1ZVxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBzdGF0aWMgZW1wdHk8VCA9IGFueT4oKTogU3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxUPih7XG4gICAgICBfc3RhcnQoaWw6IEludGVybmFsTGlzdGVuZXI8YW55PikgeyBpbC5fYygpOyB9LFxuICAgICAgX3N0b3A6IG5vb3AsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFN0cmVhbSB0aGF0IGltbWVkaWF0ZWx5IGVtaXRzIGFuIFwiZXJyb3JcIiBub3RpZmljYXRpb24gd2l0aCB0aGVcbiAgICogdmFsdWUgeW91IHBhc3NlZCBhcyB0aGUgYGVycm9yYCBhcmd1bWVudCB3aGVuIHRoZSBzdHJlYW0gc3RhcnRzLCBhbmQgdGhhdCdzXG4gICAqIGl0LlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiB0aHJvdyhYKVxuICAgKiAtWFxuICAgKiBgYGBcbiAgICpcbiAgICogQGZhY3RvcnkgdHJ1ZVxuICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGV2ZW50IHRvIGVtaXQgb24gdGhlIGNyZWF0ZWQgc3RyZWFtLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBzdGF0aWMgdGhyb3coZXJyb3I6IGFueSk6IFN0cmVhbTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxhbnk+KHtcbiAgICAgIF9zdGFydChpbDogSW50ZXJuYWxMaXN0ZW5lcjxhbnk+KSB7IGlsLl9lKGVycm9yKTsgfSxcbiAgICAgIF9zdG9wOiBub29wLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJlYW0gZnJvbSBhbiBBcnJheSwgUHJvbWlzZSwgb3IgYW4gT2JzZXJ2YWJsZS5cbiAgICpcbiAgICogQGZhY3RvcnkgdHJ1ZVxuICAgKiBAcGFyYW0ge0FycmF5fFByb21pc2VMaWtlfE9ic2VydmFibGV9IGlucHV0IFRoZSBpbnB1dCB0byBtYWtlIGEgc3RyZWFtIGZyb20uXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHN0YXRpYyBmcm9tPFQ+KGlucHV0OiBQcm9taXNlTGlrZTxUPiB8IFN0cmVhbTxUPiB8IEFycmF5PFQ+IHwgT2JzZXJ2YWJsZTxUPik6IFN0cmVhbTxUPiB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFskJG9ic2VydmFibGVdID09PSAnZnVuY3Rpb24nKVxuICAgICAgcmV0dXJuIFN0cmVhbS5mcm9tT2JzZXJ2YWJsZTxUPihpbnB1dCBhcyBPYnNlcnZhYmxlPFQ+KTsgZWxzZVxuICAgICAgaWYgKHR5cGVvZiAoaW5wdXQgYXMgUHJvbWlzZUxpa2U8VD4pLnRoZW4gPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBTdHJlYW0uZnJvbVByb21pc2U8VD4oaW5wdXQgYXMgUHJvbWlzZUxpa2U8VD4pOyBlbHNlXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSlcbiAgICAgICAgICByZXR1cm4gU3RyZWFtLmZyb21BcnJheTxUPihpbnB1dCk7XG5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBUeXBlIG9mIGlucHV0IHRvIGZyb20oKSBtdXN0IGJlIGFuIEFycmF5LCBQcm9taXNlLCBvciBPYnNlcnZhYmxlYCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFN0cmVhbSB0aGF0IGltbWVkaWF0ZWx5IGVtaXRzIHRoZSBhcmd1bWVudHMgdGhhdCB5b3UgZ2l2ZSB0b1xuICAgKiAqb2YqLCB0aGVuIGNvbXBsZXRlcy5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogb2YoMSwyLDMpXG4gICAqIDEyM3xcbiAgICogYGBgXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIGEgVGhlIGZpcnN0IHZhbHVlIHlvdSB3YW50IHRvIGVtaXQgYXMgYW4gZXZlbnQgb24gdGhlIHN0cmVhbS5cbiAgICogQHBhcmFtIGIgVGhlIHNlY29uZCB2YWx1ZSB5b3Ugd2FudCB0byBlbWl0IGFzIGFuIGV2ZW50IG9uIHRoZSBzdHJlYW0uIE9uZVxuICAgKiBvciBtb3JlIG9mIHRoZXNlIHZhbHVlcyBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBzdGF0aWMgb2Y8VD4oLi4uaXRlbXM6IEFycmF5PFQ+KTogU3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gU3RyZWFtLmZyb21BcnJheTxUPihpdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgdG8gYSBzdHJlYW0uIFRoZSByZXR1cm5lZCBzdHJlYW0gd2lsbCBlbWl0IHN5bmNocm9ub3VzbHlcbiAgICogYWxsIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXksIGFuZCB0aGVuIGNvbXBsZXRlLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiBmcm9tQXJyYXkoWzEsMiwzXSlcbiAgICogMTIzfFxuICAgKiBgYGBcbiAgICpcbiAgICogQGZhY3RvcnkgdHJ1ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gYmUgY29udmVydGVkIGFzIGEgc3RyZWFtLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBzdGF0aWMgZnJvbUFycmF5PFQ+KGFycmF5OiBBcnJheTxUPik6IFN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW08VD4obmV3IEZyb21BcnJheTxUPihhcnJheSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgcHJvbWlzZSB0byBhIHN0cmVhbS4gVGhlIHJldHVybmVkIHN0cmVhbSB3aWxsIGVtaXQgdGhlIHJlc29sdmVkXG4gICAqIHZhbHVlIG9mIHRoZSBwcm9taXNlLCBhbmQgdGhlbiBjb21wbGV0ZS4gSG93ZXZlciwgaWYgdGhlIHByb21pc2UgaXNcbiAgICogcmVqZWN0ZWQsIHRoZSBzdHJlYW0gd2lsbCBlbWl0IHRoZSBjb3JyZXNwb25kaW5nIGVycm9yLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiBmcm9tUHJvbWlzZSggLS0tLTQyIClcbiAgICogLS0tLS0tLS0tLS0tLS0tLS00MnxcbiAgICogYGBgXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIHtQcm9taXNlTGlrZX0gcHJvbWlzZSBUaGUgcHJvbWlzZSB0byBiZSBjb252ZXJ0ZWQgYXMgYSBzdHJlYW0uXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHN0YXRpYyBmcm9tUHJvbWlzZTxUPihwcm9taXNlOiBQcm9taXNlTGlrZTxUPik6IFN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW08VD4obmV3IEZyb21Qcm9taXNlPFQ+KHByb21pc2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBPYnNlcnZhYmxlIGludG8gYSBTdHJlYW0uXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIHthbnl9IG9ic2VydmFibGUgVGhlIG9ic2VydmFibGUgdG8gYmUgY29udmVydGVkIGFzIGEgc3RyZWFtLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBzdGF0aWMgZnJvbU9ic2VydmFibGU8VD4ob2JzOiB7IHN1YnNjcmliZTogYW55IH0pOiBTdHJlYW08VD4ge1xuICAgIGlmICgob2JzIGFzIFN0cmVhbTxUPikuZW5kV2hlbiAhPT0gdW5kZWZpbmVkKSByZXR1cm4gb2JzIGFzIFN0cmVhbTxUPjtcbiAgICBjb25zdCBvID0gdHlwZW9mIG9ic1skJG9ic2VydmFibGVdID09PSAnZnVuY3Rpb24nID8gb2JzWyQkb2JzZXJ2YWJsZV0oKSA6IG9icztcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxUPihuZXcgRnJvbU9ic2VydmFibGUobykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJlYW0gdGhhdCBwZXJpb2RpY2FsbHkgZW1pdHMgaW5jcmVtZW50YWwgbnVtYmVycywgZXZlcnlcbiAgICogYHBlcmlvZGAgbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiAgICAgcGVyaW9kaWMoMTAwMClcbiAgICogLS0tMC0tLTEtLS0yLS0tMy0tLTQtLS0uLi5cbiAgICogYGBgXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlcmlvZCBUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIHVzZSBhcyBhIHJhdGUgb2ZcbiAgICogZW1pc3Npb24uXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHN0YXRpYyBwZXJpb2RpYyhwZXJpb2Q6IG51bWJlcik6IFN0cmVhbTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxudW1iZXI+KG5ldyBQZXJpb2RpYyhwZXJpb2QpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCbGVuZHMgbXVsdGlwbGUgc3RyZWFtcyB0b2dldGhlciwgZW1pdHRpbmcgZXZlbnRzIGZyb20gYWxsIG9mIHRoZW1cbiAgICogY29uY3VycmVudGx5LlxuICAgKlxuICAgKiAqbWVyZ2UqIHRha2VzIG11bHRpcGxlIHN0cmVhbXMgYXMgYXJndW1lbnRzLCBhbmQgY3JlYXRlcyBhIHN0cmVhbSB0aGF0XG4gICAqIGJlaGF2ZXMgbGlrZSBlYWNoIG9mIHRoZSBhcmd1bWVudCBzdHJlYW1zLCBpbiBwYXJhbGxlbC5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogLS0xLS0tLTItLS0tLTMtLS0tLS0tLTQtLS1cbiAgICogLS0tLWEtLS0tLWItLS0tYy0tLWQtLS0tLS1cbiAgICogICAgICAgICAgICBtZXJnZVxuICAgKiAtLTEtYS0tMi0tYi0tMy1jLS0tZC0tNC0tLVxuICAgKiBgYGBcbiAgICpcbiAgICogQGZhY3RvcnkgdHJ1ZVxuICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtMSBBIHN0cmVhbSB0byBtZXJnZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0yIEEgc3RyZWFtIHRvIG1lcmdlIHRvZ2V0aGVyIHdpdGggb3RoZXIgc3RyZWFtcy4gVHdvXG4gICAqIG9yIG1vcmUgc3RyZWFtcyBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBzdGF0aWMgbWVyZ2U6IE1lcmdlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWVyZ2UoLi4uc3RyZWFtczogQXJyYXk8U3RyZWFtPGFueT4+KSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW08YW55PihuZXcgTWVyZ2Uoc3RyZWFtcykpO1xuICB9IGFzIE1lcmdlU2lnbmF0dXJlO1xuXG4gIC8qKlxuICAgKiBDb21iaW5lcyBtdWx0aXBsZSBpbnB1dCBzdHJlYW1zIHRvZ2V0aGVyIHRvIHJldHVybiBhIHN0cmVhbSB3aG9zZSBldmVudHNcbiAgICogYXJlIGFycmF5cyB0aGF0IGNvbGxlY3QgdGhlIGxhdGVzdCBldmVudHMgZnJvbSBlYWNoIGlucHV0IHN0cmVhbS5cbiAgICpcbiAgICogKmNvbWJpbmUqIGludGVybmFsbHkgcmVtZW1iZXJzIHRoZSBtb3N0IHJlY2VudCBldmVudCBmcm9tIGVhY2ggb2YgdGhlIGlucHV0XG4gICAqIHN0cmVhbXMuIFdoZW4gYW55IG9mIHRoZSBpbnB1dCBzdHJlYW1zIGVtaXRzIGFuIGV2ZW50LCB0aGF0IGV2ZW50IHRvZ2V0aGVyXG4gICAqIHdpdGggYWxsIHRoZSBvdGhlciBzYXZlZCBldmVudHMgYXJlIGNvbWJpbmVkIGludG8gYW4gYXJyYXkuIFRoYXQgYXJyYXkgd2lsbFxuICAgKiBiZSBlbWl0dGVkIG9uIHRoZSBvdXRwdXQgc3RyZWFtLiBJdCdzIGVzc2VudGlhbGx5IGEgd2F5IG9mIGpvaW5pbmcgdG9nZXRoZXJcbiAgICogdGhlIGV2ZW50cyBmcm9tIG11bHRpcGxlIHN0cmVhbXMuXG4gICAqXG4gICAqIE1hcmJsZSBkaWFncmFtOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIC0tMS0tLS0yLS0tLS0zLS0tLS0tLS00LS0tXG4gICAqIC0tLS1hLS0tLS1iLS0tLS1jLS1kLS0tLS0tXG4gICAqICAgICAgICAgIGNvbWJpbmVcbiAgICogLS0tLTFhLTJhLTJiLTNiLTNjLTNkLTRkLS1cbiAgICogYGBgXG4gICAqXG4gICAqIEBmYWN0b3J5IHRydWVcbiAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbTEgQSBzdHJlYW0gdG8gY29tYmluZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0yIEEgc3RyZWFtIHRvIGNvbWJpbmUgdG9nZXRoZXIgd2l0aCBvdGhlciBzdHJlYW1zLlxuICAgKiBNdWx0aXBsZSBzdHJlYW1zLCBub3QganVzdCB0d28sIG1heSBiZSBnaXZlbiBhcyBhcmd1bWVudHMuXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHN0YXRpYyBjb21iaW5lOiBDb21iaW5lU2lnbmF0dXJlID0gZnVuY3Rpb24gY29tYmluZSguLi5zdHJlYW1zOiBBcnJheTxTdHJlYW08YW55Pj4pIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxBcnJheTxhbnk+PihuZXcgQ29tYmluZTxhbnk+KHN0cmVhbXMpKTtcbiAgfSBhcyBDb21iaW5lU2lnbmF0dXJlO1xuXG4gIHByb3RlY3RlZCBfbWFwPFU+KHByb2plY3Q6ICh0OiBUKSA9PiBVKTogU3RyZWFtPFU+IHwgTWVtb3J5U3RyZWFtPFU+IHtcbiAgICByZXR1cm4gbmV3ICh0aGlzLmN0b3IoKSk8VT4obmV3IE1hcE9wPFQsIFU+KHByb2plY3QsIHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGVhY2ggZXZlbnQgZnJvbSB0aGUgaW5wdXQgU3RyZWFtIHRocm91Z2ggYSBgcHJvamVjdGAgZnVuY3Rpb24sXG4gICAqIHRvIGdldCBhIFN0cmVhbSB0aGF0IGVtaXRzIHRob3NlIHRyYW5zZm9ybWVkIGV2ZW50cy5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogLS0xLS0tMy0tNS0tLS0tNy0tLS0tLVxuICAgKiAgICBtYXAoaSA9PiBpICogMTApXG4gICAqIC0tMTAtLTMwLTUwLS0tLTcwLS0tLS1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByb2plY3QgQSBmdW5jdGlvbiBvZiB0eXBlIGAodDogVCkgPT4gVWAgdGhhdCB0YWtlcyBldmVudFxuICAgKiBgdGAgb2YgdHlwZSBgVGAgZnJvbSB0aGUgaW5wdXQgU3RyZWFtIGFuZCBwcm9kdWNlcyBhbiBldmVudCBvZiB0eXBlIGBVYCwgdG9cbiAgICogYmUgZW1pdHRlZCBvbiB0aGUgb3V0cHV0IFN0cmVhbS5cbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgbWFwPFU+KHByb2plY3Q6ICh0OiBUKSA9PiBVKTogU3RyZWFtPFU+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFwKHByb2plY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0J3MgbGlrZSBgbWFwYCwgYnV0IHRyYW5zZm9ybXMgZWFjaCBpbnB1dCBldmVudCB0byBhbHdheXMgdGhlIHNhbWVcbiAgICogY29uc3RhbnQgdmFsdWUgb24gdGhlIG91dHB1dCBTdHJlYW0uXG4gICAqXG4gICAqIE1hcmJsZSBkaWFncmFtOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIC0tMS0tLTMtLTUtLS0tLTctLS0tLVxuICAgKiAgICAgICBtYXBUbygxMClcbiAgICogLS0xMC0tMTAtMTAtLS0tMTAtLS0tXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdGVkVmFsdWUgQSB2YWx1ZSB0byBlbWl0IG9uIHRoZSBvdXRwdXQgU3RyZWFtIHdoZW5ldmVyIHRoZVxuICAgKiBpbnB1dCBTdHJlYW0gZW1pdHMgYW55IHZhbHVlLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBtYXBUbzxVPihwcm9qZWN0ZWRWYWx1ZTogVSk6IFN0cmVhbTxVPiB7XG4gICAgY29uc3QgcyA9IHRoaXMubWFwKCgpID0+IHByb2plY3RlZFZhbHVlKTtcbiAgICBjb25zdCBvcDogT3BlcmF0b3I8VCwgVT4gPSBzLl9wcm9kIGFzIE9wZXJhdG9yPFQsIFU+O1xuICAgIG9wLnR5cGUgPSAnbWFwVG8nO1xuICAgIHJldHVybiBzO1xuICB9XG5cbiAgZmlsdGVyPFMgZXh0ZW5kcyBUPihwYXNzZXM6ICh0OiBUKSA9PiB0IGlzIFMpOiBTdHJlYW08Uz47XG4gIGZpbHRlcihwYXNzZXM6ICh0OiBUKSA9PiBib29sZWFuKTogU3RyZWFtPFQ+O1xuICAvKipcbiAgICogT25seSBhbGxvd3MgZXZlbnRzIHRoYXQgcGFzcyB0aGUgdGVzdCBnaXZlbiBieSB0aGUgYHBhc3Nlc2AgYXJndW1lbnQuXG4gICAqXG4gICAqIEVhY2ggZXZlbnQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIGlzIGdpdmVuIHRvIHRoZSBgcGFzc2VzYCBmdW5jdGlvbi4gSWYgdGhlXG4gICAqIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgLCB0aGUgZXZlbnQgaXMgZm9yd2FyZGVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtLFxuICAgKiBvdGhlcndpc2UgaXQgaXMgaWdub3JlZCBhbmQgbm90IGZvcndhcmRlZC5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogLS0xLS0tMi0tMy0tLS0tNC0tLS0tNS0tLTYtLTctOC0tXG4gICAqICAgICBmaWx0ZXIoaSA9PiBpICUgMiA9PT0gMClcbiAgICogLS0tLS0tMi0tLS0tLS0tNC0tLS0tLS0tLTYtLS0tOC0tXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXNzZXMgQSBmdW5jdGlvbiBvZiB0eXBlIGAodDogVCkgPT4gYm9vbGVhbmAgdGhhdCB0YWtlc1xuICAgKiBhbiBldmVudCBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gYW5kIGNoZWNrcyBpZiBpdCBwYXNzZXMsIGJ5IHJldHVybmluZyBhXG4gICAqIGJvb2xlYW4uXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIGZpbHRlcihwYXNzZXM6ICh0OiBUKSA9PiBib29sZWFuKTogU3RyZWFtPFQ+IHtcbiAgICBjb25zdCBwID0gdGhpcy5fcHJvZDtcbiAgICBpZiAocCBpbnN0YW5jZW9mIEZpbHRlcilcbiAgICAgIHJldHVybiBuZXcgU3RyZWFtPFQ+KG5ldyBGaWx0ZXI8VD4oXG4gICAgICAgIGFuZCgocCBhcyBGaWx0ZXI8VD4pLmYsIHBhc3NlcyksXG4gICAgICAgIChwIGFzIEZpbHRlcjxUPikuaW5zXG4gICAgICApKTtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxUPihuZXcgRmlsdGVyPFQ+KHBhc3NlcywgdGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgdGhlIGZpcnN0IGBhbW91bnRgIG1hbnkgZXZlbnRzIGZyb20gdGhlIGlucHV0IHN0cmVhbSBwYXNzIHRvIHRoZVxuICAgKiBvdXRwdXQgc3RyZWFtLCB0aGVuIG1ha2VzIHRoZSBvdXRwdXQgc3RyZWFtIGNvbXBsZXRlLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiAtLWEtLS1iLS1jLS0tLWQtLS1lLS1cbiAgICogICAgdGFrZSgzKVxuICAgKiAtLWEtLS1iLS1jfFxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBIb3cgbWFueSBldmVudHMgdG8gYWxsb3cgZnJvbSB0aGUgaW5wdXQgc3RyZWFtXG4gICAqIGJlZm9yZSBjb21wbGV0aW5nIHRoZSBvdXRwdXQgc3RyZWFtLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICB0YWtlKGFtb3VudDogbnVtYmVyKTogU3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gbmV3ICh0aGlzLmN0b3IoKSk8VD4obmV3IFRha2U8VD4oYW1vdW50LCB0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogSWdub3JlcyB0aGUgZmlyc3QgYGFtb3VudGAgbWFueSBldmVudHMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLCBhbmQgdGhlblxuICAgKiBhZnRlciB0aGF0IHN0YXJ0cyBmb3J3YXJkaW5nIGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gdG8gdGhlIG91dHB1dFxuICAgKiBzdHJlYW0uXG4gICAqXG4gICAqIE1hcmJsZSBkaWFncmFtOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIC0tYS0tLWItLWMtLS0tZC0tLWUtLVxuICAgKiAgICAgICBkcm9wKDMpXG4gICAqIC0tLS0tLS0tLS0tLS0tZC0tLWUtLVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBIb3cgbWFueSBldmVudHMgdG8gaWdub3JlIGZyb20gdGhlIGlucHV0IHN0cmVhbVxuICAgKiBiZWZvcmUgZm9yd2FyZGluZyBhbGwgZXZlbnRzIGZyb20gdGhlIGlucHV0IHN0cmVhbSB0byB0aGUgb3V0cHV0IHN0cmVhbS5cbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgZHJvcChhbW91bnQ6IG51bWJlcik6IFN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW08VD4obmV3IERyb3A8VD4oYW1vdW50LCB0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgaW5wdXQgc3RyZWFtIGNvbXBsZXRlcywgdGhlIG91dHB1dCBzdHJlYW0gd2lsbCBlbWl0IHRoZSBsYXN0IGV2ZW50XG4gICAqIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHN0cmVhbSwgYW5kIHRoZW4gd2lsbCBhbHNvIGNvbXBsZXRlLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiAtLWEtLS1iLS1jLS1kLS0tLXxcbiAgICogICAgICAgbGFzdCgpXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tZHxcbiAgICogYGBgXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIGxhc3QoKTogU3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxUPihuZXcgTGFzdDxUPih0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGVuZHMgdGhlIGdpdmVuIGBpbml0aWFsYCB2YWx1ZSB0byB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzIGVtaXR0ZWQgYnkgdGhlXG4gICAqIGlucHV0IHN0cmVhbS4gVGhlIHJldHVybmVkIHN0cmVhbSBpcyBhIE1lbW9yeVN0cmVhbSwgd2hpY2ggbWVhbnMgaXQgaXNcbiAgICogYWxyZWFkeSBgcmVtZW1iZXIoKWAnZC5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogLS0tMS0tLTItLS0tLTMtLS1cbiAgICogICBzdGFydFdpdGgoMClcbiAgICogMC0tMS0tLTItLS0tLTMtLS1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBpbml0aWFsIFRoZSB2YWx1ZSBvciBldmVudCB0byBwcmVwZW5kLlxuICAgKiBAcmV0dXJuIHtNZW1vcnlTdHJlYW19XG4gICAqL1xuICBzdGFydFdpdGgoaW5pdGlhbDogVCk6IE1lbW9yeVN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW08VD4obmV3IFN0YXJ0V2l0aDxUPih0aGlzLCBpbml0aWFsKSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyBhbm90aGVyIHN0cmVhbSB0byBkZXRlcm1pbmUgd2hlbiB0byBjb21wbGV0ZSB0aGUgY3VycmVudCBzdHJlYW0uXG4gICAqXG4gICAqIFdoZW4gdGhlIGdpdmVuIGBvdGhlcmAgc3RyZWFtIGVtaXRzIGFuIGV2ZW50IG9yIGNvbXBsZXRlcywgdGhlIG91dHB1dFxuICAgKiBzdHJlYW0gd2lsbCBjb21wbGV0ZS4gQmVmb3JlIHRoYXQgaGFwcGVucywgdGhlIG91dHB1dCBzdHJlYW0gd2lsbCBiZWhhdmVzXG4gICAqIGxpa2UgdGhlIGlucHV0IHN0cmVhbS5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogLS0tMS0tLTItLS0tLTMtLTQtLS0tNS0tLS02LS0tXG4gICAqICAgZW5kV2hlbiggLS0tLS0tLS1hLS1iLS18IClcbiAgICogLS0tMS0tLTItLS0tLTMtLTQtLXxcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBvdGhlciBTb21lIG90aGVyIHN0cmVhbSB0aGF0IGlzIHVzZWQgdG8ga25vdyB3aGVuIHNob3VsZCB0aGUgb3V0cHV0XG4gICAqIHN0cmVhbSBvZiB0aGlzIG9wZXJhdG9yIGNvbXBsZXRlLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBlbmRXaGVuKG90aGVyOiBTdHJlYW08YW55Pik6IFN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyAodGhpcy5jdG9yKCkpPFQ+KG5ldyBFbmRXaGVuPFQ+KG90aGVyLCB0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogXCJGb2xkc1wiIHRoZSBzdHJlYW0gb250byBpdHNlbGYuXG4gICAqXG4gICAqIENvbWJpbmVzIGV2ZW50cyBmcm9tIHRoZSBwYXN0IHRocm91Z2hvdXRcbiAgICogdGhlIGVudGlyZSBleGVjdXRpb24gb2YgdGhlIGlucHV0IHN0cmVhbSwgYWxsb3dpbmcgeW91IHRvIGFjY3VtdWxhdGUgdGhlbVxuICAgKiB0b2dldGhlci4gSXQncyBlc3NlbnRpYWxseSBsaWtlIGBBcnJheS5wcm90b3R5cGUucmVkdWNlYC4gVGhlIHJldHVybmVkXG4gICAqIHN0cmVhbSBpcyBhIE1lbW9yeVN0cmVhbSwgd2hpY2ggbWVhbnMgaXQgaXMgYWxyZWFkeSBgcmVtZW1iZXIoKWAnZC5cbiAgICpcbiAgICogVGhlIG91dHB1dCBzdHJlYW0gc3RhcnRzIGJ5IGVtaXR0aW5nIHRoZSBgc2VlZGAgd2hpY2ggeW91IGdpdmUgYXMgYXJndW1lbnQuXG4gICAqIFRoZW4sIHdoZW4gYW4gZXZlbnQgaGFwcGVucyBvbiB0aGUgaW5wdXQgc3RyZWFtLCBpdCBpcyBjb21iaW5lZCB3aXRoIHRoYXRcbiAgICogc2VlZCB2YWx1ZSB0aHJvdWdoIHRoZSBgYWNjdW11bGF0ZWAgZnVuY3Rpb24sIGFuZCB0aGUgb3V0cHV0IHZhbHVlIGlzXG4gICAqIGVtaXR0ZWQgb24gdGhlIG91dHB1dCBzdHJlYW0uIGBmb2xkYCByZW1lbWJlcnMgdGhhdCBvdXRwdXQgdmFsdWUgYXMgYGFjY2BcbiAgICogKFwiYWNjdW11bGF0b3JcIiksIGFuZCB0aGVuIHdoZW4gYSBuZXcgaW5wdXQgZXZlbnQgYHRgIGhhcHBlbnMsIGBhY2NgIHdpbGwgYmVcbiAgICogY29tYmluZWQgd2l0aCB0aGF0IHRvIHByb2R1Y2UgdGhlIG5ldyBgYWNjYCBhbmQgc28gZm9ydGguXG4gICAqXG4gICAqIE1hcmJsZSBkaWFncmFtOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIC0tLS0tLTEtLS0tLTEtLTItLS0tMS0tLS0xLS0tLS0tXG4gICAqICAgZm9sZCgoYWNjLCB4KSA9PiBhY2MgKyB4LCAzKVxuICAgKiAzLS0tLS00LS0tLS01LS03LS0tLTgtLS0tOS0tLS0tLVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gYWNjdW11bGF0ZSBBIGZ1bmN0aW9uIG9mIHR5cGUgYChhY2M6IFIsIHQ6IFQpID0+IFJgIHRoYXRcbiAgICogdGFrZXMgdGhlIHByZXZpb3VzIGFjY3VtdWxhdGVkIHZhbHVlIGBhY2NgIGFuZCB0aGUgaW5jb21pbmcgZXZlbnQgZnJvbSB0aGVcbiAgICogaW5wdXQgc3RyZWFtIGFuZCBwcm9kdWNlcyB0aGUgbmV3IGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKiBAcGFyYW0gc2VlZCBUaGUgaW5pdGlhbCBhY2N1bXVsYXRlZCB2YWx1ZSwgb2YgdHlwZSBgUmAuXG4gICAqIEByZXR1cm4ge01lbW9yeVN0cmVhbX1cbiAgICovXG4gIGZvbGQ8Uj4oYWNjdW11bGF0ZTogKGFjYzogUiwgdDogVCkgPT4gUiwgc2VlZDogUik6IE1lbW9yeVN0cmVhbTxSPiB7XG4gICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW08Uj4obmV3IEZvbGQ8VCwgUj4oYWNjdW11bGF0ZSwgc2VlZCwgdGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFuIGVycm9yIHdpdGggYW5vdGhlciBzdHJlYW0uXG4gICAqXG4gICAqIFdoZW4gKGFuZCBpZikgYW4gZXJyb3IgaGFwcGVucyBvbiB0aGUgaW5wdXQgc3RyZWFtLCBpbnN0ZWFkIG9mIGZvcndhcmRpbmdcbiAgICogdGhhdCBlcnJvciB0byB0aGUgb3V0cHV0IHN0cmVhbSwgKnJlcGxhY2VFcnJvciogd2lsbCBjYWxsIHRoZSBgcmVwbGFjZWBcbiAgICogZnVuY3Rpb24gd2hpY2ggcmV0dXJucyB0aGUgc3RyZWFtIHRoYXQgdGhlIG91dHB1dCBzdHJlYW0gd2lsbCByZXBsaWNhdGUuXG4gICAqIEFuZCwgaW4gY2FzZSB0aGF0IG5ldyBzdHJlYW0gYWxzbyBlbWl0cyBhbiBlcnJvciwgYHJlcGxhY2VgIHdpbGwgYmUgY2FsbGVkXG4gICAqIGFnYWluIHRvIGdldCBhbm90aGVyIHN0cmVhbSB0byBzdGFydCByZXBsaWNhdGluZy5cbiAgICpcbiAgICogTWFyYmxlIGRpYWdyYW06XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogLS0xLS0tMi0tLS0tMy0tNC0tLS0tWFxuICAgKiAgIHJlcGxhY2VFcnJvciggKCkgPT4gLS0xMC0tfCApXG4gICAqIC0tMS0tLTItLS0tLTMtLTQtLS0tLS0tLTEwLS18XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXBsYWNlIEEgZnVuY3Rpb24gb2YgdHlwZSBgKGVycikgPT4gU3RyZWFtYCB0aGF0IHRha2VzXG4gICAqIHRoZSBlcnJvciB0aGF0IG9jY3VycmVkIG9uIHRoZSBpbnB1dCBzdHJlYW0gb3Igb24gdGhlIHByZXZpb3VzIHJlcGxhY2VtZW50XG4gICAqIHN0cmVhbSBhbmQgcmV0dXJucyBhIG5ldyBzdHJlYW0uIFRoZSBvdXRwdXQgc3RyZWFtIHdpbGwgYmVoYXZlIGxpa2UgdGhlXG4gICAqIHN0cmVhbSB0aGF0IHRoaXMgZnVuY3Rpb24gcmV0dXJucy5cbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgcmVwbGFjZUVycm9yKHJlcGxhY2U6IChlcnI6IGFueSkgPT4gU3RyZWFtPFQ+KTogU3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gbmV3ICh0aGlzLmN0b3IoKSk8VD4obmV3IFJlcGxhY2VFcnJvcjxUPihyZXBsYWNlLCB0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgYSBcInN0cmVhbSBvZiBzdHJlYW1zXCIsIGhhbmRsaW5nIG9ubHkgb25lIG5lc3RlZCBzdHJlYW0gYXQgYSB0aW1lXG4gICAqIChubyBjb25jdXJyZW5jeSkuXG4gICAqXG4gICAqIElmIHRoZSBpbnB1dCBzdHJlYW0gaXMgYSBzdHJlYW0gdGhhdCBlbWl0cyBzdHJlYW1zLCB0aGVuIHRoaXMgb3BlcmF0b3Igd2lsbFxuICAgKiByZXR1cm4gYW4gb3V0cHV0IHN0cmVhbSB3aGljaCBpcyBhIGZsYXQgc3RyZWFtOiBlbWl0cyByZWd1bGFyIGV2ZW50cy4gVGhlXG4gICAqIGZsYXR0ZW5pbmcgaGFwcGVucyB3aXRob3V0IGNvbmN1cnJlbmN5LiBJdCB3b3JrcyBsaWtlIHRoaXM6IHdoZW4gdGhlIGlucHV0XG4gICAqIHN0cmVhbSBlbWl0cyBhIG5lc3RlZCBzdHJlYW0sICpmbGF0dGVuKiB3aWxsIHN0YXJ0IGltaXRhdGluZyB0aGF0IG5lc3RlZFxuICAgKiBvbmUuIEhvd2V2ZXIsIGFzIHNvb24gYXMgdGhlIG5leHQgbmVzdGVkIHN0cmVhbSBpcyBlbWl0dGVkIG9uIHRoZSBpbnB1dFxuICAgKiBzdHJlYW0sICpmbGF0dGVuKiB3aWxsIGZvcmdldCB0aGUgcHJldmlvdXMgbmVzdGVkIG9uZSBpdCB3YXMgaW1pdGF0aW5nLCBhbmRcbiAgICogd2lsbCBzdGFydCBpbWl0YXRpbmcgdGhlIG5ldyBuZXN0ZWQgb25lLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiAtLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS1cbiAgICogICBcXCAgICAgICAgXFxcbiAgICogICAgXFwgICAgICAgLS0tLTEtLS0tMi0tLTMtLVxuICAgKiAgICAtLWEtLWItLS0tYy0tLS1kLS0tLS0tLS1cbiAgICogICAgICAgICAgIGZsYXR0ZW5cbiAgICogLS0tLS1hLS1iLS0tLS0tMS0tLS0yLS0tMy0tXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBmbGF0dGVuPFI+KHRoaXM6IFN0cmVhbTxTdHJlYW08Uj4gfCBNZW1vcnlTdHJlYW08Uj4+KTogU3RyZWFtPFI+IHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxSPihuZXcgRmxhdHRlbih0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogUGFzc2VzIHRoZSBpbnB1dCBzdHJlYW0gdG8gYSBjdXN0b20gb3BlcmF0b3IsIHRvIHByb2R1Y2UgYW4gb3V0cHV0IHN0cmVhbS5cbiAgICpcbiAgICogKmNvbXBvc2UqIGlzIGEgaGFuZHkgd2F5IG9mIHVzaW5nIGFuIGV4aXN0aW5nIGZ1bmN0aW9uIGluIGEgY2hhaW5lZCBzdHlsZS5cbiAgICogSW5zdGVhZCBvZiB3cml0aW5nIGBvdXRTdHJlYW0gPSBmKGluU3RyZWFtKWAgeW91IGNhbiB3cml0ZVxuICAgKiBgb3V0U3RyZWFtID0gaW5TdHJlYW0uY29tcG9zZShmKWAuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wZXJhdG9yIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHN0cmVhbSBhcyBpbnB1dCBhbmRcbiAgICogcmV0dXJucyBhIHN0cmVhbSBhcyB3ZWxsLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBjb21wb3NlPFU+KG9wZXJhdG9yOiAoc3RyZWFtOiBTdHJlYW08VD4pID0+IFUpOiBVIHtcbiAgICByZXR1cm4gb3BlcmF0b3IodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvdXRwdXQgc3RyZWFtIHRoYXQgYmVoYXZlcyBsaWtlIHRoZSBpbnB1dCBzdHJlYW0sIGJ1dCBhbHNvXG4gICAqIHJlbWVtYmVycyB0aGUgbW9zdCByZWNlbnQgZXZlbnQgdGhhdCBoYXBwZW5zIG9uIHRoZSBpbnB1dCBzdHJlYW0sIHNvIHRoYXQgYVxuICAgKiBuZXdseSBhZGRlZCBsaXN0ZW5lciB3aWxsIGltbWVkaWF0ZWx5IHJlY2VpdmUgdGhhdCBtZW1vcmlzZWQgZXZlbnQuXG4gICAqXG4gICAqIEByZXR1cm4ge01lbW9yeVN0cmVhbX1cbiAgICovXG4gIHJlbWVtYmVyKCk6IE1lbW9yeVN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW08VD4obmV3IFJlbWVtYmVyPFQ+KHRoaXMpKTtcbiAgfVxuXG4gIGRlYnVnKCk6IFN0cmVhbTxUPjtcbiAgZGVidWcobGFiZWxPclNweTogc3RyaW5nKTogU3RyZWFtPFQ+O1xuICBkZWJ1ZyhsYWJlbE9yU3B5OiAodDogVCkgPT4gYW55KTogU3RyZWFtPFQ+O1xuICAvKipcbiAgICogUmV0dXJucyBhbiBvdXRwdXQgc3RyZWFtIHRoYXQgaWRlbnRpY2FsbHkgYmVoYXZlcyBsaWtlIHRoZSBpbnB1dCBzdHJlYW0sXG4gICAqIGJ1dCBhbHNvIHJ1bnMgYSBgc3B5YCBmdW5jdGlvbiBmb3IgZWFjaCBldmVudCwgdG8gaGVscCB5b3UgZGVidWcgeW91ciBhcHAuXG4gICAqXG4gICAqICpkZWJ1ZyogdGFrZXMgYSBgc3B5YCBmdW5jdGlvbiBhcyBhcmd1bWVudCwgYW5kIHJ1bnMgdGhhdCBmb3IgZWFjaCBldmVudFxuICAgKiBoYXBwZW5pbmcgb24gdGhlIGlucHV0IHN0cmVhbS4gSWYgeW91IGRvbid0IHByb3ZpZGUgdGhlIGBzcHlgIGFyZ3VtZW50LFxuICAgKiB0aGVuICpkZWJ1Zyogd2lsbCBqdXN0IGBjb25zb2xlLmxvZ2AgZWFjaCBldmVudC4gVGhpcyBoZWxwcyB5b3UgdG9cbiAgICogdW5kZXJzdGFuZCB0aGUgZmxvdyBvZiBldmVudHMgdGhyb3VnaCBzb21lIG9wZXJhdG9yIGNoYWluLlxuICAgKlxuICAgKiBQbGVhc2Ugbm90ZSB0aGF0IGlmIHRoZSBvdXRwdXQgc3RyZWFtIGhhcyBubyBsaXN0ZW5lcnMsIHRoZW4gaXQgd2lsbCBub3RcbiAgICogc3RhcnQsIHdoaWNoIG1lYW5zIGBzcHlgIHdpbGwgbmV2ZXIgcnVuIGJlY2F1c2Ugbm8gYWN0dWFsIGV2ZW50IGhhcHBlbnMgaW5cbiAgICogdGhhdCBjYXNlLlxuICAgKlxuICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiAtLTEtLS0tMi0tLS0tMy0tLS0tNC0tXG4gICAqICAgICAgICAgZGVidWdcbiAgICogLS0xLS0tLTItLS0tLTMtLS0tLTQtLVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGFiZWxPclNweSBBIHN0cmluZyB0byB1c2UgYXMgdGhlIGxhYmVsIHdoZW4gcHJpbnRpbmdcbiAgICogZGVidWcgaW5mb3JtYXRpb24gb24gdGhlIGNvbnNvbGUsIG9yIGEgJ3NweScgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBldmVudFxuICAgKiBhcyBhcmd1bWVudCwgYW5kIGRvZXMgbm90IG5lZWQgdG8gcmV0dXJuIGFueXRoaW5nLlxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBkZWJ1ZyhsYWJlbE9yU3B5Pzogc3RyaW5nIHwgKCh0OiBUKSA9PiBhbnkpKTogU3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gbmV3ICh0aGlzLmN0b3IoKSk8VD4obmV3IERlYnVnPFQ+KHRoaXMsIGxhYmVsT3JTcHkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAqaW1pdGF0ZSogY2hhbmdlcyB0aGlzIGN1cnJlbnQgU3RyZWFtIHRvIGVtaXQgdGhlIHNhbWUgZXZlbnRzIHRoYXQgdGhlXG4gICAqIGBvdGhlcmAgZ2l2ZW4gU3RyZWFtIGRvZXMuIFRoaXMgbWV0aG9kIHJldHVybnMgbm90aGluZy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgZXhpc3RzIHRvIGFsbG93IG9uZSB0aGluZzogKipjaXJjdWxhciBkZXBlbmRlbmN5IG9mIHN0cmVhbXMqKi5cbiAgICogRm9yIGluc3RhbmNlLCBsZXQncyBpbWFnaW5lIHRoYXQgZm9yIHNvbWUgcmVhc29uIHlvdSBuZWVkIHRvIGNyZWF0ZSBhXG4gICAqIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2hlcmUgc3RyZWFtIGBmaXJzdCRgIGRlcGVuZHMgb24gc3RyZWFtIGBzZWNvbmQkYFxuICAgKiB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gYGZpcnN0JGA6XG4gICAqXG4gICAqIDwhLS0gc2tpcC1leGFtcGxlIC0tPlxuICAgKiBgYGBqc1xuICAgKiBpbXBvcnQgZGVsYXkgZnJvbSAneHN0cmVhbS9leHRyYS9kZWxheSdcbiAgICpcbiAgICogdmFyIGZpcnN0JCA9IHNlY29uZCQubWFwKHggPT4geCAqIDEwKS50YWtlKDMpO1xuICAgKiB2YXIgc2Vjb25kJCA9IGZpcnN0JC5tYXAoeCA9PiB4ICsgMSkuc3RhcnRXaXRoKDEpLmNvbXBvc2UoZGVsYXkoMTAwKSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBIb3dldmVyLCB0aGF0IGlzIGludmFsaWQgSmF2YVNjcmlwdCwgYmVjYXVzZSBgc2Vjb25kJGAgaXMgdW5kZWZpbmVkXG4gICAqIG9uIHRoZSBmaXJzdCBsaW5lLiBUaGlzIGlzIGhvdyAqaW1pdGF0ZSogY2FuIGhlbHAgc29sdmUgaXQ6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGltcG9ydCBkZWxheSBmcm9tICd4c3RyZWFtL2V4dHJhL2RlbGF5J1xuICAgKlxuICAgKiB2YXIgc2Vjb25kUHJveHkkID0geHMuY3JlYXRlKCk7XG4gICAqIHZhciBmaXJzdCQgPSBzZWNvbmRQcm94eSQubWFwKHggPT4geCAqIDEwKS50YWtlKDMpO1xuICAgKiB2YXIgc2Vjb25kJCA9IGZpcnN0JC5tYXAoeCA9PiB4ICsgMSkuc3RhcnRXaXRoKDEpLmNvbXBvc2UoZGVsYXkoMTAwKSk7XG4gICAqIHNlY29uZFByb3h5JC5pbWl0YXRlKHNlY29uZCQpO1xuICAgKiBgYGBcbiAgICpcbiAgICogV2UgY3JlYXRlIGBzZWNvbmRQcm94eSRgIGJlZm9yZSB0aGUgb3RoZXJzLCBzbyBpdCBjYW4gYmUgdXNlZCBpbiB0aGVcbiAgICogZGVjbGFyYXRpb24gb2YgYGZpcnN0JGAuIFRoZW4sIGFmdGVyIGJvdGggYGZpcnN0JGAgYW5kIGBzZWNvbmQkYCBhcmVcbiAgICogZGVmaW5lZCwgd2UgaG9vayBgc2Vjb25kUHJveHkkYCB3aXRoIGBzZWNvbmQkYCB3aXRoIGBpbWl0YXRlKClgIHRvIHRlbGxcbiAgICogdGhhdCB0aGV5IGFyZSBcInRoZSBzYW1lXCIuIGBpbWl0YXRlYCB3aWxsIG5vdCB0cmlnZ2VyIHRoZSBzdGFydCBvZiBhbnlcbiAgICogc3RyZWFtLCBpdCBqdXN0IGJpbmRzIGBzZWNvbmRQcm94eSRgIGFuZCBgc2Vjb25kJGAgdG9nZXRoZXIuXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB3aGVyZSBgaW1pdGF0ZSgpYCBpcyBpbXBvcnRhbnQgaW4gQ3ljbGUuanNcbiAgICogYXBwbGljYXRpb25zLiBBIHBhcmVudCBjb21wb25lbnQgY29udGFpbnMgc29tZSBjaGlsZCBjb21wb25lbnRzLiBBIGNoaWxkXG4gICAqIGhhcyBhbiBhY3Rpb24gc3RyZWFtIHdoaWNoIGlzIGdpdmVuIHRvIHRoZSBwYXJlbnQgdG8gZGVmaW5lIGl0cyBzdGF0ZTpcbiAgICpcbiAgICogPCEtLSBza2lwLWV4YW1wbGUgLS0+XG4gICAqIGBgYGpzXG4gICAqIGNvbnN0IGNoaWxkQWN0aW9uUHJveHkkID0geHMuY3JlYXRlKCk7XG4gICAqIGNvbnN0IHBhcmVudCA9IFBhcmVudCh7Li4uc291cmNlcywgY2hpbGRBY3Rpb24kOiBjaGlsZEFjdGlvblByb3h5JH0pO1xuICAgKiBjb25zdCBjaGlsZEFjdGlvbiQgPSBwYXJlbnQuc3RhdGUkLm1hcChzID0+IHMuY2hpbGQuYWN0aW9uJCkuZmxhdHRlbigpO1xuICAgKiBjaGlsZEFjdGlvblByb3h5JC5pbWl0YXRlKGNoaWxkQWN0aW9uJCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBOb3RlLCB0aG91Z2gsIHRoYXQgKipgaW1pdGF0ZSgpYCBkb2VzIG5vdCBzdXBwb3J0IE1lbW9yeVN0cmVhbXMqKi4gSWYgd2VcbiAgICogd291bGQgYXR0ZW1wdCB0byBpbWl0YXRlIGEgTWVtb3J5U3RyZWFtIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSwgd2Ugd291bGRcbiAgICogZWl0aGVyIGdldCBhIHJhY2UgY29uZGl0aW9uICh3aGVyZSB0aGUgc3ltcHRvbSB3b3VsZCBiZSBcIm5vdGhpbmcgaGFwcGVuc1wiKVxuICAgKiBvciBhbiBpbmZpbml0ZSBjeWNsaWMgZW1pc3Npb24gb2YgdmFsdWVzLiBJdCdzIHVzZWZ1bCB0byB0aGluayBhYm91dFxuICAgKiBNZW1vcnlTdHJlYW1zIGFzIGNlbGxzIGluIGEgc3ByZWFkc2hlZXQuIEl0IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UgdG9cbiAgICogZGVmaW5lIGEgc3ByZWFkc2hlZXQgY2VsbCBgQTFgIHdpdGggYSBmb3JtdWxhIHRoYXQgZGVwZW5kcyBvbiBgQjFgIGFuZFxuICAgKiBjZWxsIGBCMWAgZGVmaW5lZCB3aXRoIGEgZm9ybXVsYSB0aGF0IGRlcGVuZHMgb24gYEExYC5cbiAgICpcbiAgICogSWYgeW91IGZpbmQgeW91cnNlbGYgd2FudGluZyB0byB1c2UgYGltaXRhdGUoKWAgd2l0aCBhXG4gICAqIE1lbW9yeVN0cmVhbSwgeW91IHNob3VsZCByZXdvcmsgeW91ciBjb2RlIGFyb3VuZCBgaW1pdGF0ZSgpYCB0byB1c2UgYVxuICAgKiBTdHJlYW0gaW5zdGVhZC4gTG9vayBmb3IgdGhlIHN0cmVhbSBpbiB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSB0aGF0XG4gICAqIHJlcHJlc2VudHMgYW4gZXZlbnQgc3RyZWFtLCBhbmQgdGhhdCB3b3VsZCBiZSBhIGNhbmRpZGF0ZSBmb3IgY3JlYXRpbmcgYVxuICAgKiBwcm94eSBTdHJlYW0gd2hpY2ggdGhlbiBpbWl0YXRlcyB0aGUgdGFyZ2V0IFN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJlYW19IHRhcmdldCBUaGUgb3RoZXIgc3RyZWFtIHRvIGltaXRhdGUgb24gdGhlIGN1cnJlbnQgb25lLiBNdXN0XG4gICAqIG5vdCBiZSBhIE1lbW9yeVN0cmVhbS5cbiAgICovXG4gIGltaXRhdGUodGFyZ2V0OiBTdHJlYW08VD4pOiB2b2lkIHtcbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgTWVtb3J5U3RyZWFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIE1lbW9yeVN0cmVhbSB3YXMgZ2l2ZW4gdG8gaW1pdGF0ZSgpLCBidXQgaXQgb25seSAnICtcbiAgICAgICAgJ3N1cHBvcnRzIGEgU3RyZWFtLiBSZWFkIG1vcmUgYWJvdXQgdGhpcyByZXN0cmljdGlvbiBoZXJlOiAnICtcbiAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9zdGFsdHoveHN0cmVhbSNmYXEnKTtcbiAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gICAgZm9yIChsZXQgaWxzID0gdGhpcy5faWxzLCBOID0gaWxzLmxlbmd0aCwgaSA9IDA7IGkgPCBOOyBpKyspIHRhcmdldC5fYWRkKGlsc1tpXSk7XG4gICAgdGhpcy5faWxzID0gW107XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIHRoZSBTdHJlYW0gdG8gZW1pdCB0aGUgZ2l2ZW4gdmFsdWUgdG8gaXRzIGxpc3RlbmVycy5cbiAgICpcbiAgICogQXMgdGhlIG5hbWUgaW5kaWNhdGVzLCBpZiB5b3UgdXNlIHRoaXMsIHlvdSBhcmUgbW9zdCBsaWtlbHkgZG9pbmcgc29tZXRoaW5nXG4gICAqIFRoZSBXcm9uZyBXYXkuIFBsZWFzZSB0cnkgdG8gdW5kZXJzdGFuZCB0aGUgcmVhY3RpdmUgd2F5IGJlZm9yZSB1c2luZyB0aGlzXG4gICAqIG1ldGhvZC4gVXNlIGl0IG9ubHkgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgXCJuZXh0XCIgdmFsdWUgeW91IHdhbnQgdG8gYnJvYWRjYXN0IHRvIGFsbCBsaXN0ZW5lcnMgb2ZcbiAgICogdGhpcyBTdHJlYW0uXG4gICAqL1xuICBzaGFtZWZ1bGx5U2VuZE5leHQodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZXMgdGhlIFN0cmVhbSB0byBlbWl0IHRoZSBnaXZlbiBlcnJvciB0byBpdHMgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBBcyB0aGUgbmFtZSBpbmRpY2F0ZXMsIGlmIHlvdSB1c2UgdGhpcywgeW91IGFyZSBtb3N0IGxpa2VseSBkb2luZyBzb21ldGhpbmdcbiAgICogVGhlIFdyb25nIFdheS4gUGxlYXNlIHRyeSB0byB1bmRlcnN0YW5kIHRoZSByZWFjdGl2ZSB3YXkgYmVmb3JlIHVzaW5nIHRoaXNcbiAgICogbWV0aG9kLiBVc2UgaXQgb25seSB3aGVuIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IGVycm9yIFRoZSBlcnJvciB5b3Ugd2FudCB0byBicm9hZGNhc3QgdG8gYWxsIHRoZSBsaXN0ZW5lcnMgb2ZcbiAgICogdGhpcyBTdHJlYW0uXG4gICAqL1xuICBzaGFtZWZ1bGx5U2VuZEVycm9yKGVycm9yOiBhbnkpIHtcbiAgICB0aGlzLl9lKGVycm9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZXMgdGhlIFN0cmVhbSB0byBlbWl0IHRoZSBcImNvbXBsZXRlZFwiIGV2ZW50IHRvIGl0cyBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEFzIHRoZSBuYW1lIGluZGljYXRlcywgaWYgeW91IHVzZSB0aGlzLCB5b3UgYXJlIG1vc3QgbGlrZWx5IGRvaW5nIHNvbWV0aGluZ1xuICAgKiBUaGUgV3JvbmcgV2F5LiBQbGVhc2UgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlYWN0aXZlIHdheSBiZWZvcmUgdXNpbmcgdGhpc1xuICAgKiBtZXRob2QuIFVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgKi9cbiAgc2hhbWVmdWxseVNlbmRDb21wbGV0ZSgpIHtcbiAgICB0aGlzLl9jKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIFwiZGVidWdcIiBsaXN0ZW5lciB0byB0aGUgc3RyZWFtLiBUaGVyZSBjYW4gb25seSBiZSBvbmUgZGVidWdcbiAgICogbGlzdGVuZXIsIHRoYXQncyB3aHkgdGhpcyBpcyAnc2V0RGVidWdMaXN0ZW5lcicuIFRvIHJlbW92ZSB0aGUgZGVidWdcbiAgICogbGlzdGVuZXIsIGp1c3QgY2FsbCBzZXREZWJ1Z0xpc3RlbmVyKG51bGwpLlxuICAgKlxuICAgKiBBIGRlYnVnIGxpc3RlbmVyIGlzIGxpa2UgYW55IG90aGVyIGxpc3RlbmVyLiBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgYVxuICAgKiBkZWJ1ZyBsaXN0ZW5lciBpcyBcInN0ZWFsdGh5XCI6IGl0cyBwcmVzZW5jZS9hYnNlbmNlIGRvZXMgbm90IHRyaWdnZXIgdGhlXG4gICAqIHN0YXJ0L3N0b3Agb2YgdGhlIHN0cmVhbSAob3IgdGhlIHByb2R1Y2VyIGluc2lkZSB0aGUgc3RyZWFtKS4gVGhpcyBpc1xuICAgKiB1c2VmdWwgc28geW91IGNhbiBpbnNwZWN0IHdoYXQgaXMgZ29pbmcgb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYmVoYXZpb3JcbiAgICogb2YgdGhlIHByb2dyYW0uIElmIHlvdSBoYXZlIGFuIGlkbGUgc3RyZWFtIGFuZCB5b3UgYWRkIGEgbm9ybWFsIGxpc3RlbmVyIHRvXG4gICAqIGl0LCB0aGUgc3RyZWFtIHdpbGwgc3RhcnQgZXhlY3V0aW5nLiBCdXQgaWYgeW91IHNldCBhIGRlYnVnIGxpc3RlbmVyIG9uIGFuXG4gICAqIGlkbGUgc3RyZWFtLCBpdCB3b24ndCBzdGFydCBleGVjdXRpbmcgKG5vdCB1bnRpbCB0aGUgZmlyc3Qgbm9ybWFsIGxpc3RlbmVyXG4gICAqIGlzIGFkZGVkKS5cbiAgICpcbiAgICogQXMgdGhlIG5hbWUgaW5kaWNhdGVzLCB3ZSBkb24ndCByZWNvbW1lbmQgdXNpbmcgdGhpcyBtZXRob2QgdG8gYnVpbGQgYXBwXG4gICAqIGxvZ2ljLiBJbiBmYWN0LCBpbiBtb3N0IGNhc2VzIHRoZSBkZWJ1ZyBvcGVyYXRvciB3b3JrcyBqdXN0IGZpbmUuIE9ubHkgdXNlXG4gICAqIHRoaXMgb25lIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0xpc3RlbmVyPFQ+fSBsaXN0ZW5lclxuICAgKi9cbiAgc2V0RGVidWdMaXN0ZW5lcihsaXN0ZW5lcjogUGFydGlhbDxMaXN0ZW5lcjxUPj4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFsaXN0ZW5lcikge1xuICAgICAgdGhpcy5fZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fZGwgPSBOTyBhcyBJbnRlcm5hbExpc3RlbmVyPFQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kID0gdHJ1ZTtcbiAgICAgIChsaXN0ZW5lciBhcyBJbnRlcm5hbExpc3RlbmVyPFQ+KS5fbiA9IGxpc3RlbmVyLm5leHQgfHwgbm9vcDtcbiAgICAgIChsaXN0ZW5lciBhcyBJbnRlcm5hbExpc3RlbmVyPFQ+KS5fZSA9IGxpc3RlbmVyLmVycm9yIHx8IG5vb3A7XG4gICAgICAobGlzdGVuZXIgYXMgSW50ZXJuYWxMaXN0ZW5lcjxUPikuX2MgPSBsaXN0ZW5lci5jb21wbGV0ZSB8fCBub29wO1xuICAgICAgdGhpcy5fZGwgPSBsaXN0ZW5lciBhcyBJbnRlcm5hbExpc3RlbmVyPFQ+O1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWVtb3J5U3RyZWFtPFQ+IGV4dGVuZHMgU3RyZWFtPFQ+IHtcbiAgcHJpdmF0ZSBfdj86IFQ7XG4gIHByaXZhdGUgX2hhcz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJvZHVjZXI6IEludGVybmFsUHJvZHVjZXI8VD4pIHtcbiAgICBzdXBlcihwcm9kdWNlcik7XG4gIH1cblxuICBfbih4OiBUKSB7XG4gICAgdGhpcy5fdiA9IHg7XG4gICAgdGhpcy5faGFzID0gdHJ1ZTtcbiAgICBzdXBlci5fbih4KTtcbiAgfVxuXG4gIF9hZGQoaWw6IEludGVybmFsTGlzdGVuZXI8VD4pOiB2b2lkIHtcbiAgICBjb25zdCB0YSA9IHRoaXMuX3RhcmdldDtcbiAgICBpZiAodGEpIHJldHVybiB0YS5fYWRkKGlsKTtcbiAgICBjb25zdCBhID0gdGhpcy5faWxzO1xuICAgIGEucHVzaChpbCk7XG4gICAgaWYgKGEubGVuZ3RoID4gMSkge1xuICAgICAgaWYgKHRoaXMuX2hhcykgaWwuX24odGhpcy5fdiEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc3RvcElEICE9PSBOTykge1xuICAgICAgaWYgKHRoaXMuX2hhcykgaWwuX24odGhpcy5fdiEpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N0b3BJRCk7XG4gICAgICB0aGlzLl9zdG9wSUQgPSBOTztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2hhcykgaWwuX24odGhpcy5fdiEpOyBlbHNlIHtcbiAgICAgIGNvbnN0IHAgPSB0aGlzLl9wcm9kO1xuICAgICAgaWYgKHAgIT09IE5PKSBwLl9zdGFydCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBfc3RvcE5vdygpIHtcbiAgICB0aGlzLl9oYXMgPSBmYWxzZTtcbiAgICBzdXBlci5fc3RvcE5vdygpO1xuICB9XG5cbiAgX3goKTogdm9pZCB7XG4gICAgdGhpcy5faGFzID0gZmFsc2U7XG4gICAgc3VwZXIuX3goKTtcbiAgfVxuXG4gIG1hcDxVPihwcm9qZWN0OiAodDogVCkgPT4gVSk6IE1lbW9yeVN0cmVhbTxVPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcChwcm9qZWN0KSBhcyBNZW1vcnlTdHJlYW08VT47XG4gIH1cblxuICBtYXBUbzxVPihwcm9qZWN0ZWRWYWx1ZTogVSk6IE1lbW9yeVN0cmVhbTxVPiB7XG4gICAgcmV0dXJuIHN1cGVyLm1hcFRvKHByb2plY3RlZFZhbHVlKSBhcyBNZW1vcnlTdHJlYW08VT47XG4gIH1cblxuICB0YWtlKGFtb3VudDogbnVtYmVyKTogTWVtb3J5U3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gc3VwZXIudGFrZShhbW91bnQpIGFzIE1lbW9yeVN0cmVhbTxUPjtcbiAgfVxuXG4gIGVuZFdoZW4ob3RoZXI6IFN0cmVhbTxhbnk+KTogTWVtb3J5U3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZW5kV2hlbihvdGhlcikgYXMgTWVtb3J5U3RyZWFtPFQ+O1xuICB9XG5cbiAgcmVwbGFjZUVycm9yKHJlcGxhY2U6IChlcnI6IGFueSkgPT4gU3RyZWFtPFQ+KTogTWVtb3J5U3RyZWFtPFQ+IHtcbiAgICByZXR1cm4gc3VwZXIucmVwbGFjZUVycm9yKHJlcGxhY2UpIGFzIE1lbW9yeVN0cmVhbTxUPjtcbiAgfVxuXG4gIHJlbWVtYmVyKCk6IE1lbW9yeVN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkZWJ1ZygpOiBNZW1vcnlTdHJlYW08VD47XG4gIGRlYnVnKGxhYmVsT3JTcHk6IHN0cmluZyk6IE1lbW9yeVN0cmVhbTxUPjtcbiAgZGVidWcobGFiZWxPclNweTogKHQ6IFQpID0+IGFueSk6IE1lbW9yeVN0cmVhbTxUPjtcbiAgZGVidWcobGFiZWxPclNweT86IHN0cmluZyB8ICgodDogVCkgPT4gYW55KSB8IHVuZGVmaW5lZCk6IE1lbW9yeVN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIHN1cGVyLmRlYnVnKGxhYmVsT3JTcHkgYXMgYW55KSBhcyBNZW1vcnlTdHJlYW08VD47XG4gIH1cbn1cblxuZXhwb3J0IHsgTk8sIE5PX0lMIH07XG5jb25zdCB4cyA9IFN0cmVhbTtcbnR5cGUgeHM8VD4gPSBTdHJlYW08VD47XG5leHBvcnQgZGVmYXVsdCB4cztcbiJdfQ==","import * as xstreamNamespace from 'xstream';\n\nexport function resolveInteropDefault(namespaceValue: any): any {\n if (\n namespaceValue &&\n namespaceValue.default &&\n namespaceValue.default.default &&\n typeof namespaceValue.default.default === 'function'\n ) {\n return namespaceValue.default.default;\n }\n\n if (namespaceValue && namespaceValue.default) {\n return namespaceValue.default;\n }\n\n return namespaceValue;\n}\n\nfunction getXs(namespaceValue: any): any {\n const value = resolveInteropDefault(namespaceValue);\n\n if (\n value &&\n value.default &&\n typeof value.default.create === 'function'\n ) {\n return value.default;\n }\n\n return value;\n}\n\nconst xs = getXs(xstreamNamespace);\nconst Stream =\n (xstreamNamespace as any).Stream ||\n ((xstreamNamespace as any).default && (xstreamNamespace as any).default.Stream) ||\n (xs && xs.Stream);\n\nexport {Stream};\nexport default xs;\n","/**\n * Sygnal diagnostic code registry.\n *\n * Every diagnostic Sygnal reports has a stable code (`SYG123`), a default\n * severity, a short title, and a docs anchor (`docsSlug`) on\n * https://sygnal.js.org/reference/errors (base URL = the `site` field of\n * docs/astro.config.mjs).\n *\n * The registry is stored as two parallel tables so the published bundle only\n * carries what the runtime needs:\n * - CODE_SEVERITY: code → default severity (used by report(); in the bundle)\n * - CODE_TITLES: code → title (docs/inspect/static-checker metadata; pure\n * object literal, tree-shaken unless something imports it)\n * getCodeInfo(code) / listCodes() assemble the full\n * { code, severity, title, docsSlug } records. To add a code, add it to BOTH\n * tables below (inside your reserved range), or call registerCodes() from a\n * workstream's own module. docsSlug is always the lower-cased code\n * ('SYG101' → https://sygnal.js.org/reference/errors#syg101).\n *\n * (Comments are attached to type-only declarations so the TypeScript emit\n * drops them — keeps them out of the published bundle and the size gate.)\n *\n * Severity (PLAN-2 1-B, G-044):\n * - 'error' — the operation failed: thrown at the call site, or caught there\n * (reducer, EFFECT, view, sub-component) and logged with\n * console.error while the app keeps running\n * - 'warn' — likely mistake, behaviour continues: console + collected\n * (when diagnostics mode is 'warn')\n * - 'info' — collected only; surfaced through inspect / test helpers\n * A call site may report a lower severity than the default (SYG405 for\n * Collection/Switchable children, SYG406 handled by onError: 'warn').\n * Every code surfaces under its own code: an error thrown by fail() and\n * caught by a reducer/EFFECT/instantiation handler is reported under the\n * thrown code (legacy.caught), not the handler's.\n *\n * Ranges (see dev-plans/PLAN-1.md §2):\n * SYG1xx Wiring: intent <-> model <-> view <-> events\n * SYG2xx State & reducers\n * SYG3xx Streams & intent construction (incl. xstream hints)\n * SYG4xx Collections, Switchable, sub-components, context\n * SYG5xx Strict mode / canonical-form violations\n * SYG6xx Drivers & run configuration\n * SYG7xx Accessibility (a11y; static only, sygnal-check, PLAN-4 GS-3)\n * SYG9xx Internal invariants\n *\n * ---------------------------------------------------------------------------\n * RESERVED RANGES (PLAN-1 workstream allocation — add entries only inside the\n * range your workstream owns; changes outside go through the coordinator):\n *\n * 0B (diagnostics core) SYG900 (check-failure invariant)\n * 1A (runtime checks) SYG101-105, SYG110, SYG201, SYG202, SYG301,\n * SYG401 (pre-seeded below), plus SYG106-199\n * and SYG302-399 for new checks\n * 1E (message retrofit) SYG206-299, SYG402-499, SYG601-699, SYG901-999\n * 2A (strict mode) SYG500-599\n * unallocated SYG100, SYG200, SYG203-205, SYG300, SYG400,\n * SYG600 (coordinator assigns on request)\n * ---------------------------------------------------------------------------\n */\nexport type DiagnosticSeverity = 'error' | 'warn' | 'info'\n\nexport interface DiagnosticCodeInfo {\n code: string\n severity: DiagnosticSeverity\n title: string\n // anchor on the errors reference page, e.g. 'syg101' → /reference/errors#syg101\n docsSlug: string\n}\n\nexport const DOCS_BASE_URL = 'https://sygnal.js.org'\n\nexport const CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG101: 'warn',\n SYG102: 'info',\n SYG103: 'info',\n SYG104: 'warn',\n SYG105: 'info',\n SYG106: 'warn',\n SYG110: 'warn',\n SYG111: 'warn',\n SYG201: 'warn',\n SYG202: 'warn',\n SYG301: 'error',\n SYG401: 'warn',\n SYG900: 'warn',\n // ---- 1E retrofit codes (SYG206-299, 402-499, 601-699, 901-999) ----\n SYG206: 'error',\n SYG207: 'warn',\n SYG208: 'warn',\n SYG209: 'error',\n SYG210: 'warn',\n SYG211: 'error',\n SYG212: 'error',\n SYG213: 'warn',\n SYG214: 'error',\n SYG215: 'error',\n SYG216: 'error',\n SYG217: 'warn',\n SYG218: 'error',\n SYG219: 'warn',\n SYG220: 'warn',\n SYG402: 'error',\n SYG403: 'error',\n SYG404: 'error',\n SYG405: 'error',\n SYG406: 'error',\n SYG407: 'error',\n SYG408: 'error',\n SYG409: 'warn',\n SYG410: 'error',\n SYG411: 'error',\n SYG412: 'error',\n SYG413: 'error',\n SYG414: 'error',\n SYG415: 'error',\n SYG416: 'error',\n SYG417: 'warn',\n SYG418: 'error',\n SYG419: 'error',\n SYG420: 'error',\n SYG601: 'error',\n SYG602: 'error',\n SYG603: 'error',\n SYG604: 'error',\n SYG605: 'error',\n SYG606: 'error',\n SYG607: 'error',\n SYG608: 'warn',\n SYG609: 'warn',\n SYG610: 'error',\n SYG901: 'error',\n SYG902: 'error',\n SYG903: 'error',\n // ---- end 1E retrofit codes ----\n}\n\nexport const CODE_TITLES: Record<string, string> = {\n // SYG1xx wiring (1A)\n SYG101: 'Intent action has no model entry',\n SYG102: 'Model entry is unreachable',\n SYG103: 'Intent selector matched no rendered element',\n SYG104: 'Intent selector crosses an isolation boundary',\n SYG105: 'EVENTS type selected but never emitted, or emitted but never selected',\n SYG106: 'Parent prop is overwritten by a reserved view argument',\n SYG110: 'Intent selector not present in the component view',\n SYG111: 'Controlled input has no input listener',\n SYG115: 'Unknown DOM event shorthand',\n SYG116: 'EVENTS value has no string type',\n SYG124: 'Component used as a control or selector',\n SYG125: 'Control given .intent, .model or .initialState',\n SYG126: 'Control rendered but never listened to',\n SYG127: 'Behavior collision or unresolvable uses entry',\n SYG128: 'Duplicate control key',\n SYG129: \"CHILD.select() of a component this one doesn't render\",\n SYG112: 'Reply action has no model entry',\n SYG130: 'href() names no route or leaves out a param',\n SYG131: 'Route params the pattern does not use',\n SYG132: 'Declaration static that is never sent',\n SYG133: 'SPA router inside a Vike app',\n // PLAN-5 W-1: widgets (defineWidget; checks/widgets.ts, checks/elementCommands.ts; SYG141 static only)\n SYG140: 'Widget dispatched an undeclared event',\n SYG141: 'Listener for an event the widget does not declare',\n SYG142: 'Widget command not declared',\n SYG143: 'Widget tag used as a selector',\n SYG144: 'Widget event the host element also fires natively',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts; sortable.ts calls the bridge's sortable hook)\n SYG145: 'Sortable item without its id attribute',\n SYG146: 'Sortable item or handle selector matches nothing',\n SYG147: 'Sortable list key is not an array in the host state',\n // PLAN-5 3-F G-419: a Collection's viewTransitionName (checks/next.ts)\n SYG148: 'Collection viewTransitionName is not a CSS identifier',\n SYG149: 'Two items with the same view-transition name',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts)\n SYG430: 'VirtualCollection has no bounded height',\n SYG431: 'VirtualCollection items without ids',\n SYG432: 'VirtualCollection item does not render one element',\n SYG433: 'VirtualCollection scroll target not in the list',\n SYG434: 'Invalid VirtualCollection estimateSize or overscan',\n // PLAN-5 3-H (G-449): sortable over a list shown in another order (checks/sortable.ts)\n SYG435: 'Sortable list shown filtered or in another order',\n // SYG2xx state & reducers (1A)\n SYG201: 'STATE reducer dropped keys from the previous state',\n SYG202: 'STATE reducer returned undefined',\n // SYG3xx streams & intent construction (1A)\n SYG301: 'RxJS operator used on an xstream stream',\n // SYG4xx collections / switchable / sub-components / context (1A)\n SYG401: \"Collection 'from' field is missing or not an array\",\n // SYG5xx strict mode / canonical forms (2A; dev-plans/PLAN-1-canonical-forms.md)\n SYG501: \"Removed in 6.0: view with positional arguments\",\n SYG502: 'Retired in 6.0: STATE reducer signals no change without ABORT',\n SYG503: 'Side effect in a STATE reducer that returns ABORT',\n SYG504: \"Removed in 6.0: 'ACTION | SINK' model key\",\n SYG505: 'Non-canonical EVENTS emit',\n SYG506: \"Removed in 6.0: CHILD.select() with a component name\",\n SYG507: 'Prop drilled through more than 2 component levels',\n SYG508: 'select()/errors() round trip where reply actions would do',\n // SYG9xx internal (0B)\n SYG900: 'A diagnostics check threw',\n // ---- 1E retrofit codes (SYG206-299, 402-499, 601-699, 901-999) ----\n SYG206: 'Invalid calculated field definition',\n SYG207: 'Calculated field shadows an initialState key',\n SYG208: 'Calculated field depends on an unknown key',\n SYG209: 'Circular calculated field dependency',\n SYG210: 'INITIALIZE used with a sink other than STATE',\n SYG211: \"Retired in 6.0: Invalid model shorthand entry\",\n SYG212: 'Model entry is not a function or an object of sinks',\n SYG213: \"Retired in 6.0: Duplicate model entry for the same action and sink\",\n SYG214: 'EFFECT handler threw',\n SYG215: 'next() delay is not a number',\n SYG216: 'Reducer threw',\n SYG217: 'Driver-sink reducer returned undefined',\n SYG218: 'Reducer returned an unsupported type',\n SYG219: 'EFFECT handler returned a value',\n SYG220: 'Calculated field threw',\n SYG221: 'set() called with a string',\n SYG222: 'STATE reducer returned the same object after it was mutated in place',\n SYG223: 'persist pick or omit names a key that is not in initialState',\n SYG224: 'persist on a component that is not the root',\n SYG226: 'Undo track, resetOn or coalesce names an unknown action',\n // PLAN-5 F-1: the form behavior (checks/forms.ts)\n SYG230: 'Form field name not in values',\n SYG231: 'form() schema is not a Standard Schema',\n SYG232: 'Form submit dropped while one is in progress',\n SYG233: 'Form value missing from the schema output',\n SYG234: 'Form submit action has no model entry',\n SYG235: 'Form check names an unknown field or sets reply fields',\n SYG236: 'Form array rows without an id',\n SYG237: 'Two forms in one component listen on the same form selector',\n // PLAN-5 2-R (G-393; checks/state.ts; dev entry)\n SYG238: 'Root component with a model but no initial state',\n SYG402: 'Context is not an object',\n SYG403: 'Invalid context entry',\n SYG404: 'Context stream errored',\n SYG405: 'Sub-component has initialState without isolatedState',\n SYG406: 'View threw',\n SYG407: 'onError handler threw',\n SYG408: 'Sub-component failed to instantiate',\n SYG409: 'Child tried to update a calculated field',\n SYG410: \"Invalid sub-component 'state' prop\",\n SYG411: \"Collection 'of' is missing or not a component\",\n SYG412: \"Invalid Collection 'from' prop\",\n SYG413: \"Retired in 6.0: Unnamed component factory not found\",\n SYG414: \"Retired in 6.0: Component not found\",\n SYG415: \"Switchable 'of' is missing or invalid\",\n SYG416: \"Switchable 'current' is missing or invalid\",\n SYG417: 'Portal target not found',\n SYG418: 'Invalid Collection sort prop',\n SYG419: \"Retired in 6.0: Invalid switchable() 'name$' parameter\",\n SYG420: 'JSX tag is undefined',\n SYG421: 'Invalid data (dataset) key',\n SYG422: 'Invalid timer spec',\n // PLAN-4.6 R4: the core's dev checks (checks/next.ts; dev entry)\n SYG423: 'Context change skipped a view whose output it changes',\n SYG424: 'Duplicate Collection item id',\n SYG425: 'isolatedState slice lacks initialState keys',\n SYG601: \"Retired in 6.0: Missing or invalid sources\",\n SYG602: 'Intent is not a function',\n SYG603: 'Intent returned an invalid value',\n SYG604: \"Retired in 6.0: Invalid hmrActions\",\n SYG605: \"Retired in 6.0: Intent action name contains '|'\",\n SYG606: 'calculated is not an object',\n SYG607: \"Retired in 6.0: State source not found\",\n SYG608: 'Strict mode requested without the diagnostics entry',\n SYG609: 'Sink or source has no driver',\n SYG610: \"Request has a 'then' or 'catch' key\",\n SYG611: 'Socket message not sent or connection not opened',\n // PLAN-4.6 R4 (D173): a form 6.0 removed, met at runtime (checks/next.ts; dev entry)\n SYG612: 'Removed in 6.0',\n SYG620: 'Router command not performed',\n // PLAN-3 5-3: makeFetchDriver's cache, invalidation and validation (dev entry; SYG634 static only)\n SYG630: 'Cached request is not idempotent',\n SYG631: 'validate is not a Standard Schema',\n SYG632: 'invalidate matched nothing',\n SYG633: 'abort names a lane the requests do not use',\n SYG634: 'latest: true with a computed key',\n // PLAN-3 5-5 (D88)\n SYG635: 'Caching asked for without a queryCache',\n // PLAN-4 GS-2: element commands (reported by the dev entry, checks/elementCommands.ts)\n SYG640: 'Element command target not found',\n SYG641: 'Unknown element command',\n // PLAN-4 GS-5: persist() (src/extra/persist.ts reports SYG642 with an explicit severity, like SYG611)\n SYG642: 'Persisted state could not be restored or saved',\n // PLAN-4 GS-7: timers (checks/timers.ts; dev entry)\n SYG643: 'Declaration static with no driver to take it',\n // PLAN-4 D131: sygnal/element (reported through the core bridge when diagnostics are on)\n SYG644: 'Custom element prop hides an HTMLElement member',\n // PLAN-4 GS-12 (D129): View Transitions (checks/viewTransitions.ts; dev entry)\n SYG645: \"viewTransitions that can't run\",\n // PLAN-5 W-1: a widget's mount / update / unmount threw (checks/widgets.ts; dev entry)\n SYG660: 'Widget mount threw',\n SYG661: 'Widget update threw or reported an error',\n SYG662: 'Widget unmount threw',\n // PLAN-5 B-3: browser sources (makeBrowserDriver; checks/browserSources.ts; dev entry)\n SYG663: 'Invalid browser-source spec or command',\n SYG664: 'Browser source not in the driver',\n SYG665: 'Browser source failed with no error action',\n // PLAN-5 W-2 (D203): the adapter entries (sygnal/react, sygnal/zag, sygnal/ui/menu|select|combobox): SYG666 from\n // sygnal/vite (an entry imported without its optional peer dependencies), SYG667 thrown by\n // fromZag / fromReact\n SYG666: 'Adapter peer dependency missing',\n SYG667: 'Invalid adapter argument',\n // PLAN-5 2-R (G-383, G-387)\n SYG668: 'Browser source has no element to observe',\n // PLAN-5 2-T (G-410): Sygnal components / widget tags / special JSX inside a fromZag render\n SYG669: 'Sygnal component inside a fromZag render',\n // PLAN-4 GS-3: a11y lane (static only, sygnal-check)\n SYG701: 'Click listener on a non-interactive element',\n SYG702: 'Form field without an accessible label',\n SYG703: 'Image without alt text',\n SYG704: 'Link without href used as a button',\n SYG705: 'Button without an accessible name',\n SYG706: 'Positive tabIndex',\n SYG707: 'Unknown ARIA attribute or invalid role',\n SYG708: 'Label or ARIA reference to an id that is not rendered',\n // PLAN-5 2-T (D211): Zag UI parts (sygnal-check rules/a11y/syg722-ui-name.js)\n SYG722: 'Menu, Select or Combobox without an accessible name',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'Sortable handle not keyboard-accessible, or no live region',\n SYG901: \"Retired in 6.0: Sub-component sink stream errored\",\n SYG902: \"Retired in 6.0: EFFECT stream errored\",\n SYG903: \"Retired in 6.0: Component factory returned invalid sinks\",\n // ---- end 1E retrofit codes ----\n}\n\n// 2A: strict-mode (SYG5xx) default severities. Kept OUT of CODE_SEVERITY so the\n// main bundle doesn't carry them (D29: zero bytes); the 'sygnal/diagnostics'\n// entry registers them (registerCodes) and its reports pass the severity\n// explicitly. sygnal-check keeps the same table in sygnal-check/src/codes.js.\nexport const STRICT_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG501: 'error',\n SYG502: 'warn',\n SYG503: 'warn',\n SYG504: 'error',\n SYG505: 'warn',\n SYG506: 'error',\n SYG507: 'info',\n SYG508: 'warn',\n}\n\n// PLAN-3 1-G (G-143): codes only the 'sygnal/diagnostics' dev entry reports. Like the strict\n// table, kept OUT of CODE_SEVERITY (zero bytes in the main bundle); the entry registers them\n// and passes the severity explicitly.\n// PLAN-3 1-D: SYG112 (a reply action has no model entry) too.\n// PLAN-3 2-A: SYG611 too, though makeSocketDriver reports it (legacy error(), severity passed\n// explicitly): kept out of CODE_SEVERITY so the core bundle doesn't pay for an opt-in driver.\nexport const DEV_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG112: 'error',\n SYG115: 'warn',\n SYG116: 'error',\n // PLAN-4 1-D: controls, static (sygnal-check)\n SYG124: 'error',\n SYG125: 'error',\n SYG126: 'info',\n // PLAN-4 GS-1: behaviors (checks/behaviors.ts)\n SYG127: 'error',\n SYG128: 'error',\n // PLAN-4 4-G2: static only (sygnal-check); listed so the entry knows its title\n SYG129: 'warn',\n SYG221: 'error',\n // PLAN-4 GS-4 (state.ts)\n SYG222: 'warn',\n // PLAN-4 GS-5 (checks/persist.ts; sygnal-check statically)\n SYG223: 'warn',\n SYG224: 'error',\n // PLAN-4 GS-8 (undo.ts reports it when diagnostics are on; sygnal-check statically)\n SYG226: 'warn',\n // PLAN-5 F-1: the form behavior (checks/forms.ts; form.ts calls the bridge's form hook)\n SYG230: 'warn',\n SYG231: 'error',\n SYG232: 'info',\n SYG233: 'warn',\n SYG234: 'warn',\n SYG235: 'warn',\n SYG236: 'warn',\n SYG237: 'warn',\n SYG238: 'warn',\n SYG421: 'error',\n SYG611: 'error',\n // PLAN-3 5-4b: router (SYG620 is reported by the router itself, like SYG611) and G-167\n SYG130: 'error',\n SYG131: 'warn',\n SYG132: 'warn',\n SYG133: 'warn',\n SYG620: 'error',\n // PLAN-3 5-3 (fetch.ts)\n SYG630: 'warn',\n SYG631: 'error',\n SYG632: 'info',\n SYG633: 'warn',\n // static only (sygnal-check); listed so the entry knows its title\n SYG634: 'info',\n // PLAN-3 5-5 (fetch.ts)\n SYG635: 'warn',\n // PLAN-4 GS-2 (checks/elementCommands.ts, through the core bridge; renderComponent too)\n SYG640: 'warn',\n SYG641: 'error',\n // PLAN-4 GS-5 (persist.ts, through legacy warn(): printed in production too)\n SYG642: 'warn',\n // PLAN-4 GS-7 (timers.ts): an invalid timer spec (not started); timers / connections /\n // resources declared with no driver registered\n SYG422: 'error',\n SYG643: 'warn',\n // PLAN-4.6 R4 (checks/next.ts): D168 context-tracking safety net, D169 duplicate ids, D174 kept\n // slice, D173 removed forms\n SYG423: 'warn',\n SYG424: 'warn',\n SYG425: 'warn',\n SYG612: 'error',\n // PLAN-4 D131 (element.ts, through the core bridge; a console warning in dev with diagnostics off)\n SYG644: 'warn',\n // PLAN-4 GS-12 (viewTransitions.ts): the static set, but the app's DOM driver isn't makeViewTransitionDOMDriver()\n SYG645: 'warn',\n // PLAN-5 W-1: widgets (checks/widgets.ts, checks/elementCommands.ts; SYG141 static only, listed\n // so the entry knows its title)\n SYG140: 'warn',\n SYG141: 'warn',\n SYG142: 'error',\n SYG143: 'warn',\n SYG144: 'info',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts)\n SYG145: 'warn',\n SYG146: 'warn',\n SYG147: 'warn',\n // PLAN-5 3-F G-419 (checks/next.ts: onHostProps, onPatch)\n SYG148: 'warn',\n SYG149: 'warn',\n SYG660: 'error',\n SYG661: 'error',\n SYG662: 'error',\n SYG663: 'error',\n SYG664: 'error',\n SYG665: 'warn',\n SYG666: 'error',\n SYG667: 'error',\n SYG668: 'warn',\n SYG669: 'warn',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts, through the core bridge)\n SYG430: 'warn',\n SYG431: 'warn',\n SYG432: 'warn',\n SYG433: 'warn',\n SYG434: 'warn',\n // PLAN-5 3-H (G-449): sortable (checks/sortable.ts)\n SYG435: 'warn',\n // PLAN-4 GS-3: a11y lane, static only (sygnal-check; warn, also under --strict; error with --a11y=error, D144); listed so the entry knows its title\n SYG701: 'warn',\n SYG702: 'warn',\n SYG703: 'warn',\n SYG704: 'warn',\n SYG705: 'warn',\n SYG706: 'warn',\n SYG707: 'warn',\n SYG708: 'warn',\n SYG722: 'warn',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'warn',\n}\n\nexport function getCodeInfo(code: string): DiagnosticCodeInfo | undefined {\n const severity = CODE_SEVERITY[code]\n return severity && { code, severity, title: CODE_TITLES[code] || '', docsSlug: code.toLowerCase() }\n}\n\nexport function listCodes(): DiagnosticCodeInfo[] {\n return Object.keys(CODE_SEVERITY).map(c => getCodeInfo(c)!)\n}\n\nexport function registerCodes(entries: Array<[string, DiagnosticSeverity, string]>): void {\n for (const [code, severity, title] of entries) {\n CODE_SEVERITY[code] = severity\n CODE_TITLES[code] = title\n }\n}\n\nexport function docsUrlFor(code: string): string {\n return `${DOCS_BASE_URL}/reference/errors#${code.toLowerCase()}`\n}\n","/**\n * Sygnal diagnostics core.\n *\n * ===========================================================================\n * FROZEN INTERFACE (PLAN-1 workstream 0B). Changes after the 0B merge go\n * through the coordinator. Later workstreams add checks (registerCheck) and\n * codes (./codes.ts, inside their reserved range) — they do not change these\n * signatures.\n * ===========================================================================\n *\n * --- Reporting ------------------------------------------------------------\n *\n * report(code: string, details: {\n * component?: string | { name?: string } // component name or instance\n * message: string // what is wrong\n * fix?: string // how to fix it\n * data?: any // structured payload\n * severity?: 'error' | 'warn' | 'info' // override the code's default\n * }): Diagnostic | undefined\n *\n * - mode 'off' → no-op, returns undefined (nothing collected/printed)\n * - code in ignore list → no-op, returns undefined\n * - mode 'collect' → collected, no console output\n * - mode 'warn' → collected; 'warn' → console.warn, 'error' → console.error,\n * 'info' → collected only\n * - mode 'error' → collected; 'warn'/'error' severities throw a\n * DiagnosticError (err.diagnostic holds the Diagnostic);\n * 'info' collected only. Called directly this throws\n * synchronously; raised during a hook (i.e. from a\n * check) it is rethrown asynchronously — see Hooks.\n *\n * `diagnostic.text` is formatted lazily (getter) on first read.\n *\n * formatDiagnostic(code, details): string\n * → `[Sygnal SYG123] <Component>: <message>. <fix> <docsUrl>`\n * (works in every mode; for call sites that must keep printing in 'off')\n *\n * getDiagnostics(): Diagnostic[] // copy of the collected list\n * clearDiagnostics(): void\n * onDiagnostic(cb: (d: Diagnostic) => void): () => void // returns unsubscribe\n *\n * --- Configuration --------------------------------------------------------\n *\n * configureDiagnostics({ mode?: DiagnosticsMode | undefined, ignore?: string[] }): void\n * getDiagnosticsMode(): 'off' | 'collect' | 'warn' | 'error'\n * isDiagnosticsEnabled(): boolean\n *\n * Mode resolution — first defined wins:\n * 1. explicit mode: run(App, drivers, { diagnostics }) or configureDiagnostics({ mode })\n * 2. globalThis.__SYGNAL_DEV__ (=== true → 'warn'; injected by the Vite plugin in serve)\n * 3. 'off'\n * The mode is resolved at module load, on every run() call and on every\n * configureDiagnostics() call. `configureDiagnostics({ mode: undefined })`\n * clears the explicit mode and falls back to steps 2-3.\n * A run() call with the `diagnostics` option sets both the explicit mode and\n * the ignore list from it. run() WITHOUT the option resets them to the\n * defaults (no explicit mode, empty ignore list), so a setting from an earlier\n * run()/configureDiagnostics() does not leak in, unless another app is still\n * running (G-212: a second app or a custom element keeps the host's mode).\n *\n * --- Checks ---------------------------------------------------------------\n *\n * registerCheck(check: DiagnosticCheck): () => void // returns unregister\n *\n * interface DiagnosticCheck {\n * id: string\n * onIntent?(component, actionNames: string[], selectorsUsed: string[] | undefined): void\n * onModel?(component, modelMap: Record<string, string[]>): void\n * onRender?(component, rootVnode: any): void\n * onReducer?(component, action: string, prevState: any, nextState: any, sinkName: string): void\n * onDispose?(component): void\n * }\n *\n * A check that throws (other than a DiagnosticError from 'error' mode) is\n * isolated: the exception is reported as SYG900 and other checks still run.\n *\n * --- Hooks (dispatched by checks/next.ts from the core's hook layer) ----\n *\n * onIntent(component, actionNames, selectorsUsed?)\n * after intent is built. actionNames = keys of the intent object ([] for a\n * single-stream intent). selectorsUsed is currently always undefined —\n * TODO(1A): collect via MainDOMSource.select instrumentation in src/cycle/dom.\n * onModel(component, modelMap)\n * after the model is normalized; modelMap = action → sink names, shorthand\n * ('A | SINK') expanded, plain functions mapped to the state sink,\n * includes built-ins such as INITIALIZE.\n * onRender(component, rootVnode)\n * after each render of the component (fully injected vnode, before the DOM\n * driver patches it; `rootVnode.elm` is populated after the patch, so DOM\n * checks should defer, e.g. with a microtask/timeout).\n * onReducer(component, action, prevState, nextState, sinkName)\n * after each STATE reducer returns (not for ABORT, not when the reducer\n * throws). nextState is the raw reducer return value (before calculated\n * field cleanup). Currently only fired for the state sink; sinkName is the\n * component's state source name.\n * onDispose(component)\n * at the start of component disposal.\n *\n * onSelector(domSource, selector) (additive, 1A)\n * from MainDOMSource.select() in src/cycle/dom, for every CSS selector\n * (not 'document' / 'body' / ':root'). domSource is the source select()\n * was called on (its `.namespace` holds the isolation scopes and any\n * earlier selectors; `._isolateModule` the DOM driver's isolate module).\n * onBusEmit(type, emitterName?) (additive, 1A)\n * from the EVENTS driver (src/extra/eventDriver.ts) for every bus event.\n * onBusSelect(type) (additive, 1A)\n * from EVENTS.select(type); type is the raw argument (string, string[]\n * or undefined for \"all events\").\n *\n * Checks live in the separate 'sygnal/diagnostics' entry\n * (src/extra/diagnostics/checks). That bundle reaches THIS module instance\n * through globalThis.__SYGNAL_DIAGNOSTICS__ = { registerCheck, report }\n * (set below), so it never carries a second copy of the core state.\n *\n * onIntent and onModel are each called exactly once per component instance,\n * in that order, during construction (also when the component has no\n * intent → actionNames [], or no model → modelMap {}).\n *\n * `component` is the internal Component instance (stable identity per\n * instance; `.name` is the component name).\n *\n * In mode 'off' a hook only runs the checks registered with `always: true`\n * (internal: renderComponent's own bookkeeping, R2-3); none are registered\n * in an app, so the hooks do nothing.\n *\n * Hooks NEVER throw synchronously into Sygnal's stream pipeline (a throw\n * there would kill the state/view stream for good). Every exception from a\n * check is caught. In 'error' mode a DiagnosticError raised during a hook —\n * by a check's report() call, or by the SYG900 report for a check that\n * threw a plain Error — is rethrown ASYNCHRONOUSLY (queueMicrotask, falling\n * back to setTimeout), so test runners still see an uncaught error while\n * the app's streams keep running. The remaining checks still run.\n * `_setAsyncThrow(fn?)` replaces the async rethrow (test seam; no argument\n * restores the default; `_resetDiagnostics()` also restores it).\n *\n * (This comment is attached to the type-only import below so the TypeScript\n * emit drops it — keeps it out of the published bundle and the size gate.)\n */\nimport type { DiagnosticSeverity } from './codes'\nimport { CODE_SEVERITY, docsUrlFor } from './codes'\n\n\nexport type DiagnosticsMode = 'off' | 'collect' | 'warn' | 'error'\n\nexport interface DiagnosticDetails {\n component?: string | { name?: string }\n message: string\n fix?: string\n data?: any\n severity?: DiagnosticSeverity\n}\n\nexport interface Diagnostic {\n code: string\n severity: DiagnosticSeverity\n component?: string\n message: string\n fix?: string\n data?: any\n docsUrl: string\n text: string\n timestamp: number\n}\n\nexport interface DiagnosticsOptions {\n mode?: DiagnosticsMode\n ignore?: string[]\n}\n\nexport interface DiagnosticCheck {\n id: string\n /** internal: also runs when diagnostics are 'off' (renderComponent's harness hooks) */\n always?: boolean\n onIntent?: (component: any, actionNames: string[], selectorsUsed: string[] | undefined) => void\n onModel?: (component: any, modelMap: Record<string, string[]>) => void\n onRender?: (component: any, rootVnode: any) => void\n onReducer?: (component: any, action: string, prevState: any, nextState: any, sinkName: string) => void\n onDispose?: (component: any) => void\n onSelector?: (domSource: any, selector: string) => void\n onBusEmit?: (type: string, emitterName?: string) => void\n onBusSelect?: (type: string | string[] | undefined) => void\n /**\n * (additive, PLAN-2 E2) Called before a component's intent runs. May return a replacement\n * for `sources` (e.g. a Proxy that reports or fakes a source with no driver); the intent\n * gets the last one returned. See sourcesFor().\n */\n sources?: (component: any, sources: any) => any\n}\n\nexport class DiagnosticError extends Error {\n diagnostic: Diagnostic\n constructor(diagnostic: Diagnostic) {\n super(diagnostic.text)\n this.diagnostic = diagnostic\n }\n}\n\nlet explicitMode: DiagnosticsMode | undefined\nlet mode: DiagnosticsMode = 'off'\nlet enabled = false\nlet ignored = new Set<string>()\nlet collected: Diagnostic[] = []\nlet listeners: Array<(d: Diagnostic) => void> = []\nlet checks: DiagnosticCheck[] = []\n\nexport function resolveDiagnosticsMode(): DiagnosticsMode {\n mode = explicitMode || ((globalThis as any).__SYGNAL_DEV__ === true ? 'warn' : 'off')\n enabled = mode !== 'off'\n return mode\n}\n\nexport function configureDiagnostics(options: DiagnosticsOptions = {}): void {\n if ('mode' in options) explicitMode = options.mode\n if (options.ignore) ignored = new Set(options.ignore)\n resolveDiagnosticsMode()\n}\n\n/** Internal: the explicit configuration (not the resolved mode), so it can be restored exactly. */\nexport function _getDiagnosticsConfig(): { mode: DiagnosticsMode | undefined, ignore: string[] } {\n return { mode: explicitMode, ignore: [...ignored] }\n}\n\nexport function getDiagnosticsMode(): DiagnosticsMode {\n return mode\n}\n\nexport function isDiagnosticsEnabled(): boolean {\n return enabled\n}\n\nconst nameOf = (c: DiagnosticDetails['component']) => (c && typeof c === 'object' ? c.name : c) || undefined\nconst sentence = (s: string) => /[.!?]$/.test(s) ? s : s + '.'\n\nexport function formatDiagnostic(code: string, details: DiagnosticDetails): string {\n const name = nameOf(details.component)\n return `[Sygnal ${code}] ${name ? name + ': ' : ''}${sentence(details.message)}` +\n (details.fix ? ' ' + sentence(details.fix) : '') + ' ' + docsUrlFor(code)\n}\n\nexport function report(code: string, details: DiagnosticDetails): Diagnostic | undefined {\n if (!enabled || ignored.has(code)) return\n const severity = details.severity || CODE_SEVERITY[code] || 'warn'\n const d: Diagnostic = {\n code,\n severity,\n component: nameOf(details.component),\n message: details.message,\n fix: details.fix,\n data: details.data,\n docsUrl: docsUrlFor(code),\n get text() { return formatDiagnostic(code, this) },\n timestamp: Date.now(),\n }\n if (collected.push(d) > 500) collected.shift()\n listeners.forEach(cb => { try { cb(d) } catch (_) {} })\n if (severity !== 'info') {\n if (mode === 'error') throw new DiagnosticError(d)\n if (mode === 'warn') console[severity](d.text)\n }\n return d\n}\n\nexport function getDiagnostics(): Diagnostic[] {\n return collected.slice()\n}\n\nexport function clearDiagnostics(): void {\n collected = []\n}\n\nexport function onDiagnostic(cb: (d: Diagnostic) => void): () => void {\n listeners = [...listeners, cb]\n return () => { listeners = listeners.filter(l => l !== cb) }\n}\n\nexport function registerCheck(check: DiagnosticCheck): () => void {\n checks = [...checks, check]\n return () => { checks = checks.filter(c => c !== check) }\n}\n\ntype HookName = Exclude<keyof DiagnosticCheck, 'id'>\n\nconst defaultAsyncThrow = (err: any): void => {\n const raise = () => { throw err }\n typeof queueMicrotask === 'function' ? queueMicrotask(raise) : setTimeout(raise)\n}\nlet asyncThrow = defaultAsyncThrow\n\n/** Test seam: replace the async rethrow used for 'error'-mode diagnostics raised in hooks. */\nexport function _setAsyncThrow(fn?: (err: any) => void): void {\n asyncThrow = fn || defaultAsyncThrow\n}\n\nconst hook = (name: HookName) => (component: any, ...args: any[]): void => {\n for (const check of checks) {\n if (!enabled && !check.always) continue\n try {\n (check[name] as any)?.(component, ...args)\n } catch (err: any) {\n // Never throw into the stream pipeline: 'error'-mode diagnostics (also a\n // SYG900 escalated by 'error' mode) are rethrown asynchronously.\n try {\n if (err instanceof DiagnosticError) throw err\n report('SYG900', {\n component,\n message: `Diagnostics check '${check.id}' threw in ${name}: ${err?.message}`,\n data: { check: check.id, hook: name, error: err },\n })\n } catch (e) {\n asyncThrow(e)\n }\n }\n }\n}\n\nexport const onIntent: (component: any, actionNames: string[], selectorsUsed?: string[]) => void = hook('onIntent')\nexport const onModel: (component: any, modelMap: Record<string, string[]>) => void = hook('onModel')\nexport const onRender: (component: any, rootVnode: any) => void = hook('onRender')\nexport const onReducer: (component: any, action: string, prevState: any, nextState: any, sinkName: string) => void = hook('onReducer')\nexport const onDispose: (component: any) => void = hook('onDispose')\nexport const onSelector: (domSource: any, selector: string) => void = hook('onSelector')\nexport const onBusEmit: (type: string, emitterName?: string) => void = hook('onBusEmit')\nexport const onBusSelect: (type: string | string[] | undefined) => void = hook('onBusSelect')\n\n/**\n * (PLAN-2 E2) The sources object a component's intent is called with: `component.sources`,\n * wrapped by every active check with a `sources` hook (the dev entry's SYG609 check,\n * renderComponent's fake sources). Without such a check it is `component.sources` itself.\n */\nexport function sourcesFor(component: any): any {\n let s = component.sources\n for (const check of checks) {\n if (!check.sources || (!enabled && !check.always)) continue\n try { s = check.sources(component, s) || s } catch (_) {}\n }\n return s\n}\n\n// Bridge for the separately bundled 'sygnal/diagnostics' checks entry.\n// PLAN-4.6 R4: the hook dispatchers too, for the dev entry's core adapter (checks/next.ts)\n;(globalThis as any).__SYGNAL_DIAGNOSTICS__ = { registerCheck, report, hooks: { onIntent, onModel, onRender, onReducer, onDispose, sourcesFor, on: isDiagnosticsEnabled } }\n\nexport function _resetDiagnostics(): void {\n explicitMode = undefined\n ignored = new Set()\n collected = []\n listeners = []\n checks = []\n asyncThrow = defaultAsyncThrow\n resolveDiagnosticsMode()\n}\n\nresolveDiagnosticsMode()\n","/**\n * Coded console output for Sygnal's pre-existing warnings and errors\n * (PLAN-1 workstream 1E).\n *\n * warn(code, component, message, fix?, extra?)\n * error(code, component, message, fix?, extra?)\n * fail(code, component, message, fix?): never\n *\n * `component` is a component instance (anything with `.name`), a name string,\n * or undefined. `extra` (an Error, the offending value, ...) is passed to the\n * console after the formatted text, as the old messages did.\n *\n * Unlike report(), warn()/error() keep printing when diagnostics are 'off',\n * so production apps see the same messages as before (now with a code):\n * - 'off' → console.warn/error(formatDiagnostic(...), extra?)\n * - 'collect' → report(): collected; error severity is also printed with\n * console.error (so exceptions stay visible in tests), warn isn't\n * - 'warn' → report(): collected and printed once by report(); `extra`\n * (e.g. the caught Error with its stack) printed after it\n * - 'error' → report() throws a DiagnosticError; it is rethrown\n * asynchronously so the stream pipeline that hit the problem\n * keeps running (same contract as the hooks in ./index)\n * - code in the ignore list → nothing printed\n *\n * fail() always throws an Error whose message is the formatted text and whose\n * `.code` is the diagnostic code. It does not go through report(): the throw\n * itself is the signal, in every mode.\n *\n * A call site that catches an exception and keeps running reports it with the\n * core's caught() (src/core/runtime.ts: an error thrown by fail() under ITS code,\n * G-027 / G-044), then the app's onError hook (callHook, PLAN-4 GS-11).\n *\n * `error` is also published on the core bridge\n * (globalThis.__SYGNAL_DIAGNOSTICS__.error) for the separately bundled JSX\n * runtime (SYG420).\n *\n * (This comment is attached to the type-only import below so the TypeScript\n * emit drops it.)\n */\nimport type { DiagnosticSeverity } from './codes'\nimport { report, formatDiagnostic, getDiagnosticsMode } from './index'\n\nconst emit = (severity: Extract<DiagnosticSeverity, 'warn' | 'error'>) =>\n (code: string, component: any, message: string, fix?: string, ...extra: any[]): void => {\n const details = { component, message, fix, severity, data: extra[0] }\n const mode = getDiagnosticsMode()\n if (mode === 'off') {\n console[severity](formatDiagnostic(code, details), ...extra)\n return\n }\n try {\n const d = report(code, details)\n if (d && mode === 'collect' && severity === 'error') console.error(d.text, ...extra)\n else if (d && mode === 'warn' && extra.length) console[severity](...extra)\n } catch (err) {\n setTimeout(() => { throw err })\n }\n }\n\nexport const warn = emit('warn')\nexport const error = emit('error')\n\nexport function fail(code: string, component: any, message: string, fix?: string): never {\n const err: any = new Error(formatDiagnostic(code, { component, message, fix }))\n err.code = code\n err.sygnal = [component, message, fix]\n throw err\n}\n\n// PLAN-4 GS-11: the app's error hook (run(App, drivers, { onError })), reporting only (each app\n// has its own). A throwing hook is logged once and swallowed\nexport const callHook = (hook: any, err: any, info: any): void => {\n try { hook && hook(err, info) } catch (e) { console.error(e) }\n}\n\n;(globalThis as any).__SYGNAL_DIAGNOSTICS__.error = error\n","/**\n * PLAN-4.6 core: definitions, normalized once per component function (03-proposal §1.4).\n *\n * defOf(view) reads the component's statics into a DefSource, runs the definition hooks on it\n * (registry.defHooks, then an app's transformDef), and normalizes it into a Def:\n * - model -> Map<action, [sink, handler][]> in model order (a function entry is STATE); the sinks\n * used; INITIALIZE keeps only STATE (SYG210)\n * - calculated: fn | [deps, fn], Kahn order; SYG206 (invalid entry) and SYG209 (cycle, with its\n * path) are thrown here; SYG207 / SYG208 warn\n * - context entries (functions of the state; anything else is SYG403 and skipped)\n * - isolatedState, READY presence, onError, name\n *\n * The removed forms (D162-D164: 'A | S' keys, string/true context entries, `.components`, ...)\n * are not read. The cache is a WeakMap per function; an app with its own transformDef keeps its\n * own cache (the hook is per app).\n */\nimport type {ComponentFn, Def, DefSource, Handler} from './hooks'\nimport {defHooks} from './registry'\nimport {fail, warn, error as logError} from '../extra/diagnostics/legacy'\n\nexport type Calc = [field: string, fn: (s: any) => any, deps: string[] | null]\n\nexport interface CoreDef extends Def {\n readonly handlers: Map<string, Handler[]>\n readonly sinks: Set<string>\n readonly calculated: Calc[] | null\n /** the calculated field names (a child bound to one can't write it: SYG409) */\n readonly calcNames: Set<string> | null\n /** the model has a READY entry: the instance starts not ready */\n readonly ready: boolean\n /** the definition has a model (a root without one renders from `initialState || true`) */\n readonly model: boolean\n}\n\nexport const isObj = (o: any): o is Record<string, any> => o !== null && typeof o == 'object' && !Array.isArray(o)\n\n/** a component function's name (the removed `.label` is not read, D164) */\nexport const nameOf = (view: any): string => view.componentName || view.name || 'FUNCTION_COMPONENT'\n\nfunction normCalc(name: string, calculated: any, initialState: any): [Calc[], Set<string>] | null {\n if (!calculated) return null\n if (!isObj(calculated)) fail('SYG606', name, 'calculated must be an object', 'Use calculated = { field: state => value }')\n const norm: Record<string, [any, string[] | null]> = {}\n for (const f in calculated) {\n const e = calculated[f]\n if (typeof e == 'function') norm[f] = [e, null]\n else if (Array.isArray(e) && e.length == 2 && Array.isArray(e[0]) && typeof e[1] == 'function') norm[f] = [e[1], e[0]]\n else fail('SYG206', name, `Invalid calculated field '${f}'`, 'Use fn or [deps, fn]')\n if (isObj(initialState) && f in initialState) warn('SYG207', name, `Calculated field '${f}' overwrites the initialState key of the same name`, 'Rename one of them')\n }\n const names = new Set(Object.keys(norm))\n // Kahn: per field the calculated fields it waits for, and its dependents\n const deps: Record<string, string[]> = {}, waiting: Record<string, number> = {}, dependents: Record<string, string[]> = {}\n for (const f of names) {\n for (const d of norm[f][1] || []) {\n if (!names.has(d) && initialState && !(d in initialState)) warn('SYG208', name, `Calculated field '${f}' depends on unknown key '${d}'`, 'Add it to initialState')\n }\n const d = deps[f] = (norm[f][1] || []).filter(x => names.has(x))\n waiting[f] = d.length\n dependents[f] ||= []\n for (const x of d) (dependents[x] ||= []).push(f)\n }\n const sorted = [...names].filter(f => !waiting[f])\n for (let i = 0; i < sorted.length; i++) for (const d of dependents[sorted[i]]) if (!--waiting[d]) sorted.push(d)\n if (sorted.length != names.size) {\n const inCycle = [...names].filter(f => !sorted.includes(f)), path: string[] = []\n const trace = (n: string): boolean => {\n if (path.includes(n)) return path.push(n), true\n path.push(n)\n if (deps[n].some(d => inCycle.includes(d) && trace(d))) return true\n path.pop()\n return false\n }\n trace(inCycle[0])\n const start = path[path.length - 1]\n fail('SYG209', name, `Circular calculated dependency: ${path.slice(path.indexOf(start)).join(' → ')}`, 'Break the cycle')\n }\n return [sorted.map(f => [f, norm[f][0], norm[f][1]] as Calc), names]\n}\n\n/** the statics a definition hook may edit, read from the component function */\nexport const sourceOf = (view: ComponentFn): DefSource => ({\n model: view.model, intent: view.intent, initialState: view.initialState, idle: null,\n calculated: view.calculated, context: view.context, behaviorActions: {},\n})\n\n/**\n * The definition shim (spike finding 5): the instance fields a behavior's existing\n * `merge(component, key)` reads and writes, so behaviors / undo / selection run unchanged, once\n * per function. `isSubComponent: true` sends a slice to `_idle` (the defaults a bound\n * sub-component reads until it writes them); an `isolatedState` definition gets it in its\n * initialState, as today. A root gets the slices in its initialState (rootDef). fromShim()\n * reads the result back.\n */\nexport const shimOf = (src: DefSource, view: ComponentFn): any => ({\n model: src.model, intent: src.intent, initialState: src.initialState, view, name: nameOf(view),\n stateSourceName: 'STATE', isSubComponent: true, isolatedState: !!view.isolatedState, _idle: src.idle, _behaviorActions: src.behaviorActions,\n})\nexport const fromShim = (shim: any, src: DefSource): DefSource => ({\n ...src, model: shim.model, intent: shim.intent, initialState: shim.initialState,\n idle: shim._idle, behaviorActions: shim._behaviorActions || src.behaviorActions,\n})\n\n/** the built-in RESOURCE reducer (a model RESOURCE entry replaces it) */\nconst RESOURCE = (s: any, {name, ...r}: any) => ({...s, [name]: r})\n\n/**\n * The definition-time built-ins, in the 5.x core's order: `resources` (PLAN-3\n * 3-A: the RESOURCE entry first in the model; each resource reads `{ status: 'idle' }` until\n * written), then `uses` (GS-1: each behavior's own merge() on the shim, D114; the core only\n * loops over `uses`).\n */\nfunction builtIns(src: DefSource, view: ComponentFn): DefSource {\n const res = view.resources\n if (res) {\n const idle: Record<string, any> = {...src.idle}\n for (const k in res) idle[k] = {status: 'idle'}\n src = {...src, model: {RESOURCE, ...src.model}, idle}\n }\n const uses = view.uses\n if (uses) {\n const shim = shimOf(src, view)\n for (const k in uses) uses[k]?.merge?.(shim, k)\n src = fromShim(shim, src)\n }\n return src\n}\n\nexport function normalize(view: ComponentFn, src: DefSource): CoreDef {\n const name = nameOf(view)\n const handlers = new Map<string, Handler[]>(), sinks = new Set<string>()\n const model = src.model\n for (const key in model || {}) {\n let e = model![key]\n if (typeof e == 'function') e = {STATE: e}\n else if (!isObj(e)) fail('SYG212', name, `Model entry '${key}' must be a function or an object`, 'Use { STATE: reducer }')\n if (key == 'INITIALIZE') {\n for (const s in e) if (s != 'STATE') warn('SYG210', name, `INITIALIZE only supports the STATE sink; ignoring '${s}'`, 'Use another action')\n if (!('STATE' in e)) continue\n e = {STATE: e.STATE}\n }\n const list: Handler[] = []\n for (const sink in e) list.push([sink, e[sink]]), sinks.add(sink)\n handlers.set(key, list)\n }\n const c = normCalc(name, src.calculated, src.initialState)\n let context: Array<[string, (s: any) => any]> | null = null\n if (src.context !== undefined && src.context !== null) {\n if (!isObj(src.context)) logError('SYG402', name, `context must be an object, got ${typeof src.context}; ignoring it`, 'Use context = { name: state => value }')\n else {\n context = []\n for (const k in src.context) {\n const f = src.context[k]\n if (typeof f == 'function') context.push([k, f])\n else logError('SYG403', name, `Invalid context entry '${k}' (a ${typeof f}); skipping it`, 'Context entries are functions of state only: { name: state => value }. See https://sygnal.js.org/guide/migrating-to-6#leftovers')\n }\n }\n }\n const intent = src.intent\n if (intent !== undefined && typeof intent != 'function') fail('SYG602', name, 'intent must be a function', 'Use intent = sources => ({ ACTION: stream$ })')\n return {\n name, view, intent, handlers, sinks,\n initialState: src.initialState,\n idle: src.idle,\n isolated: !!view.isolatedState,\n calculated: c && c[0], calcNames: c && c[1],\n context: context && context.length ? context : null,\n statics: [],\n behaviorActions: src.behaviorActions,\n ready: sinks.has('READY'),\n model: model !== undefined,\n onError: typeof view.onError == 'function' ? view.onError : undefined,\n }\n}\n\nconst defs = new WeakMap<ComponentFn, CoreDef>()\n/**\n * the statics a Def was made from: a later assignment (a test, a hot edit) makes a new Def; so\n * does a definition hook registered since (G-383: the browser driver's, added when the first one\n * is made, binds a `browser` declarer's DOM), the last entry of the snapshot\n */\nconst KEYS = ['model', 'intent', 'initialState', 'calculated', 'context', 'isolatedState', 'onError', 'componentName', 'uses', 'resources', 'browser']\nconst read = new WeakMap<CoreDef, any[]>()\nconst stale = (d: CoreDef, view: any) => {\n const r = read.get(d)!\n for (let i = 0; i < KEYS.length; i++) if (r[i] !== view[KEYS[i]]) return true\n return r[KEYS.length] !== defHooks.length\n}\n\n/**\n * The Def of a component function. `transform`: an app's own transformDef (its Defs are cached\n * in `cache`, not shared); `override`: renderComponent's root (test intent, initial state, name),\n * normalized uncached.\n */\nexport function defOf(view: ComponentFn, transform?: (src: DefSource, view: ComponentFn) => DefSource | void, cache?: WeakMap<ComponentFn, CoreDef>, override?: Partial<DefSource> & {name?: string}): CoreDef {\n const store = transform ? cache! : defs\n let d = override ? undefined : store.get(view)\n if (d && !stale(d, view)) return d\n const r = [...KEYS.map(k => view[k]), defHooks.length]\n d = normalize(view, pipeline(view, transform, override))\n if (override?.name) (d as any).name = override.name\n if (!override) store.set(view, d), read.set(d, r)\n return d\n}\n\ntype Transform = ((src: DefSource, view: ComponentFn) => DefSource | void) | undefined\n\n/** the statics, through the built-ins, a root's own steps, the definition hooks and the app's transformDef */\nfunction pipeline(view: ComponentFn, transform: Transform, override?: Partial<DefSource> & {name?: string}, root?: (src: DefSource) => DefSource): DefSource {\n let src = sourceOf(view)\n if (override) src = {...src, ...override}\n // G-172: a root without a model renders from `initialState || true`, decided before the\n // built-ins add a model (as in 5.x)\n if (root && src.model === undefined && !src.initialState) src = {...src, initialState: true}\n src = builtIns(src, view)\n if (root) src = root(src)\n for (const h of defHooks) src = h(src, view) || src\n if (transform) src = transform(src, view) || src\n return src\n}\n\n/**\n * An app's root Def (uncached; renderComponent's `override` too). As defOf, plus the root-only\n * steps of today's constructor: a behavior's slice is part of the root's initialState\n * (behaviors.ts's root merge: the slice wins over an initialState key of its name), then\n * `setup(src)`: persist's root setup (it may restore into the initialState and rewrites the\n * model; persist.ts, root only, as in 5.x).\n */\nexport function rootDef(view: ComponentFn, transform: Transform, override?: Partial<DefSource> & {name?: string; testActions?: string[]}, setup?: (src: DefSource) => DefSource): CoreDef {\n const d = normalize(view, pipeline(view, transform, override, (src) => {\n const uses = view.uses, idle = src.idle\n if (uses && idle) {\n const sl: Record<string, any> = {}\n for (const k in uses) if (k in idle) sl[k] = idle[k]\n src = {...src, initialState: {...(isObj(src.initialState) ? src.initialState : {}), ...sl}}\n }\n return setup ? setup(src) : src\n }))\n if (override?.name) (d as any).name = override.name\n if (override?.testActions) (d as any).testActions = override.testActions\n return d\n}\n","/**\n * PLAN-4.6 core: state cells (03-proposal §4). Pull-based views of the one state tree,\n * memoized on the parent value's identity. A write goes straight to the parent (no reducer\n * wrappers climbing the tree); the root's (or an isolated instance's local) write commits.\n *\n * | cell | get | set |\n * | root | app.state | app.state = v; commit |\n * | key | parent.get()[k] (or a default, isolated) | parent.set({...p, [k]: v}); SYG409 when k is a calculated field of the parent |\n * | lens | lens.get(parent.get()) | parent.set(lens.set(p, v)) |\n * | local | its own value; the parent's until written | own value; commit (isolatedState) |\n *\n * Calculated fields (and `idle` defaults) are a decorator: get() adds them, memoized per input\n * identity and per declared dependency values; set() stores them (the only behaviour after D164).\n * Children read through their parent's decorated cell, so they see its calculated fields, and a\n * child's write stores freshly computed ones (4-F).\n */\nimport {uidPart} from '../shared'\nimport type {CoreDef} from './define'\nimport {isObj} from './define'\nimport {warn, error as logError} from '../extra/diagnostics/legacy'\n\nexport interface Cell {\n get(): any\n set(v: any): void\n}\nexport interface CalcCell extends Cell {\n /** the raw value (calculated fields only as stored), for STATE.stream */\n raw(): any\n}\n\nexport const rootCell = (app: {state: any; commit(): void}): Cell =>\n ({get: () => app.state, set: (v) => { app.state = v; app.commit() }})\n\n/** isolatedState without a `state` prop: owned by the instance; the parent's state until first written */\nexport function localCell(app: {commit(): void}, parent: Cell): Cell {\n let v: any, own = false\n return {local: true, get: () => (own ? v : parent.get()), set: (n) => { v = n; own = true; app.commit() }} as Cell\n}\n\n/**\n * state=\"key\". `owner`: the parent's name when `k` is one of its calculated fields (SYG409:\n * writes ignored; `what` names the writer in the message). `dflt`: an isolated child's\n * initialState, read while the slice is undefined. `has()`: the slice itself is defined (D174).\n */\nexport function keyCell(parent: Cell, k: string, owner?: string | false, dflt?: any, what = 'Sub-component'): Cell & {has(): boolean} {\n let lp: any = {}, lv: any\n return {\n get() {\n const p = parent.get()\n if (p !== lp) { lp = p; lv = p == null ? undefined : p[k]; if (lv === undefined) lv = dflt }\n return lv\n },\n set(v) {\n if (owner) return warn('SYG409', owner, `${what} tried to update calculated field '${k}'; ignored`, 'Bind it to a non-calculated field')\n const p = parent.get()\n if (p?.[k] !== v) parent.set({...p, [k]: v})\n },\n has: () => parent.get()?.[k] !== undefined,\n }\n}\n\n/**\n * state={{ get, set }} (no get: SYG410, the parent's whole state). G-298: a get() that throws\n * keeps the last value (SYG410, and `onErr` for the app's onError). `dflt`, `has()`: as keyCell's\n * (G-314, D179: an isolated child's initialState read while the lensed slice is undefined)\n */\nexport function lensCell(parent: Cell, lens: any, owner: string, onErr?: (e: any) => void, dflt?: any): Cell & {has?(): boolean} {\n if (typeof lens?.get != 'function') {\n logError('SYG410', owner, `Sub-component 'state' prop ${isObj(lens) ? 'has no get()' : `is a ${typeof lens}`}; it gets the parent's whole state`, 'Use a state key string or { get, set }')\n return parent\n }\n let lp: any = {}, lv: any, raw: any\n return {\n get() {\n const p = parent.get()\n if (p !== lp) {\n lp = p\n try { raw = lv = lens.get(p) } catch (e) {\n logError('SYG410', owner, \"Sub-component 'state' lens get() threw; it keeps its last value\", 'Guard the getter against missing data', e)\n onErr?.(e)\n }\n if (lv === undefined) lv = dflt\n }\n return lv\n },\n has() { this.get(); return raw !== undefined },\n set(v) {\n if (typeof lens.set != 'function') return\n const p = parent.get(), n = lens.set(p, v)\n if (n !== p) parent.set(n)\n },\n }\n}\n\n/** calculated fields and `idle` defaults over a base cell */\nexport function calcCell(base: Cell, def: CoreDef): CalcCell {\n const calc = def.calculated, idle = def.idle\n const caches = calc ? calc.map(() => ({v: null as any[] | null, r: undefined as any})) : []\n let ls: any = {}, lr: any\n const add = (s: any) => {\n if (!isObj(s)) return s\n if (s === ls) return lr\n ls = s\n let m = idle ? {...idle, ...s} : s\n if (calc) {\n if (m === s) m = {...s}\n for (let i = 0; i < calc.length; i++) {\n const [f, fn, deps] = calc[i], c = caches[i]\n const dv = deps && deps.map(d => m[d])\n if (dv && c.v && dv.every((x, j) => x === c.v![j])) { m[f] = c.r; continue }\n try {\n const r = fn(m)\n if (dv) c.v = dv, c.r = r\n m[f] = r\n } catch (e: any) {\n warn('SYG220', def.name, `Calculated field '${f}' threw (${e instanceof Error ? e.message : e}); skipped this update`, 'Guard against missing data')\n }\n }\n }\n return (lr = m)\n }\n return {\n raw: () => base.get(),\n get: () => add(base.get()),\n set(v) {\n if (!isObj(v) || !(calc || idle)) return base.set(v)\n // stored with its calculated fields (and idle defaults), as cleanupCalculated did\n const c = {...add(v)}\n ls = c; lr = c\n base.set(c)\n },\n }\n}\n\n\n// ------------------------------------------------------------------ Collection items\n\n/**\n * An item's key: the `id` of an object item (anything but undefined / null, compared as a string,\n * as today's stringified keys), else its raw index in the state array (D169: not its\n * filtered/sorted position), in a namespace of its own ('\\0' + index: G-306/G-307, so an index\n * never collides with an id).\n */\nexport const keyOf = (it: any, i: number): string => (isObj(it) && it.id != null ? '' + it.id : '\\0' + i)\n/**\n * the key as it appears in an item's uid: an id through uidPart; an index key as `_i<index>`\n * (G-322: uidPart never makes '_' followed by a letter, so an index never collides with an id,\n * e.g. `[{ t }, { id: 0 }]`; renderToString matches it)\n */\nexport const keyName = (k: string) => (k[0] == '\\0' ? '_i' + k.slice(1) : uidPart(k))\nconst hasId = (it: any) => isObj(it) && it.id != null\n\nconst EMPTY: any[] = []\nexport type Index = () => [items: any[], byKey: Map<any, number>]\n\n/** one per Collection: the key -> raw index map (first occurrence), rebuilt once per array identity, shared by its items */\nexport function indexer(arr: Cell): Index {\n let la: any, map = new Map<any, number>()\n return () => {\n const g = arr.get(), a = Array.isArray(g) ? g : EMPTY\n if (a !== la) {\n la = a\n map = new Map()\n for (let i = 0; i < a.length; i++) { const k = keyOf(a[i], i); if (!map.has(k)) map.set(k, i) }\n }\n return [a, map]\n }\n}\n\n/**\n * A Collection item: the element of its key. An id-less element is a copy with its index as `id`\n * (a primitive `{ value, id }`, written back as the primitive); that `id` is not written back. Writing `undefined` removes the\n * element; the other elements keep their identity (PF-1).\n */\nexport function itemCell(arr: Cell, index: Index, key: any): Cell {\n let lraw: any = {}, lval: any\n return {\n get() {\n const [a, m] = index(), j = m.get(key)\n // removed: its last state (a disposing item's DISPOSE / dispose$ handlers read it, as today)\n if (j === undefined) return lval\n const raw = a[j]\n if (raw === lraw) return lval\n lraw = raw\n return (lval = isObj(raw) ? (hasId(raw) ? raw : {...raw, id: j}) : {value: raw, id: j})\n },\n set(v) {\n const [a, m] = index(), j = m.get(key)\n if (j === undefined) return\n if (v === undefined) return arr.set(a.filter((_: any, x: number) => x !== j))\n const cur = a[j]\n if (v === cur || (v === lval && cur === lraw)) return\n const n = a.slice()\n if (isObj(cur) || !isObj(v)) {\n // G-306: the index id an id-less element was given is not stored\n if (isObj(cur) && !hasId(cur) && isObj(v) && v.id === j) { v = {...v}; delete v.id }\n n[j] = v\n } else n[j] = v.value\n arr.set(n)\n },\n }\n}\n","/**\n * PLAN-4.6 core: the documented debug logging (integration/debugging: `Component.debug =\n * true`, `window.SYGNAL_DEBUG = 'true'` / `SYGNAL_DEBUG=true` in Node), as the 5.x core's\n * `log()`: `[<id> | <Name>] <message>` on the console, and to a connected DevTools extension\n * (onDebugLog). `inst.debug`: the DevTools toggle for one instance. The message is built only\n * when logging is on.\n */\nimport type {Inst} from './instance'\n\ndeclare const process: {env: Record<string, any>}\nconst ENV: any = (typeof window != 'undefined' && window) || (typeof process != 'undefined' && process.env) || {}\n\nexport function dbg(inst: Inst, msg: () => string) {\n if (!(inst.debug || inst.def.view.debug || ENV.SYGNAL_DEBUG === 'true' || ENV.SYGNAL_DEBUG === true)) return\n // G-331: the message (JSON of a BigInt or circular value) and the DevTools bridge never break\n // the action being logged\n let m: string\n try { m = msg() } catch (e) { m = '(message not shown: ' + e + ')' }\n const text = `[${inst.id} | ${inst.def.name}] ${m}`\n console.log(text)\n const dt = typeof window != 'undefined' && (window as any).__SYGNAL_DEVTOOLS__\n try { if (dt?.connected) dt.onDebugLog(inst.id, text) } catch (_) { /* the bridge's own bug */ }\n}\n","/**\n * PLAN-4.6 core: the Collection host (03-proposal §2 hosts/, R2). Registered on import (the\n * public `Collection` module imports this file); the core only looks `hosts.collection` up.\n *\n * It stands where the `<Collection>` marker was in its owner's template and renders the items\n * inside the owner's render: no stream of its own, no pickCombine.\n * - `of`: a component function (D163: no names). `from`: a state key (SYG409 on a calculated\n * one), a `{ get, set }` lens (SYG412 without get(); SYG401 for a non-array) or none (the\n * owner's state is the array).\n * - Items are keyed by `id`, an id-less item by its raw index (D169); one key -> index map per\n * array identity serves every item (cell.ts indexer). A duplicate key renders its first element\n * only; the dev warning is R4's (hooks.onDuplicateKey is the hook point).\n * - `filter` / `sort` (every form today's core accepts; SYG418 for an invalid one) change what\n * renders and in which order; the state array keeps its order, and an item writes back to its\n * own element. An item returning `undefined` removes itself.\n * - The other props go to every item, and the Collection's children are each item's children.\n * - 4-H (D229): no element of its own. It renders a keyed fragment of the items' vnodes (its key:\n * the marker's, else its id), which the DOM driver splices into the parent's children before\n * each patch (utils.ts flat): the items are the parent element's own children, and their keys\n * take the fragment's, so two sibling Collections' items never collide. The wrapper `div` of\n * 5.x is gone: `className` / `style` / `class` / ... on the marker are a removed-form error in development\n * (checks/next.ts) and are ignored.\n * - Removed items are disposed synchronously in the render that drops them (G-257: a move between\n * two Collections is one patch).\n * - PLAN-5 A-1: `viewTransitionName=\"card\"` styles each keyed item's root element with\n * `view-transition-name: card-<id>` (shared.ts vtStyle) and `view-transition-class:\n * card`, the item's own style winning, so a `viewTransitions` action animates each item between\n * its places, across Collections with the same prefix too. Id-less items (keyed by index) and\n * fragment roots get none.\n */\nimport {hosts, resolvers} from '../registry'\nimport {Inst, shallowEq} from '../instance'\nimport {Cell, Index, indexer, itemCell, keyCell, keyOf, keyName} from '../cell'\nimport {CoreDef, isObj} from '../define'\nimport {uidPart, vtStyle} from '../../shared'\nimport {viewOf} from '../view'\nimport {warn, error as logError, fail} from '../../extra/diagnostics/legacy'\n\nconst SORT_FIX = \"Use a field name, { field: 'asc'|'desc'|1|-1 }, or a function\"\nconst sortError = (msg: string, value: any): undefined => void logError('SYG418', 'Collection', msg, SORT_FIX, value)\nconst base = (a: any, b: any, asc = true) => (a > b ? (asc ? 1 : -1) : a < b ? (asc ? -1 : 1) : 0)\n\nfunction fromObj(item: Record<string, any>): ((a: any, b: any) => number) | undefined {\n const e = Object.entries(item)\n if (e.length > 1) return sortError('sort object must have one key; ignored', item)\n const [f, d] = e[0]\n let asc\n if (typeof d == 'string') {\n const x = d.toLowerCase()\n if (x != 'asc' && x != 'desc') return sortError(\"sort direction must be 'asc' or 'desc'; ignored\", item)\n asc = x == 'asc'\n } else if (typeof d == 'number') {\n if (d !== 1 && d !== -1) return sortError('sort direction must be 1 or -1; ignored', item)\n asc = d === 1\n } else return sortError('sort direction must be a string or number; ignored', item)\n return (a, b) => base(a[f], b[f], asc)\n}\n\n/** the comparator of a `sort` prop (today's sortFunctionFromProp) */\nexport function sortFn(p: any): ((a: any, b: any) => number) | undefined {\n if (!p) return\n if (typeof p == 'function') return p\n if (typeof p == 'string') {\n const d = p.toLowerCase()\n if (d == 'asc' || d == 'desc') return (a, b) => base(a, b, d == 'asc')\n return (a, b) => base(a[p], b[p])\n }\n if (Array.isArray(p)) {\n const fs: any[] = p.map(i => typeof i == 'function' ? i\n : typeof i == 'string' ? (['asc', 'desc'].includes(i.toLowerCase()) ? undefined : (a: any, b: any) => base(a[i], b[i]))\n : isObj(i) ? fromObj(i) : undefined).filter(f => typeof f == 'function')\n return (a, b) => fs.reduce((r, f) => (r !== 0 ? r : f(a, b)), 0)\n }\n if (isObj(p)) return fromObj(p)\n return sortError('Invalid sort prop; ignored', p)\n}\n\n/** the Collection's own props (`idfield`, removed in 6.0 (D164), is still kept off the items) */\nconst OWN = new Set(['of', 'from', 'filter', 'sort', 'idfield', 'className', 'viewTransitionName'])\nconst NONE: any[] = []\n\n/** the array cell for `from` (D178: a missing key renders once it appears), or null for an invalid `from` (renders nothing) */\nfunction arrayCell(owner: Inst, from: any): Cell | null {\n const oc = owner.cell, name = owner.def.name\n if (from === undefined) {\n // the owner's state is the array (or its `value`, as today)\n return {\n get: () => { const s = oc.get(); return !Array.isArray(s) && Array.isArray(s?.value) ? s.value : s },\n set: (v) => oc.set(v),\n }\n }\n if (typeof from == 'string') {\n const cs = oc.get(), calc = owner.def.calcNames?.has(from)\n if (isObj(cs) && !(from in cs) && !calc) {\n const arrays = Object.keys(cs).filter(k => Array.isArray(cs[k]))\n warn('SYG401', name, `Collection from=\"${from}\" is not in state${arrays.length ? ` (array fields: '${arrays.join(\"', '\")}')` : ''}; it renders nothing until it exists`, 'Set it to an array in initialState')\n } else if (isObj(cs) && !Array.isArray(cs[from])) warn('SYG401', name, `Collection 'from' field '${from}' is not an array; it renders nothing`, 'Set it to an array in initialState')\n return keyCell(oc, from, calc && name, undefined, 'Collection')\n }\n if (isObj(from) && typeof from.get == 'function') {\n let lp: any = {}, lv: any\n return {\n get() {\n const p = oc.get()\n if (p !== lp) {\n lp = p\n let g: any\n try { g = from.get(p) } catch (e) {\n // G-298: keeps the items it had\n logError('SYG412', name, \"Collection 'from' getter threw; it keeps its items\", 'Guard the getter against missing data', e)\n owner.app.appError(owner, e, 'view')\n return lv\n }\n lv = g\n if (!Array.isArray(lv)) { warn('SYG401', name, \"Collection 'from' getter returned a non-array; it renders nothing\", 'Return an array from get()', lv); lv = NONE }\n }\n return lv\n },\n set(v) {\n if (typeof from.set != 'function') return\n const p = oc.get(), n = from.set(p, v)\n if (n !== p) oc.set(n)\n },\n }\n }\n logError('SYG412', name, \"Collection 'from' prop is invalid; it renders nothing\", 'Use a state key string or { get, set }', from)\n return null\n}\n\n/** a component function through the view resolvers (lazy: the loaded one; the owner renders again when it loads) */\nexport function resolve(view: any, owner: Inst) {\n for (const r of resolvers) view = r(view, owner) || view\n return view\n}\n\nexport class CollectionHost {\n /** key -> item instance */\n items = new Map<any, Inst>()\n /** the items shown, in render order */\n shown: Inst[] = []\n arr: Cell | null\n index: Index | null\n def!: CoreDef\n ready = true\n disposed = false\n outv: any; last: any; lr = true\n ip: Record<string, any> = {}\n kids: any[] = NONE\n props!: Record<string, any>\n // the inputs of the last item list: array, filter, sort prop, comparator\n la: any; lf: any; ls: any; cmp: any\n uidBase: string\n /** the fragment's key (the marker's, else the Collection's id) */\n key: any\n tr: any\n /** the app's render epoch it last rendered at (G-311) */\n ep = 0\n\n constructor(public owner: Inst, props: Record<string, any>, children: any[], id: string, marker: any) {\n this.hostProps(props, marker)\n const of = props.of\n if (!of) fail('SYG411', owner, \"Collection is missing 'of'\", 'Use of={ItemComponent}')\n if (typeof of != 'function') fail('SYG411', owner, `Collection 'of' is a ${typeof of}`, 'Use of={ItemComponent}')\n this.uidBase = owner.uid(uidPart(id.replace(/.*::(r\\.)?/, '')))\n this.arr = arrayCell(owner, props.from)\n this.index = this.arr && indexer(this.arr)\n this.def = owner.app.def(this.view = resolve(of, owner))\n this.setProps(props, children, marker, id)\n }\n\n /**\n * onHostProps (R4): the Collection checks of the dev entry (SYG401 for a missing `from`, D173's\n * string `of`, 4-H's wrapper props: the marker's data); the marker's sel tells a\n * VirtualCollection from a Collection\n */\n hostProps(props: Record<string, any>, m: any) {\n const H = this.owner.app.hooks\n if (H.onHostProps) H.onHostProps(viewOf(this.owner), m.sel, props, m.data)\n }\n\n /** the item component (a lazy() one: the loaded component once it has loaded, G-317) */\n view: any\n\n setProps(props: Record<string, any>, children: any[], marker?: any, id?: string) {\n // (the constructor called the hook before its own checks)\n if (this.props) this.hostProps(props, marker)\n const v = typeof props.of == 'function' ? resolve(props.of, this.owner) : this.view\n if (v !== this.view) {\n // another item component (or a lazy one loaded): the items are made again\n this.def = this.owner.app.def(this.view = v)\n this.clear()\n }\n this.props = props\n if (marker) {\n // tr: a <Transition> around it, applied to each item (4-I G-559, markers/transition.ts):\n // the fragment is made again on each of the owner's renders while there is one (or was)\n const k = marker.key ?? id\n if (this.tr !== (this.tr = marker.data?.tr) || k !== this.key) { this.key = k; this.outv = undefined }\n }\n const ip: Record<string, any> = {}\n for (const k in props) if (!OWN.has(k)) ip[k] = props[k]\n const kids = children.length ? children : NONE\n if (!shallowEq(ip, this.ip) || kids !== this.kids) {\n this.ip = ip\n this.kids = kids\n this.items.forEach(i => i.setProps(ip, kids))\n }\n }\n\n clear() {\n this.items.forEach(i => i.dispose())\n this.items.clear()\n this.shown = []\n this.la = undefined\n }\n\n /** the item instances in the order shown (byId, InstanceView.children) */\n insts(): Inst[] { return this.shown }\n\n /** the visible keys in order: filter and sort over the raw array; a duplicate key once */\n list(a: any[], m: Map<any, number>): any[] {\n const {filter, sort} = this.props\n const cmp = sort !== this.ls ? sortFn(sort) : this.cmp\n let idx: number[] | null = null\n if (typeof filter == 'function' || cmp) {\n idx = []\n for (let i = 0; i < a.length; i++) if (typeof filter != 'function' || filter(a[i], i, a)) idx.push(i)\n if (cmp) idx.sort((x, y) => cmp(a[x], a[y]))\n }\n // G-311: the inputs are kept only once the list was made (a throwing filter / sort is retried)\n this.ls = sort; this.cmp = cmp\n const n = idx ? idx.length : a.length, keys: any[] = []\n for (let x = 0; x < n; x++) {\n const i = idx ? idx[x] : x, k = keyOf(a[i], i)\n // D169: a duplicate key renders its first element (R4 reports it)\n if (m.get(k) !== i) { const H = this.owner.app.hooks; H.onDuplicateKey && H.onDuplicateKey(viewOf(this.owner), k[0] == '\\0' ? i : a[i].id); continue }\n keys.push(k)\n }\n return keys\n }\n\n /**\n * G-319: on a hidden Switchable page (no render): the items follow the array (removed ones are\n * disposed, new ones created, so their background statics and replies run), with no view call\n */\n sync() {\n if (this.disposed) return\n this.items_()\n for (const i of this.shown) i.sync()\n }\n\n /** the item instances for the current array, filter and sort; true when the list changed */\n items_(): boolean {\n if (!this.index) return false\n const app = this.owner.app\n let changed = false\n {\n const [a, m] = this.index()\n const {filter, sort} = this.props\n if (a !== this.la || filter !== this.lf || sort !== this.ls) {\n const keys = this.list(a, m), seen = new Set(keys)\n this.la = a; this.lf = filter\n for (const [k, inst] of this.items) if (!seen.has(k)) { inst.dispose(); this.items.delete(k) }\n const o = this.owner, shown: Inst[] = []\n for (const k of keys) {\n let inst = this.items.get(k)\n if (!inst) {\n const scope = app.scope()\n inst = new Inst(app, this.def, o, itemCell(this.arr!, this.index, k), o.dom && o.dom.isolateSource(o.dom, scope),\n this.ip, this.kids, scope, this.uidBase + '-' + keyName(k), 'item')\n this.items.set(k, inst);\n // its key (A-1's view-transition name)\n (inst as any).k = k\n }\n shown.push(inst)\n }\n if (shown.length != this.shown.length || shown.some((s, i) => s !== this.shown[i])) changed = true\n this.shown = shown\n }\n }\n return changed\n }\n\n render(): any {\n if (this.disposed) return this.outv\n // G-311: after a render that threw, every container is made again once\n const app = this.owner.app\n let changed = !this.outv || this.ep !== app.ep\n this.ep = app.ep\n if (this.items_()) changed = true\n const shown = this.shown, out: any[] = Array(shown.length), vn = this.props.viewTransitionName\n let j = 0\n for (let i = 0; i < shown.length; i++) {\n const inst: any = shown[i], v = inst.render()\n if (v !== inst.last) { inst.last = v; changed = true }\n // an item without state yet (or a removed one) is left out\n if (v !== undefined) out[j++] = this.tr ? this.tr(vn ? named(inst, v, vn) : v) : vn ? named(inst, v, vn) : v\n }\n out.length = j\n if (!changed) return this.outv\n return (this.outv = {sel: undefined, data: {}, children: out, text: undefined, elm: undefined, key: this.key})\n }\n\n dispose() {\n if (this.disposed) return\n this.disposed = true\n this.clear()\n }\n}\n\n/**\n * A-1: the item's vnode with its view-transition name (cached per item, so an unchanged item\n * keeps its vnode). VirtualCollection's rows too (extra/virtual.ts, G-417)\n */\nexport function named(inst: any, v: any, p: string): any {\n const k = inst.k\n if (!v.sel || k[0] == '\\0') return v\n if (inst.vi !== v || inst.vp !== p) {\n inst.vi = v; inst.vp = p\n inst.vo = {...v, data: {...v.data, style: vtStyle(p, k, v.data?.style)}}\n }\n return inst.vo\n}\n\nhosts.collection = (owner, props, children, id, marker) => new CollectionHost(owner, props, children, id, marker)\n","/**\n * Server-Side Rendering utilities for Sygnal components.\n *\n * Renders Sygnal component trees to HTML strings without a browser DOM.\n * Handles sub-components, Collections, Suspense boundaries, and Portals.\n */\nimport {uidPart, vtStyle} from '../shared'\nimport {sortFn} from '../core/hosts/collection'\nimport {keyOf} from '../core/cell'\n\n// Void elements that must not have closing tags\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr',\n])\n\n// Characters that need escaping in HTML text and attribute values\nconst ESC_MAP: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n}\n\n// 4-F: renderComponent's t.html() serialises like the browser's innerHTML: text escapes only\n// & < >, attribute values only & and \" (SSR output keeps escaping all five)\nlet innerHtmlMode = false\n// G-480: the <Slot> marker (its function in `data.m`), not a plain <slot> element\nconst isSlot = (v: any): boolean => v?.data?.m && v.sel === 'slot'\n\nfunction escapeHtml(str: string, attr?: boolean): string {\n return String(str).replace(innerHtmlMode ? (attr ? /[&\"]/g : /[&<>]/g) : /[&<>\"']/g, (ch) => ESC_MAP[ch])\n}\n\n/** @internal renderToString serialised like innerHTML (for renderComponent's t.html()) */\nexport function renderToInnerHtml(componentDef: any): string {\n innerHtmlMode = true\n try {\n return renderToString(componentDef)\n } finally {\n innerHtmlMode = false\n }\n}\n\n/**\n * Convert a CSS property name from camelCase to kebab-case.\n * E.g. \"backgroundColor\" → \"background-color\"\n * Handles vendor prefixes: \"WebkitTransform\" → \"-webkit-transform\"\n */\nfunction camelToKebab(str: string): string {\n return str\n .replace(/^(Webkit|Moz|Ms|O)/, (m) => '-' + m.toLowerCase())\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n}\n\n/**\n * Serialize an inline style object to a CSS string.\n */\nfunction serializeStyle(style: Record<string, any>): string {\n const parts: string[] = []\n for (const key of Object.keys(style)) {\n const val = style[key]\n if (val == null || val === '') continue\n // Skip snabbdom's delayed/remove/destroy style hooks\n if (key === 'delayed' || key === 'remove' || key === 'destroy') continue\n const cssKey = camelToKebab(key)\n parts.push(`${cssKey}: ${val}`)\n }\n return parts.join('; ')\n}\n\nexport interface RenderToStringOptions {\n /** Initial state for the root component */\n state?: any\n /** Props to pass to the root component */\n props?: Record<string, any>\n /** Context from a parent (for nested rendering) */\n context?: Record<string, any>\n /**\n * Embed serialized state in a <script> tag for client hydration.\n * When true, appends `<script>window.__SYGNAL_STATE__=...</script>`.\n * When a string, uses that as the variable name instead.\n */\n hydrateState?: boolean | string\n /**\n * PLAN-3 (HEAD driver): an array that receives each rendered component's `head` static\n * value (in render order); `renderHead(list)` turns it into tags.\n */\n head?: any[]\n /**\n * PLAN-3 5-5 (H-7): a queryCache() the components' `resources` render from: a cached entry\n * renders as `{ status: 'success', data }`, any other request as `{ status: 'loading' }`.\n * Nothing is fetched during SSR; seed the cache in a loader (`cache.set(request, data)`)\n */\n cache?: any\n /**\n * PLAN-4 GS-11: the app-level error hook, as run()'s `onError`: called with phase 'view' after\n * the component's onError boundary chose the fallback. Reporting only\n */\n onError?: (error: any, info: {componentName?: string; action?: string; phase: string}) => void\n /**\n * PLAN-4 G-206: the root of the uid() strings (default 'u'), as run()'s `uid` option: pass the\n * same value to both so the hydrated ids match\n */\n uid?: string\n}\n\n// the `onError` option of the outermost renderToString call that has one (GS-11)\nlet ssrOnError: any\n\n// the `head` option of the outermost renderToString call that has one\nlet heads: any[] | undefined\n// 5-5: the `cache` option of the outermost renderToString call that has one\nlet ssrCache: any\n\n/**\n * PLAN-4 GS-1: a host's behaviors: each `uses` key missing from the state is the slice the\n * behavior starts with (its initialState, the options naming its keys, its calculated fields: the\n * factory's precomputed `state`), as the client's merge gives it (behaviors.ts). A host with no\n * state gets an object with just its slices\n */\nfunction withUses(def: any, state: any): any {\n const uses = def && def.uses\n if (!uses || typeof uses !== 'object') return state\n if (state == null) state = {}\n if (typeof state !== 'object' || Array.isArray(state)) return state\n let out = state\n for (const k in uses) {\n const u = uses[k]\n if (!u) continue\n let v = out[k] === undefined ? u.state : out[k]\n // G-423: a sygnal/ui part (ui/shared.ts keyed()) names its ids by its `uses` key (or its\n // `id` option) when the slice has no id, as the client's merge and calculated `id` do\n if (u.keyed && v && typeof v === 'object' && v.id == null) v = {...v, id: u.options?.id ?? k}\n if (v !== out[k] && v !== undefined) {\n if (out === state) out = {...state}\n out[k] = v\n }\n }\n return out\n}\n\n/**\n * 5-5 (H-7): the state a component's view renders with: each `resources` entry missing from the\n * state reads from the cache ('success' with the cached data), else 'loading' ('idle' for a\n * falsy request), as the client's first paint does with the same (hydrated) cache\n */\nfunction withResources(def: any, state: any): any {\n state = withUses(def, state)\n const res = def && def.resources\n if (!res || !state || typeof state !== 'object' || Array.isArray(state)) return state\n const out = {...state}\n for (const n of Object.keys(res)) {\n if (out[n] !== undefined) continue\n let q: any\n try { q = typeof res[n] === 'function' ? res[n](state) : res[n] } catch (_) {}\n const E = q && ssrCache ? ssrCache.get(ssrCache.key(q, 1)) : undefined\n out[n] = E && E.at > 0 ? {status: 'success', data: E.v} : {status: q ? 'loading' : 'idle'}\n }\n return out\n}\n\n// PLAN-4 GS-9: uid(name?) as on the client: the root is 'u'; a child component adds its path in\n// the parent's view (or its `id` prop), as getComponentIdFromElement and instantiateSubComponents\n// in the core do; a Collection item adds its key, a Switchable page its name; anything but\n// each part encoded by uidPart (G-214); in the root option anything but [A-Za-z0-9_-] becomes '_'\n// (as run() does). SSR ids = hydration ids\nconst makeUid = (base: string) => (n?: string) => n ? base + '-' + n : base\nfunction childUid(uid: string, vnode: any, path: string): string {\n const id = vnode.data?.props?.id\n return uid + '-' + uidPart(('::' + ((id && JSON.stringify(id).replaceAll('\"', '')) || path)).replace(/.*::(r\\.)?/, ''))\n}\n\n// G-567: a view that returns a string or a number renders it as text (core/instance.ts view());\n// another falsy value, an empty <div>\nconst textOr = (r: any): any => typeof r == 'string' || typeof r == 'number' ? {text: '' + r} : r\nconst viewOut = (r: any): any => textOr(r) || {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\nconst errorDiv = (): any => ({sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined})\n\n/**\n * A view threw: the component's onError boundary picks the fallback (the error <div> without\n * one, or when it throws), then the app's onError hook is told (GS-11)\n */\nfunction viewFailed(def: any, err: any, name: string): any {\n let vnode: any = errorDiv()\n if (typeof def.onError === 'function') {\n try {\n vnode = def.onError(err, {componentName: name})\n } catch (_) {\n vnode = errorDiv()\n }\n }\n // reporting only: a throwing hook is logged and swallowed (no diagnostics import: the Astro and\n // Vike server bundles carry this file without the core)\n try { ssrOnError && ssrOnError(err, {componentName: name, phase: 'view'}) } catch (e) { console.error(e) }\n return vnode\n}\n\nfunction collectHead(def: any, state: any): void {\n const h = def && def.head\n if (!heads || !h) return\n try { heads.push(typeof h === 'function' ? h(state) : h) } catch (_) {}\n}\n\n/**\n * Render a Sygnal component to an HTML string.\n *\n * Calls the component's view function with the provided (or initial) state,\n * recursively renders sub-components, and serializes the VNode tree to HTML.\n *\n * ```ts\n * import { renderToString } from 'sygnal'\n *\n * const html = renderToString(App, { state: { count: 0 } })\n * // → '<div data-sygnal-ssr=\"\"><h1>Count: 0</h1></div>'\n * ```\n *\n * The root element (a fragment's first element) carries an empty `data-sygnal-ssr` attribute,\n * which marks the markup as Sygnal's server HTML (persist() under plain run() then restores after\n * the first render); the first client render removes it.\n */\nexport function renderToString(\n componentDef: any,\n options: RenderToStringOptions = {}\n): string {\n const prevHeads = heads, prevCache = ssrCache, prevOnError = ssrOnError\n if (options.head) heads = options.head\n if (options.cache) ssrCache = options.cache\n if (options.onError) ssrOnError = options.onError\n try {\n return renderRoot(componentDef, options)\n } finally {\n heads = prevHeads\n ssrCache = prevCache\n ssrOnError = prevOnError\n }\n}\n\nfunction renderRoot(componentDef: any, options: RenderToStringOptions): string {\n const {state, props = {}, context = {}, hydrateState} = options\n // G-206: the uid root (sanitized as run() does)\n const uid = (options.uid || 'u').replace(/[^\\w-]+/g, '_')\n\n const ownState = state !== undefined ? state : componentDef.initialState\n // 5-5: the view sees its resources; the hydration script keeps the state as it was given\n const resolvedState = withResources(componentDef, ownState)\n collectHead(componentDef, resolvedState)\n\n // Build context: merge parent context with component's own context definitions\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n // Call the view function\n let vnode: any\n try {\n vnode = componentDef({\n ...props,\n state: resolvedState,\n children: props.children || [],\n slots: props.slots || {},\n context: mergedContext,\n uid: makeUid(uid),\n })\n } catch (err: any) {\n // Error boundary\n vnode = viewFailed(componentDef, err, componentDef.componentName || componentDef.name || 'Component')\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Process special components in the VNode tree\n vnode = processSSRTree(vnode, mergedContext, resolvedState, uid, 'r')\n\n // PLAN-4 3-R: mark the root element (a fragment's first element) as Sygnal's server markup, so\n // persist() under plain run() can tell it from a client-only app's loading placeholder. The\n // first client render drops the attribute (the new vnode doesn't have it)\n // (4-H: through nested fragments, e.g. a Collection's)\n const firstEl = (v: any): any => {\n if (v?.sel) return v.sel !== '!' && v\n if (Array.isArray(v?.children)) for (const c of v.children) { const f = firstEl(c); if (f) return f }\n }\n const first = vnode?.sel ? vnode : firstEl(vnode)\n if (first && !innerHtmlMode) first.data = {...first.data, attrs: {'data-sygnal-ssr': '', ...first.data?.attrs}}\n\n // Serialize to HTML\n let html = vnodeToHtml(vnode)\n\n // Optionally embed state for hydration\n if (hydrateState && ownState != null) {\n const varName = typeof hydrateState === 'string' ? hydrateState : '__SYGNAL_STATE__'\n const serialized = escapeHtml(JSON.stringify(ownState))\n html += `<script>window.${varName}=${JSON.stringify(ownState)}</script>`\n }\n\n return html\n}\n\n/**\n * Walk the VNode tree and recursively render sub-components,\n * handle Suspense/Portal/Transition markers, and process Collections.\n */\nfunction processSSRTree(vnode: any, context: Record<string, any>, parentState: any, uid: string, path: string): any {\n if (!vnode) return vnode\n if (typeof vnode === 'string' || vnode.text != null) return vnode\n\n const sel = vnode.sel\n\n // Fragment: no selector, recurse into children\n if (!sel && vnode.children && Array.isArray(vnode.children)) {\n vnode.children = vnode.children\n .map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`))\n .filter((c: any) => c != null)\n return vnode\n }\n\n // Portal: render children inline (no target container on server)\n if (sel === 'portal') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState, uid, `${path}.0`)\n // P46-Q (D187): the client placeholder's selector (div.sygnal-portal), so hydration patches\n // this element in place and the Portal mounts from its postpatch (G-318)\n return {\n sel: 'div.sygnal-portal',\n data: {attrs: {'data-sygnal-portal': vnode.data?.props?.target ?? ''}},\n children: children.map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Transition: unwrap to child (no animation on server)\n if (sel === 'transition') {\n const children = vnode.children || []\n const child = children[0]\n if (!child) return null\n return processSSRTree(child, context, parentState, uid, path)\n }\n\n // Suspense: render children (SSR always shows content, not fallback)\n if (sel === 'suspense') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState, uid, `${path}.0`)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-suspense': 'resolved'}},\n children: children.map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // ClientOnly: render fallback during SSR, skip children (they need a browser)\n if (sel === 'clientonly') {\n const props = vnode.data?.props || {}\n const fallback = props.fallback\n if (fallback) {\n // fallback can be a VNode or a string\n return processSSRTree(fallback, context, parentState, uid, path)\n }\n // No fallback — render an empty placeholder div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-clientonly': ''}},\n children: [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // PLAN-5 W-1 widget marker: the host element with the widget's `fallback` inside (processed like\n // any children); the client patch replaces the fallback and mounts the widget (extra/widget.ts)\n if (sel === 'widget' && vnode.data?.ww) {\n const {ww, wp, h} = vnode.data, fb = ww.def.fallback, host = ww.$ssr(vnode)\n if (fb != null) host.children = [].concat(typeof fb == 'function' ? fb(wp, h) : fb).map((c: any) => typeof c == 'object' ? c : {text: String(c)})\n return processSSRTree(host, context, parentState, uid, path)\n }\n\n // Slot: unwrap to children\n if (isSlot(vnode)) {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState, uid, `${path}.0`)\n return {\n sel: 'div',\n data: {},\n children: children.map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Sub-component: render recursively\n const props = vnode.data?.props || {}\n // (PLAN-4.6: the pragma's `data.c`, the component function)\n if (typeof vnode.data?.c === 'function') {\n return renderSubComponent(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // Collection: render each item\n if (sel === 'collection') {\n return renderCollection(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // PLAN-5 V-1: a VirtualCollection renders its no-layout window (the first rows) in its container\n if (sel === 'virtual-collection') {\n return renderVirtual(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // Switchable: render the active component\n if (sel === 'switchable') {\n return renderSwitchable(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // Regular element: recurse into children\n if (vnode.children) {\n if (Array.isArray(vnode.children)) {\n if (vnode.children.length > 0) {\n vnode.children = vnode.children\n .map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`))\n .filter((c: any) => c != null)\n }\n } else if (vnode.children && typeof vnode.children === 'object') {\n // Single child object (text element)\n vnode.children = processSSRTree(vnode.children, context, parentState, uid, `${path}.0`)\n }\n }\n\n return vnode\n}\n\n/**\n * Render a sub-component (the pragma's `data.c`: the component function, with its statics).\n */\nfunction renderSubComponent(vnode: any, context: Record<string, any>, parentState: any, uid: string): any {\n const childProps = vnode.data?.props || {}\n const componentDef: any = vnode.data?.c\n\n if (!componentDef || typeof componentDef !== 'function') {\n // Can't render — return children or empty div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Determine child state via state lens\n let childState = componentDef.initialState\n const stateProp = childProps.state\n if (typeof stateProp === 'string' && parentState != null && parentState[stateProp] != null) {\n childState = parentState[stateProp]\n } else if (stateProp != null && typeof stateProp !== 'string') {\n // State passed directly\n childState = stateProp\n }\n childState = withResources(componentDef, childState)\n\n // Build child context\n const childContext: Record<string, any> = {...context}\n const componentContext = componentDef.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && childState != null) {\n try {\n childContext[key] = contextFn(childState)\n } catch (_) {}\n }\n }\n\n // Extract slots from children\n const slots: Record<string, any[]> = {}\n const defaultSlotChildren: any[] = []\n const vnodeChildren = vnode.children || []\n for (const child of vnodeChildren) {\n if (isSlot(child)) {\n const slotName = child.data?.props?.name || 'default'\n if (!slots[slotName]) slots[slotName] = []\n const slotChildren = child.children || []\n slots[slotName].push(...slotChildren)\n } else {\n defaultSlotChildren.push(child)\n }\n }\n if (defaultSlotChildren.length > 0) {\n if (!slots.default) slots.default = []\n slots.default.push(...defaultSlotChildren)\n }\n\n collectHead(componentDef, childState)\n\n // Call the view function\n let result: any\n try {\n result = componentDef({\n ...childProps,\n state: childState,\n children: slots.default || vnodeChildren,\n slots,\n context: childContext,\n uid: makeUid(uid),\n })\n } catch (err: any) {\n result = viewFailed(componentDef, err, componentDef.componentName || componentDef.name || 'Component')\n }\n\n // Recursively process the rendered sub-tree\n return processSSRTree(viewOut(result), childContext, childState, uid, 'r')\n}\n\n/** the Collection's own props (core/hosts/collection.ts OWN): the others go to every item */\nconst COLLECTION_OWN = new Set(['of', 'from', 'filter', 'sort', 'idfield', 'className', 'viewTransitionName'])\n/** the VirtualCollection container's props (extra/virtual.ts OWN) */\nconst VIRTUAL_OWN = /^(estimateSize|overscan|role|tabIndex|style|id|aria-(label|labelledby|describedby))$/\n\n/**\n * PLAN-5 2-S G-396: the items a Collection shows, as the client's host lists them\n * (core/hosts/collection.ts arrayCell + list()): `from` a state key (missing or not an array:\n * none, D178), a `{ get }` lens, or none (the owner's state is the array, or its `value`); then\n * `filter` (item, index, array) and `sort` (every form sortFn takes); a duplicate key once (D177).\n * Each entry: [the item, its raw index]\n */\nfunction collectionItems(props: any, parentState: any): any[][] {\n const {from, filter, sort} = props\n let a: any\n if (from === undefined) a = !Array.isArray(parentState) && Array.isArray(parentState?.value) ? parentState.value : parentState\n else if (typeof from === 'string') a = parentState?.[from]\n else if (from && typeof from === 'object' && typeof from.get === 'function') {\n try { a = from.get(parentState) } catch (_) { a = undefined }\n }\n if (!Array.isArray(a)) return []\n let idx: number[] = a.map((_: any, i: number) => i)\n try {\n if (typeof filter === 'function') idx = idx.filter((i) => filter(a[i], i, a))\n const cmp = sort ? sortFn(sort) : undefined\n if (cmp) idx.sort((x, y) => cmp(a[x], a[y]))\n } catch (_) { /* as the client: a throwing filter / sort renders the array as it is */ }\n const first = new Map<string, number>(), out: any[][] = []\n for (let i = 0; i < a.length; i++) { const k = keyOf(a[i], i); if (!first.has(k)) first.set(k, i) }\n for (const i of idx) if (first.get(keyOf(a[i], i)) === i) out.push([a[i], i])\n return out\n}\n\n/** a component's children split into slots (as renderSubComponent: `<Slot name>` children by name, the rest `default`) */\nfunction slotsOf(children: any[]): Record<string, any[]> {\n const slots: Record<string, any[]> = {}\n for (const child of children) {\n const name = isSlot(child) ? child.data?.props?.name || 'default' : 'default'\n ;(slots[name] ||= []).push(...(isSlot(child) ? child.children || [] : [child]))\n }\n return slots\n}\n\n/**\n * Render a Collection: its items (collectionItems: from, filter, sort), each with the other\n * props and the Collection's children, as the client's host gives them (G-396). `limit`: only\n * the first that many (a VirtualCollection's window); `skip`: props that aren't the items'.\n * 4-H (D229): a fragment of the items (no wrapper element), as the client's.\n */\nfunction renderCollection(vnode: any, context: Record<string, any>, parentState: any, uid: string, limit?: number, skip?: RegExp, deco?: (row: any, i: number) => any): any {\n const props = vnode.data?.props || {}\n const {of: itemComponent, viewTransitionName: vtn} = props\n const frag = (children: any[]) => ({sel: undefined, data: {}, children, text: undefined, elm: undefined, key: undefined})\n\n if (!itemComponent || typeof itemComponent !== 'function') return frag([])\n\n let items = collectionItems(props, parentState)\n const count = items.length\n if (limit !== undefined) items = items.slice(0, limit)\n const itemProps: Record<string, any> = {}\n for (const k in props) if (!COLLECTION_OWN.has(k) && !(skip && skip.test(k)) && k !== 'key' && k !== 'children') itemProps[k] = props[k]\n const kids = vnode.children || []\n const slots = slotsOf(kids)\n\n const renderedItems = items.map(([raw, index]: any[], pos: number) => {\n let itemState = raw\n // GS-9: the key the client's Collection gives this item\n const isItemObj = itemState && typeof itemState === 'object' && !Array.isArray(itemState)\n // PLAN-4.6 G-322: an id-less item's uid part is `_i<index>` (core/cell.ts keyName)\n const itemUid = uid + '-' + (isItemObj && itemState.id != null ? uidPart(itemState.id) : '_i' + index)\n // GS-1: an item host's behavior slices (the client reads them as defaults, behaviors.ts)\n itemState = withUses(itemComponent, itemState)\n // Build context for this item\n const itemContext: Record<string, any> = {...context}\n const componentContext = itemComponent.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function') {\n try {\n itemContext[key] = contextFn(itemState)\n } catch (_) {}\n }\n }\n\n let itemVnode: any\n try {\n itemVnode = itemComponent({\n ...itemProps,\n state: itemState,\n children: slots.default || kids,\n slots,\n context: itemContext,\n uid: makeUid(itemUid),\n })\n } catch (err: any) {\n itemVnode = viewFailed(itemComponent, err, itemComponent.name || 'CollectionItem')\n }\n\n const out = processSSRTree(textOr(itemVnode), itemContext, itemState, itemUid, 'r')\n // PLAN-5 A-1: the names the client's Collection gives a keyed item's root element\n const named = vtn && isItemObj && itemState.id != null && out?.sel\n ? {...out, data: {...out.data, style: vtStyle(vtn, itemState.id, out.data?.style)}}\n : out\n // a VirtualCollection's row decoration, with the row's position in the list (G-431: counted\n // before the rows that render nothing are left out, as the client counts them)\n return deco && named?.sel ? deco(named, pos) : named\n }).filter((v: any) => v != null)\n\n return frag(renderedItems)\n}\n\n/**\n * PLAN-5 V-1: a VirtualCollection on the server: the client's markup (extra/virtual.ts) for the\n * window it computes without layout, the first 10 rows + overscan, with the spacer as tall as\n * every row's estimate. The client measures and moves the window once it has layout. G-396: the\n * rows are the Collection's (from, filter, sort, the other props and the children to every\n * item); aria-setsize and the spacer count the filtered list.\n */\nfunction renderVirtual(vnode: any, context: Record<string, any>, parentState: any, uid: string): any {\n const p = vnode.data?.props || {}, est = p.estimateSize, size = est > 0 ? est : 32\n const n = 10 + (p.overscan >= 0 ? p.overscan : 5)\n const items = typeof p.of === 'function' ? collectionItems(p, parentState) : []\n const role = p.role === undefined ? 'list' : p.role\n const rows = renderCollection(vnode, context, parentState, uid, n, VIRTUAL_OWN, (r: any, i: number) => {\n const own = r.data?.attrs?.role || r.data?.props?.role, attrs: any = {...r.data?.attrs, 'data-index': i}\n if (role == 'list' || own) attrs['aria-posinset'] = i + 1, attrs['aria-setsize'] = items.length\n if (role == 'list' && !own) attrs.role = 'listitem'\n return {...r, data: {...r.data, attrs}}\n }).children\n const attrs: any = {tabindex: p.tabIndex ?? 0}\n if (role != null) attrs.role = role\n for (const k of ['id', 'aria-label', 'aria-labelledby', 'aria-describedby']) if (p[k] != null) attrs[k] = p[k]\n let total = 0\n for (let i = 0; i < items.length; i++) {\n const s = typeof est == 'function' ? est(items[i][0], i) : size\n total += s > 0 ? s : 32\n }\n const div = (data: any, children: any[]) => ({sel: 'div', data, children, text: undefined, elm: undefined, key: undefined})\n return div({props: p.className ? {className: p.className} : {}, attrs, style: {overflowY: 'auto', overflowAnchor: 'none', ...p.style}}, [\n div({style: {position: 'relative', width: '100%', height: total + 'px'}}, [\n div({style: {position: 'absolute', top: '0', left: '0', width: '100%', transform: 'translateY(0px)'}}, rows),\n ]),\n ])\n}\n\n/**\n * Render a Switchable by determining the active component from state.\n */\nfunction renderSwitchable(vnode: any, context: Record<string, any>, parentState: any, uid: string): any {\n const props = vnode.data?.props || {}\n const {components, active, initial} = props\n\n if (!components) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Determine which component to render\n let activeName: string | undefined\n if (typeof active === 'string') {\n // Direct name or state property\n if (components[active]) {\n activeName = active\n } else if (parentState && typeof parentState[active] === 'string') {\n activeName = parentState[active]\n }\n }\n if (!activeName && initial) {\n activeName = initial\n }\n if (!activeName) {\n activeName = Object.keys(components)[0]\n }\n\n const activeComponent = components[activeName]\n if (!activeComponent || typeof activeComponent !== 'function') {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return renderToStringInternal(activeComponent, parentState, context, uid + '-' + uidPart(activeName))\n}\n\n/**\n * Internal helper: render a component def to a VNode (not HTML string).\n */\nfunction renderToStringInternal(componentDef: any, state: any, context: Record<string, any>, uid: string): any {\n const resolvedState = withResources(componentDef, state !== undefined ? state : componentDef.initialState)\n\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n collectHead(componentDef, resolvedState)\n let vnode: any\n try {\n vnode = componentDef({\n state: resolvedState,\n children: [],\n slots: {},\n context: mergedContext,\n uid: makeUid(uid),\n })\n } catch (err: any) {\n vnode = viewFailed(componentDef, err, componentDef.name || 'Component')\n }\n\n return processSSRTree(viewOut(vnode), mergedContext, resolvedState, uid, 'r')\n}\n\n// G-465: a form field's `value` (a DOM property) has no attribute on <textarea> / <select>: the\n// textarea's goes in as its text, the select's marks the matching <option> (`sv`: the values, as\n// strings, of the <select> the option is in, and whether it is multiple) as selected. G-495: as\n// the browser does: an option without a value matches by its text with ASCII whitespace stripped\n// and collapsed; a single select marks only its first match; an explicit `selected` (true or\n// false) is the option's own. G-496: not in t.html()'s innerHTML mode (a property, which\n// innerHTML doesn't show)\ntype SV = {v: string[]; m: boolean}\nconst ws = (t: string): string => t.replace(/[\\t\\n\\f\\r ]+/g, ' ').replace(/^ | $/g, '')\nconst fieldValue = (data: any): any => data?.props?.value ?? data?.attrs?.value\nconst withoutValue = (data: any): any => {\n const out = {...data}\n if (out.props) { out.props = {...out.props}; delete out.props.value }\n if (out.attrs) { out.attrs = {...out.attrs}; delete out.attrs.value }\n return out\n}\nconst textOf = (v: any): string => v == null ? '' : typeof v != 'object' ? String(v)\n : v.text != null ? String(v.text) : Array.isArray(v.children) ? v.children.map(textOf).join('') : ''\n\n/**\n * Serialize a VNode tree to an HTML string.\n */\nfunction vnodeToHtml(vnode: any, sv?: SV): string {\n if (vnode == null) return ''\n\n // Text node\n if (typeof vnode === 'string') return escapeHtml(vnode)\n if (vnode.text != null && !vnode.sel) return escapeHtml(String(vnode.text))\n\n // VNode with text content and a selector\n const sel = vnode.sel\n if (!sel) {\n if (vnode.text != null) return escapeHtml(String(vnode.text))\n // Fragment: no selector, but has children — concatenate child HTML\n if (vnode.children && Array.isArray(vnode.children)) {\n return vnode.children.map((c: any) => vnodeToHtml(c, sv)).join('')\n }\n return ''\n }\n\n // Parse selector: tag#id.class1.class2\n const {tag, id, selectorClasses} = parseSelector(sel)\n\n let data = vnode.data || {}, content: string | undefined\n const value = fieldValue(data)\n if (innerHtmlMode) {\n // (G-496)\n } else if (tag == 'textarea' && value != null) {\n data = withoutValue(data)\n // the HTML parser drops a leading newline (a CR or CRLF is one: G-495), so one is added\n const t = String(value)\n content = escapeHtml((t[0] == '\\n' || t[0] == '\\r' ? '\\n' : '') + t)\n } else if (tag == 'select' && value != null) {\n data = withoutValue(data)\n sv = {v: ([] as any[]).concat(value).map(String), m: !!(data.props?.multiple ?? data.attrs?.multiple)}\n } else if (tag == 'option' && sv && data.props?.selected == null && data.attrs?.selected == null) {\n if (sv.v.includes(value != null ? String(value) : ws(textOf(vnode)))) {\n data = {...data, attrs: {...data.attrs, selected: true}}\n if (!sv.m) sv.v = []\n }\n }\n if (tag != 'select' && tag != 'optgroup' && tag != 'option') sv = undefined\n\n // Build attributes from VNode data\n const attrs = buildAttributes(data, id, selectorClasses, tag.includes('-'))\n\n // Opening tag\n let html = `<${tag}`\n for (const [key, val] of attrs) {\n if (val === true) {\n html += ` ${key}`\n } else if (val !== false && val != null) {\n html += ` ${key}=\"${escapeHtml(String(val), true)}\"`\n }\n }\n html += '>'\n\n // Void elements\n if (VOID_ELEMENTS.has(tag)) {\n return html\n }\n\n // If innerHTML is set via props, use it as raw content (no escaping)\n if (vnode.data?.props?.innerHTML != null) {\n html += String(vnode.data.props.innerHTML)\n html += `</${tag}>`\n return html\n }\n\n // Children — snabbdom uses `text` for single text children (even when\n // `children` holds a text element object). Prioritize `text` when set.\n if (content !== undefined) {\n html += content\n } else if (vnode.text != null) {\n html += escapeHtml(String(vnode.text))\n } else if (vnode.children) {\n // children can be an array or a single text element object\n const kids = Array.isArray(vnode.children) ? vnode.children : [vnode.children]\n for (const child of kids) {\n html += vnodeToHtml(child, sv)\n }\n }\n\n html += `</${tag}>`\n return html\n}\n\n/**\n * Parse a snabbdom selector string like \"div#myId.foo.bar\" into parts.\n */\nfunction parseSelector(sel: string): {tag: string; id: string | null; selectorClasses: string[]} {\n let tag = sel\n let id: string | null = null\n const selectorClasses: string[] = []\n\n // Extract id\n const hashIdx = sel.indexOf('#')\n if (hashIdx !== -1) {\n const rest = sel.slice(hashIdx + 1)\n const dotIdx = rest.indexOf('.')\n if (dotIdx !== -1) {\n id = rest.slice(0, dotIdx)\n tag = sel.slice(0, hashIdx)\n // Classes after #id\n const classStr = rest.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n } else {\n id = rest\n tag = sel.slice(0, hashIdx)\n }\n } else {\n // Extract classes from selector\n const dotIdx = sel.indexOf('.')\n if (dotIdx !== -1) {\n tag = sel.slice(0, dotIdx)\n const classStr = sel.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n }\n }\n\n if (!tag) tag = 'div'\n\n return {tag, id, selectorClasses}\n}\n\n/**\n * Build an ordered list of [attrName, attrValue] from VNode data.\n */\n// 1-R G-365: camelCase HTML IDL properties whose content attribute is their lowercase name\nconst IDL_ATTRS = /^(tabIndex|readOnly|maxLength|minLength|contentEditable|accessKey|inputMode|enterKeyHint|spellCheck|autoFocus|autoComplete|autoCapitalize|autoPlay|noValidate|formAction|formEnctype|formMethod|formNoValidate|formTarget|crossOrigin|referrerPolicy|useMap|isMap|dateTime|colSpan|rowSpan|srcSet|allowFullscreen|playsInline|noModule|popoverTarget|popoverTargetAction|encType)$/\nconst kebab = (k: string): string => k.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase())\n\nfunction buildAttributes(\n data: any,\n selectorId: string | null,\n selectorClasses: string[],\n custom?: boolean\n): Array<[string, any]> {\n const result: Array<[string, any]> = []\n const classNames: string[] = [...selectorClasses]\n\n // From data.props (DOM properties like className, htmlFor, etc.)\n if (data.props) {\n for (let [key, val] of Object.entries(data.props)) {\n if (key === 'className') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (key === 'htmlFor') {\n result.push(['for', val])\n } else if (key === 'innerHTML' || key === 'textContent') {\n // Skip — handled separately if needed\n } else if (custom && (typeof val === 'function' || (val && typeof val === 'object'))) {\n // PLAN-5 D199: a custom element's function / object property has no attribute form\n } else {\n // PLAN-5 D199 / 1-R G-365: a custom element's camelCase property as attributes. A\n // reflected HTML IDL name gets its attribute (tabIndex → tabindex, readOnly → readonly),\n // an ARIA reflection its aria-* one (ariaLabel → aria-label). Any other camelCase name is\n // written twice: kebab-case (withClear → with-clear: Web Awesome / Shoelace's declared\n // attributes, Stencil's default, sygnal/element's defineElement) and lowercase\n // (withclear: Lit's and FAST's default attribute name); the element reads the one it\n // observes and ignores the other\n const keys = !custom || !/[A-Z]/.test(key) ? [key]\n : IDL_ATTRS.test(key) ? [key.toLowerCase()]\n : /^aria[A-Z]/.test(key) ? [kebab(key)]\n : [kebab(key), key.toLowerCase()]\n for (const k of keys) {\n if (typeof val === 'boolean') {\n if (val) result.push([k, true])\n } else if (val != null) {\n result.push([k, val])\n }\n }\n }\n }\n }\n\n // From data.attrs (HTML attributes)\n if (data.attrs) {\n for (const [key, val] of Object.entries(data.attrs)) {\n if (key === 'class') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.class (conditional class map: { active: true, disabled: false })\n if (data.class) {\n for (const [key, val] of Object.entries(data.class)) {\n if (val) classNames.push(key)\n }\n }\n\n // From data.dataset (data-* attributes)\n if (data.dataset) {\n for (const [key, val] of Object.entries(data.dataset)) {\n if (val != null) {\n result.push([`data-${camelToKebab(key)}`, val])\n }\n }\n }\n\n // ID (selector id takes precedence, then props/attrs)\n if (selectorId) {\n result.unshift(['id', selectorId])\n }\n\n // Class attribute\n if (classNames.length > 0) {\n const unique = [...new Set(classNames)]\n result.unshift(['class', unique.join(' ')])\n }\n\n // Style\n if (data.style && typeof data.style === 'object') {\n const styleStr = serializeStyle(data.style)\n if (styleStr) {\n result.push(['style', styleStr])\n }\n }\n\n return result\n}\n","import {renderToString} from '../extra/ssr'\n// PLAN-4 GS-11 / D120: the integration's `onError` module (see client.ts)\n// @ts-ignore — a virtual module\nimport onError from 'virtual:sygnal/astro-on-error'\n\nfunction looksLikeSygnalComponent(Component: any): boolean {\n if (typeof Component !== 'function') return false\n return Boolean(\n Component.model ||\n Component.intent ||\n Component.initialState ||\n Component.componentName\n )\n}\n\nexport function check(Component: any): boolean {\n return looksLikeSygnalComponent(Component)\n}\n\nexport function renderToStaticMarkup(\n Component: any,\n props: Record<string, any> = {},\n _slotted?: any,\n _metadata?: any\n): { html: string; attrs: Record<string, any> } {\n try {\n // Props are spread top-level by renderToString (`{ state, ...props }`);\n // `props` is also passed, as on the client, for `({ state, props })` views.\n const html = renderToString(Component, {\n state: props.initialState || Component.initialState,\n props: {...props, props},\n // PLAN-4 GS-11: the app-level error hook (as the client's run() gets)\n onError,\n // G-206: a `uid` island prop is its uid root (as on the client), for two islands on a page\n uid: props.uid,\n })\n return {html, attrs: {}}\n } catch (err: any) {\n console.error('[sygnal/astro] SSR error:', err.message || err)\n return {html: '', attrs: {}}\n }\n}\n\nexport const supportsAstroStaticSlot = true\n\nexport default {\n check,\n renderToStaticMarkup,\n supportsAstroStaticSlot,\n}\n"],"names":["require$$0","toStr","implementation","slice","require$$1","hasSymbols","hasProto","bind","undefined","require$$2","require$$3","hasPropertyDescriptors","defineProperties","global","polyfill","getPolyfill","shim","this","xs","xstreamNamespace.Stream","xstreamNamespace.default","logError"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}
|