canvasengine 2.0.0-beta.56 → 2.0.0-beta.58

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dist-BOOc43Qm.js","names":["__defProp","__defNormalProp","__publicField","TilingSprite$1","NineSliceSprite$1"],"sources":["../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/yoga.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/utils/getNumberFromStyle.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/utils/position/calculateWithDoubleValue.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/utils/position/calculateWithQuadValue.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/utils/position/calculateWithSingleValue.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/utils/calculatePositionSpecifier.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/utils/getPixiSize.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/utils/nearlyEqual.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/utils/throttle.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/LayoutSystem.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/style/applyStyle.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/style/formatStyles.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/utils/sort-children.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/Layout.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/utils/calculateObjectFit.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/utils/baseComputeLayoutData.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/ContainerMixin.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/TextMixin.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/core/mixins/ViewContainerMixin.mjs","../../../node_modules/.pnpm/@pixi+layout@3.2.0_@types+react@19.1.3_pixi.js@8.9.2_react@19.1.0_yoga-layout@3.2.1/node_modules/@pixi/layout/dist/index.mjs"],"sourcesContent":["let yoga;\nfunction getYoga() {\n return yoga;\n}\nfunction setYoga(newYoga) {\n yoga = newYoga;\n}\nlet yogaConfig;\nfunction setYogaConfig(config) {\n yogaConfig = config;\n}\nfunction getYogaConfig() {\n return yogaConfig;\n}\nexport {\n getYoga,\n getYogaConfig,\n setYoga,\n setYogaConfig\n};\n//# sourceMappingURL=yoga.mjs.map\n","function getNumberFromStyle(value, size) {\n if (!value) return 0;\n if (typeof value === \"number\") {\n return value;\n } else if (typeof value === \"string\" && value.endsWith(\"%\")) {\n size ?? (size = 1);\n return size * (parseFloat(value) / 100);\n } else if (!Number.isNaN(parseFloat(value))) {\n return parseFloat(value);\n }\n return 0;\n}\nfunction getTypeFromStyle(value) {\n if (typeof value === \"number\") return \"number\";\n if (value.endsWith(\"%\")) return \"percentage\";\n if (Number.isNaN(parseInt(value, 10))) return \"keyword\";\n return \"number\";\n}\nexport {\n getNumberFromStyle,\n getTypeFromStyle\n};\n//# sourceMappingURL=getNumberFromStyle.mjs.map\n","import { getTypeFromStyle, getNumberFromStyle } from \"../../../utils/getNumberFromStyle.mjs\";\nfunction calculateCenterPosition(dimension, computedLayout, visualBounds) {\n return (computedLayout[dimension] - visualBounds[dimension]) / 2;\n}\nfunction calculateNonKeywordPosition(value, valueType, dimension, computedLayout, visualBounds) {\n const multiple = valueType === \"percentage\" ? computedLayout[dimension] - visualBounds[dimension] : 1;\n return getNumberFromStyle(value) * multiple;\n}\nfunction calculateWithDoubleValue(tokens, computedLayout, visualBounds) {\n const [first, second] = tokens;\n const firstType = getTypeFromStyle(first);\n const secondType = getTypeFromStyle(second);\n const result = { x: void 0, y: void 0 };\n switch (first) {\n case \"top\":\n result.y = 0;\n break;\n case \"bottom\":\n result.y = computedLayout.height - visualBounds.height;\n break;\n case \"center\":\n if (second === \"left\" || second === \"right\") {\n result.y = calculateCenterPosition(\"height\", computedLayout, visualBounds);\n } else {\n result.x = calculateCenterPosition(\"width\", computedLayout, visualBounds);\n }\n break;\n case \"left\":\n result.x = 0;\n break;\n case \"right\":\n result.x = computedLayout.width - visualBounds.width;\n break;\n default: {\n const dimension = second === \"top\" || second === \"bottom\" || secondType !== \"keyword\" ? \"width\" : \"height\";\n const target = dimension === \"width\" ? \"x\" : \"y\";\n result[target] = calculateNonKeywordPosition(first, firstType, dimension, computedLayout, visualBounds);\n }\n }\n switch (second) {\n case \"top\":\n result.y = 0;\n break;\n case \"bottom\":\n result.y = computedLayout.height - visualBounds.height;\n break;\n case \"center\":\n if (result.y === void 0) {\n result.y = calculateCenterPosition(\"height\", computedLayout, visualBounds);\n } else {\n result.x = calculateCenterPosition(\"width\", computedLayout, visualBounds);\n }\n break;\n case \"left\":\n result.x = 0;\n break;\n case \"right\":\n result.x = computedLayout.width - visualBounds.width;\n break;\n default: {\n const target = result.y === void 0 ? \"y\" : \"x\";\n const dimension = target === \"y\" ? \"height\" : \"width\";\n result[target] = calculateNonKeywordPosition(second, secondType, dimension, computedLayout, visualBounds);\n }\n }\n return result;\n}\nexport {\n calculateWithDoubleValue\n};\n//# sourceMappingURL=calculateWithDoubleValue.mjs.map\n","import { getTypeFromStyle, getNumberFromStyle } from \"../../../utils/getNumberFromStyle.mjs\";\nimport { calculateWithDoubleValue } from \"./calculateWithDoubleValue.mjs\";\nfunction calculateAxisOffset(keyword, value, type, bounds) {\n const isNegativeOffset = keyword === \"right\" || keyword === \"bottom\";\n const offset = type === \"percentage\" ? value * bounds : value;\n return isNegativeOffset ? -offset : offset;\n}\nfunction calculateWithQuadValue(tokens, computedLayout, visualBounds) {\n const [first, second, third, fourth] = tokens;\n const firstType = getTypeFromStyle(first);\n const secondType = getTypeFromStyle(second);\n const thirdType = getTypeFromStyle(third);\n const fourthType = getTypeFromStyle(fourth);\n if (secondType === \"keyword\" || fourthType === \"keyword\") {\n throw new Error(\"Invalid objectPosition value: second and fourth values must be numbers or percentages\");\n }\n if (firstType !== \"keyword\" || thirdType !== \"keyword\") {\n throw new Error(\"Invalid objectPosition value: first and third values must be keywords\");\n }\n const basePosition = calculateWithDoubleValue([first, third], computedLayout, visualBounds);\n const result = { ...basePosition };\n const secondValue = getNumberFromStyle(second);\n const fourthValue = getNumberFromStyle(fourth);\n if (first === \"left\" || first === \"right\") {\n result.x = basePosition.x + calculateAxisOffset(first, secondValue, secondType, visualBounds.width);\n } else if (first === \"top\" || first === \"bottom\") {\n result.y = basePosition.y + calculateAxisOffset(first, secondValue, secondType, visualBounds.height);\n }\n if (third === \"left\" || third === \"right\") {\n result.x = basePosition.x + calculateAxisOffset(third, fourthValue, fourthType, visualBounds.width);\n } else if (third === \"top\" || third === \"bottom\") {\n result.y = basePosition.y + calculateAxisOffset(third, fourthValue, fourthType, visualBounds.height);\n }\n return result;\n}\nexport {\n calculateWithQuadValue\n};\n//# sourceMappingURL=calculateWithQuadValue.mjs.map\n","import { getTypeFromStyle, getNumberFromStyle } from \"../../../utils/getNumberFromStyle.mjs\";\nfunction calculateWithSingleValue(tokens, computedLayout, visualBounds) {\n const keyword = tokens[0];\n const result = { x: void 0, y: void 0 };\n switch (keyword) {\n case \"top\":\n result.y = 0;\n result.x = (computedLayout.width - visualBounds.width) / 2;\n break;\n case \"bottom\":\n result.y = computedLayout.height - visualBounds.height;\n result.x = (computedLayout.width - visualBounds.width) / 2;\n break;\n case \"left\":\n result.x = 0;\n result.y = (computedLayout.height - visualBounds.height) / 2;\n break;\n case \"right\":\n result.x = computedLayout.width - visualBounds.width;\n result.y = (computedLayout.height - visualBounds.height) / 2;\n break;\n case \"center\":\n result.x = (computedLayout.width - visualBounds.width) / 2;\n result.y = (computedLayout.height - visualBounds.height) / 2;\n break;\n default: {\n const isPercentage = getTypeFromStyle(keyword) === \"percentage\";\n const multiple = isPercentage ? computedLayout.width - visualBounds.width : 1;\n result.x = getNumberFromStyle(keyword) * multiple;\n result.y = (computedLayout.height - visualBounds.height) / 2;\n }\n }\n return result;\n}\nexport {\n calculateWithSingleValue\n};\n//# sourceMappingURL=calculateWithSingleValue.mjs.map\n","import { calculateWithDoubleValue } from \"./position/calculateWithDoubleValue.mjs\";\nimport { calculateWithQuadValue } from \"./position/calculateWithQuadValue.mjs\";\nimport { calculateWithSingleValue } from \"./position/calculateWithSingleValue.mjs\";\nfunction calculatePositionSpecifier(value, computedLayout, visualBounds) {\n if (!value) return { x: 0, y: 0 };\n const tokens = typeof value === \"string\" ? value.split(\" \") : [value];\n switch (tokens.length) {\n case 1:\n return calculateWithSingleValue(tokens, computedLayout, visualBounds);\n case 2:\n return calculateWithDoubleValue(tokens, computedLayout, visualBounds);\n case 4:\n return calculateWithQuadValue(tokens, computedLayout, visualBounds);\n default:\n throw new Error(\"Invalid objectPosition value: must have 1, 2, or 4 values\");\n }\n}\nexport {\n calculatePositionSpecifier\n};\n//# sourceMappingURL=calculatePositionSpecifier.mjs.map\n","const temp = { width: 0, height: 0 };\nfunction getPixiSize(layout) {\n const bounds = layout.target.getLocalBounds();\n const scale = layout.target.scale;\n temp.width = Math.abs(bounds.width * scale.x);\n temp.height = Math.abs(bounds.height * scale.y);\n return temp;\n}\nexport {\n getPixiSize\n};\n//# sourceMappingURL=getPixiSize.mjs.map\n","function nearlyEqual(a, b, EPSILON = 0.49) {\n return Math.abs(a - b) < EPSILON;\n}\nexport {\n nearlyEqual\n};\n//# sourceMappingURL=nearlyEqual.mjs.map\n","function debounce(func, wait = 0, options = {}) {\n let lastArgs;\n let lastThis;\n const maxWait = options.maxWait ? options.maxWait : wait;\n let result;\n let timerId;\n let lastCallTime;\n let lastInvokeTime = 0;\n const leading = !!options.leading;\n const maxing = \"maxWait\" in options;\n const trailing = options.trailing ?? true;\n const useRAF = wait !== 0 && typeof globalThis.requestAnimationFrame === \"function\";\n if (typeof func !== \"function\") {\n throw new TypeError(\"Expected a function\");\n }\n function invokeFunc(time) {\n const args = lastArgs;\n const thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function startTimer(pendingFunc, milliseconds) {\n if (useRAF) {\n if (typeof timerId === \"number\") {\n globalThis.cancelAnimationFrame(timerId);\n }\n return globalThis.requestAnimationFrame(pendingFunc);\n }\n return setTimeout(pendingFunc, milliseconds);\n }\n function cancelTimer(id) {\n if (useRAF) {\n globalThis.cancelAnimationFrame(id);\n return;\n }\n clearTimeout(id);\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = startTimer(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n const timeSinceLastCall = time - (lastCallTime || 0);\n const timeSinceLastInvoke = time - lastInvokeTime;\n const timeWaiting = wait - timeSinceLastCall;\n return maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n const timeSinceLastCall = time - (lastCallTime || 0);\n const timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = startTimer(timerExpired, remainingWait(time));\n return void 0;\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n cancelTimer(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(Date.now());\n }\n function pending() {\n return timerId !== void 0;\n }\n function debounced(...args) {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n lastArgs = args;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = startTimer(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n debounced.pending = pending;\n return debounced;\n}\nfunction throttle(func, wait, options = {}) {\n const leading = options.leading ?? true;\n const trailing = options.trailing ?? true;\n if (typeof func !== \"function\") {\n throw new TypeError(\"Expected a function\");\n }\n return debounce(func, wait, {\n leading,\n trailing,\n maxWait: wait\n });\n}\nexport {\n debounce,\n throttle\n};\n//# sourceMappingURL=throttle.mjs.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { ExtensionType } from \"pixi.js\";\nimport { loadYoga, Direction } from \"yoga-layout/load\";\nimport { setYoga, setYogaConfig, getYoga } from \"../yoga.mjs\";\nimport { calculatePositionSpecifier } from \"./mixins/utils/calculatePositionSpecifier.mjs\";\nimport { getPixiSize } from \"./utils/getPixiSize.mjs\";\nimport { nearlyEqual } from \"./utils/nearlyEqual.mjs\";\nimport { throttle } from \"./utils/throttle.mjs\";\nclass LayoutSystem {\n constructor() {\n /**\n * Whether the layout system should automatically update the layout when it detects changes\n * @default true\n */\n __publicField(this, \"autoUpdate\", true);\n __publicField(this, \"_debugEnabled\", false);\n __publicField(this, \"_debugRenderer\", null);\n __publicField(this, \"_throttledUpdateSize\");\n __publicField(this, \"_throttle\", 100);\n __publicField(this, \"_modificationCount\", 50);\n }\n /**\n * Initializes the layout system by loading the Yoga library asynchronously\n * @returns A promise that resolves when the system is ready\n */\n async init(options) {\n setYoga(await loadYoga());\n setYogaConfig(getYoga().Config.create());\n const { layout } = options ?? {};\n const { autoUpdate, enableDebug, throttle: throttle$1, debugModificationCount } = layout ?? {};\n if (enableDebug) {\n void this.enableDebug(true);\n }\n if (autoUpdate !== void 0) {\n this.autoUpdate = autoUpdate;\n }\n this._throttle = throttle$1 ?? this._throttle;\n this._throttledUpdateSize = throttle((container) => this._updateSize(container), this._throttle, {\n leading: true,\n trailing: true\n });\n this._modificationCount = debugModificationCount ?? this._modificationCount;\n }\n /**\n * Toggles the debug mode for the layout system\n * @param value - Whether to enable or disable debug mode\n */\n async enableDebug(value = !this._debugEnabled) {\n this._debugEnabled = value;\n if (!this._debugRenderer) {\n const res = await import(\"./debug/DebugRenderer.mjs\");\n this._debugRenderer = new res.DebugRenderer();\n }\n if (!this._debugEnabled) {\n this._debugRenderer.reset();\n }\n }\n /**\n * Updates the layout of the container and its children\n * @param container - The container to update the layout for\n */\n update(container) {\n if (this._debugEnabled && this._debugRenderer) {\n this._debugRenderer.reset();\n container.addChild(this._debugRenderer.holder);\n }\n this._throttle === 0 ? this._updateSize(container) : this._throttledUpdateSize(container);\n this.updateLayout(container);\n }\n prerender({ container }) {\n if (this.autoUpdate) {\n this.update(container);\n }\n }\n /**\n * Updates the size of the yoga nodes for the containers that use pixi size\n * @param container - The container to update the size for\n */\n _updateSize(container) {\n if (container.destroyed) return;\n const layout = container._layout;\n if (layout) {\n const layoutStyles = layout.style;\n if (layoutStyles.width === \"intrinsic\" || layoutStyles.height === \"intrinsic\") {\n const size = getPixiSize(layout);\n if (layoutStyles.width === \"intrinsic\") {\n const currentWidth = layout.yoga.getWidth().value;\n if (!nearlyEqual(currentWidth, size.width)) {\n layout.yoga.setWidth(size.width);\n layout.invalidateRoot();\n }\n }\n if (layoutStyles.height === \"intrinsic\") {\n const currentHeight = layout.yoga.getHeight().value;\n if (!nearlyEqual(currentHeight, size.height)) {\n layout.yoga.setHeight(size.height);\n layout.invalidateRoot();\n }\n }\n }\n if (!container.visible) {\n layout._onChildRemoved();\n return;\n }\n }\n for (let i = 0; i < container.children.length; i++) {\n this._updateSize(container.children[i]);\n }\n }\n /**\n * Updates the layout of the container and its children\n * @param container - The container to update the layout for\n */\n updateLayout(container) {\n var _a, _b, _c, _d;\n const layout = container._layout;\n if (!container.visible) {\n return;\n }\n if (layout) {\n const yogaNode = layout.yoga;\n const layoutStyles = layout.style;\n const isOverflowContainer = (_a = container.parent) == null ? void 0 : _a.isOverflowContainer;\n const hasParentLayout = (_b = container.parent) == null ? void 0 : _b._layout;\n if (!hasParentLayout && !isOverflowContainer) {\n if (layout._isDirty) {\n layout._isDirty = false;\n yogaNode.calculateLayout(\n layoutStyles.width,\n // TODO: if this is not a number, it will not work\n layoutStyles.height,\n yogaNode.getDirection() ?? Direction.LTR\n );\n }\n }\n if (yogaNode.hasNewLayout() || layout._forceUpdate) {\n yogaNode.markLayoutSeen();\n layout._forceUpdate = false;\n layout._computedLayout = yogaNode.getComputedLayout();\n const res = calculatePositionSpecifier(layoutStyles.transformOrigin, layout._computedLayout, {\n width: 0,\n height: 0\n });\n layout._computedPixiLayout = {\n ...container.computeLayoutData(layout._computedLayout),\n originX: res.x,\n originY: res.y\n };\n container.emit(\"layout\", layout);\n (_c = container.onLayout) == null ? void 0 : _c.call(container, layout);\n container._onUpdate();\n }\n if (this._debugEnabled) {\n if (layout._styles.custom.debug || layout._modificationCount > this._modificationCount && layout._styles.custom.debugHeat !== false) {\n (_d = this._debugRenderer) == null ? void 0 : _d.render(layout);\n }\n }\n }\n for (let i = 0; i < container.children.length; i++) {\n this.updateLayout(container.children[i]);\n }\n }\n /**\n * @ignore\n */\n destroy() {\n if (!this._debugEnabled && this._debugRenderer) {\n this._debugRenderer.destroy();\n }\n }\n}\n/** @ignore */\n__publicField(LayoutSystem, \"extension\", {\n type: [ExtensionType.WebGLSystem, ExtensionType.WebGPUSystem],\n name: \"layout\"\n});\nexport {\n LayoutSystem\n};\n//# sourceMappingURL=LayoutSystem.mjs.map\n","import { Align, BoxSizing, Direction, Display, FlexDirection, Wrap, Justify, Overflow, PositionType, Edge, Gutter } from \"yoga-layout/load\";\nconst ALIGN_CONTENT_MAP = {\n \"flex-start\": Align.FlexStart,\n \"flex-end\": Align.FlexEnd,\n center: Align.Center,\n stretch: Align.Stretch,\n \"space-between\": Align.SpaceBetween,\n \"space-around\": Align.SpaceAround,\n \"space-evenly\": Align.SpaceEvenly\n};\nconst ALIGN_ITEMS_MAP = {\n \"flex-start\": Align.FlexStart,\n \"flex-end\": Align.FlexEnd,\n center: Align.Center,\n stretch: Align.Stretch,\n baseline: Align.Baseline\n};\nconst ALIGN_SELF_MAP = {\n auto: Align.Auto,\n \"flex-start\": Align.FlexStart,\n \"flex-end\": Align.FlexEnd,\n center: Align.Center,\n stretch: Align.Stretch,\n baseline: Align.Baseline\n};\nconst BOX_SIZING_MAP = {\n \"border-box\": BoxSizing.BorderBox,\n \"content-box\": BoxSizing.ContentBox\n};\nconst DIRECTION_MAP = {\n ltr: Direction.LTR,\n rtl: Direction.RTL\n};\nconst DISPLAY_MAP = {\n none: Display.None,\n flex: Display.Flex,\n contents: Display.Contents\n};\nconst FLEX_DIRECTION_MAP = {\n row: FlexDirection.Row,\n column: FlexDirection.Column,\n \"row-reverse\": FlexDirection.RowReverse,\n \"column-reverse\": FlexDirection.ColumnReverse\n};\nconst FLEX_WRAP_MAP = {\n wrap: Wrap.Wrap,\n nowrap: Wrap.NoWrap,\n \"wrap-reverse\": Wrap.WrapReverse\n};\nconst JUSTIFY_CONTENT_MAP = {\n \"flex-start\": Justify.FlexStart,\n \"flex-end\": Justify.FlexEnd,\n center: Justify.Center,\n \"space-between\": Justify.SpaceBetween,\n \"space-around\": Justify.SpaceAround,\n \"space-evenly\": Justify.SpaceEvenly\n};\nconst OVERFLOW_MAP = {\n visible: Overflow.Visible,\n hidden: Overflow.Hidden,\n scroll: Overflow.Scroll\n};\nconst POSITION_MAP = {\n absolute: PositionType.Absolute,\n relative: PositionType.Relative,\n static: PositionType.Static\n};\nconst styleSetters = {\n alignContent: (node, value) => node.setAlignContent(alignContent(value)),\n alignItems: (node, value) => node.setAlignItems(alignItems(value)),\n alignSelf: (node, value) => node.setAlignSelf(alignSelf(value)),\n aspectRatio: (node, value) => node.setAspectRatio(value),\n borderBottomWidth: (node, value) => node.setBorder(Edge.Bottom, value),\n borderEndWidth: (node, value) => node.setBorder(Edge.End, value),\n borderLeftWidth: (node, value) => node.setBorder(Edge.Left, value),\n borderRightWidth: (node, value) => node.setBorder(Edge.Right, value),\n borderStartWidth: (node, value) => node.setBorder(Edge.Start, value),\n borderTopWidth: (node, value) => node.setBorder(Edge.Top, value),\n borderWidth: (node, value) => node.setBorder(Edge.All, value),\n borderInlineWidth: (node, value) => node.setBorder(Edge.Horizontal, value),\n borderBlockWidth: (node, value) => node.setBorder(Edge.Vertical, value),\n bottom: (node, value) => node.setPosition(Edge.Bottom, value),\n boxSizing: (node, value) => node.setBoxSizing(boxSizing(value)),\n direction: (node, value) => node.setDirection(direction(value)),\n display: (node, value) => node.setDisplay(display(value)),\n end: (node, value) => node.setPosition(Edge.End, value),\n flex: (node, value) => node.setFlex(value),\n flexBasis: (node, value) => node.setFlexBasis(value),\n flexDirection: (node, value) => node.setFlexDirection(flexDirection(value)),\n rowGap: (node, value) => node.setGap(Gutter.Row, value),\n gap: (node, value) => node.setGap(Gutter.All, value),\n columnGap: (node, value) => node.setGap(Gutter.Column, value),\n flexGrow: (node, value) => node.setFlexGrow(value),\n flexShrink: (node, value) => node.setFlexShrink(value),\n flexWrap: (node, value) => node.setFlexWrap(flexWrap(value)),\n height: (node, value) => node.setHeight(value),\n justifyContent: (node, value) => node.setJustifyContent(justifyContent(value)),\n left: (node, value) => node.setPosition(Edge.Left, value),\n margin: (node, value) => node.setMargin(Edge.All, value),\n marginBottom: (node, value) => node.setMargin(Edge.Bottom, value),\n marginEnd: (node, value) => node.setMargin(Edge.End, value),\n marginLeft: (node, value) => node.setMargin(Edge.Left, value),\n marginRight: (node, value) => node.setMargin(Edge.Right, value),\n marginStart: (node, value) => node.setMargin(Edge.Start, value),\n marginTop: (node, value) => node.setMargin(Edge.Top, value),\n marginInline: (node, value) => node.setMargin(Edge.Horizontal, value),\n marginBlock: (node, value) => node.setMargin(Edge.Vertical, value),\n maxHeight: (node, value) => node.setMaxHeight(value),\n maxWidth: (node, value) => node.setMaxWidth(value),\n minHeight: (node, value) => node.setMinHeight(value),\n minWidth: (node, value) => node.setMinWidth(value),\n overflow: (node, value) => node.setOverflow(overflow(value)),\n padding: (node, value) => node.setPadding(Edge.All, value),\n paddingBottom: (node, value) => node.setPadding(Edge.Bottom, value),\n paddingEnd: (node, value) => node.setPadding(Edge.End, value),\n paddingLeft: (node, value) => node.setPadding(Edge.Left, value),\n paddingRight: (node, value) => node.setPadding(Edge.Right, value),\n paddingStart: (node, value) => node.setPadding(Edge.Start, value),\n paddingTop: (node, value) => node.setPadding(Edge.Top, value),\n paddingInline: (node, value) => node.setPadding(Edge.Horizontal, value),\n paddingBlock: (node, value) => node.setPadding(Edge.Vertical, value),\n position: (node, value) => node.setPositionType(position(value)),\n right: (node, value) => node.setPosition(Edge.Right, value),\n start: (node, value) => node.setPosition(Edge.Start, value),\n top: (node, value) => node.setPosition(Edge.Top, value),\n insetInline: (node, value) => node.setPosition(Edge.Horizontal, value),\n insetBlock: (node, value) => node.setPosition(Edge.Vertical, value),\n inset: (node, value) => node.setPosition(Edge.All, value),\n width: (node, value) => node.setWidth(value)\n};\nfunction alignContent(str) {\n if (str in ALIGN_CONTENT_MAP) return ALIGN_CONTENT_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for alignContent`);\n}\nfunction alignItems(str) {\n if (str in ALIGN_ITEMS_MAP) return ALIGN_ITEMS_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for alignItems`);\n}\nfunction alignSelf(str) {\n if (str in ALIGN_SELF_MAP) return ALIGN_SELF_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for alignSelf`);\n}\nfunction boxSizing(str) {\n if (str in BOX_SIZING_MAP) return BOX_SIZING_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for boxSizing`);\n}\nfunction direction(str) {\n if (str in DIRECTION_MAP) return DIRECTION_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for direction`);\n}\nfunction display(str) {\n if (str in DISPLAY_MAP) return DISPLAY_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for display`);\n}\nfunction flexDirection(str) {\n if (str in FLEX_DIRECTION_MAP) return FLEX_DIRECTION_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for flexDirection`);\n}\nfunction flexWrap(str) {\n if (str in FLEX_WRAP_MAP) return FLEX_WRAP_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for flexWrap`);\n}\nfunction justifyContent(str) {\n if (str in JUSTIFY_CONTENT_MAP) return JUSTIFY_CONTENT_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for justifyContent`);\n}\nfunction overflow(str) {\n if (str in OVERFLOW_MAP) return OVERFLOW_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for overflow`);\n}\nfunction position(str) {\n if (str in POSITION_MAP) return POSITION_MAP[str];\n throw new Error(`\"${str}\" is not a valid value for position`);\n}\nfunction applyStyle(node, style = {}) {\n for (const [key, value] of Object.entries(style)) {\n try {\n const setter = styleSetters[key];\n if (setter) {\n setter(node, value);\n }\n } catch (_e) {\n }\n }\n if (style.width !== void 0) {\n const widthValue = style.left !== void 0 && style.right !== void 0 ? \"auto\" : style.width;\n node.setWidth(widthValue);\n }\n if (style.height !== void 0) {\n const heightValue = style.top !== void 0 && style.bottom !== void 0 ? \"auto\" : style.height;\n node.setHeight(heightValue);\n }\n}\nexport {\n applyStyle\n};\n//# sourceMappingURL=applyStyle.mjs.map\n","import { ViewContainer } from \"pixi.js\";\nimport { Layout } from \"../Layout.mjs\";\nimport { getPixiSize } from \"../utils/getPixiSize.mjs\";\nfunction formatStyles(layout, style) {\n const currentStyles = layout._styles;\n let customStyles = { ...currentStyles.custom, ...style };\n const defaultStyle = {\n ...Layout.defaultStyle.shared,\n ...layout.target instanceof ViewContainer || customStyles.isLeaf || Layout.defaultStyle.shared.isLeaf ? Layout.defaultStyle.leaf : Layout.defaultStyle.container\n };\n customStyles = { ...defaultStyle, ...customStyles };\n const yogaStyles = { ...customStyles };\n const widthIntrinsic = customStyles.width === \"intrinsic\";\n const heightIntrinsic = customStyles.height === \"intrinsic\";\n if (widthIntrinsic || heightIntrinsic) {\n const { width, height } = getPixiSize(layout);\n if (widthIntrinsic) {\n yogaStyles.width = width;\n }\n if (heightIntrinsic) {\n yogaStyles.height = height;\n }\n }\n return { custom: customStyles, yoga: yogaStyles };\n}\nexport {\n formatStyles\n};\n//# sourceMappingURL=formatStyles.mjs.map\n","function onChildAdded(layout, pixiParent) {\n var _a;\n let parentLayout = pixiParent.layout;\n let overflowContainer;\n if (!parentLayout && pixiParent.isOverflowContainer) {\n overflowContainer = pixiParent;\n parentLayout = (_a = overflowContainer.parent) == null ? void 0 : _a.layout;\n pixiParent = overflowContainer.parent;\n }\n if (!parentLayout) {\n return false;\n }\n const yogaParent = layout.yoga.getParent();\n if (yogaParent) {\n yogaParent.removeChild(layout.yoga);\n }\n const yogaIndex = computeYogaInsertionIndex(layout, pixiParent, overflowContainer);\n if (yogaIndex === -1) {\n return false;\n }\n if (yogaIndex === parentLayout.yoga.getChildCount()) {\n parentLayout.yoga.insertChild(layout.yoga, yogaIndex);\n return true;\n }\n parentLayout.yoga.insertChild(layout.yoga, yogaIndex);\n return true;\n}\nfunction computeYogaInsertionIndex(layout, parent, overflow) {\n const target = layout.target;\n let index = 0;\n if (overflow) {\n for (const child of parent.children) {\n if (child === overflow) {\n for (const inner of overflow.children) {\n if (!inner.layout || !inner.visible) continue;\n if (inner === target) return index;\n index++;\n }\n return -1;\n }\n if (child.layout && child.visible) {\n index++;\n }\n }\n return -1;\n }\n for (const child of parent.children) {\n if (!child.layout || !child.visible) continue;\n if (child === target) return index;\n index++;\n }\n return -1;\n}\nfunction onChildRemoved(layout) {\n const yogaParent = layout.yoga.getParent();\n if (yogaParent) {\n yogaParent.removeChild(layout.yoga);\n }\n}\nexport {\n onChildAdded,\n onChildRemoved\n};\n//# sourceMappingURL=sort-children.mjs.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { getYoga, getYogaConfig } from \"../yoga.mjs\";\nimport { applyStyle } from \"./style/applyStyle.mjs\";\nimport { formatStyles } from \"./style/formatStyles.mjs\";\nimport { onChildAdded, onChildRemoved } from \"./utils/sort-children.mjs\";\nclass Layout {\n constructor({ target }) {\n /** The Yoga node instance for this layout */\n __publicField(this, \"yoga\");\n /** The target PixiJS container */\n __publicField(this, \"target\");\n /**\n * Whether this object has been destroyed. If true, the object should no longer be used.\n * After an object is destroyed, all of its functionality is disabled and references are removed.\n */\n __publicField(this, \"destroyed\", false);\n /**\n * Flag indicating if layout needs recalculation\n * @ignore\n */\n __publicField(this, \"_isDirty\", false);\n /**\n * The computed pixi layout that is applied to the target container in the updateLocalTransform step\n * @ignore\n */\n __publicField(this, \"_computedPixiLayout\", {\n /** The left value of the view */\n x: 0,\n /** The top value of the view */\n y: 0,\n /** The offset x value of the view within its box */\n offsetX: 0,\n /** The offset y value of the view within its box */\n offsetY: 0,\n /** The scale x value of the view within its box */\n scaleX: 1,\n /** The scale y value of the view within its box */\n scaleY: 1,\n /** The x origin of the view */\n originX: 0,\n /** The y origin of the view */\n originY: 0\n });\n /**\n * The computed bounds of the yoga node\n * @ignore\n */\n __publicField(this, \"_computedLayout\", {\n /** The left value of the view */\n left: 0,\n /** The right value of the view */\n right: 0,\n /** The top value of the view */\n top: 0,\n /** The bottom value of the view */\n bottom: 0,\n /** The width of the view */\n width: 0,\n /** The height of the view */\n height: 0\n });\n /**\n * The styles used for layout calculation\n * @ignore\n */\n __publicField(this, \"_styles\", {\n custom: {},\n yoga: {}\n });\n /**\n * The number of times the layout has been modified\n * @ignore\n */\n __publicField(this, \"_modificationCount\", 0);\n /**\n * Flag indicating if the layout should be recalculated even if it hasn't changed the yoga node.\n * This is used to force an update when certain style properties change such as `objectFit`.\n * @ignore\n */\n __publicField(this, \"_forceUpdate\", false);\n /**\n * Flag indicating if the layout has a parent node\n */\n __publicField(this, \"hasParent\", false);\n /**\n * The keys to track for changes to force an update\n * @ignore\n */\n __publicField(this, \"_trackedStyleKeys\", [\n \"borderRadius\",\n \"borderColor\",\n \"backgroundColor\",\n \"objectFit\",\n \"objectPosition\",\n \"transformOrigin\",\n \"isLeaf\"\n ]);\n this.target = target;\n this.yoga = getYoga().Node.create(getYogaConfig());\n target.on(\"added\", this._onChildAdded, this);\n target.on(\"removed\", this._onChildRemoved, this);\n target.on(\"destroyed\", this.destroy, this);\n }\n /** Returns the layout style */\n get style() {\n return this._styles.custom;\n }\n /** Returns the computed layout of the yoga node */\n get computedLayout() {\n return this._computedLayout;\n }\n /** Returns the computed layout of the pixi node */\n get computedPixiLayout() {\n return this._computedPixiLayout;\n }\n /**\n * Returns the true x position of the target.\n *\n * When an element is in layout, the x/y position is an offset from where it is laid out.\n * This is the true x position of the element in the parent container.\n */\n get realX() {\n return this.target.localTransform.tx;\n }\n /**\n * Returns the true y position of the target.\n *\n * When an element is in layout, the x/y position is an offset from where it is laid out.\n * This is the true y position of the element in the parent container.\n */\n get realY() {\n return this.target.localTransform.ty;\n }\n /**\n * Returns the true x scale of the target.\n *\n * When an element is in layout, the scale is an offset from 1.\n * This is the true x scale of the element.\n */\n get realScaleX() {\n return this.target.localTransform.a;\n }\n /**\n * Returns the true y scale of the target.\n *\n * When an element is in layout, the scale is an offset from 1.\n * This is the true y scale of the element.\n */\n get realScaleY() {\n return this.target.localTransform.d;\n }\n /**\n * Updates the layout style and triggers recalculation\n * @param style - New layout style to apply\n */\n setStyle(style) {\n const styles = formatStyles(this, style);\n const differentCustom = JSON.stringify(this._styles.custom) !== JSON.stringify(styles.custom);\n const differentYoga = JSON.stringify(this._styles.yoga) !== JSON.stringify(styles.yoga);\n const different = differentCustom || differentYoga;\n const hasTrackedChanges = this._trackedStyleKeys.some((key) => styles.custom[key] !== this._styles.custom[key]);\n this._styles = styles;\n if (hasTrackedChanges) {\n this._forceUpdate = true;\n }\n if (different) {\n applyStyle(this.yoga, this._styles.yoga);\n this.target._onUpdate();\n this.invalidateRoot();\n }\n }\n /**\n * Marks the root layout as needing recalculation\n * @param start - Optional container to start searching for the root from\n */\n invalidateRoot(start) {\n const root = this.getRoot(start);\n if (root.destroyed) return;\n root._layout._isDirty = true;\n root._onUpdate();\n this._modificationCount++;\n }\n /**\n * Forces an update of the layout even if it hasn't changed the yoga node.\n * This is used to force an update when certain style properties change such as `objectFit`.\n * Or when you have changed something inside of Pixi that is not tracked by the layout system.\n */\n forceUpdate() {\n this._forceUpdate = true;\n }\n /**\n * Finds the root container by traversing up the layout tree\n * @param start - Optional container to start searching for the root from\n * @returns The root container\n */\n getRoot(start) {\n var _a, _b;\n let root = start || this.target;\n while (((_a = root.parent) == null ? void 0 : _a._layout) || ((_b = root.parent) == null ? void 0 : _b.isOverflowContainer)) {\n root = root.parent;\n if (root.isOverflowContainer) {\n root = root.parent;\n }\n }\n return root;\n }\n /**\n * @ignore\n */\n _onChildAdded(pixiParent) {\n if (this.hasParent) return;\n if (onChildAdded(this, pixiParent) === false) {\n return;\n }\n this.hasParent = true;\n this.invalidateRoot();\n }\n /**\n * @ignore\n */\n _onChildRemoved(parent) {\n if (!this.hasParent) return;\n this.hasParent = false;\n this.invalidateRoot(parent);\n onChildRemoved(this);\n }\n destroy() {\n if (this.destroyed) return;\n this.destroyed = true;\n this.invalidateRoot();\n this.yoga.free();\n this.target.off(\"added\", this._onChildAdded, this);\n this.target.off(\"removed\", this._onChildRemoved, this);\n this._styles = null;\n this._computedPixiLayout = null;\n this._computedLayout = null;\n this.target = null;\n this.hasParent = false;\n }\n}\n/** Default style values to apply to the layout */\n__publicField(Layout, \"defaultStyle\", {\n leaf: {\n width: \"intrinsic\",\n height: \"intrinsic\"\n },\n container: {\n width: \"auto\",\n height: \"auto\"\n },\n shared: {\n transformOrigin: \"50%\",\n objectPosition: \"center\",\n flexShrink: 1,\n flexDirection: \"row\",\n alignContent: \"stretch\",\n flexWrap: \"nowrap\",\n overflow: \"visible\"\n }\n});\nexport {\n Layout\n};\n//# sourceMappingURL=Layout.mjs.map\n","function calculateObjectFit(value, computedLayout, bounds) {\n let offsetScaleX = 1;\n let offsetScaleY = 1;\n switch (value) {\n case \"fill\":\n offsetScaleX = computedLayout.width / bounds.width;\n offsetScaleY = computedLayout.height / bounds.height;\n break;\n case \"contain\": {\n const scaleContain = Math.min(computedLayout.width / bounds.width, computedLayout.height / bounds.height);\n offsetScaleX = scaleContain;\n offsetScaleY = scaleContain;\n break;\n }\n case \"cover\": {\n const scaleCover = Math.max(computedLayout.width / bounds.width, computedLayout.height / bounds.height);\n offsetScaleX = scaleCover;\n offsetScaleY = scaleCover;\n break;\n }\n case \"none\":\n offsetScaleX = 1;\n offsetScaleY = 1;\n break;\n case \"scale-down\": {\n const scaleDown = Math.min(1, computedLayout.width / bounds.width, computedLayout.height / bounds.height);\n offsetScaleX = scaleDown;\n offsetScaleY = scaleDown;\n break;\n }\n }\n return {\n offsetScaleX,\n offsetScaleY\n };\n}\nexport {\n calculateObjectFit\n};\n//# sourceMappingURL=calculateObjectFit.mjs.map\n","import { TilingSprite as TilingSprite$1, NineSliceSprite as NineSliceSprite$1 } from \"pixi.js\";\nimport { calculateObjectFit } from \"./calculateObjectFit.mjs\";\nimport { calculatePositionSpecifier } from \"./calculatePositionSpecifier.mjs\";\nfunction baseComputeLayoutData(container, computedLayout, defaultObjectFit, anchor) {\n const bounds = container.getLocalBounds();\n const objectFit = container.layout.style.objectFit || defaultObjectFit;\n let { offsetScaleX, offsetScaleY } = calculateObjectFit(objectFit, computedLayout, bounds);\n const scaledBounds = {\n width: bounds.width * offsetScaleX,\n height: bounds.height * offsetScaleY\n };\n let { x: offsetX, y: offsetY } = calculatePositionSpecifier(\n container.layout.style.objectPosition,\n computedLayout,\n scaledBounds\n );\n if (anchor) {\n offsetX += bounds.width * offsetScaleX * anchor._x;\n offsetY += bounds.height * offsetScaleY * anchor._y;\n } else {\n offsetX -= bounds.minX * offsetScaleX;\n offsetY -= bounds.minY * offsetScaleY;\n }\n const applySizeDirectly = container.layout.style.applySizeDirectly;\n if (applySizeDirectly === true || // eslint-disable-next-line eqeqeq\n applySizeDirectly == void 0 && (container instanceof TilingSprite$1 || container instanceof NineSliceSprite$1)) {\n container.width = bounds.width * offsetScaleX;\n container.height = bounds.height * offsetScaleY;\n offsetScaleX = 1;\n offsetScaleY = 1;\n }\n return {\n x: computedLayout.left,\n y: computedLayout.top,\n offsetX,\n offsetY,\n scaleX: offsetScaleX,\n scaleY: offsetScaleY\n };\n}\nexport {\n baseComputeLayoutData\n};\n//# sourceMappingURL=baseComputeLayoutData.mjs.map\n","import { Container, extensions } from \"pixi.js\";\nimport { Layout } from \"../Layout.mjs\";\nimport { baseComputeLayoutData } from \"./utils/baseComputeLayoutData.mjs\";\nconst visibility = Object.getOwnPropertyDescriptor(Container.prototype, \"visible\");\nconst mixin = {\n // Internal reference to the layout object\n _layout: null,\n /**\n * Gets the current layout associated with this container\n * @returns The container's layout or null if no layout is attached\n */\n get layout() {\n return this._layout ?? null;\n },\n /**\n * Sets the layout for this container\n * @param value - Layout options to apply, or null to remove layout\n */\n set layout(value) {\n value = value === true ? {} : value;\n if (!value) {\n if (this._layout) {\n this._layout.destroy();\n this._layout = null;\n this.updateLocalTransform = Container.prototype.updateLocalTransform;\n Object.defineProperty(Container.prototype, \"visible\", visibility);\n }\n return;\n }\n if (!this._layout) {\n this._layout = new Layout({ target: this });\n Object.defineProperty(Container.prototype, \"visible\", {\n ...visibility,\n set(visibleValue) {\n visibility.set.call(this, visibleValue);\n if (this.layout) {\n if (visibleValue && this.parent) {\n this.layout._onChildAdded(this.parent);\n } else {\n this.layout._onChildRemoved();\n }\n }\n }\n });\n for (const child of this.children) {\n if (child.layout && child.visible) {\n child.layout._onChildRemoved();\n child.layout._onChildAdded(this);\n }\n }\n if (this.parent && this.visible) {\n this._layout._onChildAdded(this.parent);\n }\n }\n this._layout.setStyle(value);\n this.updateLocalTransform = this.updateLocalTransformWithLayout;\n this._onUpdate();\n },\n /**\n * This function overrides how we calculate the local transform of the container.\n * For the layout, we need to not only calculate the transform matrix, but also\n * take into account the yoga layout's position and scale.\n */\n updateLocalTransformWithLayout() {\n const localTransformChangeId = this._didContainerChangeTick;\n if (this._didLocalTransformChangeId === localTransformChangeId) return;\n this._didLocalTransformChangeId = localTransformChangeId;\n const layout = this._layout;\n const { x, y, offsetX, offsetY, scaleX, scaleY, originX, originY } = layout._computedPixiLayout;\n const lt = this.localTransform;\n const { rotation, skew, scale, position } = this;\n const xRotY = rotation + skew._y;\n const xRotX = rotation - skew._x;\n const a = Math.cos(xRotY) * scale._x;\n const b = Math.sin(xRotY) * scale._x;\n const c = -Math.sin(xRotX) * scale._y;\n const d = Math.cos(xRotX) * scale._y;\n const tx = position._x + x - originX * a - originY * c;\n const ty = position._y + y - originX * b - originY * d;\n lt.a = a * scaleX;\n lt.b = b * scaleX;\n lt.c = c * scaleY;\n lt.d = d * scaleY;\n lt.tx = tx + (offsetX * a + offsetY * c) + originX;\n lt.ty = ty + (offsetX * b + offsetY * d) + originY;\n },\n /**\n * Apply the computed layout to the container\n * Converts Yoga layout information into PixiJS positioning\n * @param computedLayout - Layout data from Yoga engine\n * @returns Transformed position and scale data for this container\n * @memberof scene.Container#\n */\n computeLayoutData(computedLayout) {\n const layout = this._layout;\n const { isLeaf } = layout._styles.custom;\n if (isLeaf) {\n return baseComputeLayoutData(this, computedLayout, \"fill\");\n }\n return {\n x: computedLayout.left,\n y: computedLayout.top,\n offsetX: 0,\n offsetY: 0,\n scaleX: 1,\n scaleY: 1\n };\n }\n};\nextensions.mixin(Container, mixin);\n//# sourceMappingURL=ContainerMixin.mjs.map\n","import { Point, extensions, AbstractText } from \"pixi.js\";\nimport { calculateObjectFit } from \"./utils/calculateObjectFit.mjs\";\nimport { calculatePositionSpecifier } from \"./utils/calculatePositionSpecifier.mjs\";\nconst tempScale = new Point(0, 0);\nconst mixin = {\n /**\n * Computes the layout data for the text element\n * @param computedLayout - The computed layout from Yoga\n * @returns The layout data for the text element\n */\n computeLayoutData(computedLayout) {\n const style = this._style;\n tempScale.copyFrom(this.scale);\n this.scale = 1;\n if (style.wordWrap) {\n style.wordWrapWidth = computedLayout.width;\n }\n let bounds = this.getLocalBounds();\n const objectFit = this.layout.style.objectFit || \"scale-down\";\n const { offsetScaleX, offsetScaleY } = calculateObjectFit(objectFit, computedLayout, bounds);\n if (style.wordWrap) {\n style.wordWrapWidth = computedLayout.width / Math.min(1, Math.max(offsetScaleX, offsetScaleY));\n }\n bounds = this.getLocalBounds();\n const scaledBounds = {\n width: bounds.width * offsetScaleX,\n height: bounds.height * offsetScaleY\n };\n let { x: offsetX, y: offsetY } = calculatePositionSpecifier(\n this.layout.style.objectPosition,\n computedLayout,\n scaledBounds\n );\n offsetX += bounds.width * offsetScaleX * this.anchor._x;\n offsetY += bounds.height * offsetScaleY * this.anchor._y;\n const applySizeDirectly = this.layout.style.applySizeDirectly;\n if (applySizeDirectly === true) {\n this.width = bounds.width * offsetScaleX;\n this.height = bounds.height * offsetScaleY;\n }\n this.scale.copyFrom(tempScale);\n return {\n x: computedLayout.left,\n y: computedLayout.top,\n offsetX,\n offsetY,\n scaleX: offsetScaleX,\n scaleY: offsetScaleY\n };\n }\n};\nextensions.mixin(AbstractText, mixin);\nconst text = Object.getOwnPropertyDescriptor(AbstractText.prototype, \"text\");\nObject.defineProperty(AbstractText.prototype, \"text\", {\n ...text,\n set(textString) {\n var _a;\n const currentText = text.get.call(this);\n text.set.call(this, textString);\n if (currentText === textString) return;\n (_a = this.layout) == null ? void 0 : _a.forceUpdate();\n }\n});\n//# sourceMappingURL=TextMixin.mjs.map\n","import { extensions, ViewContainer } from \"pixi.js\";\nimport { baseComputeLayoutData } from \"./utils/baseComputeLayoutData.mjs\";\nconst mixin = {\n /**\n * Computes the layout data for the container\n * @param computedLayout - The computed layout from Yoga\n * @returns The layout data for the container\n */\n computeLayoutData(computedLayout) {\n return baseComputeLayoutData(this, computedLayout, \"fill\", this._anchor);\n }\n};\nextensions.mixin(ViewContainer, mixin);\n//# sourceMappingURL=ViewContainerMixin.mjs.map\n","import { extensions } from \"pixi.js\";\nimport { LayoutSystem } from \"./core/LayoutSystem.mjs\";\nimport \"./core/mixins/ContainerMixin.mjs\";\nimport \"./core/mixins/TextMixin.mjs\";\nimport \"./core/mixins/ViewContainerMixin.mjs\";\nimport { DebugRenderer } from \"./core/debug/DebugRenderer.mjs\";\nimport { Layout } from \"./core/Layout.mjs\";\nimport { applyStyle } from \"./core/style/applyStyle.mjs\";\nimport { formatStyles } from \"./core/style/formatStyles.mjs\";\nimport { getNumberFromStyle, getTypeFromStyle } from \"./core/utils/getNumberFromStyle.mjs\";\nimport { getPixiSize } from \"./core/utils/getPixiSize.mjs\";\nimport { nearlyEqual } from \"./core/utils/nearlyEqual.mjs\";\nimport { onChildAdded, onChildRemoved } from \"./core/utils/sort-children.mjs\";\nimport { getYoga, getYogaConfig, setYoga, setYogaConfig } from \"./yoga.mjs\";\nextensions.add(LayoutSystem);\nexport {\n DebugRenderer,\n Layout,\n LayoutSystem,\n applyStyle,\n formatStyles,\n getNumberFromStyle,\n getPixiSize,\n getTypeFromStyle,\n getYoga,\n getYogaConfig,\n nearlyEqual,\n onChildAdded,\n onChildRemoved,\n setYoga,\n setYogaConfig\n};\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"mappings":";;;AAAA,IAAI;AACJ,SAAS,IAAU;AACjB,QAAO;;AAET,SAAS,EAAQ,GAAS;AACxB,KAAO;;AAET,IAAI;AACJ,SAAS,EAAc,GAAQ;AAC7B,KAAa;;AAEf,SAAS,IAAgB;AACvB,QAAO;;;;ACZT,SAAS,EAAmB,GAAO,GAAM;AAUvC,QATK,IACD,OAAO,KAAU,WACZ,IACE,OAAO,KAAU,YAAY,EAAM,SAAS,IAAI,IACzD,AAAS,MAAO,GACD,WAAW,EAAM,GAAG,MAA5B,KACG,OAAO,MAAM,WAAW,EAAM,CAAC,GAGpC,IAFE,WAAW,EAAM,GAPP;;AAWrB,SAAS,EAAiB,GAAO;AAI/B,QAHI,OAAO,KAAU,WAAiB,WAClC,EAAM,SAAS,IAAI,GAAS,eAC5B,OAAO,MAAM,SAAS,GAAO,GAAG,CAAC,GAAS,YACvC;;;;ACfT,SAAS,EAAwB,GAAW,GAAgB,GAAc;AACxE,SAAQ,EAAe,KAAa,EAAa,MAAc;;AAEjE,SAAS,GAA4B,GAAO,GAAW,GAAW,GAAgB,GAAc;CAC9F,IAAM,IAAW,MAAc,eAAe,EAAe,KAAa,EAAa,KAAa;AACpG,QAAO,EAAmB,EAAM,GAAG;;AAErC,SAAS,EAAyB,GAAQ,GAAgB,GAAc;CACtE,IAAM,CAAC,GAAO,KAAU,GAClB,IAAY,EAAiB,EAAM,EACnC,IAAa,EAAiB,EAAO,EACrC,IAAS;EAAE,GAAG,KAAK;EAAG,GAAG,KAAK;EAAG;AACvC,SAAQ,GAAR;EACE,KAAK;AACH,KAAO,IAAI;AACX;EACF,KAAK;AACH,KAAO,IAAI,EAAe,SAAS,EAAa;AAChD;EACF,KAAK;AACH,GAAI,MAAW,UAAU,MAAW,UAClC,EAAO,IAAI,EAAwB,UAAU,GAAgB,EAAa,GAE1E,EAAO,IAAI,EAAwB,SAAS,GAAgB,EAAa;AAE3E;EACF,KAAK;AACH,KAAO,IAAI;AACX;EACF,KAAK;AACH,KAAO,IAAI,EAAe,QAAQ,EAAa;AAC/C;EACF,SAAS;GACP,IAAM,IAAY,MAAW,SAAS,MAAW,YAAY,MAAe,YAAY,UAAU,UAC5F,IAAS,MAAc,UAAU,MAAM;AAC7C,KAAO,KAAU,GAA4B,GAAO,GAAW,GAAW,GAAgB,EAAa;;;AAG3G,SAAQ,GAAR;EACE,KAAK;AACH,KAAO,IAAI;AACX;EACF,KAAK;AACH,KAAO,IAAI,EAAe,SAAS,EAAa;AAChD;EACF,KAAK;AACH,GAAI,EAAO,MAAM,KAAK,IACpB,EAAO,IAAI,EAAwB,UAAU,GAAgB,EAAa,GAE1E,EAAO,IAAI,EAAwB,SAAS,GAAgB,EAAa;AAE3E;EACF,KAAK;AACH,KAAO,IAAI;AACX;EACF,KAAK;AACH,KAAO,IAAI,EAAe,QAAQ,EAAa;AAC/C;EACF,SAAS;GACP,IAAM,IAAS,EAAO,MAAM,KAAK,IAAI,MAAM;AAE3C,KAAO,KAAU,GAA4B,GAAQ,GADnC,MAAW,MAAM,WAAW,SAC8B,GAAgB,EAAa;;;AAG7G,QAAO;;;;AC/DT,SAAS,EAAoB,GAAS,GAAO,GAAM,GAAQ;CACzD,IAAM,IAAmB,MAAY,WAAW,MAAY,UACtD,IAAS,MAAS,eAAe,IAAQ,IAAS;AACxD,QAAO,IAAmB,CAAC,IAAS;;AAEtC,SAAS,GAAuB,GAAQ,GAAgB,GAAc;CACpE,IAAM,CAAC,GAAO,GAAQ,GAAO,KAAU,GACjC,IAAY,EAAiB,EAAM,EACnC,IAAa,EAAiB,EAAO,EACrC,IAAY,EAAiB,EAAM,EACnC,IAAa,EAAiB,EAAO;AAC3C,KAAI,MAAe,aAAa,MAAe,UAC7C,OAAU,MAAM,wFAAwF;AAE1G,KAAI,MAAc,aAAa,MAAc,UAC3C,OAAU,MAAM,wEAAwE;CAE1F,IAAM,IAAe,EAAyB,CAAC,GAAO,EAAM,EAAE,GAAgB,EAAa,EACrF,IAAS,EAAE,GAAG,GAAc,EAC5B,IAAc,EAAmB,EAAO,EACxC,IAAc,EAAmB,EAAO;AAW9C,QAVI,MAAU,UAAU,MAAU,UAChC,EAAO,IAAI,EAAa,IAAI,EAAoB,GAAO,GAAa,GAAY,EAAa,MAAM,IAC1F,MAAU,SAAS,MAAU,cACtC,EAAO,IAAI,EAAa,IAAI,EAAoB,GAAO,GAAa,GAAY,EAAa,OAAO,GAElG,MAAU,UAAU,MAAU,UAChC,EAAO,IAAI,EAAa,IAAI,EAAoB,GAAO,GAAa,GAAY,EAAa,MAAM,IAC1F,MAAU,SAAS,MAAU,cACtC,EAAO,IAAI,EAAa,IAAI,EAAoB,GAAO,GAAa,GAAY,EAAa,OAAO,GAE/F;;;;AChCT,SAAS,GAAyB,GAAQ,GAAgB,GAAc;CACtE,IAAM,IAAU,EAAO,IACjB,IAAS;EAAE,GAAG,KAAK;EAAG,GAAG,KAAK;EAAG;AACvC,SAAQ,GAAR;EACE,KAAK;AAEH,GADA,EAAO,IAAI,GACX,EAAO,KAAK,EAAe,QAAQ,EAAa,SAAS;AACzD;EACF,KAAK;AAEH,GADA,EAAO,IAAI,EAAe,SAAS,EAAa,QAChD,EAAO,KAAK,EAAe,QAAQ,EAAa,SAAS;AACzD;EACF,KAAK;AAEH,GADA,EAAO,IAAI,GACX,EAAO,KAAK,EAAe,SAAS,EAAa,UAAU;AAC3D;EACF,KAAK;AAEH,GADA,EAAO,IAAI,EAAe,QAAQ,EAAa,OAC/C,EAAO,KAAK,EAAe,SAAS,EAAa,UAAU;AAC3D;EACF,KAAK;AAEH,GADA,EAAO,KAAK,EAAe,QAAQ,EAAa,SAAS,GACzD,EAAO,KAAK,EAAe,SAAS,EAAa,UAAU;AAC3D;EACF,SAAS;GAEP,IAAM,IADe,EAAiB,EAAQ,KAAK,eACnB,EAAe,QAAQ,EAAa,QAAQ;AAE5E,GADA,EAAO,IAAI,EAAmB,EAAQ,GAAG,GACzC,EAAO,KAAK,EAAe,SAAS,EAAa,UAAU;;;AAG/D,QAAO;;;;AC7BT,SAAS,EAA2B,GAAO,GAAgB,GAAc;AACvE,KAAI,CAAC,EAAO,QAAO;EAAE,GAAG;EAAG,GAAG;EAAG;CACjC,IAAM,IAAS,OAAO,KAAU,WAAW,EAAM,MAAM,IAAI,GAAG,CAAC,EAAM;AACrE,SAAQ,EAAO,QAAf;EACE,KAAK,EACH,QAAO,GAAyB,GAAQ,GAAgB,EAAa;EACvE,KAAK,EACH,QAAO,EAAyB,GAAQ,GAAgB,EAAa;EACvE,KAAK,EACH,QAAO,GAAuB,GAAQ,GAAgB,EAAa;EACrE,QACE,OAAU,MAAM,4DAA4D;;;;;ACdlF,IAAM,IAAO;CAAE,OAAO;CAAG,QAAQ;CAAG;AACpC,SAAS,EAAY,GAAQ;CAC3B,IAAM,IAAS,EAAO,OAAO,gBAAgB,EACvC,IAAQ,EAAO,OAAO;AAG5B,QAFA,EAAK,QAAQ,KAAK,IAAI,EAAO,QAAQ,EAAM,EAAE,EAC7C,EAAK,SAAS,KAAK,IAAI,EAAO,SAAS,EAAM,EAAE,EACxC;;;;ACNT,SAAS,EAAY,GAAG,GAAG,IAAU,KAAM;AACzC,QAAO,KAAK,IAAI,IAAI,EAAE,GAAG;;;;ACD3B,SAAS,GAAS,GAAM,IAAO,GAAG,IAAU,EAAE,EAAE;CAC9C,IAAI,GACA,GACE,IAAU,EAAQ,UAAU,EAAQ,UAAU,GAChD,GACA,GACA,GACA,IAAiB,GACf,IAAU,CAAC,CAAC,EAAQ,SACpB,IAAS,aAAa,GACtB,IAAW,EAAQ,YAAY,IAC/B,IAAS,MAAS,KAAK,OAAO,WAAW,yBAA0B;AACzE,KAAI,OAAO,KAAS,WAClB,OAAU,UAAU,sBAAsB;CAE5C,SAAS,EAAW,GAAM;EACxB,IAAM,IAAO,GACP,IAAU;AAIhB,SAHA,IAAW,IAAW,KAAK,GAC3B,IAAiB,GACjB,IAAS,EAAK,MAAM,GAAS,EAAK,EAC3B;;CAET,SAAS,EAAW,GAAa,GAAc;AAO7C,SANI,KACE,OAAO,KAAY,YACrB,WAAW,qBAAqB,EAAQ,EAEnC,WAAW,sBAAsB,EAAY,IAE/C,WAAW,GAAa,EAAa;;CAE9C,SAAS,EAAY,GAAI;AACvB,MAAI,GAAQ;AACV,cAAW,qBAAqB,EAAG;AACnC;;AAEF,eAAa,EAAG;;CAElB,SAAS,EAAY,GAAM;AAGzB,SAFA,IAAiB,GACjB,IAAU,EAAW,GAAc,EAAK,EACjC,IAAU,EAAW,EAAK,GAAG;;CAEtC,SAAS,EAAc,GAAM;EAC3B,IAAM,IAAoB,KAAQ,KAAgB,IAC5C,IAAsB,IAAO,GAC7B,IAAc,IAAO;AAC3B,SAAO,IAAS,KAAK,IAAI,GAAa,IAAU,EAAoB,GAAG;;CAEzE,SAAS,EAAa,GAAM;EAC1B,IAAM,IAAoB,KAAQ,KAAgB,IAC5C,IAAsB,IAAO;AACnC,SAAO,MAAiB,KAAK,KAAK,KAAqB,KAAQ,IAAoB,KAAK,KAAU,KAAuB;;CAE3H,SAAS,IAAe;EACtB,IAAM,IAAO,KAAK,KAAK;AACvB,MAAI,EAAa,EAAK,CACpB,QAAO,EAAa,EAAK;AAE3B,MAAU,EAAW,GAAc,EAAc,EAAK,CAAC;;CAGzD,SAAS,EAAa,GAAM;AAM1B,SALA,IAAU,KAAK,GACX,KAAY,IACP,EAAW,EAAK,IAEzB,IAAW,IAAW,KAAK,GACpB;;CAET,SAAS,IAAS;AAKhB,EAJI,MAAY,KAAK,KACnB,EAAY,EAAQ,EAEtB,IAAiB,GACjB,IAAW,IAAe,IAAW,IAAU,KAAK;;CAEtD,SAAS,IAAQ;AACf,SAAO,MAAY,KAAK,IAAI,IAAS,EAAa,KAAK,KAAK,CAAC;;CAE/D,SAAS,IAAU;AACjB,SAAO,MAAY,KAAK;;CAE1B,SAAS,EAAU,GAAG,GAAM;EAC1B,IAAM,IAAO,KAAK,KAAK,EACjB,IAAa,EAAa,EAAK;AAIrC,MAHA,IAAW,GACX,IAAW,MACX,IAAe,GACX,GAAY;AACd,OAAI,MAAY,KAAK,EACnB,QAAO,EAAY,EAAa;AAElC,OAAI,EAEF,QADA,IAAU,EAAW,GAAc,EAAK,EACjC,EAAW,EAAa;;AAMnC,SAHI,MAAY,KAAK,MACnB,IAAU,EAAW,GAAc,EAAK,GAEnC;;AAKT,QAHA,EAAU,SAAS,GACnB,EAAU,QAAQ,GAClB,EAAU,UAAU,GACb;;AAET,SAAS,GAAS,GAAM,GAAM,IAAU,EAAE,EAAE;CAC1C,IAAM,IAAU,EAAQ,WAAW,IAC7B,IAAW,EAAQ,YAAY;AACrC,KAAI,OAAO,KAAS,WAClB,OAAU,UAAU,sBAAsB;AAE5C,QAAO,GAAS,GAAM,GAAM;EAC1B;EACA;EACA,SAAS;EACV,CAAC;;;;ACvHJ,IAAIA,KAAY,OAAO,gBACnBC,MAAmB,GAAK,GAAK,MAAU,KAAO,IAAMD,GAAU,GAAK,GAAK;CAAE,YAAY;CAAM,cAAc;CAAM,UAAU;CAAM;CAAO,CAAC,GAAG,EAAI,KAAO,GACtJE,KAAiB,GAAK,GAAK,MAAUD,GAAgB,GAAK,OAAO,KAAQ,WAAsB,IAAX,IAAM,IAAU,EAAM,EAQxG,IAAN,MAAmB;CACjB,cAAc;AAUZ,EALA,EAAc,MAAM,cAAc,GAAK,EACvC,EAAc,MAAM,iBAAiB,GAAM,EAC3C,EAAc,MAAM,kBAAkB,KAAK,EAC3C,EAAc,MAAM,uBAAuB,EAC3C,EAAc,MAAM,aAAa,IAAI,EACrC,EAAc,MAAM,sBAAsB,GAAG;;CAM/C,MAAM,KAAK,GAAS;AAElB,EADA,EAAQ,MAAM,GAAU,CAAC,EACzB,EAAc,GAAS,CAAC,OAAO,QAAQ,CAAC;EACxC,IAAM,EAAE,cAAW,KAAW,EAAE,EAC1B,EAAE,eAAY,gBAAa,UAAU,GAAY,8BAA2B,KAAU,EAAE;AAY9F,EAXI,KACG,KAAK,YAAY,GAAK,EAEzB,MAAe,KAAK,MACtB,KAAK,aAAa,IAEpB,KAAK,YAAY,KAAc,KAAK,WACpC,KAAK,uBAAuB,IAAU,MAAc,KAAK,YAAY,EAAU,EAAE,KAAK,WAAW;GAC/F,SAAS;GACT,UAAU;GACX,CAAC,EACF,KAAK,qBAAqB,KAA0B,KAAK;;CAM3D,MAAM,YAAY,IAAQ,CAAC,KAAK,eAAe;AAE7C,MADA,KAAK,gBAAgB,GACjB,CAAC,KAAK,gBAAgB;GACxB,IAAM,IAAM,MAAM,OAAO;AACzB,QAAK,iBAAiB,IAAI,EAAI,eAAe;;AAE/C,EAAK,KAAK,iBACR,KAAK,eAAe,OAAO;;CAO/B,OAAO,GAAW;AAMhB,EALI,KAAK,iBAAiB,KAAK,mBAC7B,KAAK,eAAe,OAAO,EAC3B,EAAU,SAAS,KAAK,eAAe,OAAO,GAEhD,KAAK,cAAc,IAAI,KAAK,YAAY,EAAU,GAAG,KAAK,qBAAqB,EAAU,EACzF,KAAK,aAAa,EAAU;;CAE9B,UAAU,EAAE,gBAAa;AACvB,EAAI,KAAK,cACP,KAAK,OAAO,EAAU;;CAO1B,YAAY,GAAW;AACrB,MAAI,EAAU,UAAW;EACzB,IAAM,IAAS,EAAU;AACzB,MAAI,GAAQ;GACV,IAAM,IAAe,EAAO;AAC5B,OAAI,EAAa,UAAU,eAAe,EAAa,WAAW,aAAa;IAC7E,IAAM,IAAO,EAAY,EAAO;AAChC,QAAI,EAAa,UAAU,aAAa;KACtC,IAAM,IAAe,EAAO,KAAK,UAAU,CAAC;AAC5C,KAAK,EAAY,GAAc,EAAK,MAAM,KACxC,EAAO,KAAK,SAAS,EAAK,MAAM,EAChC,EAAO,gBAAgB;;AAG3B,QAAI,EAAa,WAAW,aAAa;KACvC,IAAM,IAAgB,EAAO,KAAK,WAAW,CAAC;AAC9C,KAAK,EAAY,GAAe,EAAK,OAAO,KAC1C,EAAO,KAAK,UAAU,EAAK,OAAO,EAClC,EAAO,gBAAgB;;;AAI7B,OAAI,CAAC,EAAU,SAAS;AACtB,MAAO,iBAAiB;AACxB;;;AAGJ,OAAK,IAAI,IAAI,GAAG,IAAI,EAAU,SAAS,QAAQ,IAC7C,MAAK,YAAY,EAAU,SAAS,GAAG;;CAO3C,aAAa,GAAW;EACtB,IAAY,GAAI;EAChB,IAAM,IAAS,EAAU;AACpB,QAAU,SAGf;OAAI,GAAQ;IACV,IAAM,IAAW,EAAO,MAClB,IAAe,EAAO,OACtB,IAA4B,EAAU,QAA8B;AAa1E,QAXI,CAD0B,EAAU,QAA8B,WAC9C,CAAC,KACnB,EAAO,aACT,EAAO,WAAW,IAClB,EAAS,gBACP,EAAa,OAEb,EAAa,QACb,EAAS,cAAc,IAAI,EAAU,IACtC,GAGD,EAAS,cAAc,IAAI,EAAO,cAAc;AAGlD,KAFA,EAAS,gBAAgB,EACzB,EAAO,eAAe,IACtB,EAAO,kBAAkB,EAAS,mBAAmB;KACrD,IAAM,IAAM,EAA2B,EAAa,iBAAiB,EAAO,iBAAiB;MAC3F,OAAO;MACP,QAAQ;MACT,CAAC;AAQF,KAPA,EAAO,sBAAsB;MAC3B,GAAG,EAAU,kBAAkB,EAAO,gBAAgB;MACtD,SAAS,EAAI;MACb,SAAS,EAAI;MACd,EACD,EAAU,KAAK,UAAU,EAAO,GAC/B,IAAK,EAAU,aAAa,QAAgB,EAAG,KAAK,GAAW,EAAO,EACvE,EAAU,WAAW;;AAEvB,IAAI,KAAK,kBACH,EAAO,QAAQ,OAAO,SAAS,EAAO,qBAAqB,KAAK,sBAAsB,EAAO,QAAQ,OAAO,cAAc,SAC3H,IAAK,KAAK,mBAAmB,QAAgB,EAAG,OAAO,EAAO;;AAIrE,QAAK,IAAI,IAAI,GAAG,IAAI,EAAU,SAAS,QAAQ,IAC7C,MAAK,aAAa,EAAU,SAAS,GAAG;;;CAM5C,UAAU;AACR,EAAI,CAAC,KAAK,iBAAiB,KAAK,kBAC9B,KAAK,eAAe,SAAS;;;AAKnCC,EAAc,GAAc,aAAa;CACvC,MAAM,CAAC,EAAc,aAAa,EAAc,aAAa;CAC7D,MAAM;CACP,CAAC;;;AChLF,IAAM,IAAoB;CACxB,cAAc,EAAM;CACpB,YAAY,EAAM;CAClB,QAAQ,EAAM;CACd,SAAS,EAAM;CACf,iBAAiB,EAAM;CACvB,gBAAgB,EAAM;CACtB,gBAAgB,EAAM;CACvB,EACK,IAAkB;CACtB,cAAc,EAAM;CACpB,YAAY,EAAM;CAClB,QAAQ,EAAM;CACd,SAAS,EAAM;CACf,UAAU,EAAM;CACjB,EACK,IAAiB;CACrB,MAAM,EAAM;CACZ,cAAc,EAAM;CACpB,YAAY,EAAM;CAClB,QAAQ,EAAM;CACd,SAAS,EAAM;CACf,UAAU,EAAM;CACjB,EACK,IAAiB;CACrB,cAAc,EAAU;CACxB,eAAe,EAAU;CAC1B,EACK,IAAgB;CACpB,KAAK,EAAU;CACf,KAAK,EAAU;CAChB,EACK,IAAc;CAClB,MAAM,EAAQ;CACd,MAAM,EAAQ;CACd,UAAU,EAAQ;CACnB,EACK,IAAqB;CACzB,KAAK,EAAc;CACnB,QAAQ,EAAc;CACtB,eAAe,EAAc;CAC7B,kBAAkB,EAAc;CACjC,EACK,IAAgB;CACpB,MAAM,EAAK;CACX,QAAQ,EAAK;CACb,gBAAgB,EAAK;CACtB,EACK,IAAsB;CAC1B,cAAc,EAAQ;CACtB,YAAY,EAAQ;CACpB,QAAQ,EAAQ;CAChB,iBAAiB,EAAQ;CACzB,gBAAgB,EAAQ;CACxB,gBAAgB,EAAQ;CACzB,EACK,IAAe;CACnB,SAAS,EAAS;CAClB,QAAQ,EAAS;CACjB,QAAQ,EAAS;CAClB,EACK,IAAe;CACnB,UAAU,EAAa;CACvB,UAAU,EAAa;CACvB,QAAQ,EAAa;CACtB,EACK,KAAe;CACnB,eAAe,GAAM,MAAU,EAAK,gBAAgB,GAAa,EAAM,CAAC;CACxE,aAAa,GAAM,MAAU,EAAK,cAAc,GAAW,EAAM,CAAC;CAClE,YAAY,GAAM,MAAU,EAAK,aAAa,GAAU,EAAM,CAAC;CAC/D,cAAc,GAAM,MAAU,EAAK,eAAe,EAAM;CACxD,oBAAoB,GAAM,MAAU,EAAK,UAAU,EAAK,QAAQ,EAAM;CACtE,iBAAiB,GAAM,MAAU,EAAK,UAAU,EAAK,KAAK,EAAM;CAChE,kBAAkB,GAAM,MAAU,EAAK,UAAU,EAAK,MAAM,EAAM;CAClE,mBAAmB,GAAM,MAAU,EAAK,UAAU,EAAK,OAAO,EAAM;CACpE,mBAAmB,GAAM,MAAU,EAAK,UAAU,EAAK,OAAO,EAAM;CACpE,iBAAiB,GAAM,MAAU,EAAK,UAAU,EAAK,KAAK,EAAM;CAChE,cAAc,GAAM,MAAU,EAAK,UAAU,EAAK,KAAK,EAAM;CAC7D,oBAAoB,GAAM,MAAU,EAAK,UAAU,EAAK,YAAY,EAAM;CAC1E,mBAAmB,GAAM,MAAU,EAAK,UAAU,EAAK,UAAU,EAAM;CACvE,SAAS,GAAM,MAAU,EAAK,YAAY,EAAK,QAAQ,EAAM;CAC7D,YAAY,GAAM,MAAU,EAAK,aAAa,GAAU,EAAM,CAAC;CAC/D,YAAY,GAAM,MAAU,EAAK,aAAa,GAAU,EAAM,CAAC;CAC/D,UAAU,GAAM,MAAU,EAAK,WAAW,GAAQ,EAAM,CAAC;CACzD,MAAM,GAAM,MAAU,EAAK,YAAY,EAAK,KAAK,EAAM;CACvD,OAAO,GAAM,MAAU,EAAK,QAAQ,EAAM;CAC1C,YAAY,GAAM,MAAU,EAAK,aAAa,EAAM;CACpD,gBAAgB,GAAM,MAAU,EAAK,iBAAiB,GAAc,EAAM,CAAC;CAC3E,SAAS,GAAM,MAAU,EAAK,OAAO,EAAO,KAAK,EAAM;CACvD,MAAM,GAAM,MAAU,EAAK,OAAO,EAAO,KAAK,EAAM;CACpD,YAAY,GAAM,MAAU,EAAK,OAAO,EAAO,QAAQ,EAAM;CAC7D,WAAW,GAAM,MAAU,EAAK,YAAY,EAAM;CAClD,aAAa,GAAM,MAAU,EAAK,cAAc,EAAM;CACtD,WAAW,GAAM,MAAU,EAAK,YAAY,GAAS,EAAM,CAAC;CAC5D,SAAS,GAAM,MAAU,EAAK,UAAU,EAAM;CAC9C,iBAAiB,GAAM,MAAU,EAAK,kBAAkB,GAAe,EAAM,CAAC;CAC9E,OAAO,GAAM,MAAU,EAAK,YAAY,EAAK,MAAM,EAAM;CACzD,SAAS,GAAM,MAAU,EAAK,UAAU,EAAK,KAAK,EAAM;CACxD,eAAe,GAAM,MAAU,EAAK,UAAU,EAAK,QAAQ,EAAM;CACjE,YAAY,GAAM,MAAU,EAAK,UAAU,EAAK,KAAK,EAAM;CAC3D,aAAa,GAAM,MAAU,EAAK,UAAU,EAAK,MAAM,EAAM;CAC7D,cAAc,GAAM,MAAU,EAAK,UAAU,EAAK,OAAO,EAAM;CAC/D,cAAc,GAAM,MAAU,EAAK,UAAU,EAAK,OAAO,EAAM;CAC/D,YAAY,GAAM,MAAU,EAAK,UAAU,EAAK,KAAK,EAAM;CAC3D,eAAe,GAAM,MAAU,EAAK,UAAU,EAAK,YAAY,EAAM;CACrE,cAAc,GAAM,MAAU,EAAK,UAAU,EAAK,UAAU,EAAM;CAClE,YAAY,GAAM,MAAU,EAAK,aAAa,EAAM;CACpD,WAAW,GAAM,MAAU,EAAK,YAAY,EAAM;CAClD,YAAY,GAAM,MAAU,EAAK,aAAa,EAAM;CACpD,WAAW,GAAM,MAAU,EAAK,YAAY,EAAM;CAClD,WAAW,GAAM,MAAU,EAAK,YAAY,GAAS,EAAM,CAAC;CAC5D,UAAU,GAAM,MAAU,EAAK,WAAW,EAAK,KAAK,EAAM;CAC1D,gBAAgB,GAAM,MAAU,EAAK,WAAW,EAAK,QAAQ,EAAM;CACnE,aAAa,GAAM,MAAU,EAAK,WAAW,EAAK,KAAK,EAAM;CAC7D,cAAc,GAAM,MAAU,EAAK,WAAW,EAAK,MAAM,EAAM;CAC/D,eAAe,GAAM,MAAU,EAAK,WAAW,EAAK,OAAO,EAAM;CACjE,eAAe,GAAM,MAAU,EAAK,WAAW,EAAK,OAAO,EAAM;CACjE,aAAa,GAAM,MAAU,EAAK,WAAW,EAAK,KAAK,EAAM;CAC7D,gBAAgB,GAAM,MAAU,EAAK,WAAW,EAAK,YAAY,EAAM;CACvE,eAAe,GAAM,MAAU,EAAK,WAAW,EAAK,UAAU,EAAM;CACpE,WAAW,GAAM,MAAU,EAAK,gBAAgB,GAAS,EAAM,CAAC;CAChE,QAAQ,GAAM,MAAU,EAAK,YAAY,EAAK,OAAO,EAAM;CAC3D,QAAQ,GAAM,MAAU,EAAK,YAAY,EAAK,OAAO,EAAM;CAC3D,MAAM,GAAM,MAAU,EAAK,YAAY,EAAK,KAAK,EAAM;CACvD,cAAc,GAAM,MAAU,EAAK,YAAY,EAAK,YAAY,EAAM;CACtE,aAAa,GAAM,MAAU,EAAK,YAAY,EAAK,UAAU,EAAM;CACnE,QAAQ,GAAM,MAAU,EAAK,YAAY,EAAK,KAAK,EAAM;CACzD,QAAQ,GAAM,MAAU,EAAK,SAAS,EAAM;CAC7C;AACD,SAAS,GAAa,GAAK;AACzB,KAAI,KAAO,EAAmB,QAAO,EAAkB;AACvD,OAAU,MAAM,IAAI,EAAI,yCAAyC;;AAEnE,SAAS,GAAW,GAAK;AACvB,KAAI,KAAO,EAAiB,QAAO,EAAgB;AACnD,OAAU,MAAM,IAAI,EAAI,uCAAuC;;AAEjE,SAAS,GAAU,GAAK;AACtB,KAAI,KAAO,EAAgB,QAAO,EAAe;AACjD,OAAU,MAAM,IAAI,EAAI,sCAAsC;;AAEhE,SAAS,GAAU,GAAK;AACtB,KAAI,KAAO,EAAgB,QAAO,EAAe;AACjD,OAAU,MAAM,IAAI,EAAI,sCAAsC;;AAEhE,SAAS,GAAU,GAAK;AACtB,KAAI,KAAO,EAAe,QAAO,EAAc;AAC/C,OAAU,MAAM,IAAI,EAAI,sCAAsC;;AAEhE,SAAS,GAAQ,GAAK;AACpB,KAAI,KAAO,EAAa,QAAO,EAAY;AAC3C,OAAU,MAAM,IAAI,EAAI,oCAAoC;;AAE9D,SAAS,GAAc,GAAK;AAC1B,KAAI,KAAO,EAAoB,QAAO,EAAmB;AACzD,OAAU,MAAM,IAAI,EAAI,0CAA0C;;AAEpE,SAAS,GAAS,GAAK;AACrB,KAAI,KAAO,EAAe,QAAO,EAAc;AAC/C,OAAU,MAAM,IAAI,EAAI,qCAAqC;;AAE/D,SAAS,GAAe,GAAK;AAC3B,KAAI,KAAO,EAAqB,QAAO,EAAoB;AAC3D,OAAU,MAAM,IAAI,EAAI,2CAA2C;;AAErE,SAAS,GAAS,GAAK;AACrB,KAAI,KAAO,EAAc,QAAO,EAAa;AAC7C,OAAU,MAAM,IAAI,EAAI,qCAAqC;;AAE/D,SAAS,GAAS,GAAK;AACrB,KAAI,KAAO,EAAc,QAAO,EAAa;AAC7C,OAAU,MAAM,IAAI,EAAI,qCAAqC;;AAE/D,SAAS,GAAW,GAAM,IAAQ,EAAE,EAAE;AACpC,MAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,EAAM,CAC9C,KAAI;EACF,IAAM,IAAS,GAAa;AAC5B,EAAI,KACF,EAAO,GAAM,EAAM;SAEV;AAGf,KAAI,EAAM,UAAU,KAAK,GAAG;EAC1B,IAAM,IAAa,EAAM,SAAS,KAAK,KAAK,EAAM,UAAU,KAAK,IAAI,SAAS,EAAM;AACpF,IAAK,SAAS,EAAW;;AAE3B,KAAI,EAAM,WAAW,KAAK,GAAG;EAC3B,IAAM,IAAc,EAAM,QAAQ,KAAK,KAAK,EAAM,WAAW,KAAK,IAAI,SAAS,EAAM;AACrF,IAAK,UAAU,EAAY;;;;;AC3L/B,SAAS,GAAa,GAAQ,GAAO;CAEnC,IAAI,IAAe;EAAE,GADC,EAAO,QACS;EAAQ,GAAG;EAAO;AAKxD,KAAe;EAHb,GAAG,EAAO,aAAa;EACvB,GAAG,EAAO,kBAAkB,KAAiB,EAAa,UAAU,EAAO,aAAa,OAAO,SAAS,EAAO,aAAa,OAAO,EAAO,aAAa;EAEvH,GAAG;EAAc;CACnD,IAAM,IAAa,EAAE,GAAG,GAAc,EAChC,IAAiB,EAAa,UAAU,aACxC,IAAkB,EAAa,WAAW;AAChD,KAAI,KAAkB,GAAiB;EACrC,IAAM,EAAE,UAAO,cAAW,EAAY,EAAO;AAI7C,EAHI,MACF,EAAW,QAAQ,IAEjB,MACF,EAAW,SAAS;;AAGxB,QAAO;EAAE,QAAQ;EAAc,MAAM;EAAY;;;;ACvBnD,SAAS,GAAa,GAAQ,GAAY;CAExC,IAAI,IAAe,EAAW,QAC1B;AAMJ,KALI,CAAC,KAAgB,EAAW,wBAC9B,IAAoB,GACpB,IAAqB,EAAkB,QAA8B,QACrE,IAAa,EAAkB,SAE7B,CAAC,EACH,QAAO;CAET,IAAM,IAAa,EAAO,KAAK,WAAW;AAC1C,CAAI,KACF,EAAW,YAAY,EAAO,KAAK;CAErC,IAAM,IAAY,GAA0B,GAAQ,GAAY,EAAkB;AASlF,QARI,MAAc,KACT,MAES,EAAa,KAAK,eAAe,EACjD,EAAa,KAAK,YAAY,EAAO,MAAM,EAAU,EAC9C;;AAKX,SAAS,GAA0B,GAAQ,GAAQ,GAAU;CAC3D,IAAM,IAAS,EAAO,QAClB,IAAQ;AACZ,KAAI,GAAU;AACZ,OAAK,IAAM,KAAS,EAAO,UAAU;AACnC,OAAI,MAAU,GAAU;AACtB,SAAK,IAAM,KAAS,EAAS,SACvB,QAAC,EAAM,UAAU,CAAC,EAAM,UAC5B;SAAI,MAAU,EAAQ,QAAO;AAC7B;;AAEF,WAAO;;AAET,GAAI,EAAM,UAAU,EAAM,WACxB;;AAGJ,SAAO;;AAET,MAAK,IAAM,KAAS,EAAO,SACrB,QAAC,EAAM,UAAU,CAAC,EAAM,UAC5B;MAAI,MAAU,EAAQ,QAAO;AAC7B;;AAEF,QAAO;;AAET,SAAS,GAAe,GAAQ;CAC9B,IAAM,IAAa,EAAO,KAAK,WAAW;AAC1C,CAAI,KACF,EAAW,YAAY,EAAO,KAAK;;;;ACxDvC,IAAI,KAAY,OAAO,gBACnB,MAAmB,GAAK,GAAK,MAAU,KAAO,IAAM,GAAU,GAAK,GAAK;CAAE,YAAY;CAAM,cAAc;CAAM,UAAU;CAAM;CAAO,CAAC,GAAG,EAAI,KAAO,GACtJ,KAAiB,GAAK,GAAK,MAAU,GAAgB,GAAK,OAAO,KAAQ,WAAsB,IAAX,IAAM,IAAU,EAAM,EAKxG,IAAN,MAAa;CACX,YAAY,EAAE,aAAU;AA+FtB,EA7FA,EAAc,MAAM,OAAO,EAE3B,EAAc,MAAM,SAAS,EAK7B,EAAc,MAAM,aAAa,GAAM,EAKvC,EAAc,MAAM,YAAY,GAAM,EAKtC,EAAc,MAAM,uBAAuB;GAEzC,GAAG;GAEH,GAAG;GAEH,SAAS;GAET,SAAS;GAET,QAAQ;GAER,QAAQ;GAER,SAAS;GAET,SAAS;GACV,CAAC,EAKF,EAAc,MAAM,mBAAmB;GAErC,MAAM;GAEN,OAAO;GAEP,KAAK;GAEL,QAAQ;GAER,OAAO;GAEP,QAAQ;GACT,CAAC,EAKF,EAAc,MAAM,WAAW;GAC7B,QAAQ,EAAE;GACV,MAAM,EAAE;GACT,CAAC,EAKF,EAAc,MAAM,sBAAsB,EAAE,EAM5C,EAAc,MAAM,gBAAgB,GAAM,EAI1C,EAAc,MAAM,aAAa,GAAM,EAKvC,EAAc,MAAM,qBAAqB;GACvC;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,EACF,KAAK,SAAS,GACd,KAAK,OAAO,GAAS,CAAC,KAAK,OAAO,GAAe,CAAC,EAClD,EAAO,GAAG,SAAS,KAAK,eAAe,KAAK,EAC5C,EAAO,GAAG,WAAW,KAAK,iBAAiB,KAAK,EAChD,EAAO,GAAG,aAAa,KAAK,SAAS,KAAK;;CAG5C,IAAI,QAAQ;AACV,SAAO,KAAK,QAAQ;;CAGtB,IAAI,iBAAiB;AACnB,SAAO,KAAK;;CAGd,IAAI,qBAAqB;AACvB,SAAO,KAAK;;CAQd,IAAI,QAAQ;AACV,SAAO,KAAK,OAAO,eAAe;;CAQpC,IAAI,QAAQ;AACV,SAAO,KAAK,OAAO,eAAe;;CAQpC,IAAI,aAAa;AACf,SAAO,KAAK,OAAO,eAAe;;CAQpC,IAAI,aAAa;AACf,SAAO,KAAK,OAAO,eAAe;;CAMpC,SAAS,GAAO;EACd,IAAM,IAAS,GAAa,MAAM,EAAM,EAClC,IAAkB,KAAK,UAAU,KAAK,QAAQ,OAAO,KAAK,KAAK,UAAU,EAAO,OAAO,EACvF,IAAgB,KAAK,UAAU,KAAK,QAAQ,KAAK,KAAK,KAAK,UAAU,EAAO,KAAK,EACjF,IAAY,KAAmB,GAC/B,IAAoB,KAAK,kBAAkB,MAAM,MAAQ,EAAO,OAAO,OAAS,KAAK,QAAQ,OAAO,GAAK;AAK/G,EAJA,KAAK,UAAU,GACX,MACF,KAAK,eAAe,KAElB,MACF,GAAW,KAAK,MAAM,KAAK,QAAQ,KAAK,EACxC,KAAK,OAAO,WAAW,EACvB,KAAK,gBAAgB;;CAOzB,eAAe,GAAO;EACpB,IAAM,IAAO,KAAK,QAAQ,EAAM;AAC5B,IAAK,cACT,EAAK,QAAQ,WAAW,IACxB,EAAK,WAAW,EAChB,KAAK;;CAOP,cAAc;AACZ,OAAK,eAAe;;CAOtB,QAAQ,GAAO;EAEb,IAAI,IAAO,KAAS,KAAK;AACzB,SAAc,EAAK,QAA8B,WAAmB,EAAK,QAA8B,qBAErG,CADA,IAAO,EAAK,QACR,EAAK,wBACP,IAAO,EAAK;AAGhB,SAAO;;CAKT,cAAc,GAAY;AACpB,OAAK,aACL,GAAa,MAAM,EAAW,KAAK,OAGvC,KAAK,YAAY,IACjB,KAAK,gBAAgB;;CAKvB,gBAAgB,GAAQ;AACjB,OAAK,cACV,KAAK,YAAY,IACjB,KAAK,eAAe,EAAO,EAC3B,GAAe,KAAK;;CAEtB,UAAU;AACJ,OAAK,cACT,KAAK,YAAY,IACjB,KAAK,gBAAgB,EACrB,KAAK,KAAK,MAAM,EAChB,KAAK,OAAO,IAAI,SAAS,KAAK,eAAe,KAAK,EAClD,KAAK,OAAO,IAAI,WAAW,KAAK,iBAAiB,KAAK,EACtD,KAAK,UAAU,MACf,KAAK,sBAAsB,MAC3B,KAAK,kBAAkB,MACvB,KAAK,SAAS,MACd,KAAK,YAAY;;;AAIrB,EAAc,GAAQ,gBAAgB;CACpC,MAAM;EACJ,OAAO;EACP,QAAQ;EACT;CACD,WAAW;EACT,OAAO;EACP,QAAQ;EACT;CACD,QAAQ;EACN,iBAAiB;EACjB,gBAAgB;EAChB,YAAY;EACZ,eAAe;EACf,cAAc;EACd,UAAU;EACV,UAAU;EACX;CACF,CAAC;;;ACrQF,SAAS,EAAmB,GAAO,GAAgB,GAAQ;CACzD,IAAI,IAAe,GACf,IAAe;AACnB,SAAQ,GAAR;EACE,KAAK;AAEH,GADA,IAAe,EAAe,QAAQ,EAAO,OAC7C,IAAe,EAAe,SAAS,EAAO;AAC9C;EACF,KAAK,WAAW;GACd,IAAM,IAAe,KAAK,IAAI,EAAe,QAAQ,EAAO,OAAO,EAAe,SAAS,EAAO,OAAO;AAEzG,GADA,IAAe,GACf,IAAe;AACf;;EAEF,KAAK,SAAS;GACZ,IAAM,IAAa,KAAK,IAAI,EAAe,QAAQ,EAAO,OAAO,EAAe,SAAS,EAAO,OAAO;AAEvG,GADA,IAAe,GACf,IAAe;AACf;;EAEF,KAAK;AAEH,GADA,IAAe,GACf,IAAe;AACf;EACF,KAAK,cAAc;GACjB,IAAM,IAAY,KAAK,IAAI,GAAG,EAAe,QAAQ,EAAO,OAAO,EAAe,SAAS,EAAO,OAAO;AAEzG,GADA,IAAe,GACf,IAAe;AACf;;;AAGJ,QAAO;EACL;EACA;EACD;;;;AC/BH,SAAS,EAAsB,GAAW,GAAgB,GAAkB,GAAQ;CAClF,IAAM,IAAS,EAAU,gBAAgB,EAErC,EAAE,iBAAc,oBAAiB,EADnB,EAAU,OAAO,MAAM,aAAa,GACa,GAAgB,EAAO,EACpF,IAAe;EACnB,OAAO,EAAO,QAAQ;EACtB,QAAQ,EAAO,SAAS;EACzB,EACG,EAAE,GAAG,GAAS,GAAG,MAAY,EAC/B,EAAU,OAAO,MAAM,gBACvB,GACA,EACD;AACD,CAAI,KACF,KAAW,EAAO,QAAQ,IAAe,EAAO,IAChD,KAAW,EAAO,SAAS,IAAe,EAAO,OAEjD,KAAW,EAAO,OAAO,GACzB,KAAW,EAAO,OAAO;CAE3B,IAAM,IAAoB,EAAU,OAAO,MAAM;AAQjD,SAPI,MAAsB,MAC1B,KAAqB,SAAW,aAAqBC,KAAkB,aAAqBC,QAC1F,EAAU,QAAQ,EAAO,QAAQ,GACjC,EAAU,SAAS,EAAO,SAAS,GACnC,IAAe,GACf,IAAe,IAEV;EACL,GAAG,EAAe;EAClB,GAAG,EAAe;EAClB;EACA;EACA,QAAQ;EACR,QAAQ;EACT;;;;ACnCH,IAAM,IAAa,OAAO,yBAAyB,EAAU,WAAW,UAAU;AA0GlF,EAAW,MAAM,GAAW;CAvG1B,SAAS;CAKT,IAAI,SAAS;AACX,SAAO,KAAK,WAAW;;CAMzB,IAAI,OAAO,GAAO;AAEhB,MADA,IAAQ,MAAU,KAAO,EAAE,GAAG,GAC1B,CAAC,GAAO;AACV,GAAI,KAAK,YACP,KAAK,QAAQ,SAAS,EACtB,KAAK,UAAU,MACf,KAAK,uBAAuB,EAAU,UAAU,sBAChD,OAAO,eAAe,EAAU,WAAW,WAAW,EAAW;AAEnE;;AAEF,MAAI,CAAC,KAAK,SAAS;AAEjB,GADA,KAAK,UAAU,IAAI,EAAO,EAAE,QAAQ,MAAM,CAAC,EAC3C,OAAO,eAAe,EAAU,WAAW,WAAW;IACpD,GAAG;IACH,IAAI,GAAc;AAEhB,KADA,EAAW,IAAI,KAAK,MAAM,EAAa,EACnC,KAAK,WACH,KAAgB,KAAK,SACvB,KAAK,OAAO,cAAc,KAAK,OAAO,GAEtC,KAAK,OAAO,iBAAiB;;IAIpC,CAAC;AACF,QAAK,IAAM,KAAS,KAAK,SACvB,CAAI,EAAM,UAAU,EAAM,YACxB,EAAM,OAAO,iBAAiB,EAC9B,EAAM,OAAO,cAAc,KAAK;AAGpC,GAAI,KAAK,UAAU,KAAK,WACtB,KAAK,QAAQ,cAAc,KAAK,OAAO;;AAK3C,EAFA,KAAK,QAAQ,SAAS,EAAM,EAC5B,KAAK,uBAAuB,KAAK,gCACjC,KAAK,WAAW;;CAOlB,iCAAiC;EAC/B,IAAM,IAAyB,KAAK;AACpC,MAAI,KAAK,+BAA+B,EAAwB;AAChE,OAAK,6BAA6B;EAElC,IAAM,EAAE,MAAG,MAAG,YAAS,YAAS,WAAQ,WAAQ,YAAS,eAD1C,KAAK,QACwD,qBACtE,IAAK,KAAK,gBACV,EAAE,aAAU,SAAM,UAAO,gBAAa,MACtC,IAAQ,IAAW,EAAK,IACxB,IAAQ,IAAW,EAAK,IACxB,IAAI,KAAK,IAAI,EAAM,GAAG,EAAM,IAC5B,IAAI,KAAK,IAAI,EAAM,GAAG,EAAM,IAC5B,IAAI,CAAC,KAAK,IAAI,EAAM,GAAG,EAAM,IAC7B,IAAI,KAAK,IAAI,EAAM,GAAG,EAAM,IAC5B,IAAK,EAAS,KAAK,IAAI,IAAU,IAAI,IAAU,GAC/C,IAAK,EAAS,KAAK,IAAI,IAAU,IAAI,IAAU;AAMrD,EALA,EAAG,IAAI,IAAI,GACX,EAAG,IAAI,IAAI,GACX,EAAG,IAAI,IAAI,GACX,EAAG,IAAI,IAAI,GACX,EAAG,KAAK,KAAM,IAAU,IAAI,IAAU,KAAK,GAC3C,EAAG,KAAK,KAAM,IAAU,IAAI,IAAU,KAAK;;CAS7C,kBAAkB,GAAgB;EAEhC,IAAM,EAAE,cADO,KAAK,QACM,QAAQ;AAIlC,SAHI,IACK,EAAsB,MAAM,GAAgB,OAAO,GAErD;GACL,GAAG,EAAe;GAClB,GAAG,EAAe;GAClB,SAAS;GACT,SAAS;GACT,QAAQ;GACR,QAAQ;GACT;;CAG4B,CAAC;;;AC1GlC,IAAM,KAAY,IAAI,EAAM,GAAG,EAAE;AAgDjC,EAAW,MAAM,GAAc,EAzC7B,kBAAkB,GAAgB;CAChC,IAAM,IAAQ,KAAK;AAGnB,CAFA,GAAU,SAAS,KAAK,MAAM,EAC9B,KAAK,QAAQ,GACT,EAAM,aACR,EAAM,gBAAgB,EAAe;CAEvC,IAAI,IAAS,KAAK,gBAAgB,EAE5B,EAAE,iBAAc,oBAAiB,EADrB,KAAK,OAAO,MAAM,aAAa,cACoB,GAAgB,EAAO;AAI5F,CAHI,EAAM,aACR,EAAM,gBAAgB,EAAe,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAc,EAAa,CAAC,GAEhG,IAAS,KAAK,gBAAgB;CAC9B,IAAM,IAAe;EACnB,OAAO,EAAO,QAAQ;EACtB,QAAQ,EAAO,SAAS;EACzB,EACG,EAAE,GAAG,GAAS,GAAG,MAAY,EAC/B,KAAK,OAAO,MAAM,gBAClB,GACA,EACD;AASD,QARA,KAAW,EAAO,QAAQ,IAAe,KAAK,OAAO,IACrD,KAAW,EAAO,SAAS,IAAe,KAAK,OAAO,IAC5B,KAAK,OAAO,MAAM,sBAClB,OACxB,KAAK,QAAQ,EAAO,QAAQ,GAC5B,KAAK,SAAS,EAAO,SAAS,IAEhC,KAAK,MAAM,SAAS,GAAU,EACvB;EACL,GAAG,EAAe;EAClB,GAAG,EAAe;EAClB;EACA;EACA,QAAQ;EACR,QAAQ;EACT;GAG+B,CAAC;AACrC,IAAM,IAAO,OAAO,yBAAyB,EAAa,WAAW,OAAO;;;AAC5E,OAAO,eAAe,EAAa,WAAW,QAAQ;CACpD,GAAG;CACH,IAAI,GAAY;EACd,IAAI;EACJ,IAAM,IAAc,EAAK,IAAI,KAAK,KAAK;AACvC,IAAK,IAAI,KAAK,MAAM,EAAW,EAC3B,MAAgB,OACnB,IAAK,KAAK,WAAW,QAAgB,EAAG,aAAa;;CAEzD,CAAC,EClDF,EAAW,MAAM,GAAe,EAJ9B,kBAAkB,GAAgB;AAChC,QAAO,EAAsB,MAAM,GAAgB,QAAQ,KAAK,QAAQ;GAGvC,CAAC,ECEtC,EAAW,IAAI,EAAa"}